7 Примечания о параметре 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 "ps gvw" столбец SIZE
dsize Размер данных pi_dsize
tsize Размер текста (кода) pi_tsize "ps gvw" столбец TSIZ
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' рассмотрим, как proc.mem[] в агенте Zabbix выбирает процессы.

$ 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>]

1-м критерием является имя процесса (аргумент <name>). В нашем примере агент Zabbix увидит его как 'topasrec'. Для совпадения необходимо либо указать 'topasrec', либо оставить его пустым. 2-м критерием является имя пользователя (аргумент <user>). Для совпадения необходимо либо указать 'root', либо оставить его пустым. 3-м критерием, используемым при выборе процесса, является аргумент <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 or ki_size ps -o vsz
pmem Процент реальной памяти вычисляется на основе rss ps -o pmem
rss Размер резидентного набора kp_eproc.e_vm.vm_rssize or ki_rssize ps -o rss
size 1 Размер процесса (код + данные + стек) tsize + dsize + ssize
tsize Размер текста (кода) kp_eproc.e_vm.vm_tsize or ki_tsize ps -o tsiz
dsize Размер данных kp_eproc.e_vm.vm_dsize or ki_dsize ps -o dsiz
ssize Размер стека kp_eproc.e_vm.vm_ssize or 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 Значение по умолчанию.