Como faço para que o Powertop seja permanente?

60

Estou em um Compaq 615 e o ventilador está alto. Não há muito o que você possa fazer sobre isso, mas estou tentando manter a CPU / GPU o mais legal possível. É isso que Powertop tem a dizer:

Se eu alterar todos eles para "bom", as alterações não sobreviverão a uma reinicialização.

Eu adicionei a linha ao arquivo "grub" como sugerido aqui

Como faço para que o Powertop sugira "Tunables" permanentes?

    
por H3R3T1K 13.03.2012 / 21:12

10 respostas

46

Se você mudar todos eles para o bem de qualquer maneira, você pode simplesmente usar o comando

sudo powertop --auto-tune

Chamar a sintonização automática powertop automaticamente no momento da inicialização

1.

Em sistemas que usam systemd como gerenciador de inicialização (como o Ubuntu), instale-o como um serviço:

cat << EOF | sudo tee /etc/systemd/system/powertop.service
[Unit]
Description=PowerTOP auto tune

[Service]
Type=idle
Environment="TERM=dumb"
ExecStart=/usr/sbin/powertop --auto-tune

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable powertop.service

2.

Em sistemas que não usam systemd , ou se você quiser usar o estilo antigo com /etc/rc.local file, adicione esta linha no final a /etc/rc.local :

powertop --auto-tune
exit 0

Nota: se o script já contiver exit 0 , certifique-se de colocar todos os comandos antes dessa linha, porque isso sai do script

Se você quiser definir todas como boa, mas uma linha, primeiro poderá sintonizar automaticamente e, em seguida, desativar uma configuração com uma linha extra, por exemplo, se quiser reativar o dispositivo touchscreen (em usb 2-7 ), adicione isto antes do exit 0 :

powertop --auto-tune
echo 'on' > '/sys/bus/usb/devices/2-7/power/control'
exit 0

Nota: no Linux com systemd , certifique-se de que /etc/rc.local seja executado na inicialização pelo serviço de compatibilidade

systemctl status rc-local.service
    
por rubo77 01.07.2014 / 16:36
24

Veja como você pode tornar as alterações permanentes:

sudo powertop --html

Isso gerará um arquivo powertop-xxxxxxxxxx-xxxxxx.html .

Agora, abra o navegador e copie os comandos echo de "... que precisam de ajuste" para /etc/rc.local .

Ou extraia os comandos usando algo assim:

echo "grep 'echo ' powertop-20120805-125538.html | sed 's/.*\(echo.*\);.*//g'"

Se rc.local contiver exit 0 , certifique-se de colocar os comandos antes desta linha.

    
por pumpupthevolume 05.08.2012 / 13:14
13

Você precisa fazer o download e compilá-lo porque ninguém tem a versão mais recente

Faça o download de powertop link

powertop-2.3.tar.gz & lt; & lt; & lt; Clique em & amp; Baixe-me

Antes de compilar você precisa instalar dependências

Instalando Dependências (Basta copiar e colar os seguintes comandos)

sudo apt-get install libtool autoconf libnl-dev ncurses-dev pciutils-dev build-essential -y

Instalando o Powertop

Para criar e instalar o PowerTOP, digite os seguintes comandos,

cd Downloads/powertop*  # assuming that you have downloaded in Downloads folder in you home directory   
configure 
make        # use -j option if you want to see details below
make install

Você também pode usar -j2 para quantos núcleos você deseja usar em ./ make . Substituir -j2 com qualquer número de Núcleos da CPU que você deseja usar para o processo de compilação. por exemplo eu usei ./ make -j8

O Powertop está instalado, você pode desligar a energia AC e executar

sudo powertop

No entanto, a maioria das configurações não é salva e elas são perdidas após a reinicialização. Você pode, no entanto, torná-las permanentes, usando os comandos fornecidos no relatório HTML PowerTOP. Para gerar um relatório HTML, execute o seguinte comando: webupd8.org

sudo powertop --html=powertop.html

Implementando a Sugestão de Powertop na Bateria e Voltando para Maximizar o Desempenho na Energia AC

Para isso, você precisa criar um script que execute a sugestão de powertop na bateria e maximize o desempenho em energia CA

  

Coloque-o em /etc/pm/power.d/ e dê direitos de execução

sudo gedit /etc/pm/power.d/power

