Linux Performance Aufzeichnung und Auswertung mit sar

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

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:

Referenzen


Foto Werner Fischer.jpg

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.


Das könnte Sie auch interessieren

DRBD Kernel Modul mit DKMS automatisch erstellen
Linux Monitorauflösung für Headless Betrieb permanent einstellen
Rdiff-backup Monitoring Plugin