Linux Performance Aufzeichnung und Auswertung mit sar
sar dient unter Linux der Aufzeichnung und Auswertung von unterschiedlichen Informationen zur Systemaktivität. Bei Performance-Problemen erlaubt sar auch noch im Nachhinein die Lastwerte der unterschiedlichen Subsysteme (CPU, Memory, Disk, Interrupts, Netzwerk-Interfaces, ...) zu analysieren und so das Problem einzugrenzen.
Aufbau
sar ist Teil von sysstat.[1] sar selbst besteht aus folgenden Teilen:
- sar(1) - zeigt die aufgezeichneten Daten an.
- sadc(8) - system activity data collector, zeichnet die Daten zur Systemaktivität in einem binären Format auf.
- sa1(8) - BASH Skript, nutzt sadc im Hintergrund, wird alle 10 Minuten per Cron aufgerufen (über /etc/cron.d/sysstat).
- sa2(8) - BASH Skript, wird zum Schreiben des täglichen Reports verwendet und per Cron 1x täglich aufgerufen (über /etc/cron.d/sysstat).
- sadf(1) - zeigt die aufgezeichneten Daten an, bietet im Gegensatz zu sar unterschiedliche Formate (CSV, XML, usw.).
Versionen
Das sysstat Paket (das u.a. sar enthält) wird laufend weiter entwickelt. Bei den Versionsnummern wird folgendes Schema verwendet:[2]
- Versionsnummern x.0 kennzeichnen jeweils eine stabile Version
- Versionsnummern x.1 kennzeichnen jeweils eine Entwickler-Version
Neuere Versionen bieten zumeist zusätzliche Features. Mit Version 7.1.6 wurde die Funktion von sar -x und sar -X in ein eigenes Kommando (pidstat) ausgelagert.[3]
Installation
Wie erwähnt ist sar Teil des sysstat Pakets, das bei zahlreichen Distributionen bereits enthalten ist und je nach Distribution entweder über yum install sysstat
oder apt-get install sysstat
einfach installiert werden kann. Dabei werden zumeist auch gleich die Cronjobs in /etc/cron.d/sysstat angelegt.
Funktionsweise der Aufzeichnung
sa1 und sa2 speichern die aufgezeichneten Daten im Verzeichnis /var/log/sa/ (RHEL/CentOS) bzw. /var/log/sysstat/ (Debian) ab. Die Daten werden in der Standardkonfiguration rückwirkend für eine Woche vorgehalten. Die Dauer kann auf bis zu 28 Tage erhöht werden (in /etc/sysconfig/sysstat unter RHEL/CentOS bzw. in /etc/sysstat/config unter Debian 4.0 und /etc/sysstat/sysstat unter Debian 5.0). Ubuntu 12.04 unterstützt die Aufzeichnung auch über 28 Tage, allerdings werden in diesem Fall dann mehrere Verzeichnisse verwendet (für jedes Monat ein Verzeichnis).
sar Aufzeichnung in Debian aktivieren: Um die automatische Aufzeichnung unter Debian zu aktivieren, muss zuerst der Parameter "ENABLED" in der Datei /etc/default/sysstat auf "true" gesetzt werden. Dieser ist per Default auf "false" gesetzt.
Hier dazu ein Beispiel:
[root@testserver ~]# cat /etc/sysconfig/sysstat # How long to keep log files (days), maximum is a month HISTORY=7 [root@testserver ~]# cat /etc/cron.d/sysstat # run system activity accounting tool every 10 minutes */10 * * * * root /usr/lib64/sa/sa1 1 1 # generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib64/sa/sa2 -A [root@testserver ~]# ls -l /var/log/sa/ total 8952 -rw-r--r-- 1 root root 410352 May 18 23:50 sa18 -rw-r--r-- 1 root root 410352 May 19 23:50 sa19 -rw-r--r-- 1 root root 410352 May 20 23:50 sa20 -rw-r--r-- 1 root root 410352 May 21 23:50 sa21 -rw-r--r-- 1 root root 410352 May 22 23:50 sa22 -rw-r--r-- 1 root root 410352 May 23 23:50 sa23 -rw-r--r-- 1 root root 410352 May 24 23:50 sa24 -rw-r--r-- 1 root root 410352 May 25 23:50 sa25 -rw-r--r-- 1 root root 253712 May 26 14:40 sa26 -rw-r--r-- 1 root root 611085 May 17 23:53 sar17 -rw-r--r-- 1 root root 611129 May 18 23:53 sar18 -rw-r--r-- 1 root root 611127 May 19 23:53 sar19 -rw-r--r-- 1 root root 611127 May 20 23:53 sar20 -rw-r--r-- 1 root root 611085 May 21 23:53 sar21 -rw-r--r-- 1 root root 611100 May 22 23:53 sar22 -rw-r--r-- 1 root root 611085 May 23 23:53 sar23 -rw-r--r-- 1 root root 611085 May 24 23:53 sar24 -rw-r--r-- 1 root root 611125 May 25 23:53 sar25 [root@testserver ~]#
Anzeige der aufgezeichneten Daten mit sar
Eingrenzung des Anzeigezeitraumes
sar kann entweder die Daten des aktuellen Tages anzeigen (dazu sind keine speziellen Parameter notwendig), oder die Daten von einem bestimmten Tag (z.B. mit dem Paramter -f /var/log/sa/sa21
).
Weiters kann der Abfrage-Zeitraum über folgende Paramter eingegrenzt werden:
-s [ hh:mm:ss ]
- setzt die Startzeit (z.B.-s 07:30:00
), ohne Angabe einer konkreten Zeit wird 08:00:00 als Standard-Startzeit verwendet.-e [ hh:mm:ss ]
- setzt die Endzeit (z.B.-e 19:30:00
), ohne Angabe einer konkreten Zeit wird 18:00:00 als Standard-Endzeit verwendet.
Parameter für die unterschiedlichen Subsysteme
Hier sind einige Beispiele zur Anzeige unterschiedlicher Werte (die Werte stammen von einem System mit CentOS 4.7 mit sysstat Version 5.0.5).
Anzeige der CPU Auslastung: sar -P ALL
Hier werden die Werte aller CPUs (-P ALL
) vom 25. des laufenden Monats (-f /var/log/sa/sa25
) angezeigt.
[root@testserver ~]# sar -P ALL -f /var/log/sa/sa25 Linux 2.6.9-023stab048.6-smp (testserver.thomas-krenn.com) 05/25/09 00:00:01 CPU %user %nice %system %iowait %idle 00:10:01 all 9.63 0.00 3.81 6.20 80.36 00:10:01 0 8.69 0.00 3.63 7.18 80.50 00:10:01 1 9.28 0.00 3.96 4.47 82.29 00:10:01 2 10.22 0.00 3.86 6.31 79.62 00:10:01 3 9.84 0.00 3.66 6.91 79.59 00:10:01 4 9.86 0.00 3.94 5.28 80.92 00:10:01 5 9.97 0.00 3.84 6.37 79.81 00:10:01 6 9.90 0.00 4.04 7.21 78.85 00:10:01 7 9.32 0.00 3.54 5.83 81.32 [...] Average: all 9.21 0.00 1.68 0.27 88.84 Average: 0 9.03 0.00 1.70 0.31 88.97 Average: 1 9.20 0.00 1.67 0.25 88.88 Average: 2 9.45 0.00 1.70 0.28 88.56 Average: 3 9.84 0.00 1.68 0.26 88.22 Average: 4 9.23 0.00 1.68 0.26 88.84 Average: 5 9.05 0.00 1.68 0.27 89.00 Average: 6 8.90 0.00 1.68 0.29 89.14 Average: 7 8.97 0.00 1.66 0.28 89.10 [root@testserver ~]#
Anzeige der RAM Auslastung: sar -r
Hier werden die RAM Werte (-r
) des aktuellen Tages angezeigt. Ein Wert von annähernd 100 für %memused ist dabei durchaus positiv (sofern kein Swappen erforderlich ist). Siehe dazu auch das Kapitel Cache im Betriebssystem des Artikels Cache Einstellungen von RAID Controllern und Festplatten.
[root@testserver ~]# sar -r Linux 2.6.9-023stab048.6-smp (testserver.thomas-krenn.com) 05/26/09 00:00:01 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad 00:10:01 67248 16292680 99.59 42320 12502420 2047648 628 0.03 0 00:20:01 129776 16230152 99.21 47020 12527100 2047648 628 0.03 0 [...] 14:50:01 638680 15721248 96.10 158392 6953128 2047648 628 0.03 0 15:00:01 646272 15713656 96.05 159880 6966980 2047648 628 0.03 0 15:10:01 59784 16300144 99.63 132044 6565036 2047648 628 0.03 0 Average: 554290 15805638 96.61 124889 10992802 2047648 628 0.03 0 [root@testserver ~]#
Anzeige der load average: sar -q
Hier werden die load average Werte (-q
) des aktuellen Tages angezeigt.
[root@testserver ~]# sar -q Linux 2.6.9-023stab048.6-smp (testserver.thomas-krenn.com) 05/26/09 00:00:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 00:10:01 0 590 1.62 1.89 1.21 00:20:01 11 574 0.24 0.63 0.86 [...] 15:10:01 7 671 2.36 2.26 2.03 15:20:01 9 651 1.85 1.96 1.99 Average: 7 600 1.02 1.04 1.00 [root@testserver ~]#
Anzeige der I/O Transfer Rate: sar -b
Hier werden die I/O Transfer Raten (-b
) des aktuellen Tages angezeigt.
[root@testserver ~]# sar -b Linux 2.6.9-023stab048.6-smp (testserver.thomas-krenn.com) 05/26/09 00:00:01 tps rtps wtps bread/s bwrtn/s 00:10:01 402.21 197.20 205.00 35133.80 27616.04 00:20:01 66.61 56.36 10.24 2034.96 288.93 [...] 15:20:01 72.43 6.54 65.89 176.29 2720.35 15:30:01 73.28 6.08 67.20 399.04 3516.21 Average: 40.21 5.57 34.64 585.00 1561.78 [root@testserver ~]#
tps - Total number of transfers per second that were issued to physical devices. A transfer is an I/O request to a physical device. Multiple logical requests can be combined into a single I/O request to the device. A transfer is of indeterminate size
rtps - Total number of read requests per second issued to physical devices
wtps - Total number of write requests per second issued to physical devices
bread/s - Total amount of data read from the devices in blocks per second. Blocks are equivalent to sectors with 2.4 kernels and newer and therefore have a size of 512 bytes. With older kernels, a block is of indeterminate size.
bwrtn/s - Total amount of data written to devices in blocks per second.
Anzeige der Netzwerk Statistik: sar -n DEV
Hier werden die Netzwerk Statistik Werte (-n DEV
) des aktuellen Tages angezeigt.
[root@testserver ~]# sar -n DEV Linux 2.6.9-023stab048.6-smp (testserver.thomas-krenn.com) 05/26/09 00:00:01 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 00:10:01 lo 0.82 0.82 177.69 177.69 0.00 0.00 0.00 00:10:01 eth0 31.56 40.21 4537.41 35891.07 0.00 0.00 0.00 00:10:01 eth1 4876.29 9919.22 451754.61 14927283.09 0.00 0.00 0.00 00:10:01 venet0 52.88 44.19 46547.68 15279.15 0.00 0.00 0.00 [...] 15:30:01 lo 0.82 0.82 176.68 176.68 0.00 0.00 0.00 15:30:01 eth0 113.08 155.70 17825.90 188643.77 0.00 0.00 0.00 15:30:01 eth1 634.80 1268.92 58495.76 1888004.02 0.00 0.00 0.00 15:30:01 venet0 189.86 147.08 213164.21 42532.10 0.00 0.00 0.00 Average: lo 0.82 0.82 177.10 177.10 0.00 0.00 0.00 Average: eth0 56.42 78.90 9104.66 94428.28 0.00 0.00 0.00 Average: eth1 281.59 559.55 25919.74 830592.96 0.00 0.00 0.00 Average: venet0 87.26 64.75 99974.13 14933.05 0.00 0.00 0.00 [root@testserver ~]#
gesammelte Anzeige aller Werte
Mit sar -A
können gesammelt alle Werte (CPU, RAM, etc.) angezeigt werden.
Tools zur grafischen Auswertung
Die folgenden Tools stellen die mit sar aufgezeichneten Werte grafisch dar:
- sarface
- kSar: Linux Performance Auswertung mit kSar
- sar2png (Perl Skript zum Erstellen von PNG Grafiken aus sar Daten, getestet unter GNU/Linux und Solaris 10)
- weitere Tools siehe Sysstat FAQs Frage 2.11. Do you know a tool which can graphically plot the data collected by sar?
Referenzen
Autor: Werner Fischer Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.
|