Linux에서 프로세스의 프로세서 선호도를 어떻게 설정합니까?

Linux에서 프로세스의 프로세서 선호도를 어떻게 설정합니까?

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

관련 정보