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:
- 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 deproc.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.
-
Não use
ps -efpara listar processos — ele mostra apenas processos que não são do kernel. Useps -Afpara ver todos os processos que serão vistos pelo Zabbix agent. -
Vamos analisar o exemplo de
topasrecpara entender como o Zabbix agentproc.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á comotopasrec. Para corresponder, você precisa especificartopasrecou deixá-lo vazio. - O segundo critério é um nome de usuário (argumento
<user>). Para corresponder, você precisa especificarrootou 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:
- Nem todos os valores de
memtypesã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 valoreshwm,pin,peak,pteeswap. - 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 linhaVmDatano arquivo/proc/<pid>/statusdo 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.