[comment]: # ({4bf3e4ff-098d0431})
# 7 Notas sobre o parâmetro memtype em itens proc.mem

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

[comment]: # ({2840c113-2840c113})
#### 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.

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

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

Veja 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](proc_mem_notes#footnotes)^|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|
|size|Tamanho do processo (código + dados)|pi\_dvm|Coluna SIZE do "ps gvw"|
|dsize|Tamanho dos dados|pi\_dsize|<|
|tsize|Tamanho do texto (código)|pi\_tsize|Coluna TSIZ do "ps gvw"|
|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| |

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

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

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

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

Este exemplo mostra como especificar apenas o parâmetro da linha de comando (expressão regular para corresponder) resulta na auto-contabilização do agent do Zabbix - provavelmente não é o que você deseja.

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

[comment]: # ({87cd17df-14c4cc2b})
2. Não use "ps -ef" para navegar pelos processos - ele mostra apenas processos não-kernel. Use "ps -Af" para ver todos os processos que serão vistos pelo agent do Zabbix.

3. Vamos passar pelo exemplo do 'topasrec' para mostrar como o agent do Zabbix proc.mem[] seleciona 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 argumentos:

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

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

[comment]: # ({3fe2ad6d-0be32659})
O primeiro critério é o nome do processo (argumento <name>). No nosso exemplo, o agent do Zabbix o verá como 'topasrec'. Para corresponder, você precisa especificar 'topasrec' ou deixá-lo em branco.
O segundo critério é o nome do usuário (argumento <user>). Para corresponder, você precisa especificar 'root' ou deixá-lo em branco.
O terceiro critério usado na seleção do processo é um argumento <cmdline>. O agent do Zabbix 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 essa string ou deixá-la em branco.

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

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

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

Veja os valores suportados para o parâmetro 'memtype' no FreeBSD na tabela.

|Valor suportado|Descrição|Fonte 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 de 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](proc_mem_notes#footnotes)^|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|

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

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

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

|Valor suportado|Descrição|Fonte no arquivo /proc/<pid>/status|
|--|------|--|
|vsize ^[1](proc_mem_notes#footnotes)^|Tamanho da memória virtual|VmSize|
|pmem|Porcentagem de 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|Pico do tamanho do conjunto residente|VmHWM|
|lck|Tamanho da memória travada|VmLck|
|lib|Tamanho das bibliotecas compartilhadas|VmLib|
|peak|Pico do tamanho da memória virtual|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 swap usado|VmSwap|

Notas para Linux:

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

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

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

Veja os valores suportados para o parâmetro 'memtype' no Solaris na tabela.

|Valor suportado|Descrição|Fonte na estrutura psinfo|Tenta ser compatível com|
|--|------|--|--|
|vsize ^[1](proc_mem_notes#footnotes)^|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<br>Pode ser subestimado - veja a descrição de rss em "man ps".|pr\_rssize|ps -o rss|

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

[comment]: # ({e0ce8129-e0ce8129})
##### Notas de rodapé

^**1**^ Valor padrão.

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