web-dev-qa-db-fra.com

Comment rendre les modifications de Powertop permanentes?

Je suis sur un Compaq 615 et son ventilateur est fort. Vous ne pouvez pas faire grand chose à ce sujet, mais j'essaie de garder le processeur/GPU aussi cool que possible. Voici ce que Powertop a à dire:

PowerTOP 1.97 - Overview - Idle stats - Frequency stats - Device stats - Tunables

Si je les change tous en "bien", les modifications ne survivront pas au redémarrage.

J'ai ajouté la ligne au fichier "grub" comme suggéré ici

Comment rendre permanent le "Tunables" suggéré par Powertop?

74
H3R3T1K

Si vous les modifiez tous de toute façon, vous pouvez simplement utiliser la commande

Sudo powertop --auto-tune

Appelez automatiquement powertop au démarrage

1.

Sur les systèmes utilisant systemd en tant que gestionnaire de démarrage (comme Ubuntu), installez-le en tant que service:

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.

Sur les systèmes n'utilisant pas systemd, ou si vous souhaitez utiliser l'ancien style avec le fichier /etc/rc.local, ajoutez cette ligne à la fin de /etc/rc.local:

powertop --auto-tune
exit 0

Remarque: si le script contient déjà exit 0, assurez-vous de placer toutes les commandes avant cette ligne, car le script quitte le script.

Si vous souhaitez régler tous les éléments sur une seule ligne, vous pouvez d’abord régler automatiquement l’appareil, puis en désactiver un avec une ligne supplémentaire. Par exemple, si vous souhaitez réactiver le périphérique à écran tactile (à l’usb 2 à 7), ajoutez ceci avant le exit 0:

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

Remarque: sous Linux avec systemd, assurez-vous que /etc/rc.local est exécuté au démarrage par le service de compatibilité.

systemctl status rc-local.service
64
rubo77

Voici comment vous pouvez rendre les modifications permanentes:

Sudo powertop --html

Cela générera un fichier powertop-xxxxxxxxxx-xxxxxx.html.

Maintenant, ouvrez-le dans le navigateur et copiez les commandes echo de "... ayant besoin de réglage" dans /etc/rc.local.

Ou extrayez les commandes en utilisant quelque chose comme ceci:

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

Si rc.local contient exit 0, vous devez vous assurer de placer les commandes avant cette ligne.

24
pumpupthevolume

Vous devez le télécharger et le compiler car personne n’a la dernière version.

Télécharger powertop https://01.org/powertop/downloads/2013/powertop-v2.

powertop-2.3.tar.gz <<<Cliquez et téléchargez-moi

Avant de compiler, vous devez installer des dépendances

Installation de dépendances (il suffit de copier-coller les commandes suivantes)

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

Installation de Powertop

Pour construire et installer PowerTOP, tapez les commandes suivantes,

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

Vous pouvez également utiliser - j2 pour le nombre de cœurs que vous souhaitez utiliser ./ make . Remplacez - j2 par le nombre de cœurs de processeur que vous souhaitez utiliser pour le processus de compilation. par exemple, j'ai utilisé ./ make -j8

Powertop est installé, vous pouvez débrancher le courant alternatif et courir

Sudo powertop

Cependant, la plupart des paramètres ne sont pas enregistrés et ils sont perdus après un redémarrage. Vous pouvez toutefois les rendre permanents en utilisant les commandes fournies dans le rapport HTML PowerTOP. Pour générer un rapport HTML, exécutez la commande suivante: webupd8.org

Sudo powertop --html=powertop.html

Implémentation de la suggestion Powertop sur batterie et retour pour optimiser les performances sur alimentation ca

Pour cela, vous devez créer un script qui exécute la suggestion powertop sur batterie et optimise les performances en courant alternatif.

Placez-le dans /etc/pm/power.d/ et donnez les droits d'exécution

Sudo gedit /etc/pm/power.d/power

Copier coller ce qui suit dans le fichier 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

Vous devez maintenant attribuer le droit d’exécution du script power

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

Maintenant, lorsque vous débrancherez , la suggestion de Powertop prendra le relais et maximisera la durée de vie de la batterie. Vous serez branché sur le secteur vous aurez Max Performance.

Liens utiles

http://ubuntuforums.org/showthread.php?t=1855126&page=http://www.webupd8.org/2012/08/install-powertop-21-in- ubuntu-1204.html

Pour l'option -j http://dnscrypt.org/

15
Qasim

Ce n'est pas la réponse que vous demandez, mais vous pouvez essayer de l'exécuter avec laptop-mode. Pour faire ça:

ouvrez un terminal et tapez:

gksu gedit /etc/default/acpi-support

entrez le mot de passe puis allez au bas de la page et dans la section où il est écrit en mode portable écrivez vrai au lieu de faux, fermez le document et sauvegardez bien sûr

Puis entrez:

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

ce fichier est un peu plus long, mais voici comment j'ai édité le mien. J'ai ajouté # avant la ligne par défaut sur celles que j'ai modifiées, comme ceci:

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

la valeur par défaut était 0 et je l'ai mis à 1, ne modifiez que les lignes que j'ai modifiées. Il y a quelques options ici que vous voudrez examiner et basculer à votre guise. Lorsque vous êtes proche et économisez.

Après cela, vous voudrez taper:

gksu gedit

