現在、ほとんどのWindows PCはマルチコアプロセッサを搭載しており、最近のバージョンのWindowsは一般に、実行中のアプリやゲームに最適に対応するためにPCの合計処理能力を自動的に分割します。 ただし、PCのCPUパワーを最適に使用する方法を決定する際に、ユーザーとWindowsが異なるアイデアを持っている場合があります。機能のおかげで、上級ユーザーが特定のアプリやプロセスを特定のCPUコアにステップインして手動で制限できる場合があります Processor Affinity と呼ばれます。 方法は次のとおりです。
Windowsの消費者レベルのバージョンになると、ユーザーが特定のCPUコアのアプリの使用を手動で構成する機能は、Windows XP / 2000のタイムフレームにまで遡りますが、Windowsのバージョンごとに手順はわずかに異なります。 手順とスクリーンショットにはWindows 10を使用していますが、Windowsの古いバージョン、特にWindows 7とWindows 8 / 8.1を実行している読者は、Windows UIとのわずかな違いに直面しても基本的な手順に従うことができます。
特定のプロセスまたはアプリのプロセッサアフィニティを変更すると、安定性の問題が発生する可能性があり、最近のマルチスレッドアプリおよびゲームのパフォーマンスが低下する可能性があることに注意してください。 したがって、アプリケーションまたはシステムがクラッシュする可能性があるため、重要でないアプリとデータを最初に試し、ここで説明する設定を変更する前に、開いている作業またはゲームの進行状況を必ず保存してください。
アプリのCPUコアへのアクセスを制限する理由
前述のように、ほとんどのユーザーは、WindowsにPCの処理能力を自動的に処理させ、すべてのコアを利用できるアプリに確実にアクセスを許可する必要があります。 これにより一般的にパフォーマンスが向上するため、主な問題は、ユーザーが特定のマルチスレッドアプリを、PCで使用可能な物理コアと論理コアの合計量よりも少なく制限または制限する 理由 です。
この質問には、2つの基本的な答えがあります。1)古いソフトウェアとの互換性とパフォーマンスを確保するため、2)他のタスクを同時に実行するのに十分なリソースを確保しながらスレッドスレッドの多いプロセッサホグを実行するため。
最初の答え、互換性とパフォーマンスから始めましょう。 一部のWindowsアプリとゲームは、消費者レベルのマルチスレッドおよびマルチコアプロセッサが現実になるずっと前にコーディングされていました。 特に古いゲームの作成者は、ゲームをプレイする人が単一の高周波CPUコアを搭載したWindows PC以外のものを持っているとは想像していなかったかもしれません。 この時代のソフトウェアが4、6、8、またはそれ以上のコアを搭載した最新のCPUに遭遇すると、パフォーマンスの問題が発生したり、プログラムをまったく起動できなくなることさえあります。
もちろん、多くのアプリやゲームは、最新の8コア/ 16スレッドモンスターデスクトップCPUを搭載していても、引き続き正常に動作します。 ただし、古いゲームをプレイしようとして問題が発生している場合は、プロセッサアフィニティを使用してゲームのプロセスを多数のコアのうちの1つだけに手動で制限することをお勧めします。
2番目の回答は、より多くのWindowsユーザーにとってより有用である可能性が高く、以下のステップバイステップの手順の基礎となります。 多くのWindowsアプリ、特にゲームは1つまたは2つ以上のコアを利用できませんが、ビデオエンコーダーや3Dレンダリングツールなどのコンテンツ作成アプリは近年最適化され、あらゆるオンスの処理能力を使用できるようになりましたあなたのPCはそれらを投げることができます。 通常、これらのアプリは可能な限り高速にしたいが、速度または完了時間が主な要因ではない場合があり、要求の多いメディアアプリが実行されている間は、PCの処理能力の一部を別のタスクに利用できるようにしたいバックグラウンド。 これは、プロセッサアフィニティが実際に役立つ場所です。
ステップバイステップ:例
投げたすべてのCPUコアを食い尽くすことができる1つのアプリは、RipBot264(またはHandBrake、または利用可能な無数のx264およびx265エンコーダーツール)のようなx264ビデオエンコーダーです。 この例では、RipBot264でビデオファイルをエンコードする必要がありますが、PhotoshopやPremiereなどのアプリで同時に他のプロジェクトでも作業したいです。
デフォルトでは、RipBot264などのアプリは利用可能なすべての処理能力を使用します。
RipBot264エンコードを開始してからPhotoshopとPremiereを起動した場合、Windowsは各アプリのニーズに優先順位を付けて対応するために最善を尽くしますが、Windowsはときどきミスをして、アクティブなアプリの速度低下や一時的なフリーズを引き起こします。 これを回避するには、プロセッサアフィニティを使用して、RipBot264のCPUコアの使用を制限します。開始するには、まず管理者権限を持つWindowsユーザーアカウントにログインしていることを確認してください。 次に、制限するアプリを起動します。 私たちの場合、それはRipBot264です。
次に、タスクバーを右クリックして[ タスクマネージャー ]を選択するか、キーボードショートカットの組み合わせCtrl-Shift-Escapeを使用して、Windowsタスクマネージャーを起動します。 既定では、Windowsの最新バージョンのタスクマネージャーは「基本」ビューで起動します。 タスクマネージャーがスクリーンショットのように表示されない場合は、[ 詳細]をクリックして完全なインターフェイスを表示します。 それが完了したら、「プロセス」タブにいることを確認し、アプリまたはプロセスを見つけます。
この最後の手順は、言うよりも簡単に言うことができます。 多くの場合、リストから目的のアプリを見つけることができます。 その他の場合、一部のアプリは、特定のタスクのプライマリアプリケーションプロセスとは別の独自のプロセスを使用する場合があります。 重要なのは、制限したいCPU使用率に関与するプロセスを見つけることです。 これをテストする良い方法は、要求の厳しいアクティビティを起動して(この場合、ビデオファイルのエンコードを開始する)、CPU列でタスクマネージャーを並べ替えて、最高レベルのCPUリソースを使用しているプロセスを見つけることです。 プロセス名(この場合もH.264エンコーダープロセス)がターゲットアプリと一致する場合、設定は完了です。
正しいプロセスが特定されたら、それを右クリックして[ 詳細に移動 ]を選択します。 これにより、タスクマネージャーの[詳細]タブにジャンプし、正しいプロセスが自動的に強調表示されます。
次に、プロセスをもう一度右クリックして、[ アフィニティの設定 ]を選択します。
「Processor Affinity」というラベルの付いた新しいウィンドウが表示され、チェックボックスとCPUの番号付きリストが表示されます。このリストの数は、特定のCPUにパックされた物理コアと論理コアの総数に基づきます。 サンプルシステムでは、8つのハイパースレッドコアを持つIntel Core i7-5960Xを実行しています。 したがって、Processor Affinityウィンドウに合計16個のCPUがリストされています。
次に、アプリをどの程度制限するかを決定します。 [ すべてのプロセッサ]の横のチェックボックスをクリックしてすべてのCPUボックスの選択を解除し、チェックするCPUボックスを少なくとも1つ選択します。各ボックスは物理または論理コアを表します。 CPUの欠陥や独自のオーバークロックシナリオがない場合、通常、どのコアを選択してもかまいません。
この例では、RipBot264を4つのコアに制限し、時間に敏感な他のタスクに十分なスペースを残します。 必要な数のコアを選択したら、[ OK]を押して[プロセッサアフィニティ]ウィンドウを閉じます。 変更はすぐに有効になり、アプリが既にCPUに負荷のかかるタスクを実行している場合、選択したコア以外のすべてでプロセッサ使用率が急落することがわかります。
16コアのうち4コアのみを使用するようにRipBot264を構成すると、残りのコアでCPU使用率がすぐに低下します。
このセットアップでは、RipBot264でこれらの4つのコアで可能な限り高速にエンコードできますが、システム内の残りの12のコアは他のアプリを自由に処理できます。 後で他の作業を終了し、RipBot264の完全なパフォーマンスを復元する場合は、上記の手順を繰り返して[プロセッサアフィニティ]ウィンドウに戻り、[ すべてのプロセッサ]ボックスをオンにして、すべてのCPUに対するアプリアクセスを再度許可します。コア。注意事項
前述の安定性の問題に加えて、考慮する必要があるもう1つの大きな注意事項があります。 プロセッサアフィニティに加えた変更は、そのプロセスが再起動されるたびにリセットされます。 つまり、少なくとも、PCを再起動するたびにこれらの手順を繰り返す必要があります。 ただし、アプリの指示に応じて自動的にリロードされるため、一部のプロセスはさらに面倒です。 たとえば、RipBot264のセットアップでは、アプリが新しいビデオファイルのエンコードに移行するたびに、変更したH.264エンコーダープロセスが開始されます。
コマンドラインベースのバッチファイルまたはショートカットを介してアプリのプロセッサアフィニティを設定するカスタムスクリプトを作成することにより、この制限を回避できる場合がありますが、一部のアプリでは、そのような努力を困難または不可能にする独自のプロセスまたはランダムなプロセスを使用する場合があります。 そのため、制限する各アプリを個別に実験して、プロセッサアフィニティを手動で構成する最適な方法を見つけるのが最善です。