Mam serwer Ubuntu 8.04, na którym działa baza danych i kilka serwerów aplikacji Java. Konfiguracja i użycie pamięci to:
total used free shared buffers cached
Mem: 16456176 15930028 526148 0 81372 9674196
-/+ buffers/cache: 6174460 10281716
Swap: 1951888 366100 1585788
Zauważyłem, że swap rośnie każdego popołudnia i jest wypuszczany w nocy. Zapotrzebowanie nie jest takie samo we wszystkie dni i zaczyna się o różnych porach. Jest to więc dość losowe, z wyjątkiem rozmytej granicy „popołudniowej nocy”.
Obciążenie tej maszyny zmienia się w ciągu dnia. Jest bardzo niska między północą a 6-7 rano, znacznie wyżej (ale stabilnie) do 18-18, a następnie stopniowo spada.
Teraz mam następujące pytania:
- Jak mogę sprawdzić, które procesy używają wymiany?
- Dlaczego woli wymieniać się niż pobierać pamięć z pamięci podręcznej?
NSWAP
kolumny (Ubuntu 16.04: /).Na StackOverflow już masz doskonałą odpowiedź na pierwsze pytanie („Który proces faktycznie używa wymiany?”).
https://stackoverflow.com/a/7180078/1442301
Krótko mówiąc, narzędzia takie jak
top
lubhtop
wcale nie dostarczają dokładnych informacji na temat korzystania z wymiany. Powinieneś zanurzyć się w/proc
folderze (w pseudopliku/proc/$PID/smaps
), aby uzyskać dokładniejsze informacje.Po wspomniano powyżej zawiera krótki skrypt, aby uzyskać tę informację echem w sposób miły.
źródło
Dzięki
htop v1.01
, Nacisnąłem „S”, aby dodaćNSWAP
kolumnę zamiast „F2” (jak sugeruje Gilles), a następnieColumns
>Available Columns
> iF5
aby go dodać.źródło
Bez odpytywania i analizowania danych wyjściowych narzędzi, takich jak
vmstat
,free
itop
najlepszym miejscem do patrzenia mogą być crontabs użytkownika root lub innych użytkowników w systemie. Jeśli ogólne obciążenie systemu gwałtownie wzrośnie w pewnym momencie, istnieje szansa, że w systemie cron powstanie potrzeba zasobów. W przeciwnym razie zawsze możesz utworzyć narzędzie do rejestrowania w getcie za pomocąscript
narzędzia, które po prostu rejestruje wszystko, co trafia do STDOUT.Więc gdybym musiał zrobić jednorazowy skrypt, aby złapać dane wyjściowe do późniejszej kontroli, w jednym terminalu napisałbym:
i wtedy
i w innym terminalu
i wtedy
a następnie następnego ranka zabij obie
script
inwokacje i dopasuj dane wyjściowe dotop
ifree
po raz kolejny jest to podejście do getta, ale wygląda na to, że potrzebujesz tylko jednorazowego
możesz także przeczytać przewodnik wymiany Ubuntu
źródło