вторник, 5 марта 2013 г.

Борьба с подвисанием виртуальной машины под управлением XEN

Установлен Oracle Linux 6 внутри виртуальной машины под управлением Oracle VM. Хост устанавливался для давно эксплуатируемого приложения, которое использует Sybase для хранения своих данных. База данных эта полностью внутренняя, так что никаким её администрированием заниматься не приходится. Но после старта базы данных ждал неприятный сюрприз: хост начал подлипать вплоть до полной потери консоли. Было перебрано: смена ядра с UEK на rhel, изменения количества ядер на фиксированное, отключение irqd - полностью проблема не уходила. В dmesg я наблюдаю вот такую ругань

Явно что-то не так с тактовым генератором виртуальной машины.
Доступные генераторы мы можем увидеть в файле /sys/devices/system/clocksource/clocksource0/available_clocksource
В моём случае были доступны xen и tsc.
Текущий источник тиков рядом: /sys/devices/system/clocksource/clocksource0/current_clocksource
В моём случае там был xen, что правильно. Но ядро зачем-то переключает генератор на tsc, что приводит к подвисаниям и вылетам процессов. Чтобы исключить проблемный источник я добавил следующие параметры ядра в /boot/grub/grub.conf
clocksource=xen notsc

И перезагрузился.
Результат: пропала ругань на источник тиков, остались проблемы с подвисанием виртуального ядра. На просторах паутины рекомендуют добавить параметры ядра
pci=noacpi acpi=off noapic
К сожалению, метод не решает проблему, а только уменьшает частоту возникновения Ещё одна рекомендация: отключить энергосбережение
processor.max_cstate=1 idle=poll

Комментариев нет:

Отправить комментарий