ゲームプロセスの優先順位をリアルタイムで変更するとCPUに有害ですか?

ゲームプロセスの優先順位をリアルタイムで変更するとCPUに有害ですか?

Windowsでは、パフォーマンスを向上させるためにゲームプロセスの優先順位を「高」または「ライブ」に変更することがよくあります。これにより、私のハードウェアに問題が発生したことはありません。私はLinuxでコマンドを使用してchrtゲームプロセスのリアルタイム優先順位を変更できると思いました。renice-20(最も高い優先順位)に変更しても目立つ改善が提供されないようです。しかし、CPUに害を及ぼすかどうかを知らずにこれを行うのは慎重です。誰でも私に危険を伝えることができますか?

答え1

プロセスの優先順位を変更すると、他のプロセスがCPU時間を置いて競合するときにそのプロセスが実行される頻度が決まります。プロセスがCPU時間を使用する唯一のプロセスである場合は、効果はありません。アイドルシステムでは、優先度が最も低いプロセスは、優先度が最も高いプロセスと同様にCPU時間の100%を取得します。

したがって、より高い優先順位でゲームを実行することができますが、システム内の他の項目がCPU時間をあまり使用しない限り、ゲームはより速く実行されません。

X サーバーより優先順位を低く保つことをお勧めします。なぜなら、XサーバーにCPU時間が必要な場合は、ゲーム内で複雑な内容を表示する必要があるからである可能性が高く、表示は通常CPUを多用する作業です。多くのCPU時間)タスクはGPUで行われます。 CPU優先順位はGPUには影響しません。

CPUはコードを実行するように設計されています。プロセスの優先順位を変更してもCPUのワークロードには影響はありませんが、そうすると、CPUが損傷することなくCPUが熱くなるだけで、コンピュータファンがより強く戻ります。

答え2

スレッドを実行するときにCPUの要件を変更することについて話していますか?

最新のCPUは実際には非常に高速なステップを使用しています。たとえば、Intel Core i5 / i7のクロックをプロファイリングすると、クロック速度が非常に速く上下に点滅することがわかります。これは、消費電力に応じてパフォーマンスを調整しようとするインテルの努力の一環です。デスクトップコンピュータには利用可能な電力が多い場合がありますが、CPUがさらに動作する場合はその電力が熱に変換されるため、ワットあたり最大電力を得ることが重要です。

私は他のゲームフォーラムで読んだ内容を通してのみこれを知っています。私はCPU科学者ではありません。

スレッドを最大の「厄介なレベル」に調整するには何の害もないと思います。注意すべき唯一のものはCPUがどれほど熱くなるかですが、BIOSの過電圧機能を使用しない限り、シャットダウン前にCPUを燃やすことはほとんど不可能です。

最新のCPUは、速度をすばやく変更するように設計されています。 Intel Speed Steppingと「CPU Cステータス」を検索すると、何を意味するのかがわかります。

答え3

Linuxでプログラムを使用してもreniceCPUは消費されませんが、必要に応じて機能しない可能性があります。

優先順位は何もないCPUがコードを実行する速度に関連しています。同じ速度で異なる優先順位を持つプログラムのコードを実行します。優先順位を変更することは、選択が与えられたときに実行するプログラムをオペレーティングシステムが選択することです。 CPUは一度に1つの実行「スレッド」しか実行できません(技術的には、マルチコアCPUの場合は1コアあたり1スレッド)。より多くの作業を行う必要がある場合は、マルチタスクに依存してください。つまり、他のプログラム実行間を前後に切り替えて、CPUよりも多くのスレッドが実行されているという錯覚を呼び起こします。各ジョブに割り当てる時間を選択するときは、優先順位を手がかりとして使用します。

コンピュータで「リアルタイム」とは、「実行が速すぎる」ではなく、「プロセスをプリエンプトしない」ことを意味します。リアルタイムプログラミングは多くの分野で重要です。たとえば、自動車のロック防止ブレーキシステムを管理するソフトウェアを作成する場合本物OSがフロントガラスワイパーの診断を実行する必要があると判断するため、私のタスクが数ミリ秒遅く実行されることは望ましくありません。したがって、自動車のロック防止ブレーキ管理ソフトウェアは「リアルタイム」優先順位で動作します。

正直なところ、「リアルタイム」の優先順位はLinux上で少し間違った名前です。これは、Linuxがプロセスをスケジュールする方法によるものです。 Windowsでは、より高い優先順位で実行されているプロセスがある場合、より高い優先順位タスクが何かを待っていない限り、より低い優先順位で実行されているプロセスはCPU時間をまったく取得しません。 「リアルタイム」Windowsタスク上記では、カーネルプロセスのみを実行できます。 Windowsではトーン常にバックグラウンドで実行されるBloatwareなので、優先順位を「リアルタイム」に上げると、すべてのゴミが実行されるのを防ぐことができます。

しかし、問題があります。場合によっては、優先順位の高いジョブが優先順位の低いジョブの1つによって異なります。これを「優先順位逆転」といい、マルチスレッドプログラミングの世界では大きなテーマです。このような場合、優先順位の高いジョブがそれ自体停止していることに気づかずに、優先順位の低いジョブを中断する可能性があります。 Linuxではこれは起こりません。なぜなら、Linuxは優先順位がすべてであるか、または全員(all-or-nothing)アプローチではなく、各プログラムにCPUのどの部分を割り当てるかを決定する方法と考えられるからです。 -20で実行されるプロセスは本質的に0で実行するよりもCPU時間がかかりますが、-20個のプログラムがあっても0プログラムは一部CPU時間。メモリが利用可能な場合、現在のLinuxスケジューラはプログラムに-1を0に2倍以上のCPUパフォーマンスを提供し、-2を-1に2倍以上のCPUパフォーマンスを提供する式です。これは、-20 のプログラムで CPU 時間の 0.9999046% を使用しますが、まだ少量があることを意味します。する0時にプログラムに移動します。 0のプログラムは、200kHzプロセッサで実行されているように感じます!

欲しいなら本物リアルタイムで他のものがあなたを先取りするのを防ぐことができ、カーネルドライバを作成するか、Linux用のリアルタイム拡張を使用する必要があります。 Redhatには、Linuxで真のリアルタイム処理を可能にするMRGというツールがあります。この文脈において、「リアルタイム」は特定のものを意味する。 MRGでは、「リアルタイム」グループのユーザーはこれらのリアルタイム拡張機能を使用できます(意図的に使い慣れたLinuxスケジューラを使用しないため、プロセッサを永遠に忙しい状態に保つことができます)。

関連情報