Eu tenho um sistema grande - 128 GB, um par de sistemas de arquivos RAID0 (6 TB e 2 TB) com um cache SSD, 8 núcleos (16 com hyperthreading), rodando o Ubuntu 12.04 64 bits. Quando tento escrever um arquivo grande, obtenho um desempenho muito ruim, e o iotop mostra processos esperando mais de 99% no iowait:
dd if=/dev/zero of=lezz bs=1024 count=$((1024*50))
51200+0 records in
51200+0 records out
52428800 bytes (52 MB) copied, 3.74852 s, 14.0 MB/s
De iotop:
Total DISK READ: 185.92 K/s | Total DISK WRITE: 84.06 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
24481 be/4 arris292 0.00 B/s 0.00 B/s 0.00 % 99.99 % dd if=/dev/zero of=lezz bs=1024 count=512000
22668 be/4 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % [flush-252:0]
21532 be/4 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % [kworker/1:2]
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
8196 be/4 arris292 0.00 B/s 0.00 B/s 0.00 % 0.00 % sshd: arris292@pts/22
5 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u:0]
6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
Em um sistema muito similar (mesma memória, mesmo modelo, sistema de arquivos similar) eu obtenho o desempenho esperado e nenhum processo aguarda 99% do seu tempo para IO ....
dd if=/dev/zero of=lezz bs=1024 count=$((1024*50))
51200+0 records in
51200+0 records out
52428800 bytes (52 MB) copied, 0.111191 s, 472 MB/s
Eu já vi isso antes, mas nunca fui capaz de chegar ao fundo do problema, e com o passar do dia e mais engenheiros começarem a usar esse sistema para criar, o desempenho geral cairá para um rastreamento .
Então, o que poderia estar causando os incrivelmente altos tempos de espera de IO? Como posso resolver isso mais? É possivelmente um problema de SSD ou disco e, em caso afirmativo, quais ferramentas posso usar para diagnosticar?