2016-09-13 2 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 "왜 코드베이스가 핵심 코드를 검사하는 라이센스에 의존하고 있습니까?"첫 문장. 그것은 "제 코드베이스"가 아닙니다 - 제가 통제하지 않는 제 3 자 라이브러리의 코드베이스입니다. 링크 주셔서 감사합니다, 나는 그것을 체크 아웃합니다. –

답변

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 현재의 프로세스를 의미한다.

관련 문제