/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:参数无效

/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:参数无效

当我尝试写入系统文件来更改 cpu 频率时,我陷入了困境:

$ cat   /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
<unsupported>

$ echo 1600000 | sudo tee  /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
1600000
tee: /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed: Invalid argument

将用户更改为root也有同样的问题:

$ sudo su
# echo 1600000 >   /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
bash: echo: write error: Invalid argument

以下内容可能应该是无关的。以前,上述命令都有效,但是一小时前,当我将笔记本电脑散热器的 USB 插头插入笔记本电脑的一个 USB 端口时,我的 Ubuntu 被冻结了,所以我必须通过按下笔记本电脑的电源按钮来重新启动它,然后我遇到了上面的问题。

以前,当它工作时,cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed输出一些值而不是<unsupported>.尝试了多次以上invalid argument错误后,现在我echo 1600000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed再次运行,它可以正常工作,没有invalid argument错误。大约在同一时间,ubuntu 报告了一些 cpu 频率实用程序错误,我不太记得了。

答案1

文件在系统文件系统进程文件系统是内核的接口。读取和写入这些文件会调用内核中驱动程序中的代码。如果您收到错误“权限被拒绝”(EACCESS),则表明该错误来自文件权限。但是,如果您收到诸如“无效参数”(EINVAL) 之类的错误,则意味着驱动程序发送了此回复。

“无效参数”最明显的原因是您试图编写一个无效的值。例如,写入非数字的内容来修改数字设置,或者写入超出可接受范围的数字。

鉴于读取返回字符串<unsupported>,当时在您的计算机上,驱动程序认为您的硬件不支持此功能。由于它以前工作过,这表明驱动程序中存在错误或硬件故障。


您已经表明它现在又可以工作了。所以这是一个短暂的问题,重新启动就可以解决。我的回答的其余部分是对刚刚遇到类似问题的人的建议。

如果您最近升级了内核,请尝试恢复到以前的版本。

由于问题出在内核中,或者至少是在内核或硬件之间,因此您需要深入研究内核日志以查找更多信息。在具有 systemd 的最新系统上,运行sudo journalctl -k以查看内核日志。或者,查看/var/log/kern*,其中包括较早保存的日志。

找到正确的日志消息可能很困难。如果您可以找到事情开始的大致时间,请查找该时间附近的日志消息。现在尝试访问该文件/sys,这可能会也可能不会每次生成新的日志消息,具体取决于驱动程序的工作方式。

如果您遇到一些与硬件相关的故障并重新启动,某些固件(在计算机上的辅助芯片之一上运行的软件)可能仍然包含错误数据。要将所有固件完全重置为开机状态,您需要完全关闭系统电源。在笔记本电脑上,有时甚至需要完全断开电源(拔下电源插头和电池,然后将它们放回去)。

相关内容