Linux システムを使用する場合、データ処理やプログラムのコンパイルなど、完了するまでに大量のコンピューティング リソースを必要とする、CPU を大量に使用するタスクが発生することがよくあります。ただし、システムのハードウェア構成が低いと、タスクの実行が遅くなり、作業効率に重大な影響を及ぼします。この問題を解決するために、この記事では、プロセスを特定の CPU コアにバインドして、プロセスの実行効率を向上させることができる「CPU バインディング」と呼ばれる技術を紹介します。
通常のアプリケーションの場合、オペレーティング システムのデフォルトのスケジューリング メカニズムは問題ありません。ただし、プロセスでより高い操作効率が必要な場合は、別のコアへのバインドを検討して、異なるコアでのスケジューリングによって生じるオーバーヘッドを削減する必要があります。
プロセス/スレッドを特定の CPU コアにバインドすると、プロセスは常にこのコア上で実行され、オペレーティング システムによって他のコアにスケジュールされることはなくなります。ただし、バインドされたコアは依然として他のアプリケーションを実行するようにスケジュールされている可能性があります。
オペレーティング システムによるマルチコア CPU のスケジューリング
現在、Windows と Linux はどちらもマルチコア CPU のスケジューリングと管理をサポートしています。
マルチコア環境でのソフトウェア開発の中核は、マルチスレッド開発です。このマルチスレッドは、ソフトウェア実装におけるマルチスレッドを表すだけでなく、ハードウェアにおけるマルチスレッド テクノロジの使用も必要とします。
マルチコア オペレーティング システムの焦点は、プロセスの割り当てとスケジューリングにあります。コアごとに共有条件や過去の動作条件が異なるため、プロセス割り当てではプロセスを適切な物理コアに割り当てます。一部の物理コアは 2 次キャッシュを共有できますが、他の物理コアは独立しています。データ共有を伴うプロセスが共有二次キャッシュを持つコアに割り当てられている場合、パフォーマンスは大幅に向上しますが、そうでない場合は、パフォーマンスに影響が出る可能性があります。
プロセス スケジューリングには、リアルタイム、負荷分散、その他の問題が含まれます。現在の研究で注目されている問題は、主に次の側面に焦点を当てています:
CPU コア上で複数のプロセスおよびマルチスレッドが実行されている場合の状況は次のとおりです。
各 CPU コアがプロセスを実行する場合、各プロセスのリソースは独立しているため、CPU コアを切り替えるときにコンテキストを考慮する必要はありません。
各 CPU コアがスレッドを実行するとき、場合によってはスレッドがリソースを共有する必要があるため、これらのリソースを CPU の 1 つのコアから別のコアにコピーする必要があり、追加のオーバーヘッドが発生します。
CPU のコア数を確認します
cat /proc/cpuinfo を使用して CPU 情報、次の 2 つの情報を表示します。
プロセッサ、CPU プロセッサを指定します
CPU コア、プロセッサごとのコア数を指定します
システム コール sysconf を使用して CPU コアの数を取得することもできます:
リーリー
2 つのプロセッサを備えた仮想マシンを使用しています。各プロセッサにはコアが 1 つだけあり、これは 1 つのプロセッサ上の 2 つのコアに相当します。
プロセスIDの取得
リーリープロセスが現在実行されている CPU を表示する
リーリー表示された 10 進数の 3 を 2 進数に変換すると、下位 2 つが 1 になります。1 は 1 つの CPU に対応するため、プロセスは 2 つの CPU で実行されます。
cpu1で実行するプロセスを指定します
リーリーCPU ラベルは 0 から始まるので、cpu1 は 2 番目の CPU を表すことに注意してください (最初の CPU ラベルは 0)。
この時点で、アプリケーションは実行するために cpu1 にバインドされています。次を参照してください:
リーリープログラム起動時にCPUをバインドする
リーリー sched_setaffinity システムコールを使用しますsched_setaffinity は、プロセスを特定の CPU にバインドできます。
リーリー ###例### リーリー操作結果
リーリー CPU コアで実行するようにスレッドをバインドしますpthread_setaffinity_np 関数を使用してスレッドを CPU コアにバインドします。そのプロトタイプは次のように定義されます: リーリー 各パラメータの意味は sched_setaffinity と同様です。
###例### リーリー操作結果
リーリーこの記事の導入を通じて、CPU バインド テクノロジを使用してプロセスを特定の CPU コアにバインドし、それによってプロセスの実行効率を大幅に向上させる方法を学びました。実際のアプリケーションでは、さまざまなシナリオとニーズに応じて適切な CPU バインディング ソリューションを選択し、最高のパフォーマンス向上効果を達成できます。この記事が、読者の皆様の CPU バインディング テクノロジの理解と適用を深め、Linux システムの使用における作業効率の向上に役立つことを願っています。
以上がデュアルコア CPU キラーにより、Linux プロセスの実行が高速化されます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。