[Настройка Linux] Как анализировать вывод /proc/meminfo в Linux (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Статья переведена. Оригинал доступен по ссылке
Файловая система /proc — это виртуальная файловая система. Она не хранится на диске, а создается в памяти и используется для предоставления информации о системе (первоначально о процессах, отсюда и название).Из /proc/meminfo можно получить информацию о свободной памяти, об используемой (и физической, и swap), а также о разделяемой (shared memory) и буферах.Подробно файловая система /proc описана в man.Пример вывода:
# cat /proc/meminfo
MemTotal: 16344972 kB
MemFree: 13634064 kB
Buffers: 3656 kB
Cached: 1195708 kB
SwapCached: 0 kB
Active: 891636 kB
Inactive: 1077224 kB
HighTotal: 15597528 kB
HighFree: 13629632 kB
LowTotal: 747444 kB
LowFree: 4432 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 968 kB
Writeback: 0 kB
Mapped: 280372 kB
Slab: 684068 kB
Committed_AS: 1576424 kB
PageTables: 24448 kB
ReverseMaps: 1080904
VmallocTotal: 112216 kB
VmallocUsed: 428 kB
VmallocChunk: 111088 kB
Другой пример:
$ cat /proc/meminfo
MemTotal: 16464260 kB
MemFree: 5206868 kB
Buffers: 17980 kB
Cached: 7395552 kB
SwapCached: 114124 kB
Active: 5590956 kB
Inactive: 4426264 kB
Active(anon): 2191992 kB
Inactive(anon): 416676 kB
Active(file): 3398964 kB
Inactive(file): 4009588 kB
Unevictable: 32204 kB
Mlocked: 13808 kB
SwapTotal: 2096476 kB
SwapFree: 1264996 kB
Dirty: 144 kB
Writeback: 0 kB
AnonPages: 2547488 kB
Mapped: 55404 kB
Shmem: 56 kB
Slab: 956820 kB
SReclaimable: 884568 kB
SUnreclaim: 72252 kB
KernelStack: 4792 kB
PageTables: 44052 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 10328604 kB
Committed_AS: 3304140 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 307816 kB
VmallocChunk: 34359426296 kB
HardwareCorrupted: 0 kB
AnonHugePages: 1689600 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 7488 kB
DirectMap2M: 16764928 kB
Сначала посмотрим показатели, на которые следует обращать внимание в первую очередь.Основные показателиMemTotal : доступный объем оперативной памяти (физическая память за вычетом нескольких зарезервированных битов и бинарного кода ядра).MemFree : Сумма LowFree и HighFree.MemShared : 0; приведен здесь из соображений совместимости и всегда равен нулю.Buffers : память в буферном кеше. В настоящее время бесполезен в качестве метрики. Это временное хранилище для страниц, ожидающих записи на диск. Не должно быть слишком большим (обычно около 20 МБ).Cached : память в кэше страниц за вычетом SwapCache.SwapCache: память, которая когда-то была выгружена в своп, но потом загружена обратно и все еще находится в файле подкачки. Если будет необходимость в выделении памяти, то эту память не нужно будет выгружать повторно, так как она уже находится в свопе. Это экономит операции ввода-вывода.Прочие показателиCтраницы кэша делятся на "активные" и "неактивные". Идея заключается в том, что если вам нужна память и ее можно взять из кэша, то она будет забрана из неактивных страниц, поскольку ожидается, что она больше не будет использоваться. Подсистема виртуальной памяти постоянно отслеживает, какая память используется, и отмечает это в таблице страниц (pagetable) специальным битом.Страницы также могут перемещаться обратно в активные. Активные страницы упорядочены в порядке "не использовалась дольше всех" (хотя это очень грубо и в реальности все немного сложнее). Давно не использованные страницы можно переместить в неактивные. В приведенном выше примере неактивная память разделена на две части. Иногда она разбивается на три.Active : память, которая использовалась совсем недавно. Обычно не освобождается без крайней необходимости.Inact_dirty : "грязная" означает, что "необходима запись на диск или в своп". Для ее освобождения требуется больше работы. Здесь могут быть файлы, которые еще не записаны на диск. Операции записи на диск происходят не сразу, чтобы не снижать производительность ввода-вывода. Например, если вы пишете логи, то, возможно, лучше подождать, пока у вас будет готова полная запись лога, прежде чем отправлять ее на диск.Inact_clean: память, которую можно легко освободить. Ядро пытается сохранить немного чистых страниц, чтобы было проще "дышать".Inact_target : целевая метрика, которую ядро использует, чтобы убедиться, в достаточном количестве неактивных страниц. При превышении этого значения ядро не будет перемещать страницы из активного состояния в неактивное. Страница может стать неактивной разными способами. Например, если вы выполняете длительный последовательный ввод-вывод, то ядро предполагает, что вы не собираетесь использовать эту память, и делает ее неактивной превентивно. Таким образом, вы можете получить больше неактивных страниц, чем целевое значение, потому что ядро помечает некоторый кэш как "скорее всего, никогда не будет использоваться" и позволяет обмануть порядок "использовался последним".Статистика памятиHighTotal : размер области верхней памяти. Область верхней памяти (highmem) - это вся память, выше (приблизительно) 860 МБ физической ОЗУ. Доступ к этой памяти осуществляется через косвенные механизмы доступа. Здесь может находиться кэш данных.LowTotal: общий объем памяти без highmem-памяти.LowFree : объем свободной памяти в нижней области памяти. Это память, к которой ядро может обращаться напрямую. Все структуры данных ядра должны находиться этой области.SwapTotal : общий физический размер свопинга.SwapFree : количество свободной памяти в свопинге. Swap - память, которая была выгружена из ОЗУ и временно находится на диске.Dirty : память, ожидающая записи на диск.Writeback: память, которая в настоящий момент записывается на диск.Mapped : отображаемые в память файлы с помощью mmaped, например, библиотеки.Slab : кеш внутренних структур ядра.Committed_AS: оценка объема оперативной памяти, необходимой для 99,99% гарантии того, что для текущей нагрузки системы не будет OOM (out of memory, нехватки памяти). Обычно ядро позволяет выделять больше памяти, чем доступно в системе (overcommit). Например, при выделении 1 ГБ памяти через malloc, на самом деле ничего не происходит. Только когда вы начнете ИСПОЛЬЗОВАТЬ эту память, вам выделят столько памяти, сколько вы будете использовать. То есть вы берете ипотеку и надеетесь, что банк не разорится. Также могут быть случаи, когда вы используете mmap файл, который используется только при записи в него, и вы получаете приватную копию этих данных. Хотя обычно они разделяются между процессами. Committed_AS - это приблизительная оценка того, сколько памяти / свопинга вам понадобится в худшем случае.PageTables : объем памяти, выделенный для таблиц страниц.ReverseMaps : количество выполненных обратных отображений.VmallocTotal : общий размер области памяти vmalloc.VmallocUsed : используемая память vmalloc.VmallocChunk : самый большой свободный непрерывный блок в области vmalloc.Оценка использования ресурсов, особенно потребления памяти, намного сложнее, чем может показаться на первый взгляд. Неиспользуемый ресурс - это ресурс, потраченный впустую. Поэтому ядро старается использовать столько оперативной памяти, сколько может для кэширования информации с локальных и удаленных файловых систем и дисков. Кэш наполняется постепенно по мере выполнения операций чтения и записи, пытаясь сохранить данные, хранящиеся в ОЗУ, как можно более актуальными для процессов, запущенных в системе. При наличии свободной оперативной памяти будет выполняться больше кэширования и, следовательно, будет "потребляться" больше памяти. Однако на самом деле это не считается использованием ресурсов, поскольку эта память с кэшем доступна для процессов в любой момент. Кэш освобождается не при завершении процесса (возможно, появится другой процесс, которому нужны те же данные), а по запросу.При запуске процесса, требующему для работы много памяти, ядро ОС освобождает память, в которой хранились кэшированные данные, и отдает ее новому процессу.Обычно системной информации о памяти можно доверять, но даже она может быть легко истолкована неверно. Например, посмотрим на top.
00 processes: 397 sleeping, 2 running, 1 zombie, 0 stopped
CPU0 states: 0.1% user, 0.3% system, 0.0% nice, 99.1% idle
CPU1 states: 0.3% user, 2.0% system, 0.0% nice, 97.1% idle
CPU2 states: 2.3% user, 8.1% system, 0.0% nice, 88.4% idle
CPU3 states: 100.0% user, 0.0% system, 0.0% nice, 0.0% idle
Mem: 16167672K av, 16124948K used, 42724K free, 1710184K shrd, 351304K buff
Swap: 12582608K av, 15892K used, 12566716K free 13326028K cache
Другой пример:
top - 05:49:20 up 59 days, 19:01, 36 users, load average: 3.00, 3.05, 3.01
Tasks: 344 total, 3 running, 340 sleeping, 0 stopped, 1 zombie
Cpu(s): 7.0%us, 27.8%sy, 0.0%ni, 64.7%id, 0.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 16464260k total, 11263872k used, 5200388k free, 18148k buffers
Swap: 2096476k total, 831480k used, 1264996k free, 7400016k cached
Что может сбить с толку, так это буфер и кэш:
Mem: 16167672K av, 16124948K used, 42724K free, 1710184K shrd, 351304K buff
Swap: 12582608K av, 15892K used, 12566716K free 13326028K cache
Можно увидеть, что используется 16124948K, но почти все эти 15 ГБ используются под кэш и буфер, и в случае, если память потребуется другому процессу, то она будет немедленно освобождена.
$ free
total used free shared buffers cached
Mem: 16167672 16129820 37852 1710184 351312 13330324
-/+ buffers/cache: 2448184 13719488
Swap: 12582608 15892 12566716
Looking at the third line:
-/+ buffers/cache: 2448184 13719488
Система использует 2448184 КБ (= 2 ГБ) для приложений / процессов, при этом потенциально свободно 13 ГБ, используемой для буферизации и кэширования. Для оценки потребления памяти процессом, вы должны использовать команду free до, во время и после запуска процесса, проделывая это несколько раз, чтобы получить среднее значение оцениваемого показателя.Для получения информации о потреблении памяти конкретного процесса можно использовать следующие команды:
$ cat /proc/<pid>/maps
...
$ cat /proc/<pid>/status
Материал подготовлен в рамках старта набора на специализацию "Administrator Linux".Всех, кто хочет с нуля научиться управлять серверами и развиваться как системный / инфраструктурный инженер или DevOps-инженер приглашаем на страницу курса для более подробного ознакомления с программой и процессом обучения. - УЗНАТЬ ПОДРОБНЕЕ ПРО СПЕЦИАЛИЗАЦИЮ
Статья переведена. Оригинал доступен по ссылке
===========
Источник:
habr.com
===========
===========
Автор оригинала: RAMAKANTA
===========Похожие новости:
- [Программирование, Софт] 6 вещей, которые бизнес-лидеры должны знать о RPA в 2021 году (перевод)
- [.NET, C#] Миграция Bing's Workflow Engine на .NET 5
- [Open source, C++, Разработка под MacOS, Разработка под Linux, Разработка под Windows] Mixxx 2.3 — свободный пакет для создания музыкальных миксов
- [FPGA, Процессоры, DIY или Сделай сам, Электроника для начинающих] Zynq 7000. Собираем Linux для платы QMtech
- [Искусственный интеллект, Голосовые интерфейсы] Linux Foundation представил проект Open Voice Network по разработке этики распознавания голоса
- [Управление персоналом] Как подготовить митап?
- [Управление проектами, Agile] Инженерия требований в Agile: мифы и реальность
- [Сетевые технологии, Go, Разработка под Linux] gRPCurl — curl для gRPC-серверов
- [Open source, Разработка под Linux, Софт] Вышел Linux 5.13 с поддержкой M1, ноутбуков Microsoft Surface и улучшениями RISC-V
- Релиз ядра Linux 5.13
Теги для поиска: #_nastrojka_linux (Настройка Linux), #_linux, #_fajlovaja_sistema (файловая система), #_blog_kompanii_otus (
Блог компании OTUS
), #_nastrojka_linux (
Настройка Linux
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:04
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Статья переведена. Оригинал доступен по ссылке Файловая система /proc — это виртуальная файловая система. Она не хранится на диске, а создается в памяти и используется для предоставления информации о системе (первоначально о процессах, отсюда и название).Из /proc/meminfo можно получить информацию о свободной памяти, об используемой (и физической, и swap), а также о разделяемой (shared memory) и буферах.Подробно файловая система /proc описана в man.Пример вывода: # cat /proc/meminfo
MemTotal: 16344972 kB MemFree: 13634064 kB Buffers: 3656 kB Cached: 1195708 kB SwapCached: 0 kB Active: 891636 kB Inactive: 1077224 kB HighTotal: 15597528 kB HighFree: 13629632 kB LowTotal: 747444 kB LowFree: 4432 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 968 kB Writeback: 0 kB Mapped: 280372 kB Slab: 684068 kB Committed_AS: 1576424 kB PageTables: 24448 kB ReverseMaps: 1080904 VmallocTotal: 112216 kB VmallocUsed: 428 kB VmallocChunk: 111088 kB $ cat /proc/meminfo
MemTotal: 16464260 kB MemFree: 5206868 kB Buffers: 17980 kB Cached: 7395552 kB SwapCached: 114124 kB Active: 5590956 kB Inactive: 4426264 kB Active(anon): 2191992 kB Inactive(anon): 416676 kB Active(file): 3398964 kB Inactive(file): 4009588 kB Unevictable: 32204 kB Mlocked: 13808 kB SwapTotal: 2096476 kB SwapFree: 1264996 kB Dirty: 144 kB Writeback: 0 kB AnonPages: 2547488 kB Mapped: 55404 kB Shmem: 56 kB Slab: 956820 kB SReclaimable: 884568 kB SUnreclaim: 72252 kB KernelStack: 4792 kB PageTables: 44052 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 10328604 kB Committed_AS: 3304140 kB VmallocTotal: 34359738367 kB VmallocUsed: 307816 kB VmallocChunk: 34359426296 kB HardwareCorrupted: 0 kB AnonHugePages: 1689600 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 7488 kB DirectMap2M: 16764928 kB 00 processes: 397 sleeping, 2 running, 1 zombie, 0 stopped
CPU0 states: 0.1% user, 0.3% system, 0.0% nice, 99.1% idle CPU1 states: 0.3% user, 2.0% system, 0.0% nice, 97.1% idle CPU2 states: 2.3% user, 8.1% system, 0.0% nice, 88.4% idle CPU3 states: 100.0% user, 0.0% system, 0.0% nice, 0.0% idle Mem: 16167672K av, 16124948K used, 42724K free, 1710184K shrd, 351304K buff Swap: 12582608K av, 15892K used, 12566716K free 13326028K cache top - 05:49:20 up 59 days, 19:01, 36 users, load average: 3.00, 3.05, 3.01
Tasks: 344 total, 3 running, 340 sleeping, 0 stopped, 1 zombie Cpu(s): 7.0%us, 27.8%sy, 0.0%ni, 64.7%id, 0.4%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 16464260k total, 11263872k used, 5200388k free, 18148k buffers Swap: 2096476k total, 831480k used, 1264996k free, 7400016k cached Mem: 16167672K av, 16124948K used, 42724K free, 1710184K shrd, 351304K buff
Swap: 12582608K av, 15892K used, 12566716K free 13326028K cache $ free
total used free shared buffers cached Mem: 16167672 16129820 37852 1710184 351312 13330324 -/+ buffers/cache: 2448184 13719488 Swap: 12582608 15892 12566716 Looking at the third line: -/+ buffers/cache: 2448184 13719488 $ cat /proc/<pid>/maps
... $ cat /proc/<pid>/status Материал подготовлен в рамках старта набора на специализацию "Administrator Linux".Всех, кто хочет с нуля научиться управлять серверами и развиваться как системный / инфраструктурный инженер или DevOps-инженер приглашаем на страницу курса для более подробного ознакомления с программой и процессом обучения. - УЗНАТЬ ПОДРОБНЕЕ ПРО СПЕЦИАЛИЗАЦИЮ
=========== Источник: habr.com =========== =========== Автор оригинала: RAMAKANTA ===========Похожие новости:
Блог компании OTUS ), #_nastrojka_linux ( Настройка Linux ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:04
Часовой пояс: UTC + 5