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:
- При выборе параметров для ключа элемента данных 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' рассмотрим, как 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:
- Не все значения '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 Значение по умолчанию.