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

634
davide

Когда мой ИБП запускает событие «от батареи», я хочу, чтобы все ядра отключались для экономии энергии. ПК имеет 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. После тестирования тот же дефект все еще присутствует.

3

1 ответ на вопрос

2
davide

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