2016-09-13 4 views
0

「1コアを使用する」という明白な方法なしに、ライセンス供与のためのCPU数をチェックするサードパーティのライブラリがあります。Eclipseから起動したときにJavaプロセスのCPUアフィニティを設定する

この制限を回避するために、プロセスの初期段階でCPUアフィニティを開始できるようにしたいと考えています。

Eclipse内で起動されたプロセスに対してCPUアフィニティを設定する方法はありますか?私はワークフローを比較的同じに保ちたい、つまりデバッグなどができるようにすることを意味する。

私はJVMに依存するソリューションを好むが、オプションまたはEclipseランナー・パラメーター。

+0

これはちょっと困惑しています。 [あなたはおそらくJNIなしでそれをすることはできません](http://stackoverflow.com/q/2238272/1079354)、実際には困惑していることは私があなたがしていると思われるものです。なぜあなたのコードベースは、現代のサーバーのほとんどが16を超えると仮定して、コアごとに*チェックするライセンスに依存していますか? – Makoto

+0

どのOSですか? –

+0

@Makoto「コアごとにチェックするライセンスにコードベースが頼っているのはなぜですか?」最初の文章。それは私のコードベースではありません - 私が制御しないサードパーティのライブラリのコードベースです。リンクをありがとう、私はそれをチェックします。 –

答えて

0

は次のようになります。

How to use Java Native Access to set process affinity for processes besides Java.exe?

は、少なくともWindows用の質問自体にソリューションを提供します。後世のためにここにコピー:このパー

private void setDesiredCpuAffinity() { 
     int pid = -1; // -1 means current process 
     AffinityKernel instance = (AffinityKernel) Native.loadLibrary("Kernel32", AffinityKernel.class); 
     int affinityMask = 7; // Use 3 CPUs 
     System.out.println(instance.SetProcessAffinityMask(new HANDLE(new Pointer(pid)), affinityMask)); 
    } 

    private static interface AffinityKernel extends Kernel32 { 
     public boolean SetProcessAffinityMask(HANDLE hProcess, int dwProcessAffinityMask); 
    } 

SetProcessAffinityMaskの最初のパラメータはHANDLE hProcessです。このパー

HPROCESS = -1現在のプロセスを意味します。

関連する問題