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

Aperçu

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

Trois valeurs communes de 'memtype' sont prises en charge sur toutes ces plates-formes : pmem, rss et vsize. De plus, les valeurs 'memtype' spécifiques à la plate-forme sont prises en charge sur certaines plates-formes.

AIX

Vous trouverez les valeurs prises en charge pour le paramètre 'memtype' sous AIX dans le tableau suivant.

Valeur prise en charge Description Source dans la structure procentry64 Essaye 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 "ps gvw" SIZE column
dsize Taille des données pi_dsize
tsize Taille du texte (code) pi_tsize "ps gvw" Colonne TSIZ
sdsize Taille des données de la bibliothèque partagée pi_sdsize
drss Taille de l'ensemble résident des données pi_drss
trss Taille de l'ensemble résident du texte pi_trss

Remarques pour AIX :

  1. Lors du choix des paramètres pour la clé d’élément proc.mem[] sur AIX, essayez de spécifier des critères de sélection de processus précis. Sinon, il existe un risque que des processus non souhaités soient 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 à faire correspondre) entraîne une auto-comptabilisation de l’agent Zabbix, ce qui n’est probablement pas ce que vous souhaitez.

  1. N'utilisez pas ps -ef pour parcourir les processus : il n'affiche que les processus non noyau. Utilisez ps -Af pour voir tous les processus qui seront vus par l'agent Zabbix.

  2. Examinons l'exemple de topasrec pour voir comment l'agent Zabbix proc.mem[] sélectionne les processus.

$ 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[] comporte les arguments suivants :

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

Le 1er critère est un nom de processus (argument <name>). Dans notre exemple, l’agent Zabbix le verra comme « topasrec ». Pour qu’il y ait correspondance, vous devez soit spécifier « topasrec », soit le laisser vide. Le 2e critère est un nom d’utilisateur (argument <user>). Pour qu’il y ait correspondance, vous devez soit spécifier « root », soit le laisser vide. Le 3e critère utilisé dans la sélection du 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 qu’il y ait correspondance, vous devez soit spécifier une expression régulière qui correspond à cette chaîne, soit le laisser vide.

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

FreeBSD

Vous trouverez les valeurs prises en charge pour le paramètre 'memtype' sous FreeBSD dans le tableau suivant.

Valeur prise en charge Description Source dans la structure kinfo_proc Essaye d'être compatible avec
vsize Taille de la mémoire virtuelle kp_eproc.e_vm.vm_map.size ou ki_size ps -o vsz
pmem Pourcentage de 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

Vous trouverez les valeurs prises en charge pour le paramètre 'memtype' sous Linux dans le tableau suivant.

Valeur prise en charge Description Source dans le fichier /proc/<pid>/status
vsize 1 Taille de la mémoire virtuelle VmSize
pmem Pourcentage de 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 la table des pages VmPTE
taille Taille du code de processus + données + segments de pile VmExe + VmData + VmStk
stk Taille du segment de pile VmStk
swap Taille de l'espace de swap 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 remarqué que l'autosurveillance de l'agent Zabbix actif vérifiant le processus avec proc.mem[...,...,...,...,data] affiche une valeur de 4 ko de plus de ce qui est indiqué par la ligne "VmData" dans le fichier de l'agent /proc/<pid>/status. Au moment de l'auto-mesure, le segment de données de l'agent augmente de 4 ko, puis revient à la taille précédente.

Solaris

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

Valeur supportée Description Source dans la structure psinfo Essaie 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
Il peut être sous-estimé - voir la description rss dans "man ps".
pr_rssize ps -o rss
Notes de bas de page

1 Valeur par défaut.