CPU予約と優先度のためにJVMでワークセットとisolcpusカーネルパラメータを使用しますか?

CPU予約と優先度のためにJVMでワークセットとisolcpusカーネルパラメータを使用しますか?

一定量の CPU を予約するには JVM が必要です。私の研究では、他のプロセスがそのCPUを使用しないようにtasksetカーネルパラメータを使用して作業することができます。isolcpus=<CPU_ID>

いくつかの問題が発生します。

  • プロセスを最初から再開する必要がありますかtaskset
  • 予約とは、プロセスがそのCPUでのみ実行でき、リソースに問題がある場合は別のCPUに拡張できることを意味しますか?

答え1

通常、これを使用してtasksetプロセスの開始後にプロセスを制限します。以下を使用してpidof javaJavaアプリケーションのPIDを確認できますtaskset

$ taskset -p $(pidof java) --cpu-list 0-2,5

メモ:6つのCPUがある場合、0、1、2、5はJVM PIDの対応するCPUに好みを割り当てます。

好みは、他のプロセスがそのCPUを使用することを制限するものではなく、taskset排他性を制限するのではなく、特定のプロセスを特定のCPUセットに制限するツールに近いです。

ワークセットのマニュアルページから抜粋

ワークセットは、指定されたPIDを持つ実行中のプロセスのCPUアフィニティを設定または取得するため、または指定されたCPUアフィニティを使用して新しいコマンドを開始するために使用されます。 CPU アフィニティは、プロセスをシステムの特定の CPU セットに「バインド」するスケジューラ属性です。 Linux スケジューラは指定された CPU アフィニティを尊重し、プロセスは他の CPU で実行されません。 Linuxスケジューラは自然なCPUの好みもサポートします。パフォーマンス上の理由から、スケジューラは可能な限りプロセスを同じ CPU に保持しようとします。したがって、特定のCPUの好みを強制することは、特定のアプリケーションでのみ有用です。

代替

この自己回答型U&Lクイズの質問は次のとおりです。cgroupを使用してホワイトリストを除くすべてのプロセスを単一のCPUに制限する方法は?これを行うためにcgroupを使用する方法を扱うトピックです。

引用する

関連情報