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