Note sul parametro memtype negli item proc.mem

Panoramica

Il parametro memtype è supportato sulle piattaforme Linux, AIX, FreeBSD e Solaris.

Tre valori comuni di memtype sono supportati su tutte queste piattaforme: pmem, rss e vsize. Inoltre, su alcune piattaforme sono supportati valori di memtype specifici della piattaforma.

AIX

Nella tabella sono indicati i valori supportati per il parametro memtype su AIX.

Valore supportato Descrizione Origine nella struttura procentry64 Tenta di essere compatibile con
vsize 1 Dimensione della memoria virtuale pi_size
pmem Percentuale di memoria reale pi_prm ps -o pmem
rss Dimensione del set residente pi_trss + pi_drss ps -o rssize
size Dimensione del processo (codice + dati) pi_dvm Colonna SIZE di ps gvw
dsize Dimensione dei dati pi_dsize
tsize Dimensione del testo (codice) pi_tsize Colonna TSIZ di ps gvw
sdsize Dimensione dei dati dalla libreria condivisa pi_sdsize
drss Dimensione del set residente dei dati pi_drss
trss Dimensione del set residente del testo pi_trss

Note per AIX:

  1. Quando si scelgono i parametri per la chiave dell'item proc.mem[] su AIX, cercare di specificare criteri di selezione dei processi restrittivi. In caso contrario, esiste il rischio che processi indesiderati vengano conteggiati nel risultato di proc.mem[].

Esempio:

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

Questo esempio mostra che specificare solo il parametro della riga di comando (espressione regolare da confrontare) comporta il conteggio automatico dell'agent Zabbix, probabilmente non desiderato.

  1. Non utilizzare ps -ef per visualizzare i processi: mostra solo i processi non kernel. Utilizzare ps -Af per visualizzare tutti i processi che saranno rilevati dall'agent Zabbix.

  2. Esaminiamo l'esempio di topasrec per vedere come l'agent Zabbix seleziona i processi con proc.mem[].

$ 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[] presenta i seguenti argomenti:

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

dove:

  • Il primo criterio è il nome di un processo (argomento <name>). Nel nostro esempio, Zabbix agent lo vedrà come topasrec. Per trovare una corrispondenza, è necessario specificare topasrec oppure lasciarlo vuoto.
  • Il secondo criterio è il nome di un utente (argomento <user>). Per trovare una corrispondenza, è necessario specificare root oppure lasciarlo vuoto.
  • Il terzo criterio utilizzato nella selezione del processo è un argomento <cmdline>. Zabbix agent ne vedrà il valore come /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. Per trovare una corrispondenza, è necessario specificare un'espressione regolare che corrisponda a questa stringa oppure lasciarla vuota.

Gli argomenti <mode> e <memtype> vengono applicati dopo aver utilizzato i tre criteri indicati sopra.

FreeBSD

Vedere nella tabella i valori supportati per il parametro memtype su FreeBSD.

Valore supportato Descrizione Origine nella struttura kinfo_proc Tenta di essere compatibile con
vsize Dimensione della memoria virtuale kp_eproc.e_vm.vm_map.size o ki_size ps -o vsz
pmem Percentuale di memoria reale calcolata da rss ps -o pmem
rss Dimensione del set residente kp_eproc.e_vm.vm_rssize o ki_rssize ps -o rss
size 1 Dimensione del processo (codice + dati + stack) tsize + dsize + ssize
tsize Dimensione del testo (codice) kp_eproc.e_vm.vm_tsize o ki_tsize ps -o tsiz
dsize Dimensione dei dati kp_eproc.e_vm.vm_dsize o ki_dsize ps -o dsiz
ssize Dimensione dello stack kp_eproc.e_vm.vm_ssize o ki_ssize ps -o ssiz

Linux

Vedere nella tabella i valori supportati per il parametro memtype su Linux.

Valore supportato Descrizione Origine nel file /proc/<pid>/status
vsize 1 Dimensione della memoria virtuale VmSize
pmem Percentuale di memoria reale (VmRSS/total_memory) * 100
rss Dimensione del set residente VmRSS
data Dimensione del segmento dati VmData
exe Dimensione del segmento di codice VmExe
hwm Dimensione massima del set residente VmHWM
lck Dimensione della memoria bloccata VmLck
lib Dimensione delle librerie condivise VmLib
peak Dimensione massima della memoria virtuale VmPeak
pin Dimensione delle pagine fissate VmPin
pte Dimensione delle voci della tabella delle pagine VmPTE
size Dimensione dei segmenti di codice + dati + stack del processo VmExe + VmData + VmStk
stk Dimensione del segmento stack VmStk
swap Dimensione dello spazio di swap utilizzato VmSwap

Note per Linux:

  1. Non tutti i valori di memtype sono supportati dai kernel Linux meno recenti. Ad esempio, i kernel Linux 2.4 non supportano i valori hwm, pin, peak, pte e swap.
  2. Abbiamo osservato che il monitoraggio autonomo del processo di controllo attivo dell'agent Zabbix con proc.mem[...,...,...,...,data] mostra un valore di 4 kB superiore a quello riportato dalla riga VmData nel file /proc/<pid>/status dell'agent. Al momento della misurazione autonoma, il segmento dati dell'agent aumenta di 4 kB e poi torna alla dimensione precedente.

Solaris

Nella tabella sono indicati i valori supportati per il parametro memtype su Solaris.

Valore supportato Descrizione Origine nella struttura psinfo Tenta di essere compatibile con
vsize 1 Dimensione dell'immagine del processo pr_size ps -o vsz
pmem Percentuale di memoria reale pr_pctmem ps -o pmem
rss Dimensione del resident set
Potrebbe essere sottostimata (vedere la descrizione di rss in man ps).
pr_rssize ps -o rss
Note a piè di pagina

1 Valore predefinito.