Ubuntuの最新バージョンでは、オンデマンドプロセッサ周波数制御ポリシーはデフォルトで有効になっています。 このことは、プロセッサの負荷が小さいときにプロセッサの周波数を可能な限り低く設定するため、省エネの観点から非常に便利です。
しかし、最近、「オンデマンド」がI / O操作によって引き起こされるCPU負荷を「アイドル」として認識するという1つの欠点があることに気付きました。 これはどういう意味ですか? これは、I / O操作でプロセッサをロードするとき、プロセッサの周波数がしばしば低いレベルに留まることを意味し、システムがiowaitの悪名高いLinuxのバグに悩まされている場合に問題を引き起こします。
このオンデマンド動作に対処するには、2つの方法があります。
最初のオプションは、プロセッサの省電力モードを無効にすることです。 たとえば、それを含むスクリプトを修正します。 これは、「ondemand」という非常に論理的な名前で隠されており、/etc/init.dにあります。 このファイルの行を修正する場合
echo -n ondemand > $CPUFREQ
に
echo -n performance > $CPUFREQ
、プロセッサは常に最大周波数で動作します。
2番目のオプションは、iowaitを無視しない「オンデマンド」モードを有効にすることです。 これは、
/sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
のオプションによって制御されます。 これを行うために、小さなinitスクリプトを作成しました。
その後、スクリプトは
/etc/init.d/io-is-busy
ファイルに保存され、実行可能になり、コマンド
sudo update-rc.d io-is-busy defaults 99 99
システムに登録されます。
それだけです さて、プロセッサ負荷のI / O操作が増加すると、周波数は自動的に最大に上昇します。