2011-10-06 2 views
2

다양한 OS의 CPU/코어에 특정 스레드/프로세스를 바인드하기 위해 스레드/프로세스 선호도를 적용하는 방법이 있음을 알고 있습니다. CPU 소켓 친화력을 강화하는 방법이 있는지 궁금합니다. 멀티 프로세서 칩을 수용 할 수있는 CPU 소켓에 바인딩되는 스레드/프로세스를 강제하는 것이다.CPU 소켓 연관 관계를 적용하는 방법은 무엇입니까?

질문은 날마다 멀티 프로세서가 증가하고 있기 때문에 발생합니다.

답변

1

내가 알고있는 유일한 방법은 어떤 스레드 ID가 어떤 소켓 (또는 NUMA 노드)에 매핑되는지를 찾는 것입니다. 이 정보를 얻은 후에는 일반적인 스레드 바인딩 메서드를 사용하여이를 적용 할 수 있습니다.

Linux를 사용하는 경우 numactl.h 라이브러리를 사용하여 NUMA 노드에 속한 하드웨어 스레드를 찾을 수 있습니다. NUMA 노드가 항상 소켓과 일대일 관계가있는 것은 아니지만, 모든 포스트 코어 2 제온 및 모든 옵테론 시스템을 날짜로 간주합니다.

Windows에서는 GetNumaNodeProcessorMask을 사용하여 노드에있는 하드웨어 스레드를 파악할 수 있습니다.

두 소켓이 동일한 NUMA 노드에있는 코어 2 제온과 같이 일대일 매핑하지 않는 경우에는 성능면에서 중요하지 않습니다. 각 프로세서의 공유 캐시를 미세 조정하려고합니다.

+0

즉, 현재 OS는 API 형태로 이러한 기능을 허용하지 않습니다. –

+0

Windows는 기본적으로 해당 API에서 지원합니다. Linux의 경우 해당 라이브러리가 필요합니다. 멀티 소켓 시스템은 이러한 패키지가 기본적으로 설치되기에 충분하지 않습니다. – Mysticial

+0

리눅스 용 멀티 소켓 라이브러리에 관한 링크를 공유 할 수 있습니까? 정말 도움이 될 것입니다. 감사. –

1

질문을 올바르게 이해하면 프로세스 또는 스레드의 선호도를 CPU에있는 코어 집합으로 설정하면됩니다.

운영 체제에 따라이 정보를 추론 할 수있는 방법이 있습니다. 예를 들어, 리눅스에서 /proc/cpuinfo을보고 주어진 코어에 속한 코어를 확인할 수 있습니다.

관련 문제