Тэрмінальнае акно ў сістэме Linux Ubuntu.

Ёсць шмат спосабаў, як вы можаце скараціць выкарыстанне памяці ў вашай сістэме Linux. У гэтым раздзеле мы раскажам пра найбольш часта выкарыстоўваюцца метады каманднага радка: free, vmstat і top. Мы таксама паглядзім непасрэдна на чытанне / proc / meminfo.

Як Linux выкарыстоўвае аператыўную памяць

АЗП - гэта абмежаваны рэсурс, які патрэбны ўсім працэсам, напрыклад, прыкладанням і дэманам. Тут даступна толькі столькі. Ядро разглядае спрэчкі з памяццю і вылучае памяць, якая налічваецца, на ўсе галодныя працэсы. Гэта падобна на птушку маці з больш адкрытымі дзюбамі, накіраванымі на яе, чым на яе.

Нявыкарыстаная аператыўная памяць траціць марнавую памяць. Linux выкарыстоўвае любую запасную аператыўную памяць для такіх рэчаў, як буферная прастора файлаў, каб забяспечыць аптымальную працу кампутара. Лёгка скласціся ўражанне, што аператыўная памяць вашай сістэмы была выкарыстана нейкім уцекавым працэсам альбо ўцечкай памяці, але гэта рэдка.

Звычайна ядро ​​ўпарта працуе сваёй працай у фонавым рэжыме. Калі ёсць іншыя патрабаванні да аператыўнай памяці, што ядро ​​адправіла свае ўласныя прылады, яно імгненна адмаўляецца ад памяці, так што шкоды не будзе.

Калі ядро ​​палічыць, што больш эфектыўна пачаць выкарыстоўваць своп-прастору, гэта таксама прыводзіць яго ў гульню. У Linux існуе вялікая блытаніна ў дачыненні да значэння зручнасці і калі ядро ​​пачне выкарыстоўваць своп. Няпраўда, што значэнне зручнасці ўсталёўвае парог для выкарыстання аператыўнай памяці, які запускае магчымасць падключэння.

Але цяпер давайце разгледзім розныя метады, якія можна выкарыстоўваць у акне тэрмінала, каб убачыць выкарыстанне аператыўнай памяці на вашым кампутары Linux.

Вольнае камандаванне

Бясплатная каманда дае табліцу агульнай, выкарыстанай, бясплатнай, агульнай, буфера / кэша і даступнай аператыўнай памяці на вашым кампутары. Ён таксама паказвае вам агульную колькасць наладжаных месцаў свопу, а таксама колькасць выкарыстоўванага і даступнага.

У нашым прыкладзе мы будзем выкарыстоўваць опцыю -m (mebibytes). Аднак вы можаце таксама выкарыстоўваць -b (байты), -k (кібібайты) або -g (гібібайты).

Мы ўводзім наступную каманду:

вольны -м
Каманда

Гэта вынік, які мы атрымліваем:

      агульная колькасць выкарыстаных бясплатных агульных баф / кеш-памяць: 1987 901 95 80 990 811 Абмен: 1521 651 869

Калоны Mem ўтрымліваюць наступную інфармацыю:

  • Усяго: Агульная колькасць фізічнай аператыўнай памяці на гэтым кампутары. Выкарыстоўваецца: Сума бясплатных буфераў + кэш адымаецца ад агульнай сумы. Бясплатна: Аб'ём нявыкарыстанай памяці. Агульна: Аб'ём памяці, які выкарыстоўваецца файлавымі сістэмамі tmpfs. Buff / cache: Аб'ём памяці, які выкарыстоўваецца для буфераў і кэша. Пры неабходнасці ядро ​​можа быць выпушчана хутка. Даступна: гэта ацэнка памяці, якая даступная для абслугоўвання запытаў на памяць з прыкладанняў і любога іншага аперацыйнага праграмнага забеспячэння на вашым кампутары.

Калоны Swap ўтрымліваюць наступную інфармацыю:

  • Разам: памер раздзела або файла для падпампоўкі. Выкарыстоўваецца: Аб'ём памяшкання, якое выкарыстоўваецца. Бясплатна: колькасць пакінутага (нявыкарыстанага) месца для абмену.

Вы таксама можаце выкарыстоўваць наступны вытанчаны трук, які мы падправілі ў аднаго з нашых чытачоў, каб убачыць, які працэнт памяшкання выкарыстоўваецца:

бясплатна -м | абмен grep | awk "{print ($ 3 / $ 2) * 100}"
Каманда

Звязаныя: Як выкарыстоўваць бясплатную каманду ў Linux

