В прошлой статье мы рассмотрели мониторинг CPU, в данной статье мы рассмотрим вопрос мониторинга оперативной памяти. Операционная система снимает достаточно много метрик и не всегда понятно, как они между собой взаимосвязаны. Поэтому в статье мы рассмотрим метрики, которые в данном контексте имеют значение. Пользуемся все тем же инструментом vmstat. Как видите у инструмента выделена целая секция по памяти.
Swapd – т.е это количество памяти находящееся в свопе, это либо файл на жестком диске или раздел жесткого диска выделенный под своп, который представляет собой пространство такое в которое мы можем забираться если у нас закончится реальная оперативная память. Можно сказать, некая подстраховка. Оперативная память достаточно быстрая, а жесткий диск значительно более медленный поэтому его использовать в качестве свопа не совсем эффективно. Поэтому он нужен для подстраховки. Если мы заходим в операционную систему и видим, что у нас что-то часто свопится, то это не очень хорошо. Потому что, жесткий диск помимо своих стандартных обязанностей вынужден выполнять обязанности оперативной памяти. Поэтому есть тонкая настройка свопа, такой параметр как swappiness. Изменение этого параметра от 0 до 100 мы можем определить в каком случае необходимо начинать свопинг. Можно сделать, например, так, чтобы к диску обращение шло только в случае если закончится вся оперативная память. Вернемся к параметру. Цифра данного параметра показывает сколько у нас находится в свопе.
Free – параметр показывает сколько свободной оперативной памяти.
Buff – это буферизованная память. Это те страницы памяти, что зарезервированы системой для процессов, в тот момент, когда эти процессы будут нуждаться в этой памяти. Иногда эту область\области памяти называют heap (хипом). По факту это память, зарезервированная для какого-то приложения. Чаще всего она используется для каких-то разовых обращений.
Cache – это память кэша. Чаще всего здесь находятся файлы, которые были недавно использованы процессами и хранятся в оперативной памяти на всякий случай, но и как в случае с обычным кэшем это данные к которым нужен частый доступ приложениям и поэтому эти данные закэшированные.
Тот самый параметр свопа дополняется отдельной секцией свопа еще с 2-мя подпараметрами:
Swap in \ swap out (si\so) – это количество блоков в секунду, которых система считывает (размер блока зависит от файловой системы и настроек). Суммарно два этих числа не должны быть равны параметру swapd , т.к параметр swapd – это сколько выделено, а подпараметры это текущее значения записи и чтения из свопа.
У утилиты vmstat есть ключ –a и мы можем посмотреть еще 2 параметра оперативной памяти.
Active – эта та оперативная память, которая используется активным процессом.
Inactive – эта та память, которая была выделена под процесс, но этот процесс в данный момент более не активен. По существу, она является так же свободной оперативной памятью, но система еще некоторое время отслеживает то на что использовалась данная оперативная память.
Чаще всего вот эта не активная оперативная память и должна свопится. Т.к она свободна и ее выгодно бросить на своп на жесткий диск, потому что к ней не должно быть обращений. Если пойдут обращения она должна стать активной на реальных планках оперативной памяти.
У vmstat есть такой ключ –s здесь достаточно много параметров.
Можно сравнить с выводом выше, попробовать просуммировать, и поискать взаимосвязи, но система памяти динамична и меняется в каждый момент времени.
Вообще есть более удобная утилита для мониторинга памяти free.
Но в таком формате тоже не очень удобно, добавим ключик –h.
Цифры превращаются в удобные мегабайты, килобайты, гигабайты. И видим появилась память shared – это память которая общая для процессов. Причем эти процессы могут взаимодействовать между собой напрямую без системных вызовов ядра. Чаще всего данная память монтируется в каталог tempfs. Далее можно увидеть, что буферизированная память и кэшированная память уже считается объединенной. И available это free + cache. Тут нету строгой арифметики т.к одни и те же блоки могут входить в разные столбцы.
Linux не любит, чтобы оперативная память простаивала и будет стараться максимально загонять данные в нее. Как следствие столбец free будет уменьшаться. Но с другой стороны мы видим available , который нам показывает сколько осталось еще памяти до того момента пока система не начнет забираться в swap.
Так же утилита показывает параметры по свопу. Для просмотра свопа можем использовать другую утилиту . swapon –s .
Так же мы можем использовать любую из утилит top,htop,atop.
В данных программах можно отсортировать по параметру память, чтобы проанализировать.
Если у кого есть желание сказать спасибо за канал или статьи :
QIWI: KNEYE561
Юmoney ( ЯД ) 41001606289345
#ubuntu #CentOS #open source #системное администрирование