1 Introduction
Sysstat est un package qui contient le binaire sar et iostat. Le dernier sert à monitorer uniquement les IO disque, tandis que sar sert à monitorer à peu prêt tout.
2 Installation
2.1 Debian
Sous Debian, il va falloir installer sysstat :
aptitude
|
aptitude install sysstat
|
2.2 Red Hat
Sous Red Hat, il va falloir installer sysstat :
yum
|
yum install sysstat
|
2.3 Solaris
Sous Solaris, il va falloir utiliser les packages Sun Freeware pour trouver cet outil :
pkg-get
|
pkg-get install CSWsysstat
|
3 iostat
iostat va permettre de mesurer les I/O disque. S'il peut être très intéressant de tester les perfs des disques montés sur vos machines, je vous conseil d'utiliser screen afin de vous rendre compte de ce que celà donne en temps réel.
3.1 Linux
Sous linux, voici comment l'utiliser sur le disque sda par exemple :
iostat
|
> iostat -x sda 1 5
avg-cpu: %user %nice %system %iowait %steal %idle 0,21 0,00 0,29 0,05 0,00 99,45 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %utilsda 0,71 1,25 1,23 0,76 79,29 15,22 47,55 0,01 2,84 0,73 0,14
avg-cpu: %user %nice %system %iowait %steal %idle
0,00 0,00 0,00 0,00 0,00 100,00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0,00 0,00 1,00 0,00 16,00 0,00 16,00 0,00 1,00 1,00 0,10
avg-cpu: %user %nice %system %iowait %steal %idle
0,00 0,00 0,00 0,00 0,00 100,00
|
- -x : mode de statistiques étendues
- 1 : Cela signifie que toutes les secondes, iostat va analyser les performances de tous les disques
- 5 : Pendant 5 secondes
Les premières lignes de la commande iostat donne une moyenne des I/O depuis le boot de la machine. Voici quelques explications sur les colonnes :
- r/s : opérations en lecture par seconde
- w/s : opérations en écriture par seconde
- await : temps d'attente (r/s + w/s)
Pour savoir si on a des lectures/écritures séquentielles sur le disque :
- rrqm/s : nombre de requêtes mergées par secondes en lecture
- wrqm/s : nombre de requêtes mergées par secondes en écriture
Plus les lectures sont séquentielles, plus la rapidité sera présente (sur disques non SSD), plus les secteurs seront dispersés, plus l'attente sera longue.
Pour tester, voici quelques infos utiles[1] :
- Advise to drop cache for whole file
dd
|
dd if=ifile iflag=nocache count=0
|
- Ensure drop cache for whole file
dd
|
dd of=ofile oflag=nocache conv=notrunc,fdatasync count=0
|
- Drop cache for part of file
dd
|
dd if=ifile iflag=nocache skip=10 count=10 of=/dev/null
|
- Stream data just using readahead cache
dd
|
dd if=ifile of=ofile iflag=nocache oflag=nocache
|
3.2 Solaris
Sous Solaris, les commandes sont un petit peu différentes :
iostat
|
iostat -xcnCXTdz 1
|
Pour stresser le disque, nous utiliserons la commande dd qui est une commande de bas niveau :
dd
|
dd if=/dev/zero of=/export/home/dd.img bs=10485760 count=100
|
Et voici un petit script shell qui fait tout pour vous :
bench_disk.sh
|
#!/bin/sh
# Made by Pierre Mavro
echo "What size of file would you like to test (in Mo) ? (ex. 10240 for 10Go) :"
read size
echo "Choose your requiered device :"
df | awk '{ print $1 }'
read device
echo ""
echo "Please enter to confirm : a test_array_file file of $size will be created in $device"
read ok
echo ""
echo "Starting disk bench (Ctrl+C to stop)..."
dd if=/dev/zero of=$device/test_array_file bs=1024k count=$size &
iostat -nmCxz 1
|
4 sar
sar est un outil qui va nous permettre de monitorer beaucoup de choses. A l'installation de sysstat, sar va se mettre en crontab pour exécuter régulièrement des sondages placés dans /var/log/sa.
Vous pouvez à tout moment changer la crontab par défaut :
/etc/cron.d/sysstat
|
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -S DISK 1 1
# 0 * * * * root /usr/lib64/sa/sa1 -S DISK 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
|
Décommentez toutes les lignes ou ajustez selon vos besoins. Pour lire par la suite ces fichiers, utilisez la commande sar comme ceci :
sar
|
sar -d -f /var/log/sa/saXX
|
Une petite chose importante avant d'utiliser sar, créez vous un alias dans votre bashrc ou le fichier de préférences pour votre shell favori afin que les heures s'affichent correctement :
~/.zshrc
|
|
4.1 Disques
Pour monitorer les disques, c'est l'option -d qu'il faut utiliser :
sar
|
> sar -d 1 2
13:57:03 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
13:57:04 dev8-16 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
13:57:04 dev8-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
13:57:04 dev253-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
13:57:04 dev253-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
13:57:04 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
13:57:05 dev8-16 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
13:57:05 dev8-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
13:57:05 dev253-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
13:57:05 dev253-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Moyenne : DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %utilMoyenne : dev8-16 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00Moyenne : dev8-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00Moyenne : dev253-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00Moyenne : dev253-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
|
Comme vous pouvez le voir, les dernières lignes correspondent aux moyennes depuis le boot de la machine.
Si les devices des disques ne vous parlent pas trop, vous pouvez utiliser l'option -p :
sar
|
> sar -d -p 1 2
14:13:28 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
14:13:29 sdb 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:13:29 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:13:29 VolGroup-lv_root 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:13:29 VolGroup-lv_swap 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:13:29 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
14:13:30 sdb 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:13:30 sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:13:30 VolGroup-lv_root 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:13:30 VolGroup-lv_swap 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Moyenne : DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Moyenne : sdb 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Moyenne : sda 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Moyenne : VolGroup-lv_root 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Moyenne : VolGroup-lv_swap 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
|
4.2 CPU
Pour analyser le CPU :
sar
|
> sar -u 1 3
14:20:56 CPU %user %nice %system %iowait %steal %idle
14:20:57 all 0,00 0,00 0,00 0,00 0,00 100,00
14:20:58 all 0,00 0,00 0,00 0,00 0,00 100,00
14:20:59 all 0,00 0,00 0,99 0,00 0,00 99,01
Moyenne : all 0,00 0,00 0,33 0,00 0,00 99,67
|
4.3 Mémoire
Pour monitorer la mémoire :
sar
|
> sar -r 1 30
Linux 3.2.0-3-amd64 (deb-pmavro) 13/09/2012 _x86_64_ (2 CPU)
18:17:01 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact
18:17:02 275472 3617496 92,92 220604 1635456 4294436 55,08 2053992 1312976
18:17:03 275612 3617356 92,92 220604 1635140 4294136 55,08 2054064 1312708
18:17:04 268048 3624920 93,11 220616 1642852 4302016 55,18 2054192 1320488
18:17:05 276356 3616612 92,90 220616 1634612 4293660 55,07 2054348 1312128
|
Vous pouvez également utiliser vmstat pour monitorer la mémoire :
vmstat
|
> vmstat -n 1 30
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 52600 272952 220800 1636336 0 1 572 587 471 222 19 3 75 3
3 0 52600 272828 220804 1635904 0 0 0 140 2969 6041 16 3 79 2
0 0 52600 275108 220804 1635492 0 0 0 0 3016 6002 18 3 80 0
0 0 52600 274984 220804 1635184 0 0 0 220 2327 4608 14 3 83 0
0 0 52600 277836 220804 1635044 0 0 0 0 2868 5820 24 4 72 0
|
- free, buff et cache : le nombre de mémoire en KiB qui est idle
- si et so : correspondent à l'utilsation de la swap
- swpd : la taille en KiB de swap utilisé
Pour monitorer le taux de changement :
sar
|
> sar -R 1 30
Linux 3.2.0-3-amd64 (deb-pmavro) 13/09/2012 _x86_64_ (2 CPU)
18:18:42 frmpg/s bufpg/s campg/s
18:18:43 -2203,00 0,00 2202,00
18:18:44 713,00 0,00 8,00
18:18:45 -279,00 0,00 404,00
18:18:46 186,00 0,00 -13,00
18:18:47 -93,00 0,00 26,00
18:18:48 -155,00 2,00 -18,00
18:18:49 62,00 0,00 -44,00
|
4.4 Swap
Pour analyser la swap :
sar
|
> sar -W 1 3
14:22:10 pswpin/s pswpout/s
14:22:11 0,00 0,00
14:22:12 0,00 0,00
14:22:13 0,00 0,00
Moyenne : 0,00 0,00
|
4.5 Network
Pour une analyse réseaux :
sar
|
> sar -n DEV 1 2
14:23:47 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
14:23:48 lo 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:23:48 eth0 1,00 1,00 0,06 0,17 0,00 0,00 0,00
14:23:48 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
14:23:49 lo 0,00 0,00 0,00 0,00 0,00 0,00 0,00
14:23:49 eth0 2,00 1,00 0,12 0,38 0,00 0,00 1,00
Moyenne : IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Moyenne : lo 0,00 0,00 0,00 0,00 0,00 0,00 0,00
Moyenne : eth0 1,50 1,00 0,09 0,28 0,00 0,00 0,50
|
4.6 Les IO
Pour monitorer tous les IO :
sar
|
> sar -B 1 30
Linux 3.2.0-3-amd64 (deb-pmavro) 13/09/2012 _x86_64_ (2 CPU)
18:19:33 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
18:19:34 0,00 0,00 106,00 0,00 3105,00 0,00 0,00 0,00 0,00
18:19:35 0,00 0,00 58,00 0,00 1567,00 0,00 0,00 0,00 0,00
18:19:36 0,00 0,00 82,00 0,00 1039,00 0,00 0,00 0,00 0,00
18:19:37 0,00 0,00 205,00 0,00 1530,00 0,00 0,00 0,00 0,00
18:19:38 0,00 44,00 131,00 0,00 1192,00 0,00 0,00 0,00 0,00
|
4.7 Les processus
Il est possible via la commande pidstat d'obtenir beaucoup d'informations sur un processus ne particulier :
pidstat
|
> pidstat -p 2365 1 50
Linux 3.2.0-4-amd64 (ZG020194) 05/07/2013 _x86_64_ (2 CPU)
02:12:57 PM PID %usr %system %guest %CPU CPU Command
02:12:58 PM 2365 1.00 0.00 0.00 1.00 0 awesome
02:12:59 PM 2365 0.00 0.00 0.00 0.00 0 awesome
02:13:00 PM 2365 0.00 1.00 0.00 1.00 0 awesome
|
Il est également possible de monitorer les IO (-d) ou encore le top 5 des processus en pagefault :
pidstat
|
> pidstat -T CHILD -r 2 5
Linux 3.2.0-4-amd64 (ZG020194) 05/07/2013 _x86_64_ (2 CPU)
02:16:02 PM PID minflt-nr majflt-nr Command
02:16:04 PM 2252 1 0 VBoxService
02:16:04 PM 2365 50 0 awesome
02:16:04 PM 4938 7 0 firefox
02:16:04 PM 5051 171 0 pidstat
|
5 FAQ
5.1 sar: can't open /var/adm/sa/saXX : No such file or directory
Vous désirez, sous Solaris, utiliser la commande "sar" afin d'effectuer du monitoring ou de l'analyse de performance sur votre serveur, mais quand vous exécutez la commande, vous obtenez une erreur semblable à la suivante :
sar: can't open /var/adm/sa/saXX : No such file or directory
La réponse se trouve dans le manpage de "sadc". Vous devez exécuter la commande suivante, et vous devriez être en mesure d'exécuter la commande sans problème, après avoir exécuté ceci :
sadc
|
su sys -c "/usr/lib/sa/sadc /var/adm/sa/sa`date +%d`"
|
6 Ressources
http://www.cyberciti.biz/open-source/command-line-hacks/linux-monitor-process-using-pidstat/
- ^ http://comments.gmane.org/gmane.comp.gnu.coreutils.general/904