In diesem Beitrag werden einige grundlegende Profilerstellungstools besprochen, die standardmäßig in den meisten Linux-Systemen enthalten sind. Die in diesem Beitrag vorgestellten Tools vmstat, sar, iostat und mpstat sind relativ einfach, liefern jedoch grundlegende Daten, die bei der Analyse der Systemleistung sehr nützlich sein können. Für die meisten Beispiele verwenden wir einen CentOS 8-Computer.
vmstat:Statistik des virtuellen Arbeitsspeichers
Eines der nützlichsten Tools zur Fehlerbehebung bei speicherbezogenen Leistungsproblemen ist vmstat. Der Befehl vmstat ist Teil von procps-ng Paket, das weitere nützliche Leistungsanalysebefehle wie free und top enthält.
Wenn dem Befehl vmstat keine Argumente übergeben werden, gibt er die Durchschnittswerte verschiedener Systemstatistiken seit dem Booten aus. Der Befehl vmstat akzeptiert zwei Argumente. Die erste ist die Verzögerung , und die zweite ist die Anzahl . Die Verzögerung ist ein Wert in Sekunden zwischen der Ausgabe. Die Anzahl ist die Anzahl der Statistik-Iterationen, die gemeldet werden sollen. Wenn keine Zählung angegeben wird, wird vmstat kontinuierlich Statistiken melden.
Die Speicherstatistiken werden in KiB gemeldet standardmäßig. Mit der Option —S“ können Sie dies mit -S k in KB, MB oder MiB ändern , -Sm und -S M .
Die erste Zeile der vmstat-Ausgabe ist immer ein Durchschnitt seit dem Booten. Wenn Sie also Metriken sammeln, entfernen Sie die erste Zeile und verwenden Sie die nachfolgenden Zeilen. Die ersten beiden Ausgabezeilen sind Header-Informationen und die dritte die durchschnittliche Betriebszeit. Das folgende Beispiel zeigt die Ausgabe von vmstat ab der vierten Ausgabezeile:
# vmstat 10 | tail -n +4 1 0 0 479748 1044 570784 0 0 0 5 90 132 0 0 100 0 0 0 0 0 475952 1044 570912 0 0 0 0 81 130 0 0 100 0 0 0 0 0 479456 1044 570856 0 0 0 52 87 137 0 0 100 0 0 ...
Übersicht über vmstat-Spalten
vmstat-Beispiele
1. Der Befehl vmstat gibt, wenn ihm keine Argumente übergeben werden, die Durchschnittswerte verschiedener Systemstatistiken seit dem Booten aus:
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 424444 1044 615940 0 0 89 14 58 78 1 0 98 1 0
2. Hier ist ein Beispiel, in dem vmstat bis zur Unterbrechung alle 10 Sekunden Statistiken ausgibt:
# vmstat 10 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 426440 1044 615872 0 0 88 14 58 78 1 0 98 1 0 0 0 0 426072 1044 615872 0 0 0 1 92 137 0 0 100 0 0 0 0 0 426072 1044 615872 0 0 0 5 74 116 0 0 100 0 0 ...
3. Wenn Sie möchten, dass vmstat nach dem Drucken von vier Berichten beendet wird, fügen Sie ein count-Argument hinzu:
# vmstat 10 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 425236 1044 616252 0 0 86 13 58 78 1 0 98 1 0 0 0 0 424936 1044 616252 0 0 0 1 85 129 0 0 100 0 0 0 0 0 424876 1044 616252 0 0 0 15 70 111 0 0 100 0 0 0 0 0 423360 1044 616252 0 0 0 1 89 130 0 0 100 0 0
sar:der Systemaktivitäts-Reporter
Der Befehl sar ist ein Mehrzweck-Analysetool, das Teil des sysstat-Pakets ist. Es funktioniert in zwei Modi. Es kann alle 10 Minuten Daten lesen, die von einem Cron-Job gesammelt wurden, oder es kann verwendet werden, um sofortige Daten über den Zustand des Systems zu sammeln.
Hinweis :Der Cron-Job wird als /etc/cron.d/sysstat installiert , das die Befehle /usr/lib64/sa/sa1 und /usr/lib64/sa/sa2 ausführt, die Daten mit /usr/lib64/sa/sadc und sar sammeln. Diese Daten werden in /var/log/sa/sadd gespeichert, wobei dd der zweistellige Tag des Monats ist. Hinweis Hinweis:Wie der Befehl vmstat kann sar mit Verzögerung ausgeführt werden und Argumente zählen, um Statistiken für eine bestimmte Anzahl von Iterationen und mit einer bestimmten Verzögerung zwischen jeder Iteration zu melden.Stellen Sie sicher, dass sar installiert ist, bevor Sie beginnen. Wenn es nicht installiert ist, installieren Sie es mit yum:
# yum install sysstat
Konfigurieren Sie nach der Installation sar so, dass Daten in 5-Minuten-Intervallen erfasst werden:
# vim /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */5 * * * * root /usr/lib64/sa/sa1 1 1
Stellen Sie für beste Ergebnisse bei der Verwendung von sar sicher, dass Sie ein Gebietsschema mit einem LANG festlegen Umgebungsvariable, die 24-Stunden-Support bietet. Wenn Sie beispielsweise sar-Daten nach der ersten Spalte (der Zeitspalte) sortieren, wird die en_US.UTF-8 Gebietsschema findet um 13:00:00 Uhr vor 02:00:00 Uhr statt. Dies verzerrt wahrscheinlich die Datenpunkte und macht ein Diagramm wertlos. Das Gebietsschema c ist eines, das diese Sortieranforderung erfüllt. Beim Umgang mit sar-Daten überschreiben Sie das Gebietsschema wie folgt:
# LANG=C sar -q Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/21 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
Tatsächlich kann für sar einfach ein Alias erstellt werden. Fügen Sie die folgende Zeile zu /etc/bashrc hinzu oder ~/.bashrc :
alias sar='LANG=C sar'
sar kann verwendet werden, um eine der Protokolldateien (oder jede beliebige sar-Datendatei im Allgemeinen) zu lesen, indem die Option -f verwendet wird.
# sar -q -f /var/log/sa/sa09 Linux 4.18.0-193.28.1.el8_2.x86_64 (2713138b141c.mylabserver.com) 02/09/2021 _x86_64_ (2 CPU) 00:00:01 runq-sz plist-sz ldavg-l ldavg-S 1davg-15 blocked 00:10:01 0 317 0.20 0.17 0.18 0 00:20:01 0 317 0.00 0.07 0.13 0 ... Output Truncated ...
Einige Konfigurationen können in /etc/sysconfig/sysstat vorgenommen werden Datei. Ändern Sie beispielsweise den VERLAUF Variable zum Festlegen der Anzahl der Tage, die Archive für sar aufbewahrt werden.
sar-Beispiele
1. Erstellen Sie einen systemweiten Alias für sar, der sar dazu zwingt, im 24-Stunden-Format zu berichten. Geben Sie dies in die aktuelle Shell ein.
# echo "alias sar='LANG=c sar'" >> /etc/bashrc # source /etc/bashrc
2. Bewahren Sie 60 Tage Archiv anstelle von 28 auf. Ändern Sie die HISTORY-Variable in /etc/sysconfig/sysstat.
# vim /etc/sysconfig/sysstat HISTORY=60
3. Melden Sie die E/A- und Übertragungsratenstatistiken:
# sar -b Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM tps rtps wtps bread/s bwrtn/s 12:10:01 AM 38.16 31.03 7.14 1655.33 390.20 12:20:01 AM 12.11 5.81 6.30 280.99 239.08 12:30:01 AM 8.40 2.34 6.06 105.99 229.95 12:40:01 AM 7.38 1.62 5.76 23.48 211.41 12:50:01 AM 8.69 2.64 6.04 125.33 230.58 01:00:01 AM 8.09 2.26 5.83 77.72 227.70 01:10:02 AM 12.25 6.10 6.15 215.14 235.73 ... Average: 12.81 6.41 6.40 343.31 255.49
4. Melden Sie die Auslastung von CPU0:
# sar -P 0 Linux 5.4.10-x86_64-linode132 (web.thegeekdiary.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM 0 11.69 0.00 2.96 0.28 0.06 85.01 12:20:01 AM 0 9.87 0.00 2.53 0.12 0.04 87.44 12:30:01 AM 0 9.96 0.00 2.48 0.09 0.04 87.43 12:40:01 AM 0 9.59 0.00 2.43 0.06 0.04 87.88 12:50:01 AM 0 9.80 0.00 2.46 0.09 0.05 87.59 ... Average: 0 10.00 0.02 2.60 0.14 0.15 87.08
5. Melden Sie die Netzwerkgerätestatistiken aus der aktuellen Protokolldatei.
# sar -n DEV Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) 12:00:02 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12:10:01 AM dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ... Average: dummy0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: tunl0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip_vti0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: ip6gre0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: teql0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ...
6. Konfigurieren Sie einen zusätzlichen Cron-Job, um zusätzlich zu den Festplattendaten Stromverbrauchsdaten zu sammeln. Ändern Sie Folgendes in der Datei /etc/sysconfig/sysstat:
SADC_OPTIONS="-S POWER"
iostat und mpstat
Wie sar sind auch iostat und mpstat Teil des sysstat-Pakets. Sowohl iostat als auch mpstat unterstützen die Argumente delay und count genau wie der Befehl vmstat. iostat meldet CPU- und E/A-Statistiken für Geräte. Partitionen und Netzwerkdateisysteme (NFS).
Der Befehl mpstat meldet CPU-bezogene Statistiken. Wie bei sar kann es notwendig sein, das LANG für die 24-Stunden-Zeit zu konfigurieren.
iostat- und mpstat-Beispiele
1. Erweiterte Ausgabe für /dev/sda anzeigen.
# iostat -x sda Linux 5.4.10-x86_64-linode132 (mylabserver.com) 02/09/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 8.12 0.08 2.85 0.09 0.24 88.63 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 1.76 7.13 3.55 4.17 122.57 93.88 56.07 0.00 0.83 0.71 0.93 0.88 0.68
2. CPU-Statistiken für CPU0 anzeigen:
# LANG=C mpstat -P 0 Linux 5.4.10-x86_64-linode132 (mywebserver.com) 02/09/21 _x86_64_ (1 CPU) 06:32:13 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 06:32:13 0 8.12 0.08 2.37 0.09 0.22 0.25 0.24 0.00 0.00 88.63