Notes sur le paramètre memtype dans les éléments proc.mem

Vue d’ensemble

Le paramètre memtype est pris en charge sur les plateformes Linux, AIX, FreeBSD et Solaris.

Trois valeurs courantes de memtype sont prises en charge sur toutes ces plateformes : pmem, rss et vsize. En outre, des valeurs de memtype spécifiques à certaines plateformes sont prises en charge sur certaines d’entre elles.

AIX

Consultez dans le tableau les valeurs prises en charge pour le paramètre memtype sur AIX.

Valeur prise en charge Description Source dans la structure procentry64 Essaie d'être compatible avec
vsize 1 Taille de la mémoire virtuelle pi_size
pmem Pourcentage de mémoire réelle pi_prm ps -o pmem
rss Taille de l'ensemble résident pi_trss + pi_drss ps -o rssize
size Taille du processus (code + données) pi_dvm Colonne SIZE de ps gvw
dsize Taille des données pi_dsize
tsize Taille du texte (code) pi_tsize Colonne TSIZ de ps gvw
sdsize Taille des données de la bibliothèque partagée pi_sdsize
drss Taille des données résidentes pi_drss
trss Taille du texte résident pi_trss

Notes pour AIX :

  1. Lors du choix des paramètres de la clé d’élément proc.mem[] sur AIX, essayez de spécifier des critères de sélection de processus précis. Sinon, vous risquez d’obtenir des processus indésirables comptabilisés dans le résultat de proc.mem[].

Exemple :

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

Cet exemple montre que le fait de spécifier uniquement le paramètre de ligne de commande (expression régulière à rechercher) entraîne la prise en compte de l’agent Zabbix lui-même, ce qui n’est probablement pas le résultat souhaité.

  1. N'utilisez pas ps -ef pour parcourir les processus : cette commande affiche uniquement les processus qui ne sont pas liés au noyau. Utilisez ps -Af pour voir tous les processus qui seront visibles par l'agent Zabbix.

  2. Examinons, à l'aide de l'exemple de topasrec, comment l'agent Zabbix sélectionne les processus avec 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[] possède les arguments suivants :

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

où :

  • Le premier critère est un nom de processus (argument <name>). Dans notre exemple, l'agent Zabbix le verra comme topasrec. Pour obtenir une correspondance, vous devez spécifier topasrec ou le laisser vide.
  • Le deuxième critère est un nom d'utilisateur (argument <user>). Pour obtenir une correspondance, vous devez spécifier root ou le laisser vide.
  • Le troisième critère utilisé pour sélectionner le processus est un argument <cmdline>. L'agent Zabbix verra sa valeur comme /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. Pour obtenir une correspondance, vous devez spécifier une expression régulière correspondant à cette chaîne ou la laisser vide.

Les arguments <mode> et <memtype> sont appliqués après l'utilisation des trois critères mentionnés ci-dessus.

FreeBSD

Consultez dans le tableau les valeurs prises en charge pour le paramètre memtype sur FreeBSD.

Valeur prise en charge Description Source dans la structure kinfo_proc Tentative de compatibilité avec
vsize Taille de la mémoire virtuelle kp_eproc.e_vm.vm_map.size ou ki_size ps -o vsz
pmem Pourcentage de la mémoire réelle calculé à partir de rss ps -o pmem
rss Taille de l'ensemble résident kp_eproc.e_vm.vm_rssize ou ki_rssize ps -o rss
size 1 Taille du processus (code + données + pile) tsize + dsize + ssize
tsize Taille du texte (code) kp_eproc.e_vm.vm_tsize ou ki_tsize ps -o tsiz
dsize Taille des données kp_eproc.e_vm.vm_dsize ou ki_dsize ps -o dsiz
ssize Taille de la pile kp_eproc.e_vm.vm_ssize ou ki_ssize ps -o ssiz

Linux

Consultez dans le tableau les valeurs prises en charge pour le paramètre memtype sous Linux.

Valeur prise en charge Description Source dans le fichier /proc/<pid>/status
vsize 1 Taille de la mémoire virtuelle VmSize
pmem Pourcentage de la mémoire réelle (VmRSS/total_memory) * 100
rss Taille de l'ensemble résident VmRSS
data Taille du segment de données VmData
exe Taille du segment de code VmExe
hwm Taille maximale de l'ensemble résident VmHWM
lck Taille de la mémoire verrouillée VmLck
lib Taille des bibliothèques partagées VmLib
peak Taille maximale de la mémoire virtuelle VmPeak
pin Taille des pages épinglées VmPin
pte Taille des entrées de table des pages VmPTE
size Taille des segments de code + données + pile du processus VmExe + VmData + VmStk
stk Taille du segment de pile VmStk
swap Taille de l'espace d'échange utilisé VmSwap

Remarques pour Linux :

  1. Toutes les valeurs memtype ne sont pas prises en charge par les anciens noyaux Linux. Par exemple, les noyaux Linux 2.4 ne prennent pas en charge les valeurs hwm, pin, peak, pte et swap.
  2. Nous avons constaté que l'autosurveillance du processus de vérification active de l'agent Zabbix avec proc.mem[...,...,...,...,data] affiche une valeur supérieure de 4 kB à celle indiquée par la ligne VmData dans le fichier /proc/<pid>/status de l'agent. Au moment de l'automesure, le segment de données de l'agent augmente de 4 kB, puis revient à sa taille précédente.

Solaris

Consultez dans le tableau les valeurs prises en charge pour le paramètre memtype sur Solaris.

Valeur prise en charge Description Source dans la structure psinfo Tente d'être compatible avec
vsize 1 Taille de l'image du processus pr_size ps -o vsz
pmem Pourcentage de mémoire réelle pr_pctmem ps -o pmem
rss Taille de l'ensemble résident
Elle peut être sous-estimée (voir la description de rss dans man ps).
pr_rssize ps -o rss
Notes de bas de page

1 Valeur par défaut.