web-dev-qa-db-ja.com

Powertopの変更を永続的にするにはどうすればよいですか?

Compaq 615を使用していますが、ファンの音が大きいです。それについてできることはあまりありませんが、CPU/GPUを可能な限りクールに保つようにしています。これは、Powertopが言わなければならないことです。

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

それらをすべて「良好」に変更すると、変更は再起動後も存続しません。

「grub」ファイルに ここで推奨 として行を追加しました

Powertopが提案する「調整可能パラメータ」を永続的にするにはどうすればよいですか?

74
H3R3T1K

とにかくそれらをすべて良いものに変更した場合、単にコマンドを使用することができます

Sudo powertop --auto-tune

起動時にpowertop自動調整を自動的に呼び出す

1。

スタートアップマネージャーとしてsystemd(Ubuntuなど)を使用するシステムでは、サービスとしてインストールします。

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。

systemdを使用していないシステム、または/etc/rc.localファイルで古いスタイルを使用する場合は、/etc/rc.localの最後に次の行を追加します。

powertop --auto-tune
exit 0

注:スクリプトに既にexit 0が含まれている場合、必ずその行の前にすべてのコマンドを配置し、スクリプトを終了させて​​ください

すべてを1行に設定する場合は、最初に自動調整してから、追加の行で1つの設定を無効にすることができます。たとえば、タッチスクリーンデバイスを再度有効にする場合(USB 2〜7)、 exit 0の前のこれ:

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

注:systemdを使用するLinuxでは、互換性サービスによって起動時に/etc/rc.localが実行されることを確認してください

systemctl status rc-local.service
64
rubo77

変更を永続的にする方法は次のとおりです。

Sudo powertop --html

これにより、powertop-xxxxxxxxxx-xxxxxx.htmlファイルが生成されます。

それをブラウザで開き、echoコマンドを「... in need of Tuning」から/etc/rc.localにコピーします。

または、次のようなものを使用してコマンドを抽出します。

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

rc.localexit 0が含まれる場合、この行の前にコマンドを配置する必要があります。

24
pumpupthevolume

誰も最新バージョンを持っていないので、ダウンロードしてコンパイルする必要があります

ダウンロードpowertop https://01.org/powertop/downloads/2013/powertop-v2.

powertop-2.3.tar.gz <<<Click&Download Me

コンパイルする前に、依存関係をインストールする必要があります

依存関係のインストール(次のコマンドをコピーして貼り付けてください)

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

Powertopのインストール

PowerTOPをビルドしてインストールするには、次のコマンドを入力します。

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

./ makeで使用するコアの数に-j2を使用することもできます。Replace-j2コンパイルプロセスに使用するCPUコアの数を指定します。たとえば、私はを使用しました。/make-j8

Powertopがインストールされているので、AC電源を抜いて実行できます

Sudo powertop

ただし、ほとんどの設定は保存されず、再起動後に失われます。ただし、PowerTOP htmlレポートで提供されるコマンドを使用して、それらを永続的にすることができます。 HTMLレポートを生成するには、次のコマンドを実行します。 webupd8.org

Sudo powertop --html=powertop.html

バッテリーのPowertop提案を実装し、AC電源のパフォーマンスを最大化するために戻る

そのためには、バッテリーでpowertopの提案を実行し、AC電源でパフォーマンスを最大化するスクリプトを作成する必要があります

/etc/pm/power.d/に配置し、実行権限を付与します

Sudo gedit /etc/pm/power.d/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

次に、powerスクリプトの実行許可を割り当てる必要があります

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

これで、Unpluggedのとき、Powertopの提案が引き継がれ、バッテリー寿命が最大になり、Plugged inAC powerMax Performanceになります。

役立つリンク

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

-jオプションの場合 http://dnscrypt.org/

15
Qasim

求めている答えではありませんが、laptop-modeで実行してみてください。これをする:

ターミナルを開き、次を入力します。

gksu gedit /etc/default/acpi-support

パスワードを入力して、一番下に移動し、ラップトップモードについて説明しているセクションで、falseではなくtrueを書き込み、ドキュメントを閉じて、もちろん保存します

次に入力してください:

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

このファイルはもう少し長くなりますが、ここに私の編集方法を示します。次のように、変更した行のデフォルト行の前に#を追加しました。

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

