7 Uwagi dotyczące parametru memtype w pozycjach proc.mem

Przegląd

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

Trzy typowe wartości parametru „memtype” są obsługiwane na wszystkich tych platformach: pmem, rss i vsize. Dodatkowo na niektórych platformach obsługiwane są specyficzne dla platformy wartości parametru „memtype”.

AIX

Zobacz wartości obsługiwane dla parametru „memtype” w systemie AIX w tabeli.

Obsługiwana wartość Opis Źródło w strukturze procentry64 Próbuje zachować zgodność z
vsize 1 Rozmiar pamięci wirtualnej pi_size
pmem Procent pamięci rzeczywistej pi_prm ps -o pmem
rss Rozmiar rezydentnego zestawu pamięci pi_trss + pi_drss ps -o rssize
size Rozmiar procesu (kod + dane) pi_dvm "ps gvw" kolumna SIZE
dsize Rozmiar danych pi_dsize
tsize Rozmiar tekstu (kodu) pi_tsize "ps gvw" kolumna TSIZ
sdsize Rozmiar danych z biblioteki współdzielonej pi_sdsize
drss Rozmiar rezydentnego zestawu danych pi_drss
trss Rozmiar rezydentnego zestawu tekstu pi_trss

Uwagi dotyczące AIX:

  1. Wybierając parametry dla klucza pozycji proc.mem[] w AIX, postaraj się określić wąskie kryteria wyboru procesów. W przeciwnym razie istnieje ryzyko, że do wyniku proc.mem[] zostaną wliczone niepożądane procesy.

Przykład:

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

Ten przykład pokazuje, że podanie tylko parametru wiersza poleceń (wyrażenia regularnego do dopasowania) powoduje samouzględnianie przez Zabbix agent — prawdopodobnie nie jest to oczekiwane zachowanie.

  1. Nie używaj ps -ef do przeglądania procesów — pokazuje ono tylko procesy niejądrowe. Użyj ps -Af, aby zobaczyć wszystkie procesy, które będą widoczne dla Zabbix agent.

  2. Przejdźmy przez przykład topasrec, aby zobaczyć, jak Zabbix agent proc.mem[] 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 ją jako 'topasrec'. Aby dopasowanie zadziałało, należy albo podać 'topasrec', albo pozostawić to pole puste. Drugim kryterium jest nazwa użytkownika (argument <user>). Aby dopasowanie zadziałało, należy albo podać 'root', albo pozostawić to pole puste. Trzecim kryterium używanym przy wyborze 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 dopasowanie zadziałało, należy albo podać wyrażenie regularne pasujące do tego ciągu, albo pozostawić to pole puste.

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

FreeBSD

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

Obsługiwana wartość Opis Źródło w strukturze kinfo_proc Próbuje zachować zgodność z
vsize Rozmiar pamięci wirtualnej kp_eproc.e_vm.vm_map.size lub ki_size ps -o vsz
pmem Procent pamięci rzeczywistej obliczany na podstawie rss ps -o pmem
rss Rozmiar zestawu rezydentnego kp_eproc.e_vm.vm_rssize lub ki_rssize ps -o rss
size 1 Rozmiar procesu (kod + dane + stos) tsize + dsize + ssize
tsize Rozmiar tekstu (kodu) kp_eproc.e_vm.vm_tsize lub ki_tsize ps -o tsiz
dsize Rozmiar danych kp_eproc.e_vm.vm_dsize lub ki_dsize ps -o dsiz
ssize Rozmiar stosu kp_eproc.e_vm.vm_ssize lub ki_ssize ps -o ssiz

Linux

Obsługiwane wartości parametru „memtype” w systemie Linux przedstawiono w tabeli.

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

Uwagi dotyczące systemu 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 samomonitorowanie procesu aktywnego sprawdzania agenta Zabbix za pomocą proc.mem[...,...,...,...,data] pokazuje wartość o 4 kB większą niż raportowana przez wiersz VmData w pliku /proc/<pid>/status agenta. W momencie samopomiaru 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” w systemie Solaris w tabeli.

Obsługiwana wartość Opis Źródło w strukturze psinfo Próbuje zachować zgodność z
vsize 1 Rozmiar obrazu procesu pr_size ps -o vsz
pmem Procent pamięci rzeczywistej pr_pctmem ps -o pmem
rss Rozmiar rezydentnego zestawu stron
Może być zaniżony — zobacz opis rss w „man ps”.
pr_rssize ps -o rss
Przypisy

1 Wartość domyślna.