GNU/Linux >> Linux の 問題 >  >> Linux

ゲームのプロセスの優先度をリアルタイムに変更すると、CPU に悪影響を及ぼしますか?

プロセスの優先度を変更しても、他のプロセスが CPU 時間を奪い合っているときにこのプロセスが実行される頻度が決まるだけです。プロセスが CPU 時間を使用している唯一のプロセスである場合、影響はありません。アイドル状態のシステム上の最小優先度のプロセスは、最大優先度のプロセスと同じように 100% の CPU 時間を取得します。

そのため、より高い優先度でゲームを実行できますが、システム上の他の何かが大量の CPU 時間を使用していない限り、ゲームの実行速度は向上しません。

X サーバーよりも優先度を低く保つことをお勧めします。X サーバーが CPU 時間を必要とする場合、それはゲームが複雑なものを表示するように要求している可能性が高く、表示は通常 CPU を必要とするタスクだからですの作業は GPU で行われます — CPU の優先度は GPU に影響しません)。

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


スレッドの実行中に CPU 需要の量を変更することについて話しているのですか?

最近の CPU は、実際には非常に高速なステッピングを使用しています。たとえば、Intel Core i5/i7 のクロッキングを分析すると、クロック速度が非常に速く上下にちらつくことがわかります。これは、インテルが消費電力に応じてパフォーマンスを調整できる方法の一部です。デスクトップ PC では大量の電力を利用できるかもしれませんが、CPU がよりハードに動作すると、電力が熱に変換されるため、1 ワットあたりの電力を最大限に引き出すことが重要です。

これは、他のゲーム フォーラムで読んだことからしかわかりません。私は CPU 科学者ではありません。

スレッドを最大の「厄介さ」に調整しても、ダメージを与えることはないと思います。唯一気をつけなければならないことは、CPU がどれだけ熱くなっているかですが、BIOS で過電圧を使用していない限り、シャットダウンする前に CPU を調理することはほとんど不可能です.

最新の CPU は、速度が急速に変化するように設計されています。 Intel Speed Stepping と「CPU C states」を検索すると、私の言いたいことがわかります。


renice の使用 Linux プログラムで CPU を使い果たすことはありませんが、必ずしもやりたいことを実行するとは限りません。

優先度には何もありません CPU がコードを実行する速度に関係します。さまざまな優先度レベルのプログラムからのコードを同じ速度で実行します。変更される優先順位は、選択が与えられたときにオペレーティング システムが実行するプログラムを選択することです。 CPU は一度に 1 つの「スレッド」しか実行できません (マルチコア CPU の場合、技術的にはコアごとに 1 つ)。それ以上のことを行う必要がある場合は、マルチタスクに依存します。異なるプログラムの実行を切り替えて、CPU の数よりも多くのスレッドを実行しているように見せかけます。これらのタスクのそれぞれに割り当てる時間を選択するとき、優先度をヒントとして使用します。

コンピュータにとって「リアルタイム」とは、「この速度で実行する」というよりも、「このプロセスをプリエンプトしない」という意味です。リアルタイム プログラミングは、多くの分野で非常に重要です。たとえば、車のアンチロック ブレーキを管理するソフトウェアを書いていたとしたら、本当に OSがフロントガラスのワイパーで診断を実行する必要があると判断したため、タスクを数ミリ秒遅れて実行したくありません。したがって、自動車のアンチロック ブレーキ管理ソフトウェアは、「リアルタイム」の優先度で実行されます。

正直なところ、Linux では、「リアルタイム」の優先度レベルは少し間違った呼び名です。これは、Linux がそのプロセスをスケジュールする方法によるものです。 Windows では、優先度の高いプロセスが実行されている場合、優先度の高いタスクが何かを待機していない限り、優先度の低いプロセスには CPU 時間が与えられません。 「リアルタイム」Windows タスクの上で実行できるのは、カーネル プロセスだけです。 Windows には トン があります 常にバックグラウンドで実行されているブロートウェアの数が多いため、優先度を「リアルタイム」に上げると、ジャンクがすべて実行されるのを防ぐことができます。

ただし、これには問題があります。優先度の高いタスクが優先度の低いタスクに依存している場合があります。これは「優先順位の逆転」と呼ばれ、マルチスレッド プログラミングの世界では大きな話題になっています。これが発生すると、優先度の高いタスクが優先度の低いタスクを停止させ、それ自体が停止していることに気付かない可能性があります。 Linux では、これは起こりません。なぜなら、Linux では、優先順位は、全か無かのアプローチではなく、各プログラムに割り当てられる CPU の部分を決定する方法と見なされるためです。 -20 で実行されているプロセスは、実質的に 0 で実行されているものよりも多くの CPU 時間を使用しますが、-20 のプログラムが存在する場合でも、0 のプログラムはいくらか取得します。 CPU 時間。メモリが機能する場合、現在の Linux スケジューラは、-1 でプログラムに 0 の 2 倍の CPU パワーを与え、-2 でプログラムに -1 の 2 倍の CPU パワーを与えます。これは、CPU 時間の 0.9999046% が -20 のプログラムに費やされることを意味しますが、わずかな割合がそうします。 0 のプログラムに移動します。0 のプログラムは、200kHz プロセッサで実行されているように感じられます!

true が必要な場合 リアルタイムでは、他の何かがあなたを先取りするのを防ぐことができます。カーネルドライバーを作成するか、Linux のリアルタイム拡張機能を使用する必要があります。 Redhat には、Linux で真のリアルタイム処理を可能にする MRG と呼ばれるものがあります。その場合、「リアルタイム」は特定のものを意味します。 MRG の下では、「リアルタイム」グループのユーザーは、これらのリアルタイム拡張機能の使用を許可されています (これにより、使いやすい Linux スケジューラを意図的に使用していないため、プロセッサが永久にビジー状態になる可能性があります)。


Linux
  1. CentOS / RHEL :スワップ パーティションに使用するデバイスの優先順位を付ける方法

  2. Linux で C または C++ からプロセスの CPU アフィニティを設定する方法は?

  3. CからLinuxでPIDによってプロセスのCPU使用率を計算する方法は?

  1. プロセスIDの最大値は?

  2. Linux で特定のプロセスのオープン FD 制限を確認する

  3. Linux はシングルコア マシンで CPU の制御をどのように保持しますか?

  1. Rsyncはディレクトリのアクセス許可を変更していますか?

  2. Slurm JobManagerでノードのCPU/スレッドの使用状況を確認しますか?

  3. UNIX / Linux :プロセスのナイスネス (優先度) を変更する方法