Outils personnels

Gestion des IOs, iowaits : Différence entre versions

De wikiGite

Ligne 19 : Ligne 19 :
  
 
La colonne IO> indique les processus qui génèrent des IO. Avec ''top'' dans une autre console, on peut faire le rapport sur ce qui provoque le load average.
 
La colonne IO> indique les processus qui génèrent des IO. Avec ''top'' dans une autre console, on peut faire le rapport sur ce qui provoque le load average.
 +
 +
== iostat ==
 +
''iostat'' est l'outil "standard" des unices pour l'affichage de statistics I/O
 +
# iostat 1
 +
Linux 2.6.18-194.32.1.el5 (qsc1.systea.net) 09.02.2012
 +
 +
avg-cpu:  %user  %nice %system %iowait  %steal  %idle
 +
            2,03    0,50    2,00    1,34    0,00  94,13
 +
 +
Device:            tps  Blk_read/s  Blk_wrtn/s  Blk_read  Blk_wrtn
 +
hda              11,40      375,18      283,42  923088631  697319402
 +
hda1              0,02        0,55        0,05    1347920    123074
 +
hda2            11,38      374,63      283,37  921740231  697196328
 +
 +
avg-cpu:  %user  %nice %system %iowait  %steal  %idle
 +
            0,00    0,00    1,03  98,97    0,00    0,00
 +
 +
Device:            tps  Blk_read/s  Blk_wrtn/s  Blk_read  Blk_wrtn
 +
hda              15,00        0,00      224,00          0        224
 +
hda1              0,00        0,00        0,00          0          0
 +
hda2            15,00        0,00      224,00          0        224
 +
 
== vmstat ==
 
== vmstat ==
 
''vmstat'', bien que plus aride, donne à peu près les mêmes informations que top. Pour afficher une stat par seconde :
 
''vmstat'', bien que plus aride, donne à peu près les mêmes informations que top. Pour afficher une stat par seconde :

Version du 9 février 2012 à 09:39

S'il est assez simple avec ps de trouver ce qui provoque une utilisation excessive du CPU ou de la mémoire, c'est plus compliqué quand ce sont les attentes disques (iowaits). Si top indique un load average anormal, qui semble provenir d'iowaits importants ("%wa" dans l'entête), on peut utiliser iotop (sur CentOS : dépôt EPEL) :

# iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 36.02 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                       
 1142 be/3 root        0.00 B/s    9.21 K/s  0.00 %  0.38 % [kjournald]
    5 rt/3 root        0.00 B/s    0.00 B/s  0.00 %  0.13 % [migration/1]
31527 be/4 dovecot     0.00 B/s    0.00 B/s  0.00 %  0.08 % imap-login
 2984 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % gpm -m /dev/input/mice -t exps2
 1638 be/2 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % audispd
 2401 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % automount
31959 be/4 dovecot     0.00 B/s    0.00 B/s  0.00 %  0.00 % pop3-login
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init [3]
29402 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % spamd child
 2797 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  0.00 % mysqld --basedir=/usr --~var/lib/mysql/mysql.sock
 2766 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  0.00 % mysqld --basedir=/usr --~var/lib/mysql/mysql.sock
 2767 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  0.00 % mysqld --basedir=/usr --~var/lib/mysql/mysql.sock
 2768 be/4 mysql       0.00 B/s    0.00 B/s  0.00 %  0.00 % mysqld --basedir=/usr --~var/lib/mysql/mysql.sock

La colonne IO> indique les processus qui génèrent des IO. Avec top dans une autre console, on peut faire le rapport sur ce qui provoque le load average.

iostat

iostat est l'outil "standard" des unices pour l'affichage de statistics I/O

# iostat 1
Linux 2.6.18-194.32.1.el5 (qsc1.systea.net) 	09.02.2012

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2,03    0,50    2,00    1,34    0,00   94,13

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda              11,40       375,18       283,42  923088631  697319402
hda1              0,02         0,55         0,05    1347920     123074
hda2             11,38       374,63       283,37  921740231  697196328

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0,00    0,00    1,03   98,97    0,00    0,00

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda              15,00         0,00       224,00          0        224
hda1              0,00         0,00         0,00          0          0
hda2             15,00         0,00       224,00          0        224

vmstat

vmstat, bien que plus aride, donne à peu près les mêmes informations que top. Pour afficher une stat par seconde :

# vmstat 1
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   1380  16776  95812 260968    0    0     7    27    0   16  0  0 96  3  0
 0  0   1380  16776  95812 260972    0    0     0     0 1026   97  0  0 100  0  0
 0  0   1380  16776  95812 260972    0    0     0     0 1006   87  0  0 100  0  0
 0  0   1380  16776  95820 260964    0    0     0   164 1019  119  0  1 100  0  0
 0  0   1380  16776  95820 260972    0    0     0     0 1008   89  0  0 100  0  0

Par contre on a un vision plus claire de l'espace de swap : on voit avec vmstat s'il est écrit/lu souvent. La colonne 3 ("swpd") indique le swap utilisé, les colonnes si et so sous "---swap--" indiquent les IOs.

En cas de swap, ajouter de la mémoire RAM, ou réduire certains caches : par exemple MySQL dans son /etc/my.cnf.

A voir

"atop" existe aussi. A tester.