Hinweise zum memtype-Parameter in proc.mem-Datenpunkten

Übersicht

Der Parameter memtype wird auf Linux-, AIX-, FreeBSD- und Solaris-Plattformen unterstützt.

Auf allen diesen Plattformen werden drei gängige Werte von memtype unterstützt: pmem, rss und vsize. Zusätzlich werden auf einigen Plattformen plattformspezifische memtype-Werte unterstützt.

AIX

In der Tabelle finden Sie die für den Parameter memtype unter AIX unterstützten Werte.

Unterstützter Wert Beschreibung Quelle in der Struktur procentry64 Versucht, kompatibel zu sein mit
vsize 1 Größe des virtuellen Speichers pi_size
pmem Prozentsatz des realen Speichers pi_prm ps -o pmem
rss Größe des residenten Speichers pi_trss + pi_drss ps -o rssize
size Größe des Prozesses (Code + Daten) pi_dvm Spalte SIZE von ps gvw
dsize Datengröße pi_dsize
tsize Textgröße (Code) pi_tsize Spalte TSIZ von ps gvw
sdsize Datengröße aus der gemeinsam genutzten Bibliothek pi_sdsize
drss Residente Datensatzgröße pi_drss
trss Residente Textgröße pi_trss

Hinweise für AIX:

  1. Versuchen Sie bei der Auswahl der Parameter für den proc.mem[]-Datenpunktschlüssel unter AIX, möglichst genaue Kriterien für die Prozessauswahl anzugeben. Andernfalls besteht das Risiko, dass unerwünschte Prozesse im Ergebnis von proc.mem[] mitgezählt werden.

Beispiel:

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

Dieses Beispiel zeigt, dass die Angabe ausschließlich des Parameters für die Befehlszeile (abzugleichender regulärer Ausdruck) dazu führt, dass der Zabbix Agent sich selbst mitzählt. Das ist wahrscheinlich nicht das gewünschte Verhalten.

  1. Verwenden Sie ps -ef nicht zum Anzeigen von Prozessen – dieser Befehl zeigt nur Nicht-Kernel-Prozesse an. Verwenden Sie ps -Af, um alle Prozesse anzuzeigen, die vom Zabbix Agent erkannt werden.

  2. Sehen wir uns am Beispiel von topasrec an, wie der Zabbix Agent proc.mem[] Prozesse auswählt.

$ 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[] verfügt über folgende Argumente:

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

wobei:

  • Das erste Kriterium ist ein Prozessname (Argument <name>). In unserem Beispiel wird der Zabbix Agent ihn als topasrec erkennen. Für eine Übereinstimmung müssen Sie entweder topasrec angeben oder das Feld leer lassen.
  • Das zweite Kriterium ist ein Benutzername (Argument <user>). Für eine Übereinstimmung müssen Sie entweder root angeben oder das Feld leer lassen.
  • Das dritte Kriterium, das bei der Prozessauswahl verwendet wird, ist ein Argument <cmdline>. Der Zabbix Agent wird dessen Wert als /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 erkennen. Für eine Übereinstimmung müssen Sie entweder einen regulären Ausdruck angeben, der auf diese Zeichenfolge passt, oder das Feld leer lassen.

Die Argumente <mode> und <memtype> werden angewendet, nachdem die drei oben genannten Kriterien verwendet wurden.

FreeBSD

In der Tabelle finden Sie die für den Parameter memtype unter FreeBSD unterstützten Werte.

Unterstützter Wert Beschreibung Quelle in der Struktur kinfo_proc Versucht, kompatibel zu sein mit
vsize Größe des virtuellen Speichers kp_eproc.e_vm.vm_map.size oder ki_size ps -o vsz
pmem Prozentsatz des realen Speichers aus rss berechnet ps -o pmem
rss Größe des residenten Speichers kp_eproc.e_vm.vm_rssize oder ki_rssize ps -o rss
size 1 Größe des Prozesses (Code + Daten + Stack) tsize + dsize + ssize
tsize Größe des Textes (Code) kp_eproc.e_vm.vm_tsize oder ki_tsize ps -o tsiz
dsize Datengröße kp_eproc.e_vm.vm_dsize oder ki_dsize ps -o dsiz
ssize Stackgröße kp_eproc.e_vm.vm_ssize oder ki_ssize ps -o ssiz

Linux

Die für den Parameter memtype unter Linux unterstützten Werte finden Sie in der Tabelle.

Unterstützter Wert Beschreibung Quelle in der Datei /proc/<pid>/status
vsize 1 Größe des virtuellen Speichers VmSize
pmem Prozentsatz des realen Speichers (VmRSS/total_memory) * 100
rss Größe des residenten Speichers VmRSS
data Größe des Datensegments VmData
exe Größe des Codesegments VmExe
hwm Maximale Größe des residenten Speichers VmHWM
lck Größe des gesperrten Speichers VmLck
lib Größe der gemeinsam genutzten Bibliotheken VmLib
peak Maximale Größe des virtuellen Speichers VmPeak
pin Größe der angehefteten Seiten VmPin
pte Größe der Seitentabelleneinträge VmPTE
size Größe der Code-, Daten- und Stacksegmente des Prozesses VmExe + VmData + VmStk
stk Größe des Stacksegments VmStk
swap Größe des verwendeten Swap-Speichers VmSwap

Hinweise für Linux:

  1. Nicht alle memtype-Werte werden von älteren Linux-Kerneln unterstützt. Beispielsweise unterstützen Linux-2.4-Kernel die Werte hwm, pin, peak, pte und swap nicht.
  2. Wir haben festgestellt, dass die Selbstüberwachung des aktiven Prüfprozesses des Zabbix Agent mit proc.mem[...,...,...,...,data] einen Wert anzeigt, der 4 kB größer ist als der in der Zeile VmData der Datei /proc/<pid>/status des Agent gemeldete Wert. Zum Zeitpunkt der Selbstmessung vergrößert sich das Datensegment des Agent um 4 kB und kehrt anschließend zu seiner vorherigen Größe zurück.

Solaris

In der Tabelle finden Sie die für den Parameter memtype unter Solaris unterstützten Werte.

Unterstützter Wert Beschreibung Quelle in der psinfo-Struktur Versucht, kompatibel zu sein mit
vsize 1 Größe des Prozessabbilds pr_size ps -o vsz
pmem Prozentsatz des realen Speichers pr_pctmem ps -o pmem
rss Größe des residenten Satzes
Sie kann unterschätzt werden (siehe die Beschreibung von rss in man ps).
pr_rssize ps -o rss
Fußnoten

1 Standardwert.