[comment]: # translation:outdated

[comment]: # ({4bf3e4ff-098d0431})
# 7. Заметки о параметре «тип памяти» в элементах данных proc.mem

[comment]: # ({/4bf3e4ff-098d0431})

[comment]: # ({2840c113-2840c113})
#### Обзор

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

Три общих значения параметра «тип памяти» поддерживаются на всех этих платформах: `pmem`, `rss` и `vsize`. Кроме того, для некоторых платформ поддерживаются специфичные для этих платформ значения «типа памяти».

[comment]: # ({/2840c113-2840c113})

[comment]: # ({c30765ae-04a03696})
#### AIX

Значения, поддерживаемые для параметра «тип памяти» на AIX, смотри в таблице.

|Поддерживаемое значение|Описание|Источник в структуре procentry64|Пытается быть совместимым с|
|--|------|--|--|
|vsize ^[1](proc_mem_notes#примечания)^|Размер виртуальной памяти|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| |

[comment]: # ({/c30765ae-04a03696})

[comment]: # ({b262d0c5-cc0df248})

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

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

Пример:
```
$ zabbix_agentd -t proc.mem[,,,НесуществующийПроцесс,rss]
proc.mem[,,,НесуществующийПроцесс,rss]           [u|2879488]
```

Данный пример иллюстрирует, как указание только параметра командной строки (в виде регулярного выражения) приводит к тому, что Zabbix агент считает и себя тоже - вероятно, это не то, чего хотелось.

[comment]: # ({/b262d0c5-cc0df248})

[comment]: # ({87cd17df-14c4cc2b})
2. Не используйте «ps -ef» для просмотра процессов — он показывает только процессы, не относящиеся к ядру. Используйте «ps -Af», чтобы увидеть все процессы, которые будет видеть агент Zabbix.

3. Давайте рассмотрим пример «topasrec», как proc.mem[] агента Zabbix выбирает процессы.

```
$ ps -Af | grep topasrec
root 1074798410Mar 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[<имя>,<пользователь>,<режим>,<cmdline>,<тип памяти>]
```

[comment]: # ({/87cd17df-14c4cc2b})

[comment]: # ({3fe2ad6d-0be32659})

Первый критерий — имя процесса (аргумент <имя>). В нашем примере агент Zabbix увидит его как «topasrec». Для соответствия вам нужно либо указать «topasrec», либо оставить его пустым.
Второй критерий — имя пользователя (аргумент <пользователь>). Для соответствия вам нужно либо указать «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». Для сопоставления вам нужно либо указать регулярное выражение, соответствующее этой строке, либо оставить его пустым.

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

[comment]: # ({/3fe2ad6d-0be32659})

[comment]: # ({c2004450-8a700330})
#### FreeBSD

Значения, поддерживаемые для параметра «тип памяти» на 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](proc_mem_notes#примечания)^|Размер процесса (код + данные + стек)|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|

[comment]: # ({/c2004450-8a700330})

[comment]: # ({9164d2d0-f43d1dfd})
#### Linux

Значения, поддерживаемые для параметра «тип памяти» на Linux, смотрите в таблице.

|Поддерживаемое значение|Описание|Источник в файле /proc/<pid>/status|
|--|------|--|
|vsize ^[1](proc_mem_notes#примечания)^|Размер виртуальной памяти|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.  Не все значения параметра «тип памяти» поддерживаются старыми версиями ядер Linux. Например, ядра Linux 2.4 не поддерживают значения `hwm`, `pin`, `peak`, `pte` и `swap`.
2.  Мы заметили, что процесс само-диагностики активных проверок Zabbix агента с `proc.mem[...,...,...,...,data]` отображает значение, которое на 4 КБ больше, чем отдаёт строка `VmData` в файле агента /proc/<pid>/status. Во время измерения себя сегмент данных агента увеличивается на 4 КБ и затем возвращается к предыдущему размеру.

[comment]: # ({/9164d2d0-f43d1dfd})

[comment]: # ({d8c5e366-96fd9f28})
#### Solaris

Значения, поддерживаемые для параметра «тип памяти» на Solaris, смотрите в таблице.

|Поддерживаемое значение|Описание|Источник в структуре psinfo|Пытается быть совместимым с|
|--|------|--|--|
|vsize ^[1](proc_mem_notes#примечания)^|Размер образа процесса|pr\_size|ps -o vsz|
|pmem|Процент физической памяти|pr\_pctmem|ps -o pmem|
|rss|Размер резидентного набора<br>Он может быть недооценён - см. описание rss в «man ps».|pr\_rssize|ps -o rss|

[comment]: # ({/d8c5e366-96fd9f28})

[comment]: # ({e0ce8129-e0ce8129})
##### Примечания

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

[comment]: # ({/e0ce8129-e0ce8129})