maintenant, dans l'éditeur de texte, cliquez sur Ouvrir et allez dans le dossier /etc/laptop-mode/conf.d/. Il existe divers fichiers. Vous êtes probablement intéressé par USB autosuspend, hda audio, iwl intel wireless, intel sata et sched mc powersaving. Ouvrez ces fichiers un par un et lisez-les, ils sont écrits dans un anglais standard parfait et expliquent très bien tout. Vous saurez quoi faire, rappelez-vous que 0 correspond à off et 1 à la plupart du temps.

Lorsque vous avez terminé, fermez et enregistrez chaque fichier.

Maintenant, redémarrez et admirez le mode portable en action, puis:

Sudo powertop

et examinez la consommation d'énergie, si vous avez tout fait correctement, powertop n'aura aucune suggestion supplémentaire à faire, car vous avez peaufiné tout ce qu'il y a à modifier (plus ou moins).

Source: http://ubuntuforums.org/showthread.php?t=1157408&p=7271995#post7271995 (by Axx8 )

9
rlemon

Utilisez les règles udev pour des économies d’énergie permanentes, configurez les paramètres directement au niveau de la source, au lieu de créer des scripts ou de vous fier aux éventuels packages non installés. Ainsi, dès que le matériel est ajouté par udevname__, vos paramètres sont appliqués.

Une règle udevcorrecte rend les paramètres non applicables en l'absence de matériel, ce qui rend la configuration plus portable. Et vous en apprendrez plus sur le fonctionnement interne de votre noyau Linux :-). La configuration faite de cette façon, s’applique également lorsqu’elle ne fonctionne pas sur batterie.

Un exemple pour accordable Enable SATA link power Managmenet for Host0. La suggestion est de:

# echo 'min_power' > '/sys/class/scsi_Host/host0/link_power_management_policy'`

Cela vous donne déjà une idée de l'emplacement du matériel: dans/sys/class/scsi_Host. Vous pouvez le vérifier avec:

# 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"

Mieux vaut ne pas toucher les règles système udev dans /lib/udev/rules.d/ et créer votre propre fichier de règles udev à peu près au niveau 60 dans /etc/udev/rules.d/. Par exemple avec l'éditeur nano:

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

Quelques autres exemples écrivent des règles comme:

KERNEL=="Host[0-5]", SUBSYSTEM=="scsi_Host", ATTR{link_power_management_policy}="min_power"

Je dirais non, et améliorez encore votre règle en l'appliquant uniquement lorsque la stratégie de gestion de l'énergie des liens est définie sur max_performance. Regardez la petite différence (cherchez le signe de double équation):

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

Testez votre règle avec 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

Je ne trouve pas de moyen d'appliquer la règle. Dans ce cas, j'ai redémarré pour appliquer la règle udev nouvellement créée.

5
Pro Backup

systemd facilite les choses:

# /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

Enregistrez le fichier d'unité, kill -HUP 1, systemctl enable --now powertop-autotune.service, c'est terminé!


P.S. Si vous avez besoin d'une exception à ce que fait --auto-tune, ajoutez simplement plus de lignes ExecStart pour définir vos propres paramètres.

#...
ExecStart=/usr/bin/powertop --auto-tune
ExecStart=/bin/sh -c "echo on > /sys/bus/usb/devices/2-7/power/control"

#...
3
ulidtko

Ce lien parle de la même chose parle de la même chose:

https://bbs.archlinux.org/viewtopic.php?pid=860406

Je suis intéressé par la solution par moi-même et j'essaierai plus tard. Dis-moi si tu peux réussir à mettre en œuvre cette solution.

Je ne pouvais pas le faire fonctionner car le système me disait toujours la permission refusée d'exécuter le fichier exécutable.

Cependant, cela semble fonctionner:

http://philatwarrimoo.blogspot.com/2011/06/powertop-howto-enable-device-power.html

J'ai utilisé la commande courte et l'exécutez avec Sudo.

En tant que solution semi-automatique, j'ai créé un lanceur:

enter image description here

le script est comme suit:

enter image description here

Y a-t-il un moyen d'éviter de demander mon mot de passe?

2
dago

J'ai résolu ce problème en créant un script de tiret /root/power_save.sh:

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

Définissez-le comme exécutable:

Sudo chmod u+x /root/power_save.sh

Et ajoutez-le à la racine crontab avec Sudo crontab -e:

@reboot /root/power_save.sh
2
Seppo Erviälä

Selon la réponse de rubo77, j'utilise powertop --auto-tune dans /etc/rc.local, puis j'annule une modification par défaut non souhaitée.

Toutefois, étant donné que le périphérique pour lequel je souhaite désactiver le contrôle automatique de l'alimentation est un périphérique USB externe pouvant potentiellement apparaître avec un numéro de périphérique /sys différent, j'ai créé un peu plus de script pour l'identifier de manière dynamique:

/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

VENDOR et PRODUCT sont définis sur les identifiants de fournisseur et de produit USB en minuscule.

Ceux-ci sont disponibles chez

  • identifier le périphérique dans la sortie lsusb (les ID y apparaissent sous la forme aaaa:bbbb), ou

  • observez la commande exécutée par powertop lorsque vous modifiez le paramètre d'alimentation, accédez au répertoire actuel /sys/bus/usb/devices/* du périphérique et récupérez les valeurs des fichiers idProduct et idVendor actuels.

0
rakslice