web-dev-qa-db-ja.com

1つのCPUを1つのプロセスに割り当てる方法

そのPIDを持つプロセスがそのCPUで実行されている間、他のプロセスがそのCPUを使用できないように、1つのCPUを1つのプロセスに割り当てる方法

3
noob

man tasksetから:

tasksetは、PIDを指定して実行中のプロセスのCPUアフィニティを設定または取得するため、または特定のCPUアフィニティで新しいコマンドを起動するために使用されます。 CPUアフィニティは、プロセスをシステム上の特定のCPUセットに「結合」するスケジューラプロパティです。 Linuxスケジューラは、指定されたCPUアフィニティを優先し、プロセスは他のCPUで実行されません。 Linuxスケジューラーは、自然なCPUアフィニティーもサポートしていることに注意してください。スケジューラーは、パフォーマンス上の理由から実用的な限り、同じCPUでプロセスを維持しようとします。したがって、特定のCPUアフィニティを強制することは、特定のアプリケーションでのみ役立ちます。

これにより、プロセスが特定のCPU(またはCPUセット)でのみ実行されることが保証されますが、アフィニティ設定では、これらのCPUで他のプロセスが実行されないことは保証されません。これを達成するために、niceness(またはNice levelを変更できると思います)プロセスの最小値(1)-詳細については、man Niceおよびman reniceを参照してください。

最低のNiceレベルを設定すると、実行中にプロセスがCPUを別のタスクに割り当てないことが保証されます-ただし、保証は100%ではありません(たとえば、システムに同じ優先度の別のプロセスがある場合、両方のプロセスがCPUを共有する予定)

5
Sergey