Re: Использование памяти

Главная Форумы POWER Systems AIX/Hardware Использование памяти Re: Использование памяти

#12781
Alexander Tchoulkov
Участник

Здравствуйте,

насчёт того что вся память используется:

nmon и topas (начиная с некоторого времени это фактически одно и тоже) в нормально работающей и хорошо сбалансированной системе показывают 100 % или около 100% использование памяти. Размер свободной памяти который они отображают не имеет большого смысла с точки зрения инженерных людей и больше предназначены для красивой отчётности манажементу. Т.к. эти утилиты показывают _ВСЮ_ занятую память, т.е. они не вычитают размер глобального файлового кэша. AIX (VMM) испольует всю “свободную” в системе память для глобального файлового кэша. При этом он постепенно заполняет память не занятую процессами кешируя файлы, в результате вся память оказывается занятой (системные области + процессы + глобальный файловый кэш). Что не является проблемой т.к. когда процессу необходима память страницы оперативной памяти (в необходимом количестве) используемые под файловый кэш передаются процессу который запросил память. И позволяет очень сильно увеличить скорость работы файлового ввода/вывода.

В этом принципе работы VMM есть тонкий момент, скажем двойственность. С одной стороны, с точкизрения системы память вся занята – системные области + процессы + глобальный файловый кэш, следовательно topas/nmon показывают что память вся занята. _НО_ с другой стороны, с точки зрения процессов глобального файлового кэша не существует и в системе есть свободная память как минимум в размере глобального файлового кэша.

Если Вы хотите определить сколько физической памяти реально занято системой и процессами исключая области которые временно используются системой и будут освобождены ею и переданны процессам при первом же запросе памяти от процессов. То Вам нужно смотреть на поле Virtual в выводе svmon или на поле avm вывода vmstat это будет размер памяти занятой системой и процессами исключая временно используемые операционной системой области. И Вам нужно просто вычесть это значение из общего размера физической памяти.

Кто использует память в системе

svmon это средство для отладки приложений и точной настройки производительности оно показыват огромное количество деталей которое для быстрой оценки и каждодневного использования в общем не нужно.

Есть и больее быстрый и более простой способ определения кто использует память в системе. Это испльзовать команду ps с параметрами стиля BSD:

# ps gv | head -n 1; ps gv | egrep -v “RSS” | sort +6b -7 -n -r

Эти команды покажут использование памяти а вторая и отсортирует в убывающем порядке. Интересующие нас поля в выводе это:

RSS – сумарный размер text + data сегментов используемых процессом
%MEM – сумарныей размер text + data сегментов используемых процессом делённый на общий размер памяти
TRS – размер памяти используемый для text сегментов
SIZE – текущий размер выделенного пространства в свопинге для процесса

С помощью старой доброй команды ps с опциями BSD стиля можно получить очень быстро оценку по занимаемой процессами памяти не углубдяясь в детали отображаемые svmon.