Copie e cole o seguinte no arquivo power

 #!/bin/sh

 # Shell script to reduce energy consumption when running battery. Place
 # it in /etc/pm/power.d/ and give execution rights.

 if on_ac_power; then

 # Start AC powered settings --------------------------------------------#


 # Disable laptop mode
 echo 0 > /proc/sys/vm/laptop_mode

 #NMI watchdog should be turned on
 for foo in /proc/sys/kernel/nmi_watchdog;
 do echo 1 > $foo;
 done

 # Set SATA channel: max performance
 for foo in /sys/class/scsi_host/host*/link_power_management_policy;
 do echo max_performance > $foo;
 done

 # CPU Governor: Performance
 for foo in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor;
 do echo performance > $foo;
 done 

 # Disable USB autosuspend
 for foo in /sys/bus/usb/devices/*/power/level;
 do echo on > $foo;
 done

 # Disable PCI autosuspend
 for foo in /sys/bus/pci/devices/*/power/control;
 do echo on > $foo;
 done

 # Disabile audio_card power saving
 echo 0 > /sys/module/snd_hda_intel/parameters/power_save_controller
 echo 0 > /sys/module/snd_hda_intel/parameters/power_save

 # End AC powered settings ----------------------------------------------#

 else

 # Start battery powered settings ---------------------------------------#

 # Enable Laptop-Mode disk writing
 echo 5 > /proc/sys/vm/laptop_mode

 #NMI watchdog should be turned on
 for foo in /proc/sys/kernel/nmi_watchdog;
 do echo 0 > $foo;
 done

 # Set SATA channel to power saving
 for foo in /sys/class/scsi_host/host*/link_power_management_policy;
 do echo min_power > $foo;
 done

 # Select Ondemand CPU Governor
 for foo in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor;
 do echo ondemand > $foo;
 done

 # Activate USB autosuspend
 for foo in /sys/bus/usb/devices/*/power/level;
 do echo auto > $foo;
 done

 # Activate PCI autosuspend
 for foo in /sys/bus/pci/devices/*/power/control;
 do echo auto > $foo;
 done

 # Activate audio card power saving
 # (sounds shorter than 5 seconds will not be played)
 echo 5 > /sys/module/snd_hda_intel/parameters/power_save
 echo 1 > /sys/module/snd_hda_intel/parameters/power_save_controller

 # End battery powered settings -----------------------------------------#

 fi

Agora, você precisa atribuir permissão de execução do script potência

 sudo chmod +x /etc/pm/power.d/power

Agora, quando você Desconectado , a sugestão da Powertop assumirá e maximizará a vida útil da bateria & amp; você conectou energia AC você terá o Max Performance.

Links úteis

link link

Para a opção -j link

    
por Qasim 22.03.2013 / 17:27
9

Não é a resposta que você está pedindo, mas você pode tentar executar em laptop-mode . Para fazer isso:

  

abra um terminal e digite:

gksu gedit /etc/default/acpi-support
     

digite a senha e, em seguida, vá para a parte inferior e na seção onde   fala sobre o modo de laptop escrever verdadeiro em vez de falso, fechar documento   e salve, claro,

     

Em seguida, digite:

gksu gedit /etc/laptop-mode/laptop-mode.conf
     

este arquivo é um pouco mais longo, mas aqui está como eu editei o meu. Eu adicionei #   antes da linha padrão na linha que eu modifiquei, assim:

#
# Should laptop mode tools add the "noatime" option to the mount options when 
# laptop mode is enabled?
#
#CONTROL_NOATIME=0
CONTROL_NOATIME=1
     

o padrão era 0 e eu mudei para 1, modifique somente as linhas que eu   modificado. Existem algumas opções aqui que você vai querer rever e   alterne como achar melhor. Quando você está perto e salva.

     

Depois disso, você vai querer digitar:

gksu gedit
     

agora no editor de texto, clique em abrir e entrar em /etc/laptop-mode/conf.d/   pasta, existem vários arquivos, você provavelmente está interessado em usb   autosuspend, hda áudio, iwl intel sem fio, intel sata e sched mc   economia de energia. Abra esses arquivos um por um e leia-os, eles são   escrito em um inglês padrão perfeito e explicar tudo muito   bem. Você vai saber o que fazer, lembre-se que 0 significa off e 1   na maior parte do tempo.

     

Quando terminar, salve cada arquivo.

     

Agora reinicie e admire o modo laptop em ação e, em seguida:

sudo powertop
     

e examine o consumo de energia, se você fez tudo corretamente   powertop não terá qualquer sugestão adicional para fazer porque você   tweaked tudo o que há para ajustar (mais ou menos).

Fonte: link (por Axx83 )

    
por rlemon 13.03.2012 / 21:21
5

