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

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

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

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

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

PGIN
Число операций чтения страниц, вызванных страничными ошибками. Поскольку все операции ввода-вывода связаны со страничными ошибками, данный параметр является основной характеристикой интенсивности ввода-вывода.
SIZE
Размер области данных процесса в пространстве подкачки в КБ (при вызове команды с другими флагами это значение указывается в поле SZ). Данное значение равно числу страниц из рабочего сегмента памяти, к которым обращался процесс, умноженному на 4. Если некоторые страницы из рабочего сегмента были выгружены на диск, то это значение будет больше объема физической памяти. Значение 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.