Оценка интенсивности использования памяти с помощью команды 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.