다양한 OS의 CPU/코어에 특정 스레드/프로세스를 바인드하기 위해 스레드/프로세스 선호도를 적용하는 방법이 있음을 알고 있습니다. CPU 소켓 친화력을 강화하는 방법이 있는지 궁금합니다. 멀티 프로세서 칩을 수용 할 수있는 CPU 소켓에 바인딩되는 스레드/프로세스를 강제하는 것이다.CPU 소켓 연관 관계를 적용하는 방법은 무엇입니까?
질문은 날마다 멀티 프로세서가 증가하고 있기 때문에 발생합니다.
다양한 OS의 CPU/코어에 특정 스레드/프로세스를 바인드하기 위해 스레드/프로세스 선호도를 적용하는 방법이 있음을 알고 있습니다. CPU 소켓 친화력을 강화하는 방법이 있는지 궁금합니다. 멀티 프로세서 칩을 수용 할 수있는 CPU 소켓에 바인딩되는 스레드/프로세스를 강제하는 것이다.CPU 소켓 연관 관계를 적용하는 방법은 무엇입니까?
질문은 날마다 멀티 프로세서가 증가하고 있기 때문에 발생합니다.
내가 알고있는 유일한 방법은 어떤 스레드 ID가 어떤 소켓 (또는 NUMA 노드)에 매핑되는지를 찾는 것입니다. 이 정보를 얻은 후에는 일반적인 스레드 바인딩 메서드를 사용하여이를 적용 할 수 있습니다.
Linux를 사용하는 경우 numactl.h 라이브러리를 사용하여 NUMA 노드에 속한 하드웨어 스레드를 찾을 수 있습니다. NUMA 노드가 항상 소켓과 일대일 관계가있는 것은 아니지만, 모든 포스트 코어 2 제온 및 모든 옵테론 시스템을 날짜로 간주합니다.
Windows에서는 GetNumaNodeProcessorMask을 사용하여 노드에있는 하드웨어 스레드를 파악할 수 있습니다.
두 소켓이 동일한 NUMA 노드에있는 코어 2 제온과 같이 일대일 매핑하지 않는 경우에는 성능면에서 중요하지 않습니다. 각 프로세서의 공유 캐시를 미세 조정하려고합니다.
질문을 올바르게 이해하면 프로세스 또는 스레드의 선호도를 CPU에있는 코어 집합으로 설정하면됩니다.
운영 체제에 따라이 정보를 추론 할 수있는 방법이 있습니다. 예를 들어, 리눅스에서 /proc/cpuinfo
을보고 주어진 코어에 속한 코어를 확인할 수 있습니다.
즉, 현재 OS는 API 형태로 이러한 기능을 허용하지 않습니다. –
Windows는 기본적으로 해당 API에서 지원합니다. Linux의 경우 해당 라이브러리가 필요합니다. 멀티 소켓 시스템은 이러한 패키지가 기본적으로 설치되기에 충분하지 않습니다. – Mysticial
리눅스 용 멀티 소켓 라이브러리에 관한 링크를 공유 할 수 있습니까? 정말 도움이 될 것입니다. 감사. –