Oct. 1st, 2020

techquisitor: (sis)
Перед чтением.

Для тех, кто не использует или не любит дистрибутивы Linux семейства RHEL, следует ориентироваться на версии ядра. В случае, когда мы говорим RHEL 6, то имеется в виду ядро 2.6.32 и ниже. Если говорим о RHEL 7/8, то 3.10 и выше.

Отвечая на вопрос «зачем». Как оказалось, у многих даже давно занимающихся администрированием Linux знания об использовании данной команды остались на уровне времён ядер 2.6.32. В то время как в новых ядрах, очень многие фичи были или инвертированы или же сильно изменены. И многие люди про это не в курсе.

Оригинал статьи лежит здесь. На случай, если кто-то мой перевод сочтёт негодным. :)

Разбираем команду free: что должен знать администратор Linux

Команда free популярна среди системных администраторов Unix/Linux. Это серьёзный инструмент, дающий полное представление об использовании памяти в ясном для человека виде.

В man странице про данную команду сказано, что free отображает общее количество свободной и используемой памяти в системе, включая пространство подкачки и физической памяти, а также буферы с кешами используемые ядром операционной системы. Данная информация собирается путём разбора содержимого /proc/meminfo.

Как и другие команды, free прошла через череду изменений на протяжении своего существования, дабы вывод её был осмысленным и точным, что требуется для дальнейшего принятия решений. В RHEL 6 вывод утилиты free ощутимо отличается от вывода такового на RHEL 7 или 8. Впрочем, ключевые параметры остаются неизменными в любой версии.

Если вы наберёте free -h в RHEL 6 (я использовал ключ -h для вывода в удобном для человека виде), то вывод будет похож на этот:

[root@srv ~]# free -h
total used free shared buffers cached
Mem: 94G 44G 49G 161M 993M 1.3G
-/+ buffers/cache: 42G 52G
Swap: 15G 0B 15G

(Рис. 1)


В RHEL 7/8 вывод выглядит иначе:

[root@server1 ~]# free -h
total used free shared buff/cache available
Mem: 15G 751M 1.2G 272M 13G 14G
Swap: 0B 0B 0B

(Рис. 2)

В то же время, в RHEL 8 всё будет выглядеть следующим образом:

[root@tiger ~]# free -h
total used free shared buff/cache available
Mem: 819Mi 164Mi 146Mi 25Mi 509Mi 491Mi
Swap: 0B 0B 0B

(Рис. 3)

Дабы сделать вывод программы более понятным для восприятия, в команде предусмотрены следующие опции: free -b, -k, -m, -g. Они отображают количество памяти в байтах, килобайтах, мегабайтах и гигабайтах. Также вы можете использовать команду free -h для отображения вывода в удобном, понятном для человека виде. Если нужны подробности, запустите free --help для дополнительной справки по возможностям программы.

Различные столбцы, показанные в разных версиях выше, указывают на общую доступную память (total), использованную (used), свободную (free), разделяемую (shared) память. Помимо этого, в выводе отображается память, расположенная в данных момент в буферах и кешах операционной системы.

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

Red Hat Enterprise Linux 6

В случае с RHEL 6, сфокусироваться следует на столбцах -/+ buffers/cache. На рис. 1 выше мы видим, что общее количество памяти равно 94 гигабайтам, где израсходовано 44 гигабайта и свободно 49 гигабайт. Вообще, это довольно нагруженная система и потребление памяти в ней выглядит высоким. Волноваться не стоит, хотя всё же следует посмотреть на столбец в -/+ buffers/cache. Данное значение показывает занятые 42 гигабайта и свободные 52 Гб. Это означает, что в реальности используется всего 42 гигабайта, а не 44. Значение задействованных 44 гигабайт включает себя ещё и кеши. Заметьте, даже простой взгляд на значение колонки used без учёта значения занятых кешей уже влияет на интерпретацию оценки производительности системы.

Теперь разберём смысл колонок со значениями буферов и кешей:

· buffers: память задействованная буферами ядра
· cached: память занятая “Page Cache” (страничным кешем).

Страничный кеш — не что иное, как данные / файлы, копируемые в оперативную память, в момент когда ядро операционной системы выполняет операции чтения или записи на диске. Причина тому — производительность операций ввода-вывода. Таким образом, ядро держит эти файлы в ОЗУ и высвобождает их в тот момент, когда они не требуются или когда пространство памяти запрашивается какой-либо командой или процессом в случае отсутствия свободной памяти в системе.

Red Hat Enterprise Linux 7/8

В операционных системах RHEL 7/8 уже следует сместить фокус на колонку available, поскольку колонка -/+ buffers/cache была удалена и заменена столбцом available. В то же время, столбцы buffers и cache были объединены в единое значение buff/cache и имеют ровно тот же смысл, что и ранее. Столбец available показывает оценку сколько памяти доступно приложениям без использования подкачки.

Так когда сисадмину всё же следует начать беспокоиться?


Исправна та система, которая показывает максимально возможный объём памяти достаточный для выполнения каких-либо задач, при этом демонстрирующая следующие ожидаемые признаки нормальной работы:

· Значение free близко к 0 или имеет очень небольшие значения
· Значение used близко к общему количеству RAM
· Значение доступной памяти в available (или же описанная в столбцах free -/+ buffers/cache) является относительно большой в сравнении с общим количеством памяти.
· Размер раздела или файла подкачки не меняется

Однако, системному администратору стоит начать беспокоиться, когда появляются следующие признаки реальной нехватки памяти:

· Значение столбца available (или же столбцов free -/+ buffers/cache) близко к нулю или весьма небольшое.
· Размер подкачки начинает расти или меняться из-за того, не хватает свободных страниц памяти и теперь необходимо их сбрасывать на диск
· В dmesg появляются сообщения об OutOfMemory-killer, которые проверяются командой grep -i kill /var/log/messages* или же dmesg | grep oom-killer.

Подведение итогов

Команда free — полезный инструмент, которая может очень рассказать системному администратору о том, что происходит в системе. Знание о различиях в выводе free может помочь в более точной интерпретации выдаваемых данных.

Profile

techquisitor: (Default)
techquisitor

June 2024

S M T W T F S
      1
2345678
9101112131415
161718192021 22
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 14th, 2025 06:44 am
Powered by Dreamwidth Studios