hyperwolf
@hyperwolf

Xen + mysql = высокий load average при слабой загрузке CPU?

Доброго времени суток, хабр. Столкнулся с такой проблемой — есть машина (2х Intel Xeon E5410 + 8 gb ram) на Debian 6 (x86_64) + Xen 4. На ней крутится domU (6 ядер и 3 гб озу, под базу данных разером около 5 гб). Первоначально эта вдс имела 4 ядра и 2 гб озу, но я заметил странность — процессоры равномерно загружены примерно по 30-40%, Load average при этом доходит до 20, mysql тормозит, програмист негодует. Спасалась ситуация рестартом mysql, ибо пока колупалась база для себя — было не страшно. Показалось мне, что процессоров маловато, добавил еще 2 ядра и 1 гб озу, до 6 ядер и 3 гб озу. LA теперь может дойти до 30, mysql опять тормозит. Однако загрузка процессоров ниже, в районе 15-20%. Потыкал top — проблема не в диске, не в процессорах, не в оперативке даже. Смутило высокое значение колонки %st, которое доходит до 85%. Собственно — как правильно толковать %st, и как боротся с такой проблемой, когда высокий LA и толком не нагружены процессоры?
  • Вопрос задан
  • 3874 просмотра
Решения вопроса 1
hyperwolf
@hyperwolf Автор вопроса
Итак, проблему решил. Кому интересно — опишу. В общем, top и atop на хостовой машине (dom0) показывал 99-100% idle cpu, диск использовался на 5%. Внутри вдс (domU) дикие тормоза. Подсказали мне ссылку — CreditScheduler. xm sched-credit выдал мне weight 86 (86% от 1 ядра). Т.е. на 6 виртуальных ядер приходилось меньше 1 физического. Исправил через xm sched-credit -d database -c 0 , где database — название вдски. Задал 600, процы нагрузились равномерно. top в dom0 по прежнему сообщает, что хостмашина не нагружена, но прикол в том, что top врет — нагрузка заметна через тормоза консоли небольшие и через xentop, который показывает, сколько процессорного времени кушает каждая вдс. Ну и небольшая оптимизация пары жирных запросов — теперь в вдс запросы исполняются в разы шустрее, и всд имеет честные 6 ядер, которые исполняются на 6 реальных ядрах, а не на 0.86 одного ядра.

Надеюсь, кому-нибудь поможет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AndreyMorozov
Это steal time — процент процессорного времени, которое хост использовал по своему усмотрению в то время, как ваша виртуальная машина в нем нуждалась.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы