Оценка интенсивности использования памяти с помощью команды ps

Команда ps позволяет получить информацию об использовании оперативной памяти для отдельного процесса.

Команда ps v ИД-процесса создает отчет с подробной информацией об использовании памяти указанным процессом. Этот отчет содержит:

  • Число страничных ошибок
  • Общий объем страниц из рабочего сегмента памяти, к которым обращался процесс
  • Объем рабочего сегмента памяти и сегмента, содержащего двоичный код программы
  • Размер сегмента, содержащего исходный текст программы
  • Размер постоянной области памяти
  • Долю оперативной памяти, занятую данным процессом (в процентах)
Пример приведен ниже:
# ps v
   PID    TTY STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
 36626  pts/3 A     0:00    0   316   408 32768    51    60  0.0  0.0 ps v

Ниже описаны те поля отчета команды ps, на которые стоит обратить внимание:

PGIN
Число операций чтения страниц, вызванных страничными ошибками. Поскольку все операции ввода-вывода связаны со страничными ошибками, данный параметр является основной характеристикой интенсивности ввода-вывода.
SIZE
Размер области данных процесса в пространстве подкачки в КБ (при вызове команды с другими флагами это значение указывается в поле SZ). Это число равно числу страниц рабочего сегмента процесса, которые были затронуты четыре раза. Если некоторые страницы рабочего сегмента в настоящее время выгружаются, это число больше, чем объем используемой реальной памяти. Значение SIZE учитывает страницы из сегмента процесса и из сегмента данных общих библиотек, используемых процессом.
RSS
Объем физической памяти, занятой процессом, в килобайтах. Это число равно сумме количества страниц рабочего сегмента и кодового сегмента в памяти, умноженной на 4. Помните, что страницы сегментов кода используются совместно всеми выполняющимися в данный момент экземплярами программы. Если запущено 26 процессов ksh, в оперативной памяти будет находиться только одна копия страниц с исполняемым кодом ksh, однако в выводе команды ps размер этих страниц будет прибавлен к значению RSS всех экземпляров программы ksh.
TSIZ
Размер текста (общего для всех экземпляров программы). Эта величина представляет собой размер текстовой части исполняемого файла программы. Страницы с текстовой частью исполняемой программы загружаются в память только при обращении к этим страницам. Данная величина представляет собой возможный верхний предел количества загруженного текста. Значение TSIZ не отражает фактического объема занятой памяти. Значение TSIZ можно узнать и с помощью команды dump -ov, указав в качестве параметра исполняемый файл (например, dump -ov /usr/bin/ls).
TRS
Размер резидентной (размещенной в реальной памяти) командной части программы. Это число страниц сегмента кода, умноженное на 4. Это число преувеличивает использование памяти для программ, у которых запущено несколько экземпляров. Значение TRS может превосходить значение TSIZ за счет того, что сегмент с кодом программы содержит не только текст программы, но и заголовок XCOFF, а также описание загружаемых библиотек.
%MEM
Это значение указывает, какую долю (в процентах) от общего объема оперативной памяти компьютера составляет значение RSS. Это значение должно характеризовать долю физической памяти, занятой процессом. К сожалению, как и RSS, эта величина переоценивает загрузку памяти процессами, которые совместно используют командную часть программы. Кроме того, округление до ближайшего целого значения приводит к тому, что значение %MEM будет равно 0,0, если отношение RSS к объему оперативной памяти меньше 0,005.
Прим.: Команда ps не позволяет узнать размер общих сегментов памяти и закрепленных сегментов памяти. Поскольку многие приложения пользуются общей памятью и закрепленными сегментами, сведения о сегментах проще всего получать с помощью команды svmon.