[solved] Высокий iowait [message #20339] |
Mon, 17 September 2007 06:39  |
 |
knutov
Messages: 79 Registered: December 2005 Location: Perm, Russia
|
Member |
|
|
Есть нода, на которой периодически случается очень высокий iowait (90%+) и все ложится. Эксперементально выяснено, что узким место являются только операции с диском - например копирование файлика в 300 метров на любой VE может ноду положить.
Наблюдение iostat -k -x 5 полностью подтверждают, что проблемы имеются именно с диском.
Поштучное отключение VE не приводит к каким-либо принципиальным изменениям.
Как определить, какая VE делает больше всего операций с диском? И как вообще смотреть статистику общения с диском для каждой VE ?
Скорее всего меня интересуют столбцы bi и bo от vmstat, но vmstat внутри VE показывает все по нулям и в стобце cs стоят цифры от ноды (что тоже направильно).
2.6.9-023stab044.4-smp
[Updated on: Tue, 18 September 2007 03:54] Report message to a moderator
|
|
|
Re: Высокий iowait [message #20361 is a reply to message #20339] |
Mon, 17 September 2007 10:03   |
khorenko
Messages: 533 Registered: January 2006 Location: Moscow, Russia
|
Senior Member |
|
|
К сожалению, в 2.6.9-x ядрах нет per-VE i/o статистики, а вот в 2.6.18-х ядрах уже есть и статистика (/proc/bc/$VEID/ioacct) и возможность управления приоритетами.
From man vzctl:
--ioprio priority
Assigns I/O priority to VE. Priority range is 0-7. The
greater priority is, the more time for I/O activity VE
has. By default each VE has priority of 4.
If your problem is solved - please, report it!
It's even more important than reporting the problem itself...
|
|
|
|
Re: Высокий iowait [message #20384 is a reply to message #20370] |
Mon, 17 September 2007 15:10   |
khorenko
Messages: 533 Registered: January 2006 Location: Moscow, Russia
|
Senior Member |
|
|
knutov wrote on Mon, 17 September 2007 16:28 | Можно ли просто обновить ядро с 2.6.9 до 2.6.18 и ничего не бояться?
|
Если ядро загрузится - должно работать нормально. Вопрос только - загрузится ли. В 2.6.9 и 2.6.18 ядрах некоторое железо поддерживается разными драйверами или просто драйвер в одном случае вкомпилен в ядро, а в другом - идёт модулем. Соответственно, если ставить 2.6.18 ядро на дистрибутиве, где в оригинале шло 2.6.9 ядро, mkinitrd может некорректно создать initrd, и ядро не загрузится. Если сделать правильный initrd (либо само, либо вручную), то должно работать.
Quote: | И как быть, если надо определить из-за какой VE проблемы на 2.6.9 ?
|
Наверное, самый надёжный способ - поочерёдное отключение VE-шек. И если таким образом не нашлась виновная, скорее всего, виновата не одна, а сразу несколько, например, внутри них (или даже на HN) одновременно запускаются по крону какие-то тяжёлые операции, скажем, updatedb, prelink...
If your problem is solved - please, report it!
It's even more important than reporting the problem itself...
|
|
|
Re: Высокий iowait [message #20390 is a reply to message #20384] |
Mon, 17 September 2007 16:41   |
 |
knutov
Messages: 79 Registered: December 2005 Location: Perm, Russia
|
Member |
|
|
На ноде центос4. Ядра я ставлю только из репозиториев. Могут ли быть проблемы, если я файле openvz.repo я отключу ядра ветки rhel4, включу rhel5 и поставлю новое ядро, если известно что на точно таком же железе ядро из ветки rhel5 работает нормально?
Вероятно у меня второй случай, поштучное выключение ни к чему не приводит. Можно ли вообще что-то сделать кроме как вынести каждую вторую VE на другой сервер ?
ps: я посмотрел /proc/bc/$VEID/ioacct для ветки rhel5. Как их можно интерпретировать? Можно ли где-то почитать описание каждого параметра из этого файла?
[Updated on: Mon, 17 September 2007 16:42] Report message to a moderator
|
|
|
|
Re: Высокий iowait [message #20443 is a reply to message #20390] |
Tue, 18 September 2007 05:28   |
khorenko
Messages: 533 Registered: January 2006 Location: Moscow, Russia
|
Senior Member |
|
|
Да не за что, чем можем. 
knutov wrote on Mon, 17 September 2007 20:41 | Могут ли быть проблемы, если ... известно что на точно таком же железе ядро из ветки rhel5 работает нормально?
|
Могут. initrd _может_ быть создано неверно. Проблема не критична, починить просто (достаточно сравнить initrd, созданное на rhel4 и rhel5 машинах), но с первого раза _может_ не взлететь.
Quote: | Вероятно у меня второй случай, поштучное выключение ни к чему не приводит. Можно ли вообще что-то сделать кроме как вынести каждую вторую VE на другой сервер ?
|
Например, как я уже предположил, - посмотреть на cron-ы HN и VE-шек, особо пристально в те периоды, когда нода бывает перегружена. Посмотреть, опять же, какие процессы запущены, когда нода тормозит, возможно, имена что-то объяснят.
If your problem is solved - please, report it!
It's even more important than reporting the problem itself...
|
|
|
|
Re: [solved] Высокий iowait [message #20527 is a reply to message #20339] |
Wed, 19 September 2007 21:20  |
|
>Как определить, какая VE делает больше всего операций с диском?
Если ядро 2.6.9, и нету iostat, то проще всего так:
В тот момент, когда нода тормозит, сделать ps fax, посмотреть, какие процессы в D-state. Ну собственно и всё, определить, в каких VPS-ках они запущены, и сделать организационные выводы
|
|
|