Linux에서 프로세스의 프로세서 선호도를 설정하는 방법은 무엇입니까?
답변1
이를 위해 작업 세트를 사용했습니다. 작업 세트가 설치되어 있는 경우 다음과 같습니다.
taskset -cp 0,2 45678
CPU 1 및 3과 선호도를 갖도록 ID 45678의 프로세스를 설정합니다.
답변2
프로세스 내에서 호출은 sched_setaffinity()
또는 pthreads 항목의 경우pthread_setaffinity_np()
이와 관련하여 프로그램의 CPU 선호도가 걱정된다면 프로그램이 메모리를 할당하는 방법에도 주의를 기울일 가치가 있습니다. 여러 컨트롤러(즉, 각각 자체적으로 여러 CPU 소켓)에 연결된 메모리가 있는 대규모 시스템은 서로 다른 CPU-메모리 쌍 사이의 대기 시간과 대역폭이 가변적입니다. 또한 numactl
NUMA에서 사용하는 명령이나 시스템 호출을 사용하여 NUMA 종속성을 조사할 수도 있습니다. 제가 작업한 한 프로그램에서는 이로 인해 성능이 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