Нахождение первопричины 100% iowait в Linux
У меня есть система, которая уже несколько лет работает под управлением Fedora 7 (я знаю, она тоже старая). Теперь у меня работает PS3 Media Server (и некоторые другие вещи, такие как Vmware и Plone), и я заметил, что получаю неожиданные прерывания в потоковых фильмах.
Обычно эта система читает и пишет со скоростью в 25-30 МБ / с. Я узнал (см. Ниже), что в некоторые моменты все останавливается на 15-30 секунд. Я просмотрел другие вопросы и ответы здесь, но я не смог найти никаких подсказок, что может быть не так (программное обеспечение). То, что я сделал здесь, было открыть фильм и искать более поздний момент. Моя PS3 использует медиасервер для получения миниатюр на каждую минуту, чтобы я мог искать нужную сцену.
Ниже я вижу, что эта простая операция останавливает всю систему. Вся система останавливается в ожидании ввода-вывода. Кроме того, количество переключений контекста резко падает до примерно 650. Я проверил, не меняла ли система или иным образом не сообщала о каких-либо ошибках или предупреждениях в лог-файлах. Я не смог обнаружить ничего похожего.
Я использовал iotop, чтобы получить больше информации, и я просто обнаружил, что все работающие приложения, которые выполняли ручную обработку операций ввода-вывода в КиБ / с, внезапно получили 99% IOWAIT вместо 0,01%, как они обычно делали.
На данный момент мое лучшее предположение - отказ оборудования (жесткий диск).
Мой вопрос к вам, ребята: как мне выяснить, в чем настоящая проблема?
Системная информация: Intel Pentium D, процессор 2.80 ГГц, хранилище Linux 2.6.22.1-27.fc7 #1 SMP Вторник, 17 июля 17:13:26 EDT 2007 i686 i686 i386 GNU/Linux
Пример вывода из dstat -f в моей системе.
-------cpu0-usage--------------cpu1-usage------ --dsk/sda-----dsk/sdb-----dsk/sdc-----dsk/sdd-- ---paging-- ---system-->
usr sys idl wai hiq siq:usr sys idl wai hiq siq| read writ: read writ: read writ: read writ| in out | int csw >
3 12 84 1 0 0: 2 14 83 1 0 0|4096B 68k: 32k 0 : 0 0 : 0 0 | 0 0 | 125 4903 >
0 6 94 0 0 0: 1 8 91 0 0 0| 0 8192B: 16k 0 : 0 0 : 0 0 | 0 0 | 109 3734 >
0 2 96 2 0 0: 0 1 96 0 1 2|4096B 28k:1040k 0 : 0 0 : 0 0 | 0 0 | 998 3969 >
0 2 98 0 0 0: 1 0 97 2 0 0| 0 0 : 32k 0 : 0 0 : 0 0 | 0 0 | 115 3805 >
1 1 98 0 0 0: 0 4 96 0 0 0| 0 0 : 32k 0 : 0 0 : 0 0 | 0 0 | 121 3850 >
1 3 96 0 0 0: 2 4 80 0 2 12| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 |8110 5076 >
1 3 40 55 0 1: 1 2 32 57 1 7| 0 716k:2656k 0 : 0 0 : 0 0 | 0 0 |4213 4562 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 56k: 0 0 : 0 0 : 0 0 | 0 0 | 78 833 >
0 0 85 15 0 0: 0 0 0 100 0 0| 0 16k: 0 0 : 0 0 : 0 0 | 0 0 | 74 623 >
0 0 100 0 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 572 >
0 0 14 86 0 0: 0 0 0 100 0 0| 0 56k: 0 0 : 0 0 : 0 0 | 0 0 | 82 717 >
1 0 0 99 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 69 583 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 69 576 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 73 586 >
1 0 0 99 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 70 587 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 70 593 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 70 578 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 64 586 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 66 586 >
1 0 11 88 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 63 575 >
0 1 99 0 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 64 568 >
0 0 79 21 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 571 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 64 574 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 581 >
1 0 0 99 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 579 >
0 0 0 100 0 0: 0 1 0 99 0 0| 0 228k: 0 0 : 0 0 : 0 0 | 0 0 | 115 1230 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 66 579 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 574 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 583 >
1 0 0 99 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 64 581 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 16k: 0 0 : 0 0 : 0 0 | 0 0 | 67 595 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 64 583 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 584 >
0 0 0 100 0 0: 0 0 0 100 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 65 584 >
10 17 8 66 0 0: 0 0 0 100 0 0| 0 4096B: 0 0 : 0 0 : 0 0 | 0 0 | 67 595 >
1 3 17 76 1 2: 1 3 19 72 1 4| 0 3336k:3488k 0 : 0 0 : 0 0 | 0 0 |3386 4124 >
2 3 86 9 0 0: 1 4 72 7 1 15| 0 0 : 11M 0 : 0 0 : 0 0 | 0 0 |8925 5683 >
0 3 94 3 0 0: 1 3 80 4 2 10| 0 0 :6624k 0 : 0 0 : 0 0 | 0 0 |5744 4896 >
1 4 92 3 0 0: 0 7 81 6 1 5|8192B 412k: 448k 0 : 0 0 : 0 0 | 0 0 |2927 4535 >
1 1 97 1 0 0: 1 3 96 0 0 0|8192B 72k: 32k 0 : 0 0 : 0 0 | 0 0 | 131 3931 >
1 2 97 0 0 0: 0 2 98 0 0 0| 0 24k: 0 0 : 0 0 : 0 0 | 0 0 | 112 3889 >
1 16 83 0 0 0: 2 21 74 2 0 1| 12k 32k: 32k 0 : 0 0 : 0 0 | 0 0 | 130 4828 >
1 2 97 0 0 0: 0 2 98 0 0 0| 0 0 : 48k 0 : 0 0 : 0 0 | 0 0 | 127 3838 >
0 1 99 0 0 0: 1 2 97 0 0 0|4096B 44k: 0 0 : 0 0 : 0 0 | 0 0 | 113 3925 >
0 3 95 2 0 0: 0 1 99 0 0 0|8192B 44k: 16k 0 : 0 0 : 0 0 | 0 0 | 136 3973 >
1 1 96 1 0 1: 0 1 99 0 0 0|4096B 40k: 32k 0 : 0 0 : 0 0 | 0 0 | 124 3926 >
0 2 98 0 0 0: 1 1 98 0 0 0| 0 0 : 0 0 : 0 0 : 0 0 | 0 0 | 107 3792 >
Дополнительная информация: iotop обычно показывает это:
Total DISK READ: 3.82 K/s | Total DISK WRITE: 26.72 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
13516 be/2 root 3.82 K/s 11.45 K/s 0.00 % 1.44 % vmware-vmx -C /personal/VMWare
13514 be/2 root 0.00 B/s 7.63 K/s 0.00 % 0.01 % vmware-vmx -C /personal/VMWare
13517 be/2 root 0.00 B/s 7.63 K/s 0.00 % 0.01 % vmware-vmx -C /personal/VMWare
13519 be/4 root 0.00 B/s 26.72 K/s 0.00 % 0.00 % vmware-vmx -C /personal/VMWare
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init [5]
2 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
4 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
6 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]
7 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]
8 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1]
9 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0]
Когда заблокировано это показывает это:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
3013 be/4 nobody 0.00 B/s 0.00 B/s 0.00 % 99.99 % httpd.vmware -DSSL -DSSL_ONLY
9828 be/4 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % vmware-vmx -C /personal/VMWare/
16464 be/4 niels 0.00 B/s 0.00 B/s 0.00 % 99.99 % java -Xmx768M -Djava.encoding=UT~e/niels/pms-linux-1.10.5/pms.jar
14013 be/4 niels 0.00 B/s 0.00 B/s 0.00 % 99.99 % java -Xmx768M -Djava.encoding=UT~e/niels/pms-linux-1.10.5/pms.jar
13516 be/2 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % vmware-vmx -C /personal/VMWare/
13555 be/2 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % vmware-vmx -C /personal/VMWare/
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init [5]
2 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
4 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
5 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
6 rt/3 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]
Таким образом, фактического ввода-вывода ждать не приходится, и все же все ждут своего ввода-вывода.
2 ответа
Вы пробовали iotop? В нем перечислены процессы, пытающиеся сделать IO.
Также попробуйте smartctl -a /dev/sd*, чтобы увидеть, есть ли какие-либо ошибки SMART.
может быть, эта ошибка ядра является причиной. У меня та же проблема на 20G ОЗУ /2 хоста шпинделей, работающих под управлением 8-9 vmware server 2.0.1 vms. Возможно, вам придется обновить до 2.6.32 или понизить до 2.6.18 .
Мой отвратительный патч, специфичный для сервера vmware, заключался в переносе файлов с отображенной памятью (.vmem) в смонтированный каталог tmpfs.