8 Observações sobre o parâmetro memtype em itens proc.mem

Visão geral

O parâmetro memtype é suportado no Linux, AIX, FreeBSD, e Solaris.

Os três tipos mais comuns do 'memtype' são suportados em todas as plataformas: pmem, rss e vsize. Adicionalmente, tipos específicos de cada plataforma serão nelas suportados.

AIX

Consulte os valores suportados para o parâmetro 'memtype' no AIX na tabela.

Valor suportado Descrição Fonte na estrutura procentry64 Tenta ser compatível com
vsize 1 Tamanho da memória virtual pi_size
pmem Porcentagem de memória real pi_prm ps -o pmem
rss Tamanho do conjunto residente pi_trss + pi_drss ps -o rssize
tamanho Tamanho do processo (código + dados) pi_dvm "ps gvw" coluna SIZE
dsize Tamanho dos dados pi_dsize
tsize Tamanho do texto (código) pi_tsize coluna "ps gvw" TSIZ
sdsize Tamanho dos dados da biblioteca compartilhada pi_sdsize
drss Tamanho do conjunto residente de dados pi_drss
trss Tamanho do conjunto residente de texto pi_trss

Notes for AIX:

  1. When choosing parameters for proc.mem[] item key on AIX, try to specify narrow process selection criteria. Otherwise there is a risk of getting unwanted processes counted into proc.mem[] result.

Example:

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

This example shows how specifying only command line (regular expression to match) parameter results in Zabbix agent self-accounting - probably not what you want.

  1. Do not use "ps -ef" to browse processes - it shows only non-kernel processes. Use "ps -Af" to see all processes which will be seen by Zabbix agent.

  2. Let's go through example of 'topasrec' how Zabbix agent proc.mem[] selects processes.

\$ 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[] has arguments:

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

The 1st criterion is a process name (argument <name>). In our example Zabbix agent will see it as 'topasrec'. In order to match, you need to either specify 'topasrec' or to leave it empty. The 2nd criterion is a user name (argument <user>). To match, you need to either specify 'root' or to leave it empty. The 3rd criterion used in process selection is an argument <cmdline>. Zabbix agent will see its value as '/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'. To match, you need to either specify a regular expression which matches this string or to leave it empty.

Arguments <mode> and <memtype> are applied after using the three criteria mentioned above.

FreeBSD

Os valores a seguir são suportados para o parâmetro 'memtype' nesta plataforma.

Valor suportado Descrição Fonte em estrutura kinfo_proc Tentativas para compatibilizar
vsize Tamanho da memória virtual kp_eproc.e_vm.vm_map.size or ki_size ps -o vsz
pmem Percentual da memória real calculado a partir do rss ps -o pmem
rss Tamanho do conjunto residente kp_eproc.e_vm.vm_rssize or ki_rssize ps -o rss
size (( - valor padrão)) Tamanho do processo (código + dados + pilha) tsize + dsize + ssize
tsize Tamanho do texto de código kp_eproc.e_vm.vm_tsize or ki_tsize ps -o tsiz
dsize Tamanho dos dado kp_eproc.e_vm.vm_dsize or ki_dsize ps -o dsiz
ssize Tamanho da pilha kp_eproc.e_vm.vm_ssize or ki_ssize ps -o ssiz

Linux

Consulte os valores suportados para o parâmetro 'memtype' no Linux na tabela.

Valor suportado Descrição Fonte no arquivo /proc/<pid>/status
vsize 1 Tamanho da memória virtual VmSize
pmem Porcentagem de memória real (VmRSS/total_memory) * 100
rss Tamanho do conjunto residente VmRSS
dados Tamanho do segmento de dados VmData
exe Tamanho do segmento de código VmExe
hwm Tamanho do conjunto residente de pico VmHWM
lck Tamanho da memória bloqueada VmLck
lib Tamanho das bibliotecas compartilhadas VmLib
pico Tamanho da memória virtual de pico VmPeak
pin Tamanho das páginas fixadas VmPin
pte Tamanho das entradas da tabela de páginas VmPTE
size Tamanho do código do processo + dados + segmentos de pilha VmExe + VmData + VmStk
stk Tamanho do segmento de pilha VmStk
swap Tamanho do espaço de troca usado VmSwap

Notas para Linux:

  1. Nem todos os valores 'memtype' são suportados por kernels Linux mais antigos. Para Por exemplo, kernels Linux 2.4 não suportam hwm, pin, peak, valores pte e swap.
  2. Percebemos que o automonitoramento do agente Zabbix ativo processo de verificação com proc.mem[...,...,...,...,data] mostra um valor que é 4 kB maior do que o relatado pela linha VmData no agente arquivo /proc/<pid>/status. No momento da auto-medição, o segmento de dados do agente aumenta em 4 kB e então retorna ao tamanho anterior.

Solaris

Os valores a seguir são suportados para o parâmetro 'memtype' nesta plataforma.

Valor suportado Descrição Fonte em estrutura psinfo Tentativas para compatibilizar
vsize (( - valor padrão)) Tamanho da imagem do processo pr_size ps -o vsz
pmem Percentual da memória real pr_pctmem ps -o pmem
rss Tamanho do conjunto residente
Que pode ser subestimado, conforme descrição do rss em "man ps".
pr_rssize ps -o rss
Notas de rodapé

1 Valor padrão.