
Linux에서 프로세스의 프로세서 선호도를 어떻게 설정합니까?
답변1
이를 위해 작업 세트를 사용했습니다. 작업 세트가 설치되어 있는 경우 다음과 같습니다.
taskset -cp 0,2 45678
CPU 1과 3에 대한 선호도를 갖도록 ID 45678의 프로세스를 설정합니다.
답변2
프로세스 내부에서 호출은 sched_setaffinity()
또는 pthreads 항목의 경우pthread_setaffinity_np()
관련 메모에서, 프로그램의 CPU 선호도가 걱정된다면 프로그램이 메모리 할당을 수행하는 방식에도 주의를 기울이는 것이 좋습니다. 둘 이상의 컨트롤러에 메모리가 연결된 대규모 시스템(예: 각각 자체적인 여러 CPU 소켓)은 서로 다른 CPU-메모리 쌍 사이의 대기 시간과 대역폭이 가변적입니다. NUMA 선호도도 numactl
함께 작동하는 명령이나 시스템 호출을 사용하여 살펴보고 싶을 것입니다 . 제가 작업한 한 프로그램은 이를 통해 성능이 10% 향상되었습니다.
답변3
schedutils
(Linux 스케줄러 유틸리티)을 설치해야 합니다 . 내 우분투 데스크탑에서 사용했습니다.
SF링크
답변4
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