デフォルトは0でしたが、1に変更し、変更した行のみを変更しました。ここにはいくつかのオプションがあり、必要に応じて確認して切り替えます。閉じて保存したら。

これが完了したら、次のように入力します。

gksu gedit

現在、テキストエディターで[開く]をクリックして/etc/laptop-mode/conf.d/フォルダーに移動します。さまざまなファイルがあります。USB自動サスペンド、hdaオーディオ、iwl intelワイヤレス、intel sataおよびsched mc省電力に興味があります。これらのファイルを1つずつ開いて読んでください。完全な標準英語で書かれており、すべてを非常によく説明しています。ほとんどの場合、0はオフを表し、1はオンを表すことに注意してください。

終了したら、各ファイルを保存します。

次に、再起動して、動作中のラップトップモードを鑑賞します。

Sudo powertop

消費電力を調べます。すべてを正しく行った場合、Tweakのすべてを微調整した(多かれ少なかれ)ため、powertopは追加の提案を行いません。

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

9
rlemon

永続的な省電力のためにudevルールを使用して、スクリプトを作成したり、インストールされていない可能性のあるパッケージに依存する代わりに、ソースで設定を直接構成します。したがって、udevによってハードウェアが追加されるとすぐに、設定が適用されます。

正しいudevルールにより、ハードウェアが存在しない場合に設定が適用されないため、構成の移植性が高まります。そして、あなたはあなたのLinuxカーネルの内部の仕組みについてもっと学びます:-)。この方法で行われた構成は、バッテリーで実行されていない場合にも適用されます。

調整可能なEnable SATA link power Managmenet for Host0の例。提案は次のとおりです。

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

これにより、/ sys/class/scsi_Host内のハードウェアの場所がすでにわかります。これを確認するには:

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

/lib/udev/rules.d/にあるシステムudevルールに触れず、/ etc/udev/rules.d /にレベル60の独自のudevルールファイルを作成する方が良いでしょう。たとえば、nanoエディターの場合:

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

他のいくつかの例では、次のようなルールを記述します。

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

しないと言って、リンク電力管理ポリシーがmax_performanceに設定されている場合にのみ適用することで、ルールをさらに改善します。小さな違いを見てください(二重方程式記号を探してください):

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

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

ルールを適用する方法が見つからないため、この場合は、新しく作成されたudevルールを適用するために再起動しました。

5
Pro Backup

systemdで簡単になります:

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

ユニットファイルkill -HUP 1systemctl enable --now powertop-autotune.serviceを保存しました!


P.S。--auto-tuneの動作に例外が必要な場合は、ExecStart行を追加して独自の設定を設定します。

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

#...
3
ulidtko

このリンクは同じことについて話しているが、同じ問題について話している:

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

私は自分で解決策に興味があり、後で試してみます。このソリューションを実装できるかどうか教えてください。

システムが常に実行可能ファイルを実行する許可を拒否するように私に言ったので、それを実行させることができませんでした。

しかし、これはうまくいくようです:

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

短いコマンドを使用して、Sudoで実行しました。

半自動ソリューションとして、ランチャーを作成しました:

enter image description here

スクリプトは次のとおりです。

enter image description here

パスワードの入力を防ぐ方法はありますか?

2
dago

ダッシュスクリプト/root/power_save.shを作成して、これを解決しました。

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

実行可能ファイルとして設定します。

Sudo chmod u+x /root/power_save.sh

そして、Sudo crontab -eでルートcrontabに追加します:

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

Rubo77の答えによれば、powertop --auto-tune/etc/rc.localを実行してから、不要なデフォルトの変更を取り消しています。

ただし、自動電源制御を無効にするデバイスは、異なる/sysツリーデバイス番号で表示される可能性のある外部USBデバイスなので、動的に識別するためにもう少しスクリプトを作成しました。

/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およびPRODUCTは、USBベンダーおよび製品IDに小文字の16進数で設定されます。

これらは

  • lsusb出力でデバイスを識別する(IDはaaaa:bbbbの形式で表示されます)、または

  • 電源設定を切り替えるときにpowertopが実行するコマンドを観察し、デバイスの現在の/sys/bus/usb/devices/*ディレクトリに移動し、現在のidProductおよびidVendorファイルから値を取得します。

0
rakslice