Каманда vmstat

Немагчыма добра разумець, як выкарыстоўваецца аператыўная памяць у вашым Linux-поле, не ацэньваючы стан вашага памяшкання. АЗП і памяшканне памяшканняў цесна супрацоўнічаюць.

Вы можаце выкарыстоўваць каманду vmstat, каб глыбей пагрузіцца ў тое, як выкарыстоўваецца ваша памяшканне (або віртуальная памяць). Ён дае вам справаздачу па розных статыстыках, звязаных з свопам, на аснове сярэдніх значэнняў пасля апошняга перазагрузкі.

Увядзіце наступнае:

vmstat
Каманда

Гэта выхад без абгорткі:

procs ----------- памяць ---------- --- своп - ----- io ---- -сістэма ------ працэсар ----- rb swpd free buff cache si so bi bi ў cs us sy id wa st 3 0 671488 576084 51088 823876 1 7 53 62 99 14 4 1 95 0 0

У гэтым дакладзе шмат кропак дадзеных, таму мы іх разбіваем:

  • Proc: r: Колькасць "запушчаных" працэсаў. Яны альбо працуюць, альбо чакаюць чарговага разрэзу цыклаў працэсара. б: Колькасць працэсаў у рэжыме бесперабойнага сну. Яны не спяць, але выконваюць сістэму блакавання выкліку. Іх нельга перабіваць, пакуль яны не завершаць сваё дзеянне. Звычайна ў гэтым працэсе драйвер прылады чакае, калі нейкі рэсурс стане бясплатным. Любыя перапынкі ў чарзе для гэтага працэсу апрацоўваюцца, калі працэс аднаўляе сваю звычайную дзейнасць. Памяць: swpd: колькасць выкарыстанай віртуальнай памяці, то бок аб'ём памяці. бясплатна: Аб'ём бяздзейнічае (нескарыстанай) памяці. buff: Аб'ём памяці, які выкарыстоўваецца ў якасці буфераў. кэш: Аб'ём памяці, які выкарыстоўваецца ў якасці кэша. Swap: si: Аб'ём віртуальнай памяці, заменены з прасторы своп. так: колькасць віртуальнай памяці памянялася месцамі, каб памяняць месца. IO: bi: блакуе цану. Колькасць блокаў дадзеных, якія выкарыстоўваюцца для абмену віртуальнай памяці на аператыўную памяць. bo: Блокіруе. Колькасць блокаў дадзеных, якія выкарыстоўваюцца для абмену віртуальнай памяці з аператыўнай памяці і ў прастору своп. Сістэма: у: Колькасць перапынкаў у секунду, уключаючы гадзіны. cs: Колькасць кантэкстных камутатараў у секунду. Кантэкстнае пераключэнне адбываецца, калі ядро ​​пераходзіць з апрацоўкі сістэмнага ў карыстацкі рэжым. CPU: Гэтыя значэнні складаюць усе працэнты ад агульнага часу працэсара: us: Час, затрачаны на працу карыстальніка (не ядра). sy: Час, затрачаны на выкананне кода ядра. id: Час прабываў у халастым рэжыме. wa: Час, праведзены ў чаканні ўводу або вываду. st: Час віртуальнай машыны павінен чакаць, калі гіпервізар скончыць абслугоўванне іншых віртуальных машын, перш чым ён зможа вярнуцца і наведваць гэтую віртуальную машыну.

Звязаныя: Як выкарыстоўваць каманду vmstat у Linux

Верхняе камандаванне

Верхняя каманда адлюстроўвае экран з інфармацыяй. Значэнні абнаўляюцца кожныя некалькі секунд.

Каб выкарыстоўваць яго, мы ўводзім наступнае:

уверсе
Каманда

Націснулі клавішу "e". Гэта змяніла дысплей на мегабайты, якія лягчэй візуальна разабраць, чым доўгія радкі, якія прадстаўляюць байты. У верхняй частцы экрана ёсць пяць радкоў інфармацыі і ніжняй панэлі са слупкамі дадзеных.

Вось інфармацыя, якую вы знойдзеце ў кожным радку:

  • Першы радок: час, як доўга працуе кампутар, колькі людзей увайшлі ў сістэму і якая сярэдняя нагрузка была за апошнія пяць, 15 хвілін. Другі радок: колькасць задач і іх стан: бег, прыпынак, сон або зомбі. Трэці радок: інфармацыя аб працэсары (гл. Разбіўку палёў ніжэй). Чацвёрты радок: агульная колькасць фізічнай памяці, а таксама колькасць вольнай, выкарыстанай, загружанай альбо кэшаванай памяці. Пятая радок: агульны аб'ём памяці, а таксама колькасць вольнай, выкарыстанай і даступнай (улічваючы памяць, якую, як чакаецца, можна вярнуць з кэшаў).