Use as regras do udev para configurações permanentes de economia de energia diretamente na fonte, em vez de criar scripts ou confiar em possíveis pacotes não instalados. Assim, assim que o hardware for adicionado por udev , suas configurações serão aplicadas.

Uma regra correta de udev faz com que as configurações não se apliquem quando o hardware não está lá, tornando a configuração mais portátil. E você aprende mais sobre o funcionamento interno do seu kernel Linux :-). A configuração feita desta forma também se aplica quando não está funcionando com bateria.

Um exemplo de sintonizável Enable SATA link power Managmenet for host0 . A sugestão é:

# echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy''

Isso já dá uma idéia de onde o hardware é: em / sys / class / scsi_host. Você pode verificar isso com:

# udevadm info -a -p /sys/class/scsi_host/host?
…
  looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0':
    KERNEL=="host0"
    SUBSYSTEM=="scsi_host"
…
    ATTR{eh_deadline}=="0"
    ATTR{link_power_management_policy}=="max_performance"
    ATTR{host_busy}=="0"

Melhor não tocar nas regras do udev do sistema em /lib/udev/rules.d/ e criar seu próprio arquivo de regras do udev aproximadamente no nível 60 em /etc/udev/rules.d/. Por exemplo, com o editor nano:

$ nano /etc/udev/rules.d/60-power.rules

Alguns outros exemplos escrevem regras como:

KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}="min_power"

Eu diria que não e torne sua regra ainda melhor, aplicando-a somente quando a política de gerenciamento de energia do link estiver definida como max_performance. Dê uma olhada na pequena diferença (procure pelo sinal da dupla equação):

KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}=="max_performance", ATTR{link_power_management_policy}="min_power"

Teste sua regra com udevadm test /devices/… :

# udevadm test /devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/link_power_management_policy
calling: test
version 204
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

=== trie on-disk ===
tool version:          204
file size:         5660180 bytes
header size             80 bytes
strings            1265196 bytes
nodes              4394904 bytes
load module index
read rules file: /lib/udev/rules.d/40-crda.rules
read rules file: /lib/udev/rules.d/40-gnupg.rules
read rules file: /lib/udev/rules.d/40-hyperv-hotadd.rules
read rules file: /lib/udev/rules.d/42-usb-hid-pm.rules
read rules file: /lib/udev/rules.d/50-firmware.rules
read rules file: /lib/udev/rules.d/50-udev-default.rules
read rules file: /lib/udev/rules.d/55-dm.rules
read rules file: /lib/udev/rules.d/60-cdrom_id.rules
read rules file: /lib/udev/rules.d/60-keyboard.rules
read rules file: /lib/udev/rules.d/60-persistent-alsa.rules
read rules file: /lib/udev/rules.d/60-persistent-input.rules
read rules file: /lib/udev/rules.d/60-persistent-serial.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-dm.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
read rules file: /lib/udev/rules.d/60-persistent-storage.rules
read rules file: /lib/udev/rules.d/60-persistent-v4l.rules
read rules file: /etc/udev/rules.d/60-power.rules
read rules file: /lib/udev/rules.d/61-accelerometer.rules
read rules file: /lib/udev/rules.d/64-btrfs.rules
read rules file: /etc/udev/rules.d/70-persistent-net.rules
read rules file: /lib/udev/rules.d/70-power-switch.rules
read rules file: /lib/udev/rules.d/70-uaccess.rules
read rules file: /lib/udev/rules.d/71-biosdevname.rules
read rules file: /lib/udev/rules.d/71-seat.rules
read rules file: /lib/udev/rules.d/73-idrac.rules
read rules file: /lib/udev/rules.d/73-seat-late.rules
read rules file: /lib/udev/rules.d/75-net-description.rules
read rules file: /lib/udev/rules.d/75-persistent-net-generator.rules
read rules file: /lib/udev/rules.d/75-probe_mtd.rules
read rules file: /lib/udev/rules.d/75-tty-description.rules
read rules file: /lib/udev/rules.d/78-graphics-card.rules
read rules file: /lib/udev/rules.d/78-sound-card.rules
read rules file: /lib/udev/rules.d/80-drivers.rules
read rules file: /lib/udev/rules.d/85-hdparm.rules
read rules file: /lib/udev/rules.d/85-keyboard-configuration.rules
read rules file: /lib/udev/rules.d/85-regulatory.rules
read rules file: /lib/udev/rules.d/95-udev-late.rules
rules contain 24576 bytes tokens (2048 * 12 bytes), 11335 bytes strings
1814 strings (22027 bytes), 1179 de-duplicated (11328 bytes), 636 trie nodes used
ATTR '/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/link_power_management_policy' writing 'min_power' /etc/udev/rules.d/60-power.rules:1
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0
SUBSYSTEM=scsi_host
USEC_INITIALIZED=1203444595
unload module index

