Skąd mam wiedzieć, które procesy powodują duże obciążenia, jeśli nie są obciążone wysoką jednostką centralną?

12

Czasami moje serwery wykazują wysoką średnią obciążalność w „górnym” programie (np. Obciążenie wynosi ~ 10 na 4-rdzeniowym komputerze), ale faktyczne użycie procesora nie jest szczególnie wysokie.

Zakładam, że problem polega na tym, że działa wiele zadań intensywnie korzystających z operacji we / wy. Czy jest jakiś prosty sposób na zidentyfikowanie tych zadań, które powodują obciążenie, jeśli ich górne wartości „% CPU” nie są tak wysokie?

Lorin Hochstein
źródło
Czy możesz wkleić obszar podsumowania widoczny po uruchomieniu toppolecenia?
mfriedman,

Odpowiedzi:

7

iostatmoże zgłaszać takie statystyki. Zwykle zawarte w dystrybucji w pakiecie sysstat.

Warto też spojrzeć na dstat , to nowoczesny zamiennik.

Śleske
źródło
+1, ponieważ iostatmiała być moją odpowiedzią.
Ernie,
4

Jeśli w twoim jądrze jest rozliczanie IO , możesz użyć tego iotopdo podania takich informacji. Ponadto narzędzia do monitorowania, takie jak zebrane, mogą rejestrować i raportować dane.

David Spillett
źródło
4

Aby dowiedzieć się, co powoduje duże obciążenie, możesz sprawdzić kilka rzeczy.

  • vmstat -w pokaże ci ovierwiem (procesy, zamiana, mem, procesor, io, system)
  • pmstat -P ALL dostarczy Ci statystyki (z% iowait) na rdzeń procesora
  • iostat -x poszukaj wysokiego% wykorzystania lub długiego oczekiwania lub dużej średniej wielkości kolejki
    • kop głębiej z iotop
  • ps -ax poszukaj stanu D, który jest nieprzerwanym snem (zwykle IO), uruchom go jeszcze raz, sprawdź, czy nadal są w stanie D
    • kop głębiej strace
    • sprawdź pliki i połączenia tych procesów za pomocą lsof i netstat
  • sar / sysstat - za pomocą tego narzędzia możesz przeglądać nie tylko statystyki „teraz”, ale także sprawdzać, co działo się wczoraj o północy
    • sar -b - ogólne działania io
    • sar -d - indywidualne działania urządzenia blokowego io
3h4x
źródło