Примечания к параметру 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:
- При выборе параметров для ключа элемента данных
proc.mem[]в AIX старайтесь указывать узкие критерии выбора процессов. В противном случае существует риск включения нежелательных процессов в результатproc.mem[].
Пример:
$ zabbix_agentd -t proc.mem[,,,NonExistingProcess,rss]
proc.mem[,,,NonExistingProcess,rss] [u|2879488]
Этот пример показывает, что указание только параметра командной строки (регулярного выражения для сопоставления) приводит к учёту самого агента Zabbix, что, вероятно, не является желаемым результатом.
-
Не используйте
ps -efдля просмотра процессов — эта команда показывает только процессы, не относящиеся к ядру. Используйтеps -Af, чтобы увидеть все процессы, доступные агенту Zabbix. -
Рассмотрим на примере
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:
- Не все значения
memtypeподдерживаются старыми ядрами Linux. Например, ядра Linux 2.4 не поддерживают значенияhwm,pin,peak,pteиswap. - Мы заметили, что самоконтроль процесса активной проверки агента 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 Значение по умолчанию.