# 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

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

|Valor suportado|Descrição|Fonte em estrutura procentry64|Tentativas para compatibilizar|
|---------------|-----------|------------------------------|------------------------------|
|vsize (( - valor padrão))|Tamanho da memória virtual|pi\_size|<|
|pmem|Percentual da memória real|pi\_prm|ps -o pmem|
|rss|Configuração de tamanho residente|pi\_trss + pi\_drss|ps -o rssize|
|size|Tamanho do processo (código + dados)|pi\_dvm|"ps gvw" SIZE column|
|dsize|Tamanho do dado|pi\_dsize|<|
|tsize|Tamanho de texto (código)|pi\_tsize|"ps gvw" TSIZ column|
|sdsize|Tamanho do dado na biblioteca compartilhada|pi\_sdsize|<|
|drss|Tamanho do conjunto residente de dados|pi\_drss|<|
|trss|Tamanho do conjunto residente de texto|pi\_trss|<|

#### 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

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

|Valor suportado|Descrição|Fonte em /proc/<pid>/status file|
|---------------|-----------|--------------------------------------|
|vsize (( - valor padrão))|Tamanho da memória virtual|VmSize|
|pmem|Percentual 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|Pico de tamanho do conjunto residente|VmHWM|
|lck|Tamanho da memória bloqueada|VmLck|
|lib|Tamanho das bibliotecas compartilhadas|VmLib|
|peak|Pico de tamanho de memória virtual|VmPeak|
|pin|Tamanho das páginas pinadas|VmPin|
|pte|Tamanho das entradas na tabela de páginas|VmPTE|
|size|Tamanho do código de processo + dados + pilha de segmentos|VmExe + VmData + VmStk|
|stk|Tamanho da pilha de segmentos|VmStk|
|swap|Tamanho do espaço de swap utilizado|VmSwap|

Observações para o Linux:

1.  Nem todo valor de 'memtype' será suportado em kernels antigos do
    Linux. Por exemplo, o kernel Linux 2.4 não suporta `hwm`, `pin`,
    `peak`, `pte` e `swap`.
2.  Nós temos informações que o auto-monitoramento do Zabbix Agent ativo
    identificou processos com `proc.mem[...,...,...,...,data]` mostrando
    que o valor é 4kB maior do que o apresentado em `VmData` no arquivo
    de status do agente /proc/<pid>/status . No momento do
    auto-monitoramento o segmento de dados do agente aumentou em 4kB,
    retornando em seguida para o 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<br>Que pode ser subestimado, conforme descrição do rss em "man ps".|pr\_rssize|ps -o rss|
