Linux: encerramento do núcleo da CPU em vez de estado de suspensão

10

No Linux, você pode desligar os núcleos da CPU (ou CPU's físicas) com o eco 0 > / sys / devices / system / cpu / cpu1 / online Supondo que o hardware desligue totalmente a CPU e corte a energia para ela, não seria melhor desabilitar totalmente os núcleos, em vez de depender dos vários estados de suspensão de um processador?

Para ilustrar o princípio, eu estava pensando em algo nesse sentido (pseudocódigo) para um sistema com quatro CPUs:

if(loadavg > 3.00) echo 1 > /sys/devices/system/cpu/cpu3/online
if(loadavg < 3.00) echo 0 > /sys/devices/system/cpu/cpu3/online

if(loadavg > 2.00) echo 1 > /sys/devices/system/cpu/cpu2/online
if(loadavg < 2.00) echo 0 > /sys/devices/system/cpu/cpu2/online

if(loadavg > 1.00) echo 1 > /sys/devices/system/cpu/cpu1/online
if(loadavg < 1.00) echo 0 > /sys/devices/system/cpu/cpu1/online
    
por Waxhead 11.12.2011 / 23:13

1 resposta

6

Definir o status on-line do núcleo da CPU apenas informa ao agendador do processo para não use esse núcleo para qualquer processo. Em um nível de hardware, o núcleo está simplesmente ocioso (fazendo NOP s), mas ainda alimentado. Embora isso economize energia, ela não economizará quase tanta energia quanto colocar o computador no modo de suspensão. Por quê?

Bem, sua placa-mãe, CPU e GPU estão ainda em execução ! Quando você coloca o computador para dormir, todos esses componentes são literalmente sem energia, e apenas energia suficiente para manter sua RAM viva é usada (na ordem de dois watts).

Mais uma vez, embora eu concorde que economizará energia, até desligar metade dos núcleos da CPU pode reduzir pela metade o consumo de energia do processador (embora, na verdade, você só consiga economizar 30-40%, já que esses núcleos ainda precisam ficar inativos ), mas isso está longe de ser o único componente no sistema que usa energia. Mesmo se você economizar 50W ao fazer isso, todo o seu computador ainda estará consumindo muito mais energia do que apenas watts no modo de suspensão.

Considerações finais: Embora eu concorde que essa é uma ótima idéia na prática, também é por isso que muitos fabricantes de CPU incluem o escalonamento de frequência dinâmica ("Speed Step" da Intel), com suporte para Linux. Você pode produzir melhor desempenho geral, bem como eficiência de energia, definindo essas freqüências de forma mais adequada às suas necessidades. Isso pode ser feito tanto em hardware (configurações da BIOS), quanto em software (o kernel do Linux permite que você modifique alguns parâmetros da CPU, veja o link que eu postei acima ou este site para detalhes).

Isso funciona, porque o seguinte é a equação genérica para o consumo de energia de um circuito CMOS:

P = CV 2 f, onde C = capacitância (assume fixo), V = tensão ef = frequência.

Assim, dividir a frequência por 2 será metade do consumo de energia original. Dividir a tensão por 2 reduzirá o consumo de energia para 1/4 do original.

    
por 12.12.2011 / 13:46