67

Javaプロセス内の個々のスレッドを特定のCPUコア(Linux上)にロックダウンする方法を知っている人はいますか? C でこれを実行しましたが、Java でこれを行う方法が見つかりません。私の直感では、これには JNI 呼び出しが必要ですが、ここにいる誰かが何らかの洞察を持っているか、以前にそれを行ったことがあるかもしれないことを望んでいました。

ありがとう!

4

5 に答える 5

9

久しぶりですが、誰かがこのスレッドに出くわした場合、これが私がこの問題を解決した方法です。次のようなスクリプトを作成しました。

  1. 「jstack-l」
  2. 結果を取得し、手動でコアにロックダウンするスレッドの「nid」を見つけます。
  3. それらのスレッドをタスクセットします。
于 2011-04-22T15:55:26.597 に答える
0

それは不可能です (少なくともプレーンな Java では)。

スレッド プールを使用して、さまざまな種類の作業に使用されるスレッド (したがってコア) の量を制限できますが、使用するコアを指定する方法はありません。

お使いの Java ランタイムが OS またはハードウェアのネイティブ スレッドをサポートしていない (わずかな) 可能性さえあります。この場合、グリーン スレッドが使用され、JVM 全体に対して 1 つのコアのみが使用されます。

于 2010-02-10T16:37:55.110 に答える
0

IMO、ネイティブ呼び出しを使用しない限り、これは不可能です。JVM はプラットフォームに依存しないはずです。これを実現するためにシステム コールを実行しても、移植可能なコードにはなりません。

于 2010-02-10T16:09:02.073 に答える