Поля CPU на трэцім радку:

  • us: Час працэсара праводзіць выкананне працэсаў для карыстальнікаў у карыстацкай прасторы. sy: Час, які працэсар правёў у запуску сістэмных працэсаў «прасторы ядра». ni: Час працэсара выдаткаваў на выкананне працэсаў з ручным заданнем прыемнага значэння. id: працэсар у рэжыме чакання. wa: Час працэсара марнуе на чаканне завяршэння ўводу / выводу. прывітанне: Час, які працэсар выдаткаваў на абслугоўванне перапынкаў у апараце. si: Час працэсара выдаткаваў на абслугоўванне перапынкаў у праграмным забеспячэнні. st (час выкрадання): Час працэсара страчаны з-за працы віртуальных машын.

Магчыма, вам прыйдзецца націснуць левую або правую клавішы са стрэлкамі, каб убачыць усе слупкі. Значэнні ў кожным слупку апісаны ніжэй:

  • PID: ідэнтыфікатар працэсу. USER: Імя ўладальніка працэсу. PR: Прыярытэт працэсу. NI: Прыемнае значэнне працэсу. VIRT: Віртуальная памяць, якая выкарыстоўваецца працэсам. RES: Памяць рэзідэнта, які выкарыстоўваецца ў працэсе. SHR: Агульная памяць, якая выкарыстоўваецца ў працэсе. S: Статус працэсу. (Глядзіце спіс значэнняў, якія гэтае поле можа прыняць ніжэй). % CPU: доля часу працэсара, які выкарыстоўваецца працэсам з апошняга абнаўлення. % MEM: Доля выкарыстоўванай фізічнай памяці. TIME +: Агульны час працэсара, які выкарыстоўваецца заданнем, у 100-й секундзе. КОМАНДА: Назва або радок каманды (імя + параметры). (Гэты слупок знаходзіцца на экране ўправа на малюнку вышэй.)

Статус, які адлюстроўваецца ў слупку S, можа быць адным з наступных:

  • D: Бесперабойны сон. R: Бег. S: Спячы. Т: Прасочваецца (спыняецца). Z: Zombie.

Націсніце Q, каб выйсці зверху.

Чытанне / proc / meminfo

Шмат (і, хутчэй за ўсё, большасць) інструментаў у Linux, якія паведамляюць пра статыстыку памяці, атрымліваюць інфармацыю з псеўдафайлавай файлавай сістэмы / proc / meminfo. Мы можам выкарыстоўваць ката ці менш каманд, каб зрабіць тое ж самае.

Мы друкуем наступнае:

менш / proc / meminfo
Каманда

Вы можаце ўбачыць розныя палі ў залежнасці ад ядра, якое працуе, і архітэктуры працэсара. На нашай віртуальнай машыне атрыманы наступныя вынікі:

MemTotal: 2035260 kB MemFree: 919064 kB MemAvailable: 1300932 kB Буферы: 33528 kB Кэшаваны: 457604 kB SwapCaching: 29732 kB Актыўны: 313360 kB Неактыўны: 603276 kB Актыўны (anon): 74648 kB Неактыўны (anon): 355004 kB : 238712 kB Неактыўнае (файл): 248272 kB Неабходнае выкарыстанне: 16 kB Замкнёнае: 16 kB Змяненне Сумарны: 1557568 kB АбменFree: 873024 kB Брудны: 80 kB Зніжэнне: 0 kB AnonPages: 414100 kB Mapped: 97436 kB Shmem: 4148 kB Kmb: 4148 kB Пліта: 94216 kB SReclaimable: 52932 kB Неадпаведнае патрабаванне: 41284 kB KernelStack: 9280 kB Табліцы старонак: 45264 kB NFS_Unstable: 0 kB Адскок: 0 kB WritebackTmp: 0 kB CommLimit: 2575196 kB 0 kB Percpu: 720 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB ShmemHugePages: 0 kB ShmemPmdКарта: 0 kB CmaОбщий: 0 kB CmaFree: 0 kB HugePages_Голова: 0 HugePages_Free: 0 HugePages_Free: 0 HugePages DirectMap4k: 180160 кБ DirectMap2M: 1916928 кБ

