Answers:
我认为您可以在不重新编译内核的情况下更改默认值。我的意思是,内核在启动时选择一个。
但是,您可以告诉它在运行时使用其他调控器,因此,如果您想有效地设置默认值而无需重新编译,则可以向/etc/rc.local
或其他一些启动脚本中添加内容。
该/sys
目录不在磁盘上;它是一个在RAM中伪造的文件系统,实际上是一个用于从内核获取信息并将命令发送到内核的接口。这都是相对于的/sys/devices/system/cpu
,因此:
> cd /sys/devices/system/cpu
您还必须是root才能进行写(echo blahblah >
)。无论如何,相对于上述目录,查看可用的调控器:
> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance
显然你是ondemand
(但请阅读下面的“ Gotcha”);去检查:
> cat cpu0/cpufreq/scaling_governor
ondemand
要更改它:
echo performance > cpu0/cpufreq/scaling_governor
请注意,这必须是root或类似的操作
sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"
sudo
因为存在重定向,所以仅执行普通操作将无效>
。
现在/sys/devices/system/cpu/cpufreq
,您会注意到该目录(与/sys/devices/system/cpu/cpu0/cpufreq
!不同)以前为用于配置ondemand调控器的文件句柄,该目录为空。
在Raspbian上有一个名为init的初始化脚本raspi-config
(不,它与另一个脚本无关,该脚本由也令人困惑的首次启动运行apply_noobs_os_config.sh
),该脚本使用此技术将调控器设置为,ondemand
除非使用shift键被压下(Raspbian内核已powersave
编译进去)。它没有做任何其他事情,因此可以安全地禁用此(systemctl disable raspi-config
),也可以按照Gorkamorka的回答对其进行编辑,但是却冒着无法通过系统更新等对其进行编辑的风险。知道有人打算怎么做。
您可以尝试将上述非sudo版本添加到中/etc/rc.local
。raspi-config
脚本退出后可能会发生这种情况。
tee
:echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
。
cpufrequtils
和sysfsutils
。安装它们之后,你可以设置从州长和其他参数/etc/default/cpufrequtils
和/etc/sysfs.conf
-在这里看到:wiki.debian.org/HowTo/CpuFrequencyScaling
关于RPi堆栈交换的类似问题在这里。
换句话说,当cpu处于95%繁忙状态时,按需速度会达到最高。您可以通过以下方式将忙碌时间减少到较低的百分比(这意味着在不那么忙碌时会得到更高的计时):
“将整数值写入文件(例如,可以在/etc/rc.local启动文件中添加以下内容:echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold”)
因此,理论上...您可以将该百分比设置为令人难以置信的低水平,例如10或5,这意味着它将始终以最大速度运行。
希望这可以帮助。确保对在链接文章中发布此内容的人进行评分!
另一种解决方案(如果您正在运行Raspbian)可能是修改/etc/init.d/raspi-config中的init.d脚本以始终禁用缩放调节器。它的默认行为是仅在按下某个Shift键的情况下才在启动时启用它:
#!/bin/sh
### BEGIN INIT INFO
# Provides: raspi-config
# Required-Start: udev mountkernfs $remote_fs
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Switch to ondemand cpu governor (unless shift key is pressed)
# Description:
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Checking if shift key is held down"
timeout 1 thd --dump /dev/input/event* | grep -q "LEFTSHIFT\|RIGHTSHIFT"
if [ $? -eq 0 ]; then
printf " Yes. Not enabling ondemand scaling governor"
log_end_msg 0
else
printf " No. Switching to ondemand scaling governor"
SYS_CPUFREQ_GOVERNOR=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor if [ -e $SYS_CPUFREQ_GOVERNOR ]; t
hen
echo "ondemand" > $SYS_CPUFREQ_GOVERNOR
echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 1 | sudo tee /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
fi
log_end_msg 0
fi
;;
*)
echo "Usage: $0 start" >&2
exit 3
;;
esac