如何使 Powertop 更改永久化?

H3R*_*T1K 85 powertop

我在 Compaq 615 上,它的风扇声音很大。您对此无能为力,但我正在努力使 CPU/GPU 尽可能保持凉爽。Powertop 是这么说的:

PowerTOP 1.97 - 概述 - 空闲状态 - 频率状态 - 设备状态 - 可调参数

如果我将它们全部更改为“良好”,则这些更改将无法重新启动。

我按照此处的建议将该行添加到“grub”文件中

如何使 Powertop 建议的“可调参数”永久生效?

rub*_*o77 74

如果您无论如何都将它们全部更改为良好,则可以简单地使用命令

sudo powertop --auto-tune
Run Code Online (Sandbox Code Playgroud)

开机时自动调用powertop auto-tune

1.

systemd用作启动管理器的系统(如 Ubuntu)上将其安装为服务:

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

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

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable powertop.service
Run Code Online (Sandbox Code Playgroud)

2.

在不使用 的系统上systemd,或者如果您想对/etc/rc.local文件使用旧样式,请在末尾添加以下行/etc/rc.local

powertop --auto-tune
exit 0
Run Code Online (Sandbox Code Playgroud)

注意:如果脚本已经包含,请exit 0确保将所有命令放在该行之前,导致退出脚本

如果您想将所有设置都设置为良好但只有一行,您可以首先自动调整,然后使用额外的行禁用一项设置,例如,如果您想重新启用触摸屏设备(在 USB 2-7),请添加这之前exit 0

powertop --auto-tune
echo 'on' > '/sys/bus/usb/devices/2-7/power/control'
exit 0
Run Code Online (Sandbox Code Playgroud)

注意:在带有 的 Linux 上systemd,确保兼容性服务在启动时执行 /etc/rc.local

systemctl status rc-local.service
Run Code Online (Sandbox Code Playgroud)


小智 24

以下是使更改永久化的方法:

sudo powertop --html
Run Code Online (Sandbox Code Playgroud)

这将生成一个powertop-xxxxxxxxxx-xxxxxx.html文件。

现在要么在浏览器中打开它,然后将echo命令从“... in need of Tuning”复制到/etc/rc.local.

或者使用以下内容提取命令:

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

如果rc.local包含exit 0您需要确保将命令放在此行之前。

  • Eliah,我正在运行我编译的 Powertop 2.0。我已经运行了 --html 命令,但无法找到它存放文件的位置,或者即使它正在写入文件。另外,当 Powertop 启动时,我收到此消息: Cannot load from file /var/cache/powertop/saved_pa​​rameters.powertop (2认同)
  • 你不能只是 grep 'echo' 因为一些建议开始 'iw dev ...' (2认同)

Qas*_*sim 15

您需要下载并编译它,因为没有人有最新版本

下载 powertop https://01.org/powertop/downloads/2013/powertop-v2.3

powertop-2.3.tar.gz < < < 点击下载我

编译前需要安装依赖

安装依赖项(只需复制粘贴以下命令)

sudo apt-get install libtool autoconf libnl-dev ncurses-dev pciutils-dev build-essential -y
Run Code Online (Sandbox Code Playgroud)

安装 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
Run Code Online (Sandbox Code Playgroud)

您还可以使用-j2你有多少个核要使用./make .Replace -j2您要使用的编译过程无论CPU核心数量。例如我使用了./make -j8

Powertop已安装,您可以拔掉交流电源并可以运行

sudo powertop
Run Code Online (Sandbox Code Playgroud)

但是,大多数设置不会保存,并且在重新启动后会丢失。但是,您可以使用 PowerTOP html 报告中提供的命令使它们永久化。要生成 HTML 报告,请运行以下命令:webupd8.org

sudo powertop --html=powertop.html
Run Code Online (Sandbox Code Playgroud)

对电池实施 Powertop 建议并返回以最大限度地提高交流电源的性能

为此,您需要制作一个脚本,在电池上运行 powertop 建议并最大限度地提高交流电源的性能

把它放在/etc/pm/power.d/并赋予执行权限

sudo gedit /etc/pm/power.d/power
Run Code Online (Sandbox Code Playgroud)

将以下内容复制粘贴到电源文件中

 #!/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
Run Code Online (Sandbox Code Playgroud)

现在您需要分配电源脚本的执行权限

 sudo chmod +x /etc/pm/power.d/power
Run Code Online (Sandbox Code Playgroud)

现在,当您拔下电源时,Powertop 建议将接管并最大限度地延长电池寿命,而您插入交流电源时,您将拥有最大性能。

