Uwagi dotyczące parametru memtype w pozycjach proc.mem

Omówienie

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

Na wszystkich tych platformach obsługiwane są trzy typowe wartości parametru memtype: pmem, rss i vsize. Ponadto na niektórych platformach obsługiwane są wartości memtype specyficzne dla danej platformy.

AIX

W tabeli przedstawiono wartości obsługiwane dla parametru memtype w systemie AIX.

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 zbioru pi_trss + pi_drss ps -o rssize
size Rozmiar procesu (kod + dane) pi_dvm Kolumna SIZE polecenia ps gvw
dsize Rozmiar danych pi_dsize
tsize Rozmiar tekstu (kodu) pi_tsize Kolumna TSIZ polecenia ps gvw
sdsize Rozmiar danych z biblioteki współdzielonej pi_sdsize
drss Rozmiar rezydentnego zbioru danych pi_drss
trss Rozmiar rezydentnego zbioru tekstu pi_trss

Uwagi dotyczące AIX:

  1. Podczas wybierania parametrów dla klucza pozycji proc.mem[] w systemie AIX spróbuj określić precyzyjne kryteria wyboru procesów. W przeciwnym razie istnieje ryzyko uwzględnienia niepożądanych 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, że określenie wyłącznie parametru wiersza poleceń (wyrażenia regularnego do dopasowania) powoduje uwzględnienie procesu agenta Zabbix, co prawdopodobnie nie jest oczekiwanym rezultatem.

  1. Nie używaj ps -ef do przeglądania procesów — wyświetla ono tylko procesy inne niż jądra. Użyj ps -Af, aby zobaczyć wszystkie procesy widoczne dla agenta Zabbix.

  2. Przeanalizujmy przykład topasrec, aby zobaczyć, jak agent Zabbix 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 następujące argumenty:

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

gdzie:

  • Pierwszym kryterium jest nazwa procesu (argument <name>). W naszym przykładzie agent Zabbix zobaczy ją jako topasrec. Aby uzyskać dopasowanie, należy określić topasrec lub pozostawić to pole puste.
  • Drugim kryterium jest nazwa użytkownika (argument <user>). Aby uzyskać dopasowanie, należy określić root lub pozostawić to pole puste.
  • Trzecim kryterium używanym podczas 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 uzyskać dopasowanie, należy określić wyrażenie regularne pasujące do tego ciągu lub pozostawić to pole puste.

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

FreeBSD

W tabeli przedstawiono wartości obsługiwane dla parametru memtype w systemie FreeBSD.

Obsługiwana wartość Opis Źródło w strukturze kinfo_proc Próbuje zapewnić 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 rezydentnego zbioru stron 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 rezydentnego zbioru stron VmRSS
data Rozmiar segmentu danych VmData
exe Rozmiar segmentu kodu VmExe
hwm Szczytowy rozmiar rezydentnego zbioru stron 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 tablicy 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. Starsze jądra systemu Linux nie obsługują wszystkich wartości memtype. 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ż wartość zgłoszona w wierszu VmData pliku /proc/<pid>/status agenta. W momencie wykonywania pomiaru segment danych agenta zwiększa się o 4 kB, a następnie powraca do poprzedniego rozmiaru.

Solaris

W tabeli przedstawiono wartości obsługiwane dla parametru memtype w systemie Solaris.

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

1 Wartość domyślna.