3

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

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

Ядра с 1 по 7 успешно отключены, а ядро 0 остается включенным, как и ожидалось. Затем lscpu и atop подтверждают, что только CPU 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 ответ1

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .