システムCPUを加熱するために特定のプロセスを停止します。

システムCPUを加熱するために特定のプロセスを停止します。

いくつかの計算を実行するプロセスがあります。これにより、システムのCPUが熱くなり、ファンが速く回転します。

プロセスを実行したいのですが、優先順位は低いです。システムが熱くなり、ファンが回転したくありません。この目標を達成することは可能ですか?

重要な場合は、私のCPUはAMD Ryzen 5 3500Uで、プロセスはブラウザタブです(Chromiumで実行していますが、役に立つ場合はブラウザを変更します)。役に立つ場合は、仮想マシンでブラウザ全体を実行することもあります。


私が試したことと失敗した理由:

  1. これまでに発見された最善の解決策は、最大CPU周波数を制限することです。

    echo 0 > /sys/devices/system/cpu/cpufreq/boost
    cpupower frequency-set -u 1200MHz
    

    動作しますが、他のプロセスも影響を受けます。つまり、コンパイル、(圧縮)圧縮などの時間が長くなります。
    また、CPU温度は、プロセスが実行されていないときよりも高く維持されます。許容温度に達したにもかかわらず。

  2. CPU制限ターゲットプロセスのパフォーマンスを低下させます。
    許容 CPU 率を 50%( ) に設定すると、計算cpulimit -l 50 -p ...が通常よりはるかに遅くなります(10 倍遅くなります。正確な速度低下を測定する良い方法はありません)。

  3. 私はcgroupsで遊んだが、何の結果も得られなかった。

  4. ニースは確かに影響を与えません。

私が試すべき他のものはありますか?

ベストアンサー1

一部のガバナー(注文型と保守的)は、拡張または縮小を選択したときに肯定的なnice値を持つプロセスを無視するフラグをサポートしていることがわかりました。

~からkernel.org CPUFreq 知事文書:

nice_loadを無視:

このパラメーターの値は「0」または「1」です。 「0」(デフォルト)に設定すると、すべてのプロセスが「CPU使用率」の値として計算されます。 「1」に設定すると、「nice」値で実行されるプロセスは、全体使用量計算では計算されません(したがって無視されます)。これは、ラップトップでCPU集約的な計算を実行して完了するのにかかる時間が重要でない場合に便利です。これは、「最適化」しているかどうかに関する意思決定プロセスに関与するのを防ぐことができるからです。 CPU周波数を上げるには

オンデマンドガバナーをロードし、対応するignore_nice_loadフラグを有効にしてから、優先順位の低い常に評価されるプロセスに適切な値を設定しました。

# load and enable the ondemand governor
sudo modprobe cpufreq_ondemand
sudo cpupower frequency-set -g ondemand

# enable ignore_nice_load
echo 1 | sudo tee /sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load

# set a nice value to the target process
renice -n 19 -p PID

コンピューティングプロセスが常にコアの100%を占めていても、私のすべてのコアは常にクールに保たれます(ファンは静かです)。他のタスクに多くのコンピューティングパフォーマンスが必要になるたびにすぐに拡張されます。

おすすめ記事