Os núcleos da CPU permanecem offline após o hotplug

3

Quando meu no-break aciona um evento "on-battery", desejo que todos os núcleos desliguem para economizar energia. O PC tem 8 núcleos em dois chips, as baterias da UPS precisam de substituição a cada 3 meses devido aos altos picos de corrente. Para aliviar meu custo de propriedade, as seguintes instruções são executadas quando o no-break aciona esse evento:

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

Os núcleos 1 a 7 são definidos com êxito off-line, enquanto o núcleo 0 permanece ativo, conforme o esperado. Então, lscpu e atop confirmam que apenas a cpu 0 permanece on-line e, como um indicador adicional, as temperaturas da cpu caem de 90 ° C a 60 ° C.

Quando a energia da rede volta, o comando inverso é executado:

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

mas os núcleos não ficam online. Nesse ponto, cat /sys/devices/system/cpu/cpu*/online imprime 1 para cada cpu de 0 a 7 e lscpu informa que todos os cpus retornaram on-line, mas aparentemente todos os meus threads continuam a rodar exclusivamente no core 0, atop ainda lista apenas um núcleo, e a carga do sistema permanece limitada a cerca de 100%, em vez de 800%, como normalmente ocorre. Além disso, as temperaturas da CPU permanecem estáveis a 60 ° C.

Anormalmente, enquanto top lista o uso da CPU por processo como porcentagens, essas porcentagens individuais somam cerca de 100%, enquanto a média da carga de 60 segundos relatada por top é 8.

Atributos:

  • Linux 4.1.1
  • Debian 8
  • LXC em uso ativo
  • Módulo KVM carregado, não em uso ativo
  • CPU constantemente carregada com mais de 8 threads executáveis

Atualização:

Eu atualizei o kernel do 4.1.1 para o 4.5.4. Após o teste, o mesmo defeito ainda está presente.

    
por davide 14.05.2016 / 20:35

1 resposta

2

Isso se deve a um bug conhecido no LXC em relação ao cpuset cgroup. Algumas soluções alternativas são descritas aqui: link .

    
por 17.05.2016 / 18:18