我想编辑/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
将其内容从 800000 更改为 1600000。
我首先尝试使用 emacs
$ sudo emacs -nw /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
在 emacs 中,我已将文件中的值更改为 1600000,当我保存更改时,消息缓冲区显示:
Saving file /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed... Wrote /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
但是当我退出emacs并再次读取文件后,该值仍然是800000
然后我尝试另一种方式
$ sudo less /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
其中我点击
v
调用默认编辑器,即 nano,然后更改该值。我退出nano和less后,再次检查文件,文件已经更改成功。
我想知道为什么第一种方法不起作用而第二种方法有效?
我在 Thinkpad T400 上运行 Ubuntu 16.04。谢谢。
答案1
来自评论:
当 Emacs 保存文件时,它会重命名旧文件,使其成为备份文件,然后使用原始名称创建一个新文件。我不知道你的情况发生了什么,也不知道为什么 Emacs 没有抱怨,但 Emacs 显然是错误的工具。 ——约翰·迈雷恩
正确的工具应该是只覆盖原始文件(甚至只是附加到它)的任何工具,而不是尝试重命名旧文件。
请记住:下面没有任何内容/sys
是真实的、持久的文件。它们都是内核参数和状态信息,以文件的形式呈现。您不应该能够移动、重命名或删除它们。
曾经有一些名为cpufreq-info
和的命令cpufreq-set
用于操作这些设置;在最近的版本中,命令现在(或很快)可能分别是cpupower frequency-info
和cpupower frequency-set
。
答案2
正如评论中提到的,设置 1600 MHz 速度的传统方法是:
echo 1600000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
要验证其效果,请使用:
$ cd /sys/devices/system/cpu/cpu0/cpufreq/
$ paste <(ls *) <(cat *) | column -s $'\t' -t
affected_cpus 0
cpuinfo_max_freq 3500000
cpuinfo_min_freq 800000
cpuinfo_transition_latency 4294967295
energy_performance_available_preferences default performance balance_performance balance_power power
energy_performance_preference balance_performance
related_cpus 0
scaling_available_governors performance powersave
scaling_cur_freq 807325
scaling_driver intel_pstate
scaling_governor powersave
scaling_max_freq 3500000
scaling_min_freq 800000
scaling_setspeed <unsupported>
在我的机器上scaling_setspeed
无法设置,因为我有 i7-6700HQ。我的旧第 3 代 i7-3630QM 也是如此。
因此,在这些平台上,我会将scaling_min_freq
和设置scaling_max_freq
为同一水平,并且p_state
永远不会波动。我可能会在所有 CPU 上应用相同的.../cpu0/...
设置.../cpu7/...