
Среда
Red Hat Enterprise Linux (RHEL) 5
Red Hat Enterprise Linux (RHEL) 6
Red Hat Enterprise Linux (RHEL) 7
Red Hat Enterprise Linux (RHEL) 8
Вопрос
Мне нужна интерпретация вывода /proc/meminfo
.
Я хочу сравнить вывод free -k
с cat /proc/meminfo
.
Решение
Определение
полей /proc/meminfo
в выпусках Red Hat Enterprise Linux (RHEL) до RHEL 5 смотрите в разделе Что обозначает каждое значение в /proc/meminfo?Каждое поле
cat /proc/meminfo
будет рассмотрено в Шагах диагностики.Вывод RHEL 5 отличается по некоторым параметрам. Это также отмечено в Шагах диагностики.
В RHEL 5 также есть некоторые поля, которых больше нет в RHEL 6. Чтобы получить разъяснения по этому вопросу, посмотрите статью Почему LowTotal, LowFree, HighTotal и HighFree отсутствуют в /proc/meminfo на x86_64 RHEL 6?
Для получения дополнительной информации о выводе команды free прочтите Как просмотреть использование системной памяти в Red Hat Enterprise Linux?
RHEL 7 имеет дополнительное поле
MemAvailable
в/proc/meminfo
В RHEL 7 немного изменен вывод команды
free
.
Сравнение вывода
вывод
free -k
(RHEL 5 и RHEL 6):
total used free shared buffers cached
Mem: 7778104 2971960 4806144 0 211756 1071092
-/+ buffers/cache: 1689112 6088992
Swap: 4194296 0 4194296
вывод
free -k
(RHEL 7/8):
total used free shared buff/cache available
Mem: 1012952 252740 158732 11108 601480 543584
Swap: 1048572 5380 1043192
Соответствующие поля из
/proc/meminfo
, чтобы сопоставить их с выводомfree -k
:
MemTotal: 7778104 kB
MemFree: 4806144 kB
Buffers: 211756 kB
Cached: 1071092 kB
SwapTotal: 4194296 kB
SwapFree: 4194296 kB
В RHEL 7/8 доступно дополнительное поле, которое используется вместо расчета для линии
-/+ buffers/cache
:
MemAvailable: 543584 kB
Сопоставление вывода free -k
с /proc/meminfo
В следующей таблице показано, как получить вывод free
, сопоставленный с полями /proc/meminfo
в Red Hat Enterprise Linux 5, 6 и 7/8.
вывод free | соответствующие поля /proc/meminfo |
Mem: total | MemTotal |
Mem: used | MemTotal - MemFree |
Mem: free | MemFree |
Mem: shared (в настоящее время можно игнорировать, это не имеет никакого значения). | N/A (не доступно) |
Mem: buffers | Buffers |
Mem: cached | Cached |
-/+ buffers/cache: used | MemTotal - (MemFree + Buffers + Cached) |
-/+ buffers/cache: free | MemFree + Buffers + Cached |
Swap: total | SwapTotal |
Swap: used | SwapTotal - SwapFree |
Swap: free | SwapFree |
В следующей таблице показано, как получить вывод free
, соответствующий полям /proc/meminfo
в Red Hat Enterprise Linux 7.1 или более поздней версии (procps-ng 3.3.10).
вывод free | соответствующие поля /proc/meminfo |
Mem: total | MemTotal |
Mem: used | MemTotal - MemFree - Buffers - Cached - Slab |
Mem: free | MemFree |
Mem: shared | Shmem |
Mem: buff/cache | Buffers + Cached + Slab |
Mem:available | MemAvailable |
Swap: total | SwapTotal |
Swap: used | SwapTotal - SwapFree |
Swap: free | SwapFree |
Коренная причина
Анализ потребления памяти
Шаги диагностики
Большая часть материала взята из документации по ядру (Documentation/filesystems/proc.txt
и Documentation/vm/hugetlbpage.txt
)
Статистика высокого уровня
RHEL 5, RHEL 6 и RHEL 7/8
MemTotal: Общий объем используемой памяти
MemFree: Объем физической памяти, не используемой системой
Buffers: Память в буферном кэше, то есть относительно временное хранилище для необработанных блоков диска. Она не должна быть очень большой.
Cached: Память в страничном кэше (pagecache) (дисковый кэш и общая память).
SwapCached: Память, которая присутствует внутри основной, а также в файле подкачки. (Если память станет необходима, то эту область не нужно выгружать СНОВА, поскольку она уже находится в файле подкачки. Это экономит ввод-вывод и повышает производительность, в случае если машине не хватает памяти).
Только RHEL 7
MemAvailable: Оценка того, сколько памяти доступно для запуска новых приложений без свопинга.
Дополнительную информацию о
MemAvailable
можно найти здесь.
Подробная статистика уровня
RHEL 5, RHEL 6 и RHEL 7/8
Active: Память, которая использовалась недавно и обычно не выгружается и не высвобождается
Inactive: Память, которая не использовалась в последнее время и может быть выгружена или высвобождена.
Только для RHEL 6 и RHEL 7/8
Active(anon): Анонимная память, которая использовалась в последнее время и обычно не выгружается.
Inactive(anon): Анонимная память, которая не использовалась в последнее время и может быть выгружена.
Active(file): Память Pagecache, которая использовалась в последнее время и обычно не освобождается до тех пор, пока не понадобится.
Inactive(file): Память Pagecache, которая может быть высвобождена без существенного влияния на производительность
Unevictable: Неизвлекаемые страницы не могут быть выгружены по ряду причин.
Mlocked: Страницы, заблокированные в памяти с помощью системного вызова
mlock()
. Заблокированные страницы также являются Неизвлекаемыми.
Статистика памяти
RHEL 5, RHEL 6 и RHEL 7/8
SwapTotal: Общее доступное пространство свопа.
SwapFree: Оставшееся доступное пространство свопа.
Dirty: Память, ожидающая записи на диск
Writeback: Память, которая активно записывается на диск
AnonPages: Нефайловые поддерживаемые страницы, отображенные в таблицах страниц пользовательского пространства
Mapped: Файлы, которые были отображены, например, библиотеки.
Slab: Кэш структур данных внутри ядра
PageTables: Объем памяти, отведенный под самый нижний уровень таблиц страниц. Этот параметр может увеличиться до высокого значения, если много процессов подключено к одному и тому же сегменту общей памяти.
NFS_Unstable: Страницы NFS, отправленные на сервер, но еще не зафиксированные в хранилище.
Bounce: Память, используемая для
bounce buffers
блочных устройствCommitLimit: Исходя из коэффициента избыточного выделения памяти (
vm.overcommit_ratio
), это общий объем памяти, который в настоящее время может быть выделен в системе. Этот лимит соблюдается только в том случае, если включен строгий учет оверкоммита (режим 2 в vm.overcommit_memory).Committed_AS: Объем памяти, выделенной в настоящее время в системе. Committed memory (переданная память) - это сумма всей памяти, которая была выделена процессами, даже если она еще не была ими "использована".
VmallocTotal: общий размер области памяти
vmalloc
.VmallocUsed: объем области
vmalloc
, которая используетсяVmallocChunk: самый большой непрерывный блок области
vmalloc
, который свободенHugePages_Total: количество огромных страниц, выделяемых ядром (Определяется с помощью
vm.nr_hugepages
)HugePages_Free: Количество огромных страниц, не выделяемых процессом.
HugePages_Rsvd: Количество огромных страниц, для которых было принято обязательство о выделении из резервного пула, но выделение еще не было произведено.
Hugepagesize: Размер
hugepage
(обычно 2 МБ в системе на базе Intel).
Только для RHEL 6 и RHEL 7/8
Shmem: Полное количество используемой общей памяти (совместно используемая несколькими процессами, включая RAM-диски, SYS-V-IPC и BSD, такие как SHMEM)
SReclaimable: Часть Slab, которая может быть высвобождена (например, кэш).
SUnreclaim: часть Slab, которая не может быть высвобождена под давлением памяти.
KernelStack: Память, используемая стеком ядра. Она не подлежит высвобождению.
WritebackTmp: Память, используемая FUSE для временных буферов обратной записи.
HardwareCorrupted: Объем оперативной памяти, которую ядро определило как поврежденную/нерабочую.
AnonHugePages: Нефайловые огромные страницы, отображенные в таблицы страниц пользовательского пространства.
HugePages_Surp: Количество огромных страниц в пуле, превышающее значение в
vm.nr_hugepages
. Максимальное количество лишних огромных страниц контролируетсяvm.nr_overcommit_hugepages
.DirectMap4k: Объем памяти, используемой для отображения стандартных 4k страниц.
DirectMap2M: объем памяти, используемой для отображения
hugepages
(обычно размером 2 МБ).DirectMap1G. Объем памяти, используемой для отображения
hugepages
(обычно размером 1 ГБ).
Примечание для DirectMap1G: Это значение будет доступно в /proc/meminfo
только при условии, что соответствующее оборудование процессора поддерживает его. Вы можете убедиться в этом, проверив наличие флага 'pdpe1gb' в /proc/cpuinfo
.
Данное исследование является частью программы ускоренной публикации Red Hat, предоставляющей огромную библиотеку решений, которые инженеры Red Hat подготовили в процессе оказания поддержки нашим клиентам. Чтобы предоставить вам необходимые знания сразу после их появления, эти статьи могут быть представлены в необработанном и неотредактированном виде.
Материал подготовлен в рамках специализации Administrator Linux.
Всех желающих приглашаем на открытый урок «Proxmox VE: настраиваем домашний сервер виртуализации». На занятии мы:
— обсудим существующие средства виртуализации;
— проведём сравнение ProxmoxVE с другими гипервизорами;
— установим, настроим и поработаем в ProxmoxVE.
→ РЕГИСТРАЦИЯ