Não consigo encontrar uma maneira de aplicar a regra, portanto, neste caso, fiz uma reinicialização para aplicar a regra do udev recém-criada.

    
por Pro Backup 03.09.2014 / 18:57
2

Eu resolvi isso criando um script de traço /root/power_save.sh :

#!/bin/dash
find /sys/devices/pci* -path "*power/control" -exec bash -c "echo auto > '{}'" \;

Defina como executável:

sudo chmod u+x /root/power_save.sh

E adicione-o ao root crontab com sudo crontab -e :

@reboot /root/power_save.sh
    
por Seppo Erviälä 22.06.2011 / 22:21
2

Este link fala sobre o mesmo é falar sobre o mesmo problema:

link

Estou interessado na solução sozinho e tentarei mais tarde. Diga-me se você conseguir implementar essa solução.

Eu não consegui executá-lo porque o sistema sempre me disse permissão para executar o arquivo executável.

No entanto, isso parece funcionar:

link

Eu usei o comando curto e executei com o sudo.

Como uma solução semi-automática, criei um iniciador:

o script é o seguinte:

Existe uma maneira de evitar a solicitação da minha senha?

    
por dago 22.06.2011 / 19:58
0

Eu tenho tido um problema semelhante e depois de ler uma pergunta neste site descobri que o programa "powertop" é, aparentemente, mais adequado para desenvolvedores.

Como faço para instalar o powertop 1.13?

A versão, mais útil, para usuários é "powertop-1.13" encontrada nos repositórios. Ele mostra sugestões de economia de energia, bem como o comando usado para realizar a sugestão.

Este site Red Hat Docs tem mais instruções para tornando essas mudanças permanentes.

Especificamente:

  

Para ajudá-lo a tornar as alterações permanentes, o PowerTOP exibe as   comando é executado para executar essa otimização. Adicione o comando ao seu    /etc/rc.local arquivo com seu editor de texto preferido para que seja necessário   efeito toda vez que o computador for iniciado.

Boa sorte!

    
por Neil 04.05.2012 / 14:41
0

Por resposta do rubo77, estou executando powertap --auto-tune em /etc/rc.local e, em seguida, desfazendo uma alteração padrão indesejada.

No entanto, como o dispositivo para o qual desejo desabilitar o controle automático de energia é um dispositivo USB externo que poderia aparecer com um diferente número de dispositivo da árvore /sys , criei um pouco mais de script para identificá-lo dinamicamente:

/usr/local/sbin/powertop --auto-tune

export VENDOR=aaaa
export PRODUCT=bbbb

for d in /sys/bus/usb/devices/*; do
        if [ -f $d/idVendor ] && \
           [ "$(cat $d/idVendor)" == "${VENDOR}" ] && \
           [ -f $d/idProduct ] && \
           [ "$(cat $d/idProduct)" == "${PRODUCT}" ]; then
                echo 'on' > $d/power/control
        fi   
done

exit 0

em que VENDOR e PRODUCT estão definidos para o fornecedor do USB e os IDs do produto em hexágono em minúsculas.

Estes estão disponíveis por

  • identificando o dispositivo na saída lsusb (os IDs aparecem no formulário aaaa:bbbb ) ou

  • observando o comando que o powertop executa quando você alterna a configuração de energia, indo para o diretório /sys/bus/usb/devices/* atual do dispositivo e obtendo os valores dos arquivos idProduct e idVendor atuais.

por rakslice 04.04.2017 / 06:40
0

Ah, bem ... systemd torna isso muito fácil:

# /etc/systemd/system/powertop-autotune.service
[Unit]
Description=Auto-tune power savings (oneshot)

[Service]
Type=oneshot
ExecStart=/usr/bin/powertop --auto-tune
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

Salve o arquivo de unidade, kill -HUP 1 , systemctl enable powertop-autotune , pronto!

Arquivos de unidades

P.S. entendem continuação de linha ; ou seja, use barras invertidas para adicionar mais linhas:

#...
ExecStart=/usr/bin/powertop --auto-tune && \
          echo on > /sys/bus/usb/devices/2-7/power/control && \
          : ;
#...
    
por ulidtko 03.10.2017 / 13:47

Tags