Gestion des IOs, iowaits : Différence entre versions
De wikiGite
(Page créée avec « 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 (iow... ») |
m (Frank a déplacé la page Gestion des I/O, iowaits vers Gestion des IOs, iowaits) |
||
(6 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.