CPU 코어 스레드 분류 기능
-
20-09-2019 - |
문제
프로세스간에 매우 대량의 대량 메시지 전달을위한 멀티 스레드 공유 메모리 메모리 시스템을 작성할 것입니다. 메시지는 웹 서버의 작업자 스레드에서 발생합니다. 동일한 CPU 공유에서 코어를 사용하는 CPU 캐시 지역을 이용하고 싶습니다. 이 IPC 시스템의 수신 끝에 작업자 스레드를 깨울 때 동일한 CPU에서 스레드를 깨우십시오.
나는 Linux (Genaral에서 preferly posix)와 Windows가 필요합니다. :
struct thread_core_id
{
uint16_t cpu_Id;
uint16_t core_Id;
};
두 플랫폼의 기능은 크게 높이 평가 될 것입니다. 나는 이것이 시스템 호출 (즉, 컨텍스트 스위치)없이 수행 될 수 있기를 바라고 있습니다.
-- 편집하다 --
현재 X86에 중점을두고 있지만 다른 아키텍처도 유용 할 것입니다.
해결책
Linux의 경우 특히 필요한 정보를 얻을 수 있어야합니다. /proc/cpuinfo
그리고 /sys/devices/system/cpu/cpu*/cache
그리고 그것을 사용하십시오 sched_{s|g}etaffinity()
전화. 보세요 모든 프로그래머가 기억에 대해 알아야 할 것, 아직 5.3 절 주위에.
제휴하지 않습니다 StackOverflow