| Red Hat Enterprise Linux 4: Einführung in die System-Administration | ||
|---|---|---|
| Zurück | Kapitel 3. Bandbreite und Prozessleistung | Nach vorne |
Zur Überwachung von Bandbreite und CPU-Auslastung unter Red Hat Enterprise Linux werden die in Kapitel 2 beschriebenen Tools benutzt. Sollten Sie dieses Chapter noch nicht gelesen haben, so raten wir Ihnen dringend an, dies noch bevor Sie fortfahren nachzuholen.
Wie in Abschnitt 2.4.2 erklärt, ist es schwierig Bandbreiten-Nutzung direkt zu überwachen. Durch die Prüfung von Device-Level-Statistiken ist es jedoch möglich grob abzuschätzen, ob ungenügende Bandbreite ein Problem auf Ihrem System darstellt.
Mit dem Befehl vmstat ist es möglich festzustellen, ob die allgemeine Geräte-Aktivität überhöht ist, indem Sie die Felder bi und bo dahingehend überprüfen. Die zusätzliche und genauere Betrachtung der Feldersi und so gibt Ihnen mehr Einblick in Hinsicht auf Plattenaktivität, die durch Swap-bezogenen I/O entsteht:
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 248088 158636 480804 0 0 2 6 120 120 10 3 87
|
In diesem Beispiel zeigt das bi-Feld an, dass zwei Blöcke pro Sekunde zu Block-Devicen geschrieben werden (hauptsächlich zu Laufwerken), während das bo-Feld sechs Blöcke pro Sekunde anzeigt, die von Block-Devicen gelesen wurden. Daraus können wir ersehen, dass keine dieser Aktivitäten auf Swapping zurückzuführen ist, da die si und so-Felder beide eine Swap-bezogene I/O-Rate von null Kilobytes/Sekunde anzeigen.
Durch die Benutzung von iostat ist es möglich, ein wenig mehr Einblick in Platten-bezogene Aktivität zu erhalten:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
avg-cpu: %user %nice %sys %idle
5.34 4.60 2.83 87.24
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
dev8-0 1.10 6.21 25.08 961342 3881610
dev8-1 0.00 0.00 0.00 16 0
|
Dieser Output zeigt uns, dass der Durchschnitt für das Gerät mit Hauptnummer 8 (welches /dev/sda, die erste SCSI-Festplatte ist) nur geringfügig mehr als ein I/O Arbeitsgang pro Sekunde ist (das tsp-Feld). Der Grossteil der I/O-Aktivität für dieses Gerät ist auf Schreibvorgänge (das Blk_wrtn-Feld) mit geringfügig mehr als 25 Blöcken pro Sekunde zurückzuführen (das Blk_wrtn/s-Feld).
Für mehr Details benutzen Sie die iostats -x-Option:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
avg-cpu: %user %nice %sys %idle
5.37 4.54 2.81 87.27
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz
/dev/sda 13.57 2.86 0.36 0.77 32.20 29.05 16.10 14.53 54.52
/dev/sda1 0.17 0.00 0.00 0.00 0.34 0.00 0.17 0.00 133.40
/dev/sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11.56
/dev/sda3 0.31 2.11 0.29 0.62 4.74 21.80 2.37 10.90 29.42
/dev/sda4 0.09 0.75 0.04 0.15 1.06 7.24 0.53 3.62 43.01
|
Nebst den längeren Zeilen, welche auch mehr Felder beinhalten, ist das Erste, das Sie im Auge behalten sollten, dass diese iostat-Ausgabe nunmehr Statistiken auf einer Pro-Partitions-Ebene aufzeigt. Wenn Sie df benutzen, um Mount-Punkte mit Gerätenamen zu verknüpfen, so ist es möglich diesen Report zu benutzen um festzustellen, ob zum Beispiel die Partition, welche /home/ beinhaltet, einer überhöhten Arbeitsbelastung ausgesetzt ist.
Tatsächlich ist jede einzelne Zeilenausgabe von iostat -x länger und beinhaltet mehr Information als diese hier. Hier finden Sie den Rest jeder Zeile (mit der beigefügten Geräte-Spalte zum einfacheren Lesen):
Device: avgqu-sz await svctm %util
/dev/sda 0.24 20.86 3.80 0.43
/dev/sda1 0.00 141.18 122.73 0.03
/dev/sda2 0.00 6.00 6.00 0.00
/dev/sda3 0.12 12.84 2.68 0.24
/dev/sda4 0.11 57.47 8.94 0.17
|
In diesem Beispiel ist /dev/sda2 interessanterweise die System Swap-Partition. Es ist offensichtlich, dass Swapping für diese Partition kein Problem auf diesem System ist, da viele Felder 0.00 anzeigen.
Ein weiterer interessanter Punkt ist /dev/sda1. Die Statistiken für diese Partition sind eher ungewöhnlich. Die allgemeine Aktivität scheint niedrig zu sein, wobei jedoch die durchschnittliche I/O-Anfragegröße (das avgrq-sz-Feld), die durchschnittliche Wartezeit (das await-Feld) und die durchschnittliche Servicezeit (das svctm-Feld) um einiges höher sind, als bei anderen Partitionen. Warum ist das so? Die Antwort darauf ist, dass diese Partition das /boot/-Verzeichnis beinhaltet, in dem Kernel und anfängliche Ramdisk gespeichert werden. Wenn das System bootet, so sind die Lese-I/Os (beachten Sie, dass nur die rsec/s und rkB/s nicht null sind; regelmäßig finden hier keine Schreibvorgänge statt), die während des Boot-Prozesses verwendet werden, für eine große Anzahl von Blöcken verantwortlich, was zu den relativ langen Warte- und Servicezeiten führt, welche in iostat angezeigt werden.
Es ist möglich den Befehl sar für einen Langzeitüberblick über I/O-Statistiken zu benutzen. Zum Beispiel kann mit sar -b ein allgemeiner I/O-Report angezeigt werden:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
12:00:00 AM tps rtps wtps bread/s bwrtn/s
12:10:00 AM 0.51 0.01 0.50 0.25 14.32
12:20:01 AM 0.48 0.00 0.48 0.00 13.32
…
06:00:02 PM 1.24 0.00 1.24 0.01 36.23
Average: 1.11 0.31 0.80 68.14 34.79
|
Hier, wie auch bei iostats ursprünglicher Anzeige, sind die Statistiken für alle Block-Geräte gruppiert.
Ein anderer I/O-bezogener Report wird mittels dem Befehl sar -d erzeugt:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (raptor.example.com) 07/21/2003
12:00:00 AM DEV tps sect/s
12:10:00 AM dev8-0 0.51 14.57
12:10:00 AM dev8-1 0.00 0.00
12:20:01 AM dev8-0 0.48 13.32
12:20:01 AM dev8-1 0.00 0.00
…
06:00:02 PM dev8-0 1.24 36.25
06:00:02 PM dev8-1 0.00 0.00
Average: dev8-0 1.11 102.93
Average: dev8-1 0.00 0.00
|
Dieser Report beinhaltet eine Pro-Device-Information, jedoch mit wenigen Details.
Während es keine eindeutigen Statistiken zur Bandbreitennutzung für einen bestimmten Bus oder Datenpfad gibt, können wir jedoch zumindest feststellen, was die Devices tun und können deren Aktivitäten dazu benutzen, um indirekt die Bus-Beanspruchung festzustellen.
Im Gegensatz zu Bandbreite ist das Überwachen von CPU-Nutzung ein überschaubares Thema. Vom prozentualen Anteil der CPU-Nutzung in GNOME System Monitor bis hin zu tiefgreifendeen Statistiken, dargestellt durch den sar-Befehl, ist es möglich genauestens festzustellen, wieviel CPU-Leistung verbraucht wird und wodurch.
Über den GNOME System Monitor hinaus, ist top das erste Ressource-Überwachungstool, das in Kapitel 2 behandelt wird und eine tiefgreifendere Darstellulng der CPU-Nutzung liefert. Hier ist ein top-Report von einem Dual-Prozessor-Arbeitsplatzgerät:
9:44pm up 2 days, 2 min, 1 user, load average: 0.14, 0.12, 0.09
90 processes: 82 sleeping, 1 running, 7 zombie, 0 stopped
CPU0 states: 0.4% user, 1.1% system, 0.0% nice, 97.4% idle
CPU1 states: 0.5% user, 1.3% system, 0.0% nice, 97.1% idle
Mem: 1288720K av, 1056260K used, 232460K free, 0K shrd, 145644K buff
Swap: 522104K av, 0K used, 522104K free 469764K cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
30997 ed 16 0 1100 1100 840 R 1.7 0.0 0:00 top
1120 root 5 -10 249M 174M 71508 S < 0.9 13.8 254:59 X
1260 ed 15 0 54408 53M 6864 S 0.7 4.2 12:09 gnome-terminal
888 root 15 0 2428 2428 1796 S 0.1 0.1 0:06 sendmail
1264 ed 15 0 16336 15M 9480 S 0.1 1.2 1:58 rhn-applet-gui
1 root 15 0 476 476 424 S 0.0 0.0 0:05 init
2 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU0
3 root 0K 0 0 0 0 SW 0.0 0.0 0:00 migration_CPU1
4 root 15 0 0 0 0 SW 0.0 0.0 0:01 keventd
5 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU0
6 root 34 19 0 0 0 SWN 0.0 0.0 0:00 ksoftirqd_CPU1
7 root 15 0 0 0 0 SW 0.0 0.0 0:05 kswapd
8 root 15 0 0 0 0 SW 0.0 0.0 0:00 bdflush
9 root 15 0 0 0 0 SW 0.0 0.0 0:01 kupdated
10 root 25 0 0 0 0 SW 0.0 0.0 0:00 mdrecoveryd
|
Die erste CPU-bezogene Information befindet sich in der allerersten Zeile: die Durchschnittsbelastung. Die Durchschnittsbelastung ist eine Zahl, welche der durchschnittlichen Anzahl von ablaufenden Prozessen auf dem System entspricht. Der Belastungsdurchschnitt ist oft in Form von 3 Zahlen (wie bei top) aufgelistet, welche die Durchschnittsbelastung für die letzte Minute, die letzten fünf Minuten und 15 Minuten darstellen und in diesem konkreten Beispiel darauf hinweisen, dass das System nicht sehr ausgelastet war.
Die nächste Zeile, wenn auch nicht strikt auf CPU-Auslastung bezogen, besitzt einen indirekten Bezug, indem es die Anzahl der ablaufenden Prozesse (hier nur einer -- behalten Sie diese Zahl im Gedächtnis, da diese etwas Besonderes in diesem Beispiel bedeutet) anzeigt. Die Anzahl der ablaufenden Prozesse ist ein guter Indikator, wie CPU-bound ein System eventuell sein mag.
Als nächstes zeigen zwei Zeilen die gegenwärtige Auslastung für jede einzelne der beiden CPUs im System an. Die Nutzungsstatistiken sind aufgegliedert, um anzuzeigen, ob die CPU-Zyklen für Abläufe auf Benutzerebene oder Systemebene benutzt wurden; ebenso beinhaltet ist eine Statistik, die aufzeigt, wieviel CPU-Zeit von Prozessen mit abgeänderter Planungsdringlichkeit aufgebraucht worden ist. Schlussendlich finden Sie eine Idle-Time-Statistik (Zeit im Leerlauf).
Wenn wir uns hinunterbewegen zum Prozess-bezogenen Abschnitt der Anzeige, so sehen wir, dass der Prozess, der die meiste CPU-Leistung verbraucht top selbst ist; in anderen Worten war top der eine ablaufende Prozess auf diesem andererseits nicht produktiven System, der von sich selbst ein "Bild" gemacht hat.
![]() | Tipp |
|---|---|
Es ist wichtig sich daran zu erinnern, dass in diesem Fall der eigentliche Überwachungsvorgang die von Ihnen erhaltenen Ressource-Nutzungsstatistiken beeinflusst. Dies trifft zu einem bestimmten Maße für jegliche Art von Überwachungssoftware zu. |
Um detaillierteres Wissen über CPU-Nutzung zu erlangen, müssen wir mit anderen Tools arbeiten. Wenn wir die Ausgabe von vmstat überprüfen, so kommen wir zu einem geringfügig anderen Verständnis unseres Beispiel-Systems:
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 233276 146636 469808 0 0 7 7 14 27 10 3 87
0 0 0 0 233276 146636 469808 0 0 0 0 523 138 3 0 96
0 0 0 0 233276 146636 469808 0 0 0 0 557 385 2 1 97
0 0 0 0 233276 146636 469808 0 0 0 0 544 343 2 0 97
0 0 0 0 233276 146636 469808 0 0 0 0 517 89 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 32 518 102 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 91 2 1 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 72 2 0 98
0 0 0 0 233276 146636 469808 0 0 0 0 516 88 2 0 97
0 0 0 0 233276 146636 469808 0 0 0 0 516 81 2 0 97
|
Hier haben wir den Befehl vmstat 1 10 verwendet, um das System zehnmal hintereinander jede Sekunde abzufragen. Zuerst scheinen die CPU-bezogenen Statistiken (die us-, sy- und id-Felder) denjenigen zu gleichen, die von topangezeigt wurden, vielleicht sogar etwas weniger detailliert. Jedoch im Gegensatz zu top können wir ein wenig Einblick darin gewinnen, wie die CPU genutzt wird.
Wenn wir die system-Felder überprüfen, stellen wir fest, dass die CPU im Durchschnitt ungefähr 500 Interrupts pro Sekunde abwickelt und zwischen Prozessen irgendwo von 80 bis nahezu 400 mal pro Sekunde wechselt. Wenn Sie glauben, dass dies eine hohe Aktivität darstellt, dann denken Sie nochmals genau darüber nach. Die Abläufe auf Benutzerebene (das us-Feld) machen im Durchschnitt nur 2% aus, während Abläufe auf Systemebene (das sy-Feld) normalerweise unter 1% liegen. Nochmals, es handelt sich hier um ein nicht produktives System.
Bei nochmaliger Durchsicht der Sysstat-Tools zeigt sich, dass iostat und mpstat nur wenig zusätliche Informationen im Vergleich dazu bieten, was wir bereits durch top und vmstat festgestellt haben. sar produziert jedoch eine Anzahl von Reporten, die bei der Überwachung von CPU-Auslastung nützlich sein können.
Mit dem Befehl sar -q erhält man den ersten Report, welcher die Run-Queue-Länge darstellt sowie auch die Gesamtanzahl an Prozessen und die Belastung im Durchschnitt für die letzten 1 bis 5 Minuten. Hier ist ein Beispiel:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5
12:10:00 AM 3 122 0.07 0.28
12:20:01 AM 5 123 0.00 0.03
…
09:50:00 AM 5 124 0.67 0.65
Average: 4 123 0.26 0.26
|
In diesem Beispiel ist das System immer beschäftigt (wenn man bedenkt, dass mehr als ein Prozess zu einem bestimmten Zeitpunkt ablaufen kann), jedoch nicht übermäßig belastet (aufgrund der Tatsache, dass dieses bestimmte System mehr als einen Prozessor besitzt).
Der nächste CPU-bezogene sar-Report wird durch den Befehlsar -u erstellt:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM CPU %user %nice %system %idle
12:10:00 AM all 3.69 20.10 1.06 75.15
12:20:01 AM all 1.73 0.22 0.80 97.25
…
10:00:00 AM all 35.17 0.83 1.06 62.93
Average: all 7.47 4.85 3.87 83.81
|
Die Statistiken, welche in diesem Report enthalten sind, unterscheiden sich nicht von denjenigen, die von vielen anderen Tools erstellt werden. Der größte Nutzen hierbei ist, dass sar die Daten auf fortlaufender Basis zur Verfügung stellt und daher besser geeignet zum Einholen von Langzeit-Durchschnittswerten ist oder auch für die Erstellung von CPU-Auslastungsdiagrammen.
Auf Multiprozessor-Systemen kann der sar -U-Befehl Statistiken für einen individuellen Prozessor oder auch für alle Prozessoren gleichzeitig erstellen. Hier ist ein Beispiel eines sar -U ALL-Output:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM CPU %user %nice %system %idle
12:10:00 AM 0 3.46 21.47 1.09 73.98
12:10:00 AM 1 3.91 18.73 1.03 76.33
12:20:01 AM 0 1.63 0.25 0.78 97.34
12:20:01 AM 1 1.82 0.20 0.81 97.17
…
10:00:00 AM 0 39.12 0.75 1.04 59.09
10:00:00 AM 1 31.22 0.92 1.09 66.77
Average: 0 7.61 4.91 3.86 83.61
Average: 1 7.33 4.78 3.88 84.02
|
Der Befehl sar -w erstellt einen Report über die Anzahl von Kontext-Switches pro Sekunde und gibt dabei zusätzlichen Einblick, wenn es darum geht wo CPU-Zyklen verbraucht werden:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM cswch/s
12:10:00 AM 537.97
12:20:01 AM 339.43
…
10:10:00 AM 319.42
Average: 1158.25
|
Es ist ebenso möglich, zwei verschiedene sar-Reporte über Interrupt-Aktivität zu erstellen. Der erste Report (mittels sar -I SUM-Befehl erstellt) zeigt eine einzige "Interrupts pro Sekunde"-Statistik an:
Linux 2.4.21-1.1931.2.349.2.2.entsmp (falcon.example.com) 07/21/2003
12:00:01 AM INTR intr/s
12:10:00 AM sum 539.15
12:20:01 AM sum 539.49
…
10:40:01 AM sum 539.10
Average: sum 541.00
|
Durch das Benutzen des Befehls sar -I PROC ist es möglich Interrupt-Aktivität in Prozessoren aufzuschlüsseln (auf Multiprozessor-Systemen) und in Interrupt-Ebenen (von 0 bis 15):
Linux 2.4.21-1.1931.2.349.2.2.entsmp (pigdog.example.com) 07/21/2003
12:00:00 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s
12:10:01 AM 0 512.01 0.00 0.00 0.00 3.44 0.00 0.00
12:10:01 AM CPU i000/s i001/s i002/s i008/s i009/s i011/s i012/s
12:20:01 AM 0 512.00 0.00 0.00 0.00 3.73 0.00 0.00
…
10:30:01 AM CPU i000/s i001/s i002/s i003/s i008/s i009/s i010/s
10:40:02 AM 0 512.00 1.67 0.00 0.00 0.00 15.08 0.00
Average: 0 512.00 0.42 0.00 N/A 0.00 6.03 N/A
|
Dieser Report (welcher horizontal abgeschnitten wurde, um auf diese Seite zu passen) beinhaltet eine Rubrik für jede Interrupt-Ebene (wie zum Beispiel das i002/s-Feld, das die Rate für Interrupt-Ebene 2 darstellt). Wenn dies ein Multiprozessor-System wäre, dann gäbe es eine Zeile pro Beispiel-Periode für jede einzelne CPU.
Beachten Sie auch bei diesem Report, dass von sar spezifische Interrupt-Felder entweder hinzufügt oder entfernt werden, wenn keine Daten für dieses Feld gesammelt werden. Der oben angefürte Report stellt dahingehend ein Beispiel zur Verfügung, indem dieser am Ende Interrupt-Ebenen (3 und 10) beinhaltet, die zu Beginn der Abfrageperiode nicht vorhanden waren.
![]() | Anmerkung | ||
|---|---|---|---|
Es gibt noch zwei andere Interrupt-bezogene sar-Reporte — sar -I ALL und sar -I XALL. Jedoch sammelt die standardmäßige Konfiguration für sadc nicht die notwendige Information für diese Reporte. Dies kann durch das Bearbeiten der Datei /etc/cron.d/sysstat geändert werden, indem diese Zeile verändert wird:
Zu dieser:
Beachten Sie dabei, dass diese Änderung die Sammlung zusätzlicher Informationen im Falle von sadc und dies gleichzeitig größere Dateigrößen zur Folge hat. Stellen Sie daher sicher, dass Ihre Systemkonfiguration den zusätzlichen Verbrauch von Platz unterstützt. |
| Zurück | Zum Anfang | Nach vorne |
| Prozessleistung | Nach oben | Zusätzliche Ressourcen |