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