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 :
- 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 deproc.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é.
-
N'utilisez pas
ps -efpour parcourir les processus : cette commande affiche uniquement les processus qui ne sont pas liés au noyau. Utilisezps -Afpour voir tous les processus qui seront visibles par l'agent Zabbix. -
Examinons, à l'aide de l'exemple de
topasrec, comment l'agent Zabbix sélectionne les processus avecproc.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 commetopasrec. Pour obtenir une correspondance, vous devez spécifiertopasrecou le laisser vide. - Le deuxième critère est un nom d'utilisateur (argument
<user>). Pour obtenir une correspondance, vous devez spécifierrootou 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 :
- Toutes les valeurs
memtypene sont pas prises en charge par les anciens noyaux Linux. Par exemple, les noyaux Linux 2.4 ne prennent pas en charge les valeurshwm,pin,peak,pteetswap. - 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 ligneVmDatadans le fichier/proc/<pid>/statusde 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.