web-dev-qa-db-ja.com

Windowsの優先順位とアフィニティとは何ですか、またどのような利点がありますか?

優先度とアフィニティ(タスクマネージャ内にあります)とは正確に何であり、何に使用されますか。

Found within Task Manager

これらを使用する必要がある/使用できる状況と、これらの設定をカスタマイズする際に得られる利点。

9
James Mertz

アフィニティの設定は何かを行いますが、それを使いたくないでしょう。

CPUアフィニティを設定すると、Windowsは選択されたCPU(またはコア)のみを使用するようになります。アフィニティを単一のCPUに設定すると、WindowsはそのCPUでのみアプリケーションを実行し、他のCPUでは実行しません。

Windowsは、実行中のアプリケーションを最も使用率の低いプロセッサに自動的に配置するため、単一のCPUに制限しても、Windowsはその役割を果たせません。 CPU /コア1が他のアプリケーションの実行でビジーであっても、WindowsはCPU /コア2でアフィニティが設定されたアプリケーションを実行できません。

マルチCPU /コアシステムで実行しているときに正しく動作しない古いアプリケーションを実行することが、これを実行する唯一の理由です。

3
shf301

アフィニティを設定すると、そのプロセスで実行が許可されているプロセッサがそのプロセスに通知されます。

一部のニッチなケースでは非常に便利ですが、平均的なユーザーはおそらくそれをいじる必要はありません。

たとえば、プロセスが独自のコアの実行を許可されている場合、70のウィンドウユーティリティが独自のタイムスライスのプロセッサで絶えず割り込みやスタックスワップを行うことなく、(ほぼ)リアルタイムで実行できます。リアルタイムアプリケーションは、マルチプロセッサ/マルチコアシステムが登場するまで、OSがアプリケーションの割り込みやタスクの切り替えを常に行うため、ウィンドウズでは不可能でした。システムの他のすべてのアプリケーションがそのプロセッサを使用しないようにしながら、リアルタイムアプリケーションを1つのプロセッサに分離することで、ほとんどの場合それを克服できます。これは非常にニッチなテーマですが、(実際の)フライトシミュレータ、ファクトリオートメーション、制御フィードバックシステムなどのシステムは、動作するリアルタイムアーキテクチャに依存しています。

プロセッサを集中的に使用するアプリケーション(VMなど)を独自のコアに分離できるため、システムの残りの部分をクロールすることなくそれらを使用できます。理論的には、ベアメタルハイパーバイザーの相互作用をサポートするプロセッサ上で実行されるハイパーバイザは、それ自体で実行される独立したOS(ホストOSの実行に必要なプロセッサを除く)と同等のプロセッサパフォーマンスに到達できます。もちろん、実際には、VMが独立したコア/プロセッサで実行されている場合でも、ホストからのOSからの少量のオーバーヘッドを受け入れる必要があります。

大量のデータをフラックスで処理するアプリケーションの場合、アプリケーションをそれ自体のプロセッサに分離すると(さらに、複数のコアを利用する可能性がある場合)、キャッシュスワッピングが削減されます。

古いプロセッサが複数のプロセッサに分散しているときに機能しなくなった古いアプリケーションは、問題を修正するために1つのコア/プロセッサに効果的に制限できます。

特定のアプリケーションのパフォーマンス測定を行っていた場合、プロセスを分離できない限り、異なるシステム間で一貫した結果を得るのはほぼ不可能です。そうしないと、OSがアプリケーションに与える時間を制御できないためです。ほとんどの人は、ランタイムパフォーマンスを測定しても良い結果が得られないことに同意しますが、OSの介入(結果の一貫性が失われる)をアフィニティの使用によって制限できるとは考えていません。

親和性が重要な場合はたくさんありますが、それらが何であるかがわからない場合は、おそらく必要ありません。

2
Evan Plaice

これは、特定のシナリオで非常に役立つ機能です。アイドル状態になる傾向があるか、数分間すべてのCPUの100%を積極的に取得し、検索やビルドなどを行う傾向があるマルチスレッドアプリケーションがあるとします。このアプリケーションを「Eclipse」と呼びましょう。

また、このアプリケーションで作業しているときに、CPU要件が適度であるものの、基本的にはリアルタイムアプリケーションである他のアプリケーションがたくさんあるとします。たとえば、Eclipseを使用していて、ランダムにビルドを開始したり、gwtコンパイルを行ったりしながら、コンピューターを使用して音楽をストリーミングしたり、ブラウザーウィンドウで調査を行ったりします(たとえば、ビルドの問題の原因を調査します)。 。確かに、音楽がスキップしたり、ブラウザが応答を停止したりしても死ぬことはありませんが、迷惑です。

アフィニティでできることは、CPU食べるアプリを7/8コアに制限して、他のすべてのユーザーが比較的未使用のCPUにアクセスできることを保証し、コンピュータ上の他のすべてのユーザビリティの途切れや中断に常に対処する必要がないようにすることです。 Eclipseがすり減っている間。

2
Jim W

優先度が高いほど、タスクの処理が優先度の低いタスクよりも有利になります。非常に応答性が必要なアプリケーションや、たとえば他の非対話型プロセスの束を実行している場合、優先順位を設定することで、優先順位の高いプロセスのエクスペリエンスを向上させることができます。

例:Windows Vista以降、Windows Media Playerは自動的にメディアファイルのスムーズで継続的な再生を保証するためにより高い優先順位を取得し、デフォルトでは他のプロセスで利用できるCPU時間は約20%のみです。これは、優先順位が何をするかを理解するのに役立つ例にすぎません。 (VistaでのMedia Playerの優先順位の詳細については Technet を参照してください。)

ソフトまたはハードアフィニティを使用すると、以前にプロセスが中断され、後で再開されたときに、CPUのキャッシュにプロセスの残りが残っている可能性があるため、処理速度が向上します。

1
David M

これの完璧な例は、特に最新の64ビットコンピューターで32ビットゲーム(アプリケーション)をエミュレートする場合の、古いコンピューターゲーム(または他のソフトウェア)です。古いゲームのアフィニティを4コアのみに制限することで、クラッシュを回避してスタブバーンゲームを開始できるようになることがよくあります。 OLDゲーム、ビデオエディター、およびハードウェアアクセラレーショングラフィックソフトウェア、またはCADソフトウェア)で使用される一部のレンダリングエンジンは、4つを超えるCPUコアを認識せず、起動時にクラッシュします。

これを投稿するためだけにアカウントを作成するのではなく、google 'kieseyhow'を見つけます

1
Kieseyhow