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:
- 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.
-
Nie używaj
ps -efdo przeglądania procesów — pokazuje ono tylko procesy niejądrowe. Użyjps -Af, aby zobaczyć wszystkie procesy, które będą widoczne dla Zabbix agent. -
Przejdźmy przez przykład
topasrec, aby zobaczyć, jak Zabbix agentproc.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:
- 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,pteiswap. - 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 wierszVmDataw 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.