Notas sobre o parâmetro memtype em itens proc.mem

Visão geral

O parâmetro memtype é compatível com as plataformas Linux, AIX, FreeBSD e Solaris.

Três valores comuns de memtype são compatíveis com todas essas plataformas: pmem, rss e vsize. Além disso, alguns valores específicos de memtype são compatíveis com determinadas plataformas.

AIX

Consulte na tabela os valores compatíveis com o parâmetro memtype no AIX.

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

Notas para AIX:

  1. Ao escolher os parâmetros para a chave de item proc.mem[] no AIX, tente especificar critérios restritos de seleção de processos. Caso contrário, existe o risco de que processos indesejados sejam contabilizados no resultado de proc.mem[].

Exemplo:

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

Este exemplo mostra que especificar apenas o parâmetro da linha de comando (expressão regular a ser correspondida) faz com que o agent do Zabbix contabilize a si próprio, o que provavelmente não é o que você deseja.

  1. Não use ps -ef para listar processos — ele mostra apenas processos que não são do kernel. Use ps -Af para ver todos os processos que serão vistos pelo Zabbix agent.

  2. Vamos analisar o exemplo de topasrec para entender como o Zabbix agent proc.mem[] seleciona os processos.

$ 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[] tem os seguintes argumentos:

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

onde:

  • O primeiro critério é um nome de processo (argumento <name>). No nosso exemplo, o Zabbix agent o verá como topasrec. Para corresponder, você precisa especificar topasrec ou deixá-lo vazio.
  • O segundo critério é um nome de usuário (argumento <user>). Para corresponder, você precisa especificar root ou deixá-lo vazio.
  • O terceiro critério usado na seleção do processo é um argumento <cmdline>. O Zabbix agent verá seu valor como /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. Para corresponder, você precisa especificar uma expressão regular que corresponda a esta string ou deixá-la vazia.

Os argumentos <mode> e <memtype> são aplicados após o uso dos três critérios mencionados acima.

FreeBSD

Consulte na tabela os valores compatíveis com o parâmetro memtype no FreeBSD.

Valor compatível Descrição Origem na estrutura kinfo_proc Tenta ser compatível com
vsize Tamanho da memória virtual kp_eproc.e_vm.vm_map.size ou ki_size ps -o vsz
pmem Porcentagem da memória real calculado a partir de rss ps -o pmem
rss Tamanho do conjunto residente kp_eproc.e_vm.vm_rssize ou ki_rssize ps -o rss
size 1 Tamanho do processo (código + dados + pilha) tsize + dsize + ssize
tsize Tamanho do texto (código) kp_eproc.e_vm.vm_tsize ou ki_tsize ps -o tsiz
dsize Tamanho dos dados kp_eproc.e_vm.vm_dsize ou ki_dsize ps -o dsiz
ssize Tamanho da pilha kp_eproc.e_vm.vm_ssize ou ki_ssize ps -o ssiz

Linux

Consulte na tabela os valores compatíveis com o parâmetro memtype no Linux.

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

Observações para Linux:

  1. Nem todos os valores de memtype são compatíveis com versões mais antigas do kernel do Linux. Por exemplo, os kernels Linux 2.4 não são compatíveis com os valores hwm, pin, peak, pte e swap.
  2. Observamos que o monitoramento próprio do processo de verificação ativa do Zabbix agent com proc.mem[...,...,...,...,data] mostra um valor 4 kB maior que o informado pela linha VmData no arquivo /proc/<pid>/status do agent. No momento da medição própria, o segmento de dados do agent aumenta em 4 kB e depois retorna ao tamanho anterior.

Solaris

Consulte na tabela os valores compatíveis com o parâmetro memtype no Solaris.

Valor compatível Descrição Origem na estrutura psinfo Tenta ser compatível com
vsize 1 Tamanho da imagem do processo pr_size ps -o vsz
pmem Porcentagem de memória real pr_pctmem ps -o pmem
rss Tamanho do conjunto residente
Pode ser subestimado (consulte a descrição de rss em man ps).
pr_rssize ps -o rss
Notas de rodapé

1 Valor padrão.