web-dev-qa-db-ja.com

/ 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

以下はおそらく無関係であるはずです。以前は、上記のコマンドはすべて機能していましたが、1時間前にラップトップクーラーのUSBプラグをラップトップの1つの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
Tim

sysfs および procfs のファイルは、カーネルへのインターフェースです。これらのファイルの読み取りと書き込みは、カーネルのドライバーでコードを呼び出します。 「アクセス許可が拒否されました」(EACCESS)というエラーが表示された場合は、ファイルのアクセス許可が原因です。ただし、「無効な引数」(EINVAL)などのエラーが発生した場合は、ドライバーがこの応答を送信したことを意味します。

「無効な引数」の最も明白な理由は、無効な値を書き込もうとしていることです。たとえば、数値設定を変更するために数値ではないものを書き込んだり、許容範囲外の数値を書き込んだりします。

読み取りによって文字列<unsupported>が返されることを考えると、その時点でマシン上で、ドライバーはハードウェアがこの機能をサポートしていないと考えていました。以前は機能していたため、これはドライバーのバグまたはハードウェア障害のいずれかを示しています。


あなたはそれが再び機能することを示しました。したがって、再起動によって修正されたのは一時的な問題でした。私の答えの残りは、同様の問題に直面したばかりの人々へのアドバイスです。

最近カーネルをアップグレードした場合は、以前のバージョンに戻してみてください。

問題はカーネルにあるか、少なくともカーネルとハードウェアの間にあるため、詳細情報を見つけるにはカーネルログを掘り下げる必要があります。 systemdを備えた最近の十分なシステムで、Sudo journalctl -kを実行してカーネルログを確認します。または、古い保存済みログを含む/var/log/kern*を確認します。

適切なログメッセージを見つけるのは難しい場合があります。物事が始まったおおよその時間を見つけることができる場合は、その頃のログメッセージを探してください。今すぐ/sysのファイルにアクセスしてみてください。これにより、ドライバーの動作に応じて、毎回新しいログメッセージが生成される場合と生成されない場合があります。

ハードウェア関連の障害が発生して再起動した場合でも、一部のファームウェア(コンピューターの補助チップの1つで実行されているソフトウェア)のデータが不良である可能性があります。すべてのファームウェアを完全に電源オン状態にリセットするには、システムの電源を完全に切る必要があります。ラップトップでは、電源を完全に切断する必要がある場合もあります(主電源とバッテリーのプラグを抜いて、元に戻します)。