8 Notes on memtype parameter in proc.mem items
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 | |
Notes for AIX:
- When choosing parameters for proc.mem[] item key on AIX, try to specify narrow process selection criteria. Otherwise there is a risk of getting unwanted processes counted into proc.mem[] result.
Example:
\$ zabbix_agentd -t proc.mem[,,,NonExistingProcess,rss]
proc.mem[,,,NonExistingProcess,rss] [u|2879488]
This example shows how specifying only command line (regular expression to match) parameter results in Zabbix agent self-accounting - probably not what you want.
-
Do not use "ps -ef" to browse processes - it shows only non-kernel processes. Use "ps -Af" to see all processes which will be seen by Zabbix agent.
-
Let's go through example of 'topasrec' how Zabbix agent proc.mem[] selects processes.
\$ 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[] has arguments:
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]
The 1st criterion is a process name (argument <name>). In our example Zabbix agent will see it as 'topasrec'. In order to match, you need to either specify 'topasrec' or to leave it empty. The 2nd criterion is a user name (argument <user>). To match, you need to either specify 'root' or to leave it empty. The 3rd criterion used in process selection is an argument <cmdline>. Zabbix agent will see its value as '/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'. To match, you need to either specify a regular expression which matches this string or to leave it empty.
Arguments <mode> and <memtype> are applied after using the three criteria mentioned above.
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 :
- 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,pteetswap. - 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.