Scenariusz: nagle mój komputer jest powolny. Porusza się myszką, ale otwieranie się okien trwa wieki itp., uptime
Mówi, że obciążenie wynosi 7,69 i rośnie.
Jaki jest najszybszy sposób, aby dowiedzieć się, które procesy są przyczyną obciążenia?
Teraz „najlepsze” i podobne narzędzia nie są odpowiedzią, ponieważ pokazują zużycie procesora lub pamięci, ale nie oba jednocześnie. Potrzebuję tylko jednego polecenia, które mógłbym wpisać na bieżąco - coś, co rozwiąże którekolwiek z nich
System próbuje zamienić 8 GB pamięci RAM na dysk, ponieważ proces X ...
lub
proces X szuka na całym dysku
lub
proces X zużywa 400% procesora ”
Tak więc szukam iostat, htop / atop i podobnych narzędzi do jednego z takim wyjściem:
1235 cp - Disk trashing
87 chrome - Uses 2 GB of RAM
137 nfs_bench - Uses 95% of the network bandwidth
Nie chcę narzędzia, które podaje mi liczby, które mogę analizować, ale narzędzia, które mówi mi dokładnie, który proces powoduje bieżące obciążenie. Załóżmy, że użytkownik przed klawiaturą ledwo wie, jak napisać „proces”, ale użytkownik jest szybko przytłoczony, jeśli chodzi o „wielkość rezydenta”, „pamięć wirtualną” lub „cykl życia procesu”.
Mój argument brzmi następująco: użytkownik zauważa problem. Powodów może być tysiące ... no prawie :-) Użytkownik chce poznać źródło problemu.
Obecne rozwiązania dają mi wiele liczb i muszę wiedzieć, co one oznaczają. To, czego szukam, to narzędzie meta. 99% danych nie ma znaczenia dla problemu. Narzędzie powinno więc poszukać procesów, które pochłaniają niektóre zasoby, i wymienić tylko te wraz z „ten proces wymaga dużo procesora, powoduje wiele przerwań IRQ, proces ten alokuje dużo pamięci RAM (i wciąż rośnie)”.
To będzie stosunkowo krótka lista. O wiele łatwiej będzie zlokalizować winowajcę z tej listy niż z wyniku, powiedzmy, htop
który daje mi około 5000 liczb, ale wymaga ode mnie samodzielnego złożenia procesów wielowątkowych (mam 50 wierszy, które mówią, VIRT 2750M
ale tylko 16 GB pamięci RAM - maszyna powinna zamienić się na śmierć, ale oczywiście jest to błędna interpretacja danych, która może się zdarzyć szybko).
źródło
top
oznacza wynik)Odpowiedzi:
Muszę się uśmiechnąć z odpowiedzi, ponieważ każdy kazał ci uruchomić narzędzie X. Jedyny problem polega na tym, że jeśli to, co widzisz, jest przerywane, nie będzie możliwości skorelowania czegokolwiek. Narzędzie takie jak sar może pomóc, jeśli uruchomisz je z wystarczająco wysoką częstotliwością, ale twierdzę, że zbieranie jest jeszcze lepsze.
Podobnie jak sar , uruchamiasz go jako demon, instalując RPM i wykonując czynności
/etc/init.d/collectl start
.Teraz, gdy zobaczysz coś powolnego,
collectl -p /var/log/collectl/filename --top
odtworzy dane i pokaże najlepsze procesy. Mógłbyś też po prostu bieccollectl --top
i zobaczyć je w czasie rzeczywistym. BTW - wszystko, co możesz zrobić w czasie rzeczywistym, możesz również odtwarzać.Jeśli chodzi o obciążenie procesora, co jeśli jesteś przeciążony przerwaniami?
collectl -sC
pokaże nie tylko obciążenie poszczególnych procesorów (lub użycie-sc
do średniego obciążenia), ale pokaże, jak spędzają czas. Włącz-j
(-scj
), a zobaczysz liczbę przerwań / procesora. Użyj wielkich liter,-J
a zobaczysz TYPY każdego przerwania / procesora.Oczywiście, jeśli naprawdę lubisz vmstat, zawsze możesz odtwarzać kolekcjonowane dane
--vmstat
i będą one wyświetlać dane historyczne w formacie vmstat.Istnieje o wiele więcej przełączników, niż mam czas, aby wymienić, ale możesz to sprawdzić w SourceForge lub po prostu google.
źródło
„góra” działa dość dobrze, o ile spojrzysz na odpowiednie liczby. Zobaczmy:
Teraz, jeśli system jest wolny, ponieważ cały procesor jest zajęty, pokazuje się jako kolumny „us” i „sy” w wierszu „Cpu (s):” razem blisko 100%.
Jeśli jest powolny z powodu zamiany, „Mem:” „free” pokazuje bardzo niskie wartości, a „Swap:” „używane” wysokie wartości.
Jeśli jest powolny z powodu ogólnie we / wy , wówczas „Cpu (s):” „wa” informuje, że czas jest poświęcony na oczekiwanie we / wy.
Teraz, jeśli wiesz, że problemem są operacje we / wy, możesz użyć programów „iotop”, aby dowiedzieć się, które procesy tworzą najwięcej operacji we / wy.
źródło
top
, to także komputer. To nie jest uśmiech Mony Lisy, tylko chrupanie niektórych liczb, aby znaleźć „złe”.Biorąc pod uwagę wykorzystanie 400%, założę, że masz czterordzeniowy procesor. Twoja średnia obciążenia jest prawie dwukrotnie większa niż pojemność, a połowa procesów czeka na procesor.
Najpierw
renice
twoja powłoka na 0 lub -10, aby uzyskać bardziej responsywny system, a następnie użyj,htop
aby znaleźć obrażające się procesy i postępować zgodnie z tymstrace
na danym procesie. Inne przydatne narzędzia to:vmsat
sar
iostat
pmap
źródło
Powolna mysz może być również spowodowana zbyt dużym obciążeniem przerwania lub kontrolerami USB bardzo obciążonymi (zakładam, że to mysz USB).
źródło
vmstat może ci pomóc ogólnie. Przykładem zastosowania jest:
Możesz go również uruchamiać co X sekund - po prostu dodaj liczbę X po poleceniu.
Edycja: W związku z komentarzem ... Zapisz w pliku następujące informacje i wykonaj ten plik jako wykonywalny. Powie ci 3 najlepsze procesy na maszynie.
Jeśli chcesz wiedzieć, która pamięć jest zablokowana, a nie CPU, przeczytaj stronę podręcznika głównego i zmień kolejność wyświetlania.
źródło