Rejestracja i analiza wydajności w Linuksie programem sar
sar służy do zapisu i analizy różnych informacji dotyczących procesów zachodzących w systemie. W przypadku problemów z wydajnością sar umożliwia również wsteczną analizę obciążeń poszczególnych podsystemów (CPU, pamięć RAM, pamięć dyskowa, przerwania, interfejsy sieciowe, ...), w celu wyizolowania problemu.
Struktura
sar jest częścią sysstat[1]. Sam sar składa się z następujących części:
- sar(1) - wyświetla zapisane dane.
- sadc(8) - system activity data collector, zapisuje w formacie binarnym dane o procesach systemowych.
- sa1(8) - skrypt BASH, wykorzystuje w tle sadc, uruchamiany jest przez Cron co 10 minut (/etc/cron.d/sysstat).
- sa2(8) - skrypt BASH, wykorzystywany jest do zapisu dziennego raportu, uruchamiany jest przez Cron każdego dnia (/etc/cron.d/sysstat).
- sadf(1) - wyświetla zapisane dane, w przeciwieństwie do sar oferuje różne formaty (CSV, XML, itd.).
Wersje
Pakiet sysstat (das u.a. sar enthält) jest nadal rozwijany. Numeracja wersji przeprowadzana jest według następującego schematu:[2]:
- numer wersji x.0 wskazuje zawsze wersję stabilną
- numer wersji x.1 wskazuje zawsze wersje testowe i rozwojowe
Nowe wersje oferują zazwyczaj nowe opcje. W wersji 7.1.6 funkcje sar -x i sar -X zostały wyeksportowane do (pidstat)[3].
Instalacja
Jak zostało już wspomniane sar jest częścią pakietu sysstat, który standardowo zawarty jest w wielu dystrybucjach lub może odpowiednio do dystrybucji zostać doinstalowany przez yum install sysstat
lub apt-get install sysstat
. Przy czym również często zostają dodane Cronjobs w /etc/cron.d/sysstat.
Sposób funkcjonowania zapisu
sa1 i sa2 zapisuje pozyskane dane w katalogu /var/log/sa/ (RHEL/CentOS) lub /var/log/sysstat/ (Debian). Dane przechowywane są w konfiguracji standardowej przez tydzień, okres ten może zostać wydłużony do maks. 28 dni (w /etc/sysconfig/sysstat - RHEL/CentOS lub /etc/sysstat/config - Debian 4.0 i /etc/sysstat/sysstat - Debian 5.0).
Aktywacja zapisu sar w Debianie: aby aktywować automatyczny zapis w Debianie należy zmienić w pliku /etc/default/sysstat wartość parametru "ENABLED" na "true" - standardowo jest "false".
Przykład:
[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 ~]#
Wyświetlenie zapisanych przez sar danych
Ograniczenie okresu
sar może wyświetlić dane z aktualnego dnia (do czego nie jest wymagany parametr) lub dane z określonego dnia (np. z parametrem -f /var/log/sa/sa21
).
Może również zostać podany okres za pośrednictwem następującego parametru:
-s [ hh:mm:ss ]
- czas rozpoczęcia punkt wyjściowy (np.-s 07:30:00
), bez podania konkretnego czasu zostaje jako standardowo zastosowane 08:00:00.-e [ hh:mm:ss ]
- czas końcowy (np.-e 19:30:00
), bez podania konkretnego czasu zostaje jako standardowo zastosowane 18:00:00.
Parametry dla różnych podsystemów
Tu pokazane są przykłady wyświetlenia różnych wartości (wartości pochodzą z systemu CentOS 4.7, sysstat wersja 5.0.5).
Obciążenia procesora: sar -P ALL
Tu wyświetlone są wartości wszystkich procesorów (-P ALL
) z 25. bieżącego miesiąca (-f /var/log/sa/sa25
).
[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 ~]#
Obciążenie pamięci RAM: sar -r
Tu wyświetlone są wartości pamięci RAM (-r
) aktualnego dnia. Wartość bliska 100 dla %memused jest przy tym pozytywna (tak długo jak nie jest konieczna pamięć SWAP). Vide Ustawienia pamięci podręcznej kontrolera RAID i dysków twardych.
[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 ~]#
Średnie obciążenie: sar -q
Tu wyświetlone są wartości średniego obciążenia (-q
) aktualnego dnia.
[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 ~]#
Przepustowość I/O: sar -b
Tu wyświetlane są wartości szybkości transferu I/O (-b
) aktualnego dnia.
[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 ~]#
Network statistic: sar -n DEV
Tu wyświetlane są wartości network statistic (-n DEV
) aktualnego dnia.
[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 ~]#
Wszystkie zgromadzone wartości
Dzięki sar -A
mogą zostać pokazane wszystkie zgromadzone wartości (CPU, RAM, itd.).
Narzędzia do analizy graficznej
Następujące narzędzia przedstawiają graficznie zapisane przez sar dane::
- sarface (vide http://sourceforge.net/projects/sarface/)
- kSar
- dalsze narzędzia vide Sysstat FAQs pytanie 2.11. Do you know a tool which can graphically plot the data collected by sar?