9 Uwagi na temat parametru memtype w pozycjach proc.mem

Przegląd

Parametr memtype jest obsługiwany na platformach Linux, AIX, FreeBSD i Solaris.

Trzy wspólne wartości 'memtype' są obsługiwane na wszystkich tych platformach: pmem, rss i vsize. Dodatkowo, na niektórych platformach obsługiwane są specyficzne dla tych platform wartości 'memtype'.

AIX

Zobacz wartości obsługiwane dla parametru 'memtype' na AIX w tabeli.

Wspierana wartość Opis Źródło w strukturze procentry64 w procentry.h Próbuje być zgodny z
vsize 1 Wielkość pamięci wirtualnej pi_size
pmem Procent rzeczywistej pamięci pi_prm ps -o pmem
rss Wielkość resident set size pi_trss + pi_drss ps -o rssize
size Wielkość procesu (kod + dane) pi_dvm "ps gvw" Kolumna SIZE
dsize Wielkość danych pi_dsize
tsize Wielkość tekstu (kodu) pi_tsize "ps gvw" Kolumna TSIZ
sdsize Wielkość danych z biblioteki współdzielonej pi_sdsize
drss Wielkość resident set size danych pi_drss
trss Wielkość resident set size tekstu pi_trss

Uwagi dotyczące AIX:

  1. Przy wybieraniu parametrów dla klucza pozycji proc.mem[] na AIX, staraj się określić wąskie kryteria wyboru procesów. W przeciwnym razie istnieje ryzyko uwzględnienia niechcianych procesów w wyniku proc.mem[].

Przykład:

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

Ten przykład pokazuje, jak określenie tylko parametru linii poleceń (wyrażenie regularne do dopasowania) prowadzi do samodzielnego uwzględnienia agenta Zabbix - prawdopodobnie nie jest to to, czego chcesz.

  1. Nie używaj "ps -ef" do przeglądania procesów - pokazuje tylko procesy inne niż jądra. Użyj "ps -Af", aby zobaczyć wszystkie procesy, które będą widoczne dla agenta Zabbix.

  2. Przejdźmy przez przykład użycia 'topasrec' i jak klucz pozycji proc.mem[] agenta Zabbix wybiera procesy.

$ 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[] ma argumenty:

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

Pierwszym kryterium jest nazwa procesu (argument <name>). W naszym przykładzie agent Zabbix zobaczy to jako 'topasrec'. Aby dopasować, musisz albo określić 'topasrec', albo pozostawić to pole puste. Drugim kryterium jest nazwa użytkownika (argument <user>). Aby dopasować, musisz albo określić 'root', albo pozostawić to pole puste. Trzecim kryterium używanym do wyboru procesu jest argument <cmdline>. Agent Zabbix zobaczy jego wartość jako '/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'. Aby dopasować, musisz albo określić wyrażenie regularne, które pasuje do tego ciągu, albo pozostawić to pole puste.

Argumenty <mode> i <memtype> są stosowane po użyciu trzech wyżej wymienionych kryteriów.

FreeBSD

Zobacz wartości obsługiwane dla parametru 'memtype' na FreeBSD w tabeli.

Wspierana wartość Opis Źródło w strukturze kinfo_proc Próbuje być zgodny z
vsize Wielkość pamięci wirtualnej kp_eproc.e_vm.vm_map.size lub ki_size ps -o vsz
pmem Procent rzeczywistej pamięci obliczony z rss ps -o pmem
rss Wielkość Resident set size kp_eproc.e_vm.vm_rssize lub ki_rssize ps -o rss
size 1 Wielkość procesu (kod + dane + stos) tsize + dsize + ssize
tsize Wielkość tekstu (kodu) kp_eproc.e_vm.vm_tsize lub ki_tsize ps -o tsiz
dsize Wielkość danych kp_eproc.e_vm.vm_dsize lub ki_dsize ps -o dsiz
ssize Wielkość stosu kp_eproc.e_vm.vm_ssize lub ki_ssize ps -o ssiz

Linux

Zobacz wartości obsługiwane dla parametru 'memtype' na Linux w tabeli.

Wspierana wartość Opis Źródło w pliku /proc/<pid>/status
vsize 1 Wielkość pamięci wirtualnej VmSize
pmem Procent rzeczywistej pamięci (VmRSS/total_memory) * 100
rss Wielkość Resident set size VmRSS
data Wielkość segmentu danych VmData
exe Wielkość segmentu kodu VmExe
hwm Szczytowa wielkość Resident set size VmHWM
lck Wielkość zablokowanej pamięci VmLck
lib Wielkość współdzielonych bibliotek VmLib
peak Szczytowa wielkość pamięci wirtualnej VmPeak
pin Wielkość przypiętych stron VmPin
pte Wielkość wpisów tablicy stron VmPTE
size Wielkość segmentów kodu + danych + stosu procesu VmExe + VmData + VmStk
stk Wielkość segmentu stosu VmStk
swap Wielkość używanej przestrzeni swap VmSwap

Uwagi dotyczące Linux:

  1. Nie wszystkie wartości 'memtype' są obsługiwane przez starsze jądra Linux. Na przykład, jądra Linux 2.4 nie obsługują wartości hwm, pin, peak, pte i swap.
  2. Zauważyliśmy, że monitorowanie samego procesu agenta Zabbix za pomocą aktywnego sprawdzenia proc.mem[...,...,...,...,data] pokazuje wartość o 4 kB większą niż raportowana przez linijkę VmData w pliku /proc/<pid>/status agenta. W czasie samodzielnego pomiaru segment danych agenta zwiększa się o 4 kB, a następnie wraca do poprzedniego rozmiaru.

Solaris

Zobacz wartości obsługiwane dla parametru 'memtype' na Solaris w tabeli.

Wspierana wartość Opis Źródło w strukturze psinfo Próbuje być zgodny z
vsize 1 Wielkość obrazu procesu pr_size ps -o vsz
pmem Procent rzeczywistej pamięci pr_pctmem ps -o pmem
rss Wielkość Resident set size
Może być niedoszacowana - zobacz opis rss w "man ps".
pr_rssize ps -o rss
Przypisy

1 Wartość domyślna.