meminfo — является наиболее полным источником использования памяти. Для получения информации используется виртуальная файловая система procfs которая позволяет получить доступ к информации о системных процессах из ядра. Обычно файловая система монтируется в /proc и создает двухуровневое представление пространств процессов. Вывод команды cat:
Комментарии для некоторых из этих значений:
MemTotal - доступный объем оперативной памяти (часть физически доступной памяти резервируется во время запуска системы ядром и не входит в указанный здесь объем).
MemFree - какой объем памяти не используется и доступен для немедленного выделения процессам.
Buffers - область ОЗУ, занятая хранением данных, ожидающих записи на диск (буфер позволяет приложениям продолжать выполнение своей задачи не дожидаясь момента когда данные будут физически записаны на диск. Обычно размер около 20Мб).
Cached - объем занятый в ОЗУ под кэш чтения страниц с диска (файлы, директории, файлы блочных устройств, данные, относящиеся к механизму IPC, данные процессов уровня пользователя, сброшенных в область подкачки). Не включает в себя SwapCached.
SwapCached - объем памяти, который однажды был помещен в область подкачки, но потом перенесен обратно в ОЗУ. Однако данные все еще присутствуют в swap, и при необходимости этот объем памяти может быть вновь освобожден без необходимости тратить ресурсы на "дорогие" операции ввода/вывода.
Active - объем памяти, занятый в ОЗУ наиболее часто используемыми страницами памяти (эти страницы памяти активно используются процессами и будут освобождаться только в случае крайней необходимости).
Inactive - объем памяти, занятый в ОЗУ не используемыми в настоящий момент страницами (эти страницы считаются наиболее подходящими для выгрузки в swap и освобождения в случае необходимости).
Swap(Total, Free) - SwapTotal - это общий объем области подкачки (как в разделе подкачки, так и в swap-файлах, если они используются).
Dirty - измененные "грязные" страницы, находящиеся в ОЗУ, но еще не сброшенные на диск (за процедуру записи на диск отвечает группа потоков ядра pdflush. В системе должно работать минимум два и максимум восемь потоков pdflush).
Writeback - страницы памяти, которые в настоящий момент сбрасываются на диск.
AnonPages - анонимные страницы - это, как правило, данные, используемые программами и не ассоциированные с каким-либо файлом (наряду со страницами, объем которых указан в Inactive, это первые кандидаты на попадание в область подкачки. Анонимные страницы нередко используются несколькими процессами).
Mapped - общий объем памяти, привнесенный в виртуальное адресное пространство процессов при помощи mmap (например, библиотеки).
Slab - объем памяти, занятый под различные структуры ядра небольшого объема, для которых не оптимально выделять по целой странице памяти (по умолчанию в 32-р системах размер страницы - 4Кб, и этот объем является квантом памяти при ее выделении. Подробнее информацию о slab-кэше можно посмотреть при помощи утилиты vmstat с ключем -m, утилиты slabtop или через /proc/slabinfo).
PageTables - объем памяти, зарезервированный под "Таблицу Страниц".
NFS_Unstable - данный параметр относится к клиенту NFS v3+, реализованному в ядре Linux, и показывает, какой объем данных, отправленных клиентом серверу, еще не был записан на диск. Клиент должен кэшировать эти данные до поступления подтверждения от сервера.
CommitLimit - объем памяти, который может быть выделен системой, вычисляется на основе vm.overcommit_ratio (по умолчанию - 50%) и размера области подкачки.
Committed_AS - сколько памяти выделено всем процессам, даже если они эту память не используют в полном объеме (данный параметр показывает, сколько при текущей загрузке системы требуется ОЗУ).
VmallocTotal - общее число виртуального пространства, доступного для vmalloc.
VmallocUsed - объем использованного пространства vmalloc.
VmallocChunk - наибольший свободный непрерывный блок внутри пространства vmalloc.