it-swarm-eu.dev

Wie kann ich herausfinden, ob ein Prozess an CPU, Speicher oder Festplatte gebunden ist?

Wie kann ich herausfinden, ob ein Prozess an CPU, Speicher oder Festplatte gebunden ist?

41
ssanj

Das erfordert etwas Voodoo. Es hängt davon ab, ob. Beispiel:

  • Wenn genügend Arbeitsspeicher vorhanden ist und die Festplatten nicht überlastet zu sein scheinen, ist sie möglicherweise an die CPU gebunden . Schauen Sie sich die CPU-Auslastung an, und wenn sie bei 100% liegt, ist sie CPU-gebunden. Ist dies nicht der Fall, liegt ein künstlicher Engpass in der Implementierung vor. Z.B. Auf einer Dual-Core-CPU übersteigt ein Single-Thread-Prozess nicht 50% der CPU-Auslastung.

  • Wenn CPU und Speicher verfügbar sind, die Festplatten jedoch sehr ausgelastet sind oder die IO Latenzzeit hoch erscheint, ist es wahrscheinlich, dass IO gebunden ist. Überprüfen Sie, ob das Hinzufügen weiterer Festplatten (RAID?) Hilfreich ist.

  • Nichts des oben Genannten? Überprüfen Sie den verfügbaren Speicher.

  • Genug Gedächtnis? Möglicherweise liegt ein künstlicher Engpass im Prozess selbst vor, d. H., Jemand hat möglicherweise vergessen, einen Schlaf zu entfernen (1). Naah es ist normalerweise nicht so einfach. ;)

Es gibt einen Grund, warum wir in den meisten Unternehmen, die sich mit leistungsempfindlichen Produkten beschäftigen, ein ganzes Labor für Performance-Ingenieure haben!

Verwenden Sie Tools wie sar, vmstat, iostat, oprofile, lockstat, dtrace, produktspezifische Tools zur Leistungsüberwachung usw., um Leistungsprobleme zu beheben.

16
Sudhanshu

check out iotop, kann nützlich sein

11
ithkuil

Ein Tool, mit dem Sie in Echtzeit eine Reihe von Prozessstatistiken (Speicher, CPU-Auslastung, E/A usw.) überprüfen können, ist htop. Es ersetzt nicht die spezialisierteren Werkzeuge von Sudhanshu, könnte aber ein guter Anfang sein.

9
JanC

Führen Sie neben den anderen genannten Tools ps l PID aus, und fügen Sie die entsprechende Prozess-ID ein, oder sehen Sie sich die Spalten STATE und WCHAN in top oder htop an.

Wenn es sich im Status D (für Datenträger) befindet, wird Datei-E/A ausgeführt. Dies kann daran liegen, dass entweder viele Dateien gelesen werden oder dass viel Speicher und Auslagerungen verwendet werden. In der Spalte WCHAN sehen Sie, welche Kernelfunktion darin enthalten ist. Wenn Sie nach ihnen googeln oder hier fragen, erhalten Sie möglicherweise einen Hinweis darauf, was sie bedeuten.

Wenn es sich im Status R (run) befindet, wird die CPU im Benutzerbereich verwendet, d. H., Sie ist in diesem Moment an die CPU gebunden.

Wenn es sich im Status S (Ruhezustand) befindet, befindet es sich innerhalb eines unterbrechbaren Systemaufrufs, was bedeuten kann, dass es entweder tatsächlich schläft oder auf Netzwerkverkehr oder eine Sperre wartet. Nochmals, ein Blick auf das jeweilige Wchan verrät Ihnen mehr.

Siehe auch Was ist der "Wartekanal" eines Prozesses?

4
poolie

Führen Sie top aus und überprüfen Sie die CPU-Auslastung. Ein hoher Benutzer% gibt an, dass die CPU gebunden ist. Eine hohe Wartezeit% zeigt an, dass IO gebunden ist.

2
psusi