답변:
프로세스 내에서 호출은 sched_setaffinity()
pthreads 또는pthread_setaffinity_np()
관련 메모에서 프로그램의 CPU 선호도가 걱정된다면 메모리 할당 방식에주의를 기울이는 것이 좋습니다. 둘 이상의 컨트롤러에 연결된 메모리가있는 더 큰 시스템 (즉, 각각 자체 CPU 소켓이 여러 개 있음)은 서로 다른 CPU 메모리 쌍간에 가변 레이턴시 및 대역폭을 갖습니다. numactl
명령 또는 작동하는 시스템 호출을 사용하여 NUMA 선호도를 조사하고 싶을 것 입니다. 내가 일한 한 프로그램은 이것으로부터 10 %의 성능 향상을 얻었습니다.
taskset -c 1-3 ./a.out arg1 arg2
a.out
주어진 인수와 선호도를 프로세서 1, 2 또는 3 (0 기준)으로 설정 하여 프로세스를 시작합니다 .
다음은 실제로 작동하는 데 사용할 수있는 최소 C 테스트 프로그램입니다. https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in-linux-from -c / 50117787 # 50117787
taskset -p -c 1,3 45678
아닌 명령이어야한다고 제안했습니다taskset -c 1,3 -p 45678
. 즉,-c 1,3
는 마스크 사양이므로 반드시-p
와 사이에 배치해야 합니다pid
.