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:
- 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 wynikuproc.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.
-
Nie używaj
ps -efdo przeglądania procesów — wyświetla ono tylko procesy inne niż jądra. Użyjps -Af, aby zobaczyć wszystkie procesy widoczne dla agenta Zabbix. -
Przeanalizujmy przykład
topasrec, aby zobaczyć, jak agent Zabbixproc.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ą jakotopasrec. Aby uzyskać dopasowanie, należy określićtopasreclub pozostawić to pole puste. - Drugim kryterium jest nazwa użytkownika (argument
<user>). Aby uzyskać dopasowanie, należy określićrootlub 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:
- Starsze jądra systemu Linux nie obsługują wszystkich wartości
memtype. Na przykład jądra Linux 2.4 nie obsługują wartościhwm,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ż wartość zgłoszona w wierszuVmDatapliku/proc/<pid>/statusagenta. 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.