Gestion des IOs, iowaits
De wikiGite
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.
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.