Примечания к параметру memtype в элементах данных proc.mem

Обзор

Параметр memtype поддерживается на платформах Linux, AIX, FreeBSD и Solaris.

На всех этих платформах поддерживаются три распространённых значения memtype: pmem, rss и vsize. Кроме того, на некоторых платформах поддерживаются специфичные для платформы значения memtype.

AIX

В таблице приведены значения, поддерживаемые для параметра memtype в AIX.

Поддерживаемое значение Описание Источник в структуре procentry64 Пытается обеспечить совместимость с
vsize 1 Размер виртуальной памяти pi_size
pmem Процент реальной памяти pi_prm ps -o pmem
rss Размер резидентного набора pi_trss + pi_drss ps -o rssize
size Размер процесса (код + данные) pi_dvm столбец SIZE команды ps gvw
dsize Размер данных pi_dsize
tsize Размер текста (кода) pi_tsize столбец TSIZ команды ps gvw
sdsize Размер данных из общей библиотеки pi_sdsize
drss Размер резидентного набора данных pi_drss
trss Размер резидентного набора текста pi_trss

Примечания для AIX:

  1. При выборе параметров для ключа элемента данных proc.mem[] в AIX старайтесь указывать узкие критерии выбора процессов. В противном случае существует риск включения нежелательных процессов в результат proc.mem[].

Пример:

$ zabbix_agentd -t proc.mem[,,,NonExistingProcess,rss]
proc.mem[,,,NonExistingProcess,rss]           [u|2879488]

Этот пример показывает, что указание только параметра командной строки (регулярного выражения для сопоставления) приводит к учёту самого агента Zabbix, что, вероятно, не является желаемым результатом.

  1. Не используйте ps -ef для просмотра процессов — эта команда показывает только процессы, не относящиеся к ядру. Используйте ps -Af, чтобы увидеть все процессы, доступные агенту Zabbix.

  2. Рассмотрим на примере topasrec, как агент Zabbix выбирает процессы с помощью proc.mem[].

$ ps -Af | grep topasrec
root 10747984        1   0   Mar 16      -  0:00 /usr/bin/topasrec  -L -s 300 -R 1 -r 6 -o /var/perf daily/ -ypersistent=1 -O type=bin -ystart_time=04:08:54,Mar16,2023

proc.mem[] имеет следующие аргументы:

proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]

где:

  • Первый критерий - имя процесса (аргумент <name>). В нашем примере агент Zabbix увидит его как topasrec. Для соответствия необходимо указать topasrec или оставить поле пустым.
  • Второй критерий - имя пользователя (аргумент <user>). Для соответствия необходимо указать root или оставить поле пустым.
  • Третий критерий, используемый при выборе процесса, - аргумент <cmdline>. Агент Zabbix увидит его значение как /usr/bin/topasrec -L -s 300 -R 1 -r 6 -o /var/perf/daily/ -ypersistent=1 -O type=bin -ystart_time=04:08:54,Mar16,2023. Для соответствия необходимо указать регулярное выражение, соответствующее этой строке, или оставить поле пустым.

Аргументы <mode> и <memtype> применяются после использования трех указанных выше критериев.

FreeBSD

В таблице приведены значения, поддерживаемые для параметра memtype в FreeBSD.

Поддерживаемое значение Описание Источник в структуре kinfo_proc Попытка совместимости с
vsize Размер виртуальной памяти kp_eproc.e_vm.vm_map.size или ki_size ps -o vsz
pmem Процент реальной памяти вычисляется на основе rss ps -o pmem
rss Размер резидентного набора kp_eproc.e_vm.vm_rssize или ki_rssize ps -o rss
size 1 Размер процесса (код + данные + стек) tsize + dsize + ssize
tsize Размер текста (кода) kp_eproc.e_vm.vm_tsize или ki_tsize ps -o tsiz
dsize Размер данных kp_eproc.e_vm.vm_dsize или ki_dsize ps -o dsiz
ssize Размер стека kp_eproc.e_vm.vm_ssize или ki_ssize ps -o ssiz

Linux

Поддерживаемые значения параметра memtype в Linux приведены в таблице.

Поддерживаемое значение Описание Источник в файле /proc/<pid>/status
vsize 1 Размер виртуальной памяти VmSize
pmem Процент физической памяти (VmRSS/total_memory) * 100
rss Размер резидентного набора VmRSS
data Размер сегмента данных VmData
exe Размер сегмента кода VmExe
hwm Пиковый размер резидентного набора VmHWM
lck Размер заблокированной памяти VmLck
lib Размер общих библиотек VmLib
peak Пиковый размер виртуальной памяти VmPeak
pin Размер закреплённых страниц VmPin
pte Размер записей таблицы страниц VmPTE
size Размер сегментов кода, данных и стека процесса VmExe + VmData + VmStk
stk Размер сегмента стека VmStk
swap Размер используемого пространства подкачки VmSwap

Примечания для Linux:

  1. Не все значения memtype поддерживаются старыми ядрами Linux. Например, ядра Linux 2.4 не поддерживают значения hwm, pin, peak, pte и swap.
  2. Мы заметили, что самоконтроль процесса активной проверки агента Zabbix с помощью proc.mem[...,...,...,...,data] показывает значение, на 4 кБ превышающее значение, указанное в строке VmData файла /proc/<pid>/status агента. Во время самоконтроля сегмент данных агента увеличивается на 4 кБ, а затем возвращается к прежнему размеру.

Solaris

Поддерживаемые значения параметра memtype в Solaris приведены в таблице.

Поддерживаемое значение Описание Источник в структуре psinfo Совместимость с
vsize 1 Размер образа процесса pr_size ps -o vsz
pmem Процент реальной памяти pr_pctmem ps -o pmem
rss Размер резидентного набора
Может быть занижен (см. описание rss в man ps).
pr_rssize ps -o rss
Примечания

1 Значение по умолчанию.