суббота, 8 июня 2013 г.

Привязка контейнера OpenVZ к определенным ядрам процессора в Debian Squeeze

Поскольку в debian squeeze утилита vzctl довольно лохматой версии и не поддерживает опцию --cpumask, то пришлось городить велосипед, чтобы прикрепить конкретный контейнер на выделенные ядра процессора.

У подопытного сервера 4 ядра с hyper-threading - итого система видит 8 ядер. Перемещаем все процессы системы, для которых еще не задан явно affinity на ядра 4,5

for _PID in `ps --no-headers -A -o pid`
do
    taskset -p -c $_PID 2>/dev/null | grep -q 0-7$ && taskset -p -c 4,5 $_PID
done

Контейнер с VEID 300 на ядра 0-3

ps --no-headers -A -o pid | xargs vzpid | tail -n+2 | awk '{if ($2 == 300) print $1}' | xargs -n 1 taskset -p -c 0-3

Посмотреть все привязки в системе можно так:

ps --no-headers -A -o pid | xargs -I {} taskset -p -c {} 2>/dev/null

3 комментария:

  1. Андрей, немножко нескромный вопрос - а почему вы не переезжаете на wheezy?

    ОтветитьУдалить
    Ответы
    1. 1) Не вижу смысла апгрейдить продакшен сервер до Wheezy, если все работает и выпускаются security фиксы для Squeeze.

      2) В Wheezy из коробки нет ядра под openvz.

      Удалить
  2. спасибо, второй ответ более чем убедителен

    ОтветитьУдалить