it-swarm-ko.tech

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

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

31
chillitom

나는 이것을 위해 taskset을 사용했습니다. 작업 세트가 설치된 경우 다음과 같습니다.

taskset -c 0,2 -p 45678

iD가 45678 인 프로세스를 cpus 1과 3에 대한 선호도를 갖도록 설정합니다.

26
kbyrd

프로세스 내에서 호출은 sched_setaffinity()이거나 pthreads의 경우 pthread_setaffinity_np()입니다.

관련 메모에서 프로그램의 CPU 친화성에 대해 걱정하는 경우 메모리 할당 방식에도주의를 기울이는 것이 좋습니다. 하나 이상의 컨트롤러에 연결된 메모리가있는 대형 시스템 (즉, 각각 고유 한 여러 CPU 소켓)은 서로 다른 CPU- 메모리 쌍간에 가변 지연 시간과 대역폭을 갖습니다. numactl 명령 또는 작동하는 시스템 호출을 사용하여 NUMA 선호도도 조사 할 수 있습니다. 내가 작업 한 한 프로그램은 이것으로 10 %의 성능 향상을 얻었습니다.

7
Phil Miller

schedutils (Linux 스케줄러 유틸리티)를 설치해야합니다. 내 Ubuntu 데스크탑에서 사용했습니다.

SF 링크

3
Hemant
taskset -c 1-3 ./a.out arg1 arg2

주어진 인수와 선호도가 프로세서 1, 2 또는 3 (0 기반)으로 설정된 a.out 프로세스를 시작합니다.

다음은 실제 동작을 확인하는 데 사용할 수있는 최소 C 테스트 프로그램입니다. https://stackoverflow.com/questions/10490756/how-to-use-sched-getaffinity-and-sched-setaffinity-in -linux-from-c/50117787 # 50117787