有用的链接

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

对于 -j 选项http://dnscrypt.org/

  • 相反,我建议您使用“checkinstall”。它还可以让您创建一个 .deb 软件包,您可以稍后卸载/升级您可以使用 `sudo apt-get install` 安装它 (2认同)

rle*_*mon 9

这不是您要的答案,但您可以尝试运行laptop-mode. 去做这个:

打开终端并输入:

gksu gedit /etc/default/acpi-support
Run Code Online (Sandbox Code Playgroud)

输入密码,然后转到底部,在它谈论笔记本电脑模式的部分写真而不是假,当然关闭文档并保存

然后输入:

gksu gedit /etc/laptop-mode/laptop-mode.conf
Run Code Online (Sandbox Code Playgroud)

这个文件有点长,但这是我编辑我的。我在我修改的那些行的默认行之前添加了 # ,如下所示:

#
# Should laptop mode tools add the "noatime" option to the mount options when 
# laptop mode is enabled?
#
#CONTROL_NOATIME=0
CONTROL_NOATIME=1
Run Code Online (Sandbox Code Playgroud)

默认是 0,我把它变成 1,只修改我修改的行。此处有几个选项,您需要查看并根据需要进行切换。当你关闭并保存时。

完成此操作后,您需要键入:

gksu gedit
Run Code Online (Sandbox Code Playgroud)

现在在文本编辑器中单击打开并进入 /etc/laptop-mode/conf.d/ 文件夹,有各种文件,您可能对 usb autosuspend、hda audio、iwl intel wireless、intel sata 和 sched mc power Saving 感兴趣。一个一个打开这些文件并阅读它们,它们是用完美的标准英语编写的,并且很好地解释了所有内容。您会知道该怎么做,请记住,大多数情况下 0 代表关闭,1 代表开启。

完成后关闭并保存每个文件。

现在重新启动并欣赏笔记本电脑模式的运行,然后:

sudo powertop
Run Code Online (Sandbox Code Playgroud)

并检查功耗,如果您已正确完成所有操作,powertop 将不会提出任何额外建议,因为您已经调整了所有要调整的内容(或多或少)。

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

  • 在 acpi-support 文件中,它说明了膝上型模式:“# 注意:要启用“膝上型模式”(使硬盘驱动器旋转更长的时间),安装膝上型模式工具包并配置 # 它在 /etc/laptop-mode/laptop-mode.conf 中。” 我安装了软件包并打开了文件。我假设我现在处于笔记本电脑模式?它说“笔记本电脑模式工具”已启用。我还做了您建议的其他更改(noatime)。 (2认同)

Pro*_*kup 8

Udev 规则

为了永久节能,直接在源配置设置,而不是创建脚本或依赖可能未安装的包。因此,只要您的设置添加硬件,就会应用udev

一个正确的 udev规则使设置在硬件不存在时不适用,从而使配置更具可移植性。并且您将了解有关 Linux 内核内部工作原理的更多信息:-)。以这种方式进行的配置,在不使用电池运行时也适用。

可调参数的示例Enable SATA link power Managmenet for host0。建议是:

# echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy'`
Run Code Online (Sandbox Code Playgroud)

这已经让您知道硬件在哪里:在 /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"
Run Code Online (Sandbox Code Playgroud)

最好不要触及 /lib/udev/rules.d/ 中的系统 udev 规则,并在 /etc/udev/rules.d/ 中大致在级别 60 处创建自己的 udev 规则文件。例如使用 nano 编辑器:

$ nano /etc/udev/rules.d/60-power.rules
Run Code Online (Sandbox Code Playgroud)

其他一些示例编写规则,例如:

KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}="min_power"
Run Code Online (Sandbox Code Playgroud)

我会说不要通过仅在链接电源管理策略设置为 max_performance 时应用它来使您的规则更好。看看细微的差别(寻找双等式符号):

KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}=="max_performance", ATTR{link_power_management_policy}="min_power"
Run Code Online (Sandbox Code Playgroud)

测试你的规则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
Run Code Online (Sandbox Code Playgroud)

我找不到应用规则的方法,因此在这种情况下,我重新启动以应用新创建的 udev 规则。


uli*_*tko 6

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
Run Code Online (Sandbox Code Playgroud)

保存单元文件kill -HUP 1systemctl enable --now powertop-autotune.service,完成了!


PS如果您需要任何例外--auto-tune,只需添加更多ExecStart行来设置您自己的设置。

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

#...
Run Code Online (Sandbox Code Playgroud)