Ядра процессора остаются в автономном режиме после горячего подключения

Когда мой ИБП запускает событие "на батарее", я хочу, чтобы все ядра отключались для экономии энергии. ПК имеет 8 ядер на двух чипах, батареи ИБП нуждаются в замене каждые 3 месяца из-за сильных пиков тока. Чтобы снизить стоимость владения, при срабатывании ИБП выполняются следующие инструкции:

for c in /sys/devices/system/cpu/cpu*/online; do
    echo 0 >$c
done

Ядра с 1 по 7 успешно отключены, а ядро ​​0 остается включенным, как и ожидалось. затем lscpu а также atop подтвердите, что только процессор 0 остается в сети, и, как еще один индикатор, температура процессора падает с 90°C до 60°C.

Когда питание энергосистемы возвращается, выполняется обратная команда:

for c in /sys/devices/system/cpu/cpu*/online; do
    echo 1 >$c
done

но ядра не приходят в онлайн. С этой точки зрения, cat /sys/devices/system/cpu/cpu*/online печать 1 за каждый процессор от 0 до 7, и lscpu сообщает, что все процессоры вернулись в оперативный режим, но все мои потоки, по-видимому, продолжают работать исключительно на ядре 0, atop все еще перечисляется только одно ядро, и нагрузка на систему остается ограниченной примерно на 100%, а не на 800%, как обычно. Кроме того, температура процессора остается постоянной на уровне 60°C.

Аномально, пока top перечисляет загрузку процессора для каждого процесса в процентах, эти отдельные проценты в сумме составляют около 100%, а среднее значение загрузки за 60 секунд, сообщаемое top устойчивый 8.


Атрибуты:

  • Linux 4.1.1
  • Debian 8
  • LXC в активном использовании
  • Модуль KVM загружен, не используется активно
  • Процессор постоянно загружен более чем 8 работающими потоками

Обновить:

Я обновил ядро ​​с 4.1.1 до 4.5.4. После тестирования тот же дефект все еще присутствует.

1 ответ

Решение

Это связано с известной ошибкой в ​​LXC, касающейся cpuset контрольная группа. Некоторые обходные пути описаны здесь: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=824519.

Другие вопросы по тегам