Outils personnels

Gestion des IOs, iowaits : Différence entre versions

De wikiGite

m (Frank a déplacé la page Gestion des I/O, iowaits vers Gestion des IOs, iowaits)
 
(5 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
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ôts complémentaires|dépôt EPEL]])
+
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ôts complémentaires|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.

Version actuelle datée du 19 mars 2013 à 09:48

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.