Калі не пазначана іншае, усе памеры ў кібібайтах. Вось што яны азначаюць, а таксама некаторыя іншыя, якія вы можаце ўбачыць у залежнасці ад канфігурацыі кампутара і абсталявання:

  • MemTotal: Агульная аператыўная памяць (акрамя некалькіх зарэзерваваных біт і двайковага кода ядра). MemFree: Сума LowFree + HighFree. Аб'ём аператыўнай памяці ў цяперашні час даступны. MemAvailable: Разліковая памяць, даступная для запуску новых прыкладанняў, не мяняючы месцамі. Буферы: часовае сховішча для сырых блокаў дыскаў. Гэта зніжае ўваход і выхад жорсткага дыска. Гэта таксама паскарае доступ да наступных запытаў на тыя ж дадзеныя, таму што гэта ўжо ў памяці. Кэшаваны: Кэшаваныя старонкі, якія чытаюцца з файлаў на цвёрдым дыску (не ўключаючы SwapCched). SwapCched: Памяць, якую памянялі і вярнулі назад, а копія застаецца ў прасторы свопу. Актыўны: Нядаўна выкарыстаная памяць. Гэта не адноўлена, калі не трэба. Бяздзейнічае: Памяць, якая выкарыстоўваецца, але не самая апошняя. Гэта верагодны кандыдат на меліярацыю. Актыўны (anon): памяць, выдзеленая файлам, створаным у pseudo-файлавай сістэме tmpfs. Ананімныя файлы не знаходзяцца на цвёрдым дыску. Неактыўны (anon): колькасць анонімных, tmpfs і шмэм памяці, якая з'яўляецца кандыдатам на высяленне (меліярацыя памяці). Актыўны (файл): колькасць выкарыстанай кэш-памяці файла, якая выкарыстоўваецца з папярэдняга цыкла меліярацыі памяці. Неактыўнае (файл): Колькасць памяці кэш-файла, прачытаная з цвёрдага дыска, які з'яўляецца кандыдатам на зварот. Неабавязковы: аб'ём памяці, які павінен быць даступны для высялення, але гэта не таму, што ён зачынены ў памяці працэсамі ў прасторы карыстальніка. Mlocked: Агульны аб'ём памяці не можа быць выключаны, таму што ён заблакіраваны працэсамі ў прасторы карыстальніка. HighTotal: агульная колькасць HighMem, які выкарыстоўваецца ў праграмах карыстацкага прасторы і кэшах старонак. Ядро можа атрымаць доступ да гэтай зоны памяці, але доступ да яго больш павольны, чым у LowMem. HighFree: колькасць бясплатных HighMem. LowTotal: Колькасць LowMem, якая даступная для тых жа мэтаў, што і HighMem, але і для ядра для сваіх мэтаў. LowFree: колькасць бясплатных LowMem. MmapCopy: Аб'ём памяці, адлюстраваны для падачы дадзеных. SwapTotal: Агульная колькасць даступнага месца для абмену. SwapFree: Колькасць памяшканняў, якія зараз не выкарыстоўваюцца. Брудна: Аб'ём памяці, які чакае запісу на дыск. Зваротная сувязь: Актыўна запісваецца памяць на дыск. AnonPages: старонкі, якія не падтрымліваюцца файламі, адлюстраваны ў табліцах старонак карыстацкага прасторы. Картаванае: файлы (як бібліятэкі), якія адлюстраваны ў памяці. Shmem: Аб'ём памяці, які выкарыстоўваецца ў pseudo-файлавых сістэмах tmpfs. KReclaimable: Ядро размеркавання памяці ядра паспрабуе вярнуць, калі попыт на памяць досыць сур'ёзны. Пліта: кэш структуры дадзеных у ядры. SReclaimable: Колькасць памяці пліт, якая можа быць адноўлена, напрыклад, кэшы. SUnreclaim: Колькасць пліты памяці, якую немагчыма вярнуць. KernelStack: Аб'ём памяці, выдзелены стэкам ядра. PageTables: Аб'ём памяці, выдзелены на ніжні ўзровень табліц старонак. Шыркія спісы: Паколькі размеркаванне і выдаленне табліц старонак з'яўляецца вельмі частай аперацыяй, жыццёва важна, каб гэта адбылося як мага хутчэй. Такім чынам, старонкі, якія выкарыстоўваюцца для табліц старонак, захоўваюцца ў кэшы ў шэрагу розных спісаў, якія называюцца "хуткія спісы". NFS_Unstable: старонкі сеткавай файлавай сістэмы (NFS), атрыманыя серверам, але яшчэ не запісаныя ў нестабільныя сховішчы. Адмова: Памяць, якая выкарыстоўваецца для буфераў буфераў адмоваў. Буфер адмоваў размешчаны ў памяці дастаткова нізка, каб прылада мела доступ да яго непасрэдна. Затым дадзеныя капіруюцца на патрэбную старонку карыстальніка ў HighMem. WritebackTmp: Памяць, якая выкарыстоўваецца Filesystem у карыстацкай прасторы (FUSE) для часовых буфераў зваротнага звароту. CommitLimit: Агульны аб'ём памяці, даступны ў цяперашні час у сістэме. Committed_AS: Аб'ём памяці, ацэнены для задавальнення ўсіх бягучых патрэбаў. Калі праграма патрабуе нейкай аператыўнай памяці, запіс запісваецца, але аператыўная памяць выдзяляецца толькі пасля таго, як праграма пачне выкарыстоўваць яе. Ён таксама выдзяляецца толькі па меры неабходнасці да максімальнай сумы, якую зарэзервавала праграма. Можа быць "выдзелена" больш памяці, чым можна атрымаць. Калі ўсе праграмы паспрабуюць зарабіць на чыпах аператыўнай памяці адразу ж, казіно памяці можа разбурыцца (і прыйдзецца крыху ўзяцца за фінансістаў падкачкі). VmallocTotal: Агульны памер вобласці памяці vmalloc. VmallocUsed: колькасць выкарыстанай вобласці vmalloc. Паколькі Linux 4.4 гэта поле больш не разлічваецца, яно жорстка кадзіруецца. VmallocChunk: Самы вялікі сумежны блок свабоднай вобласці vmalloc. HardwareCorrupted: Аб'ём памяці з пазнакай як праблемы з пашкоджаннем фізічнай памяці. Гэта не будзе выдзелена. LazyFree: Аб'ём памяці ў стане MADV_FREE. Калі прыкладанне усталёўвае сцяг MADV_FREE на розных старонках, гэта азначае, што ён больш не патрабуе іх, і яны цяпер кандыдаты на меліярацыю. Фактычная рэкультывацыя можа быць адкладзена, пакуль не будзе дастаткова попыту на памяць. Калі заяўка пачне пісаць на старонкі, меліярацыя можа быць адменена. AnonHugePages: Вялізныя старонкі, якія не падтрымліваюцца файламі, адлюстраваны ў табліцах старонак карыстацкага прасторы. Непадпарадкаваныя старонкі, якія не падтрымліваюцца файламі, паходзяць не з файла жорсткага дыска. ShmemHugePages: Аб'ём памяці, які выкарыстоўваецца агульнай памяццю (shmem) і псеўда-файлавымі сістэмамі (tmpfs), выдзелены велізарнымі старонкамі. ShmemPmdMapped: Аб'ём агульнай памяці, адлюстраваны ў прасторы карыстальніка з велізарнымі старонкамі. CmaTotal: Колькасць CMA (суцэльнага размеркавальніка памяці). Яны выкарыстоўваюцца прыладамі, якія могуць размаўляць толькі з суседнімі рэгіёнамі памяці. CmaFree: Колькасць бясплатных старонак CMA (суцэльнага размеркавальніка памяці). HugePages_Total: Велізарны памер пула старонак. HugePages_Free: Колькасць неразмеркаваных велізарных старонак у басейне. HugePages_Rsvd: Колькасць зарэзерваваных велізарных старонак. Абавязацельства па размеркаванні было прынята, але размеркаванне яшчэ не адбылося. HugePages_Surp: Колькасць велізарных старонак у пуле вышэй вызначанага сістэмнага значэння. Hugepagesize: Памер велізарных старонак. DirectMap4k: Колькасць байт аператыўнай памяці адлюстравана на старонках 4 кБ. DirectMap4M: Колькасць байтаў аператыўнай памяці адлюстравана на 4 МБ старонак. DirectMap2M: Колькасць байтаў аператыўнай памяці адлюстравана на 2 МБ старонак. DirectMap1G: Колькасць байт аператыўнай памяці адлюстравана на старонках у 2 ГБ.

Як звычайна ў Linux, ёсць некалькі спосабаў атрымаць хуткі агляд і заўсёды, па меншай меры, адзін спосаб паглыбіцца ў падрабязнасці.

Вы, верагодна, рэгулярна будзеце карыстацца бясплатным, верхнім і vmstate, а таксама захаваць / proc / meminfo у рэзерве, калі вам трэба зрабіць глыбокае апусканне, каб вывучыць пэўную праблему.