Linux에서 프로세스의 프로세서 선호도를 설정하는 방법은 무엇입니까?

Linux에서 프로세스의 프로세서 선호도를 설정하는 방법은 무엇입니까?

Linux에서 프로세스의 프로세서 선호도를 설정하는 방법은 무엇입니까?

답변1

이를 위해 작업 세트를 사용했습니다. 작업 세트가 설치되어 있는 경우 다음과 같습니다.

taskset -cp 0,2 45678

CPU 1 및 3과 선호도를 갖도록 ID 45678의 프로세스를 설정합니다.

답변2

프로세스 내에서 호출은 sched_setaffinity()또는 pthreads 항목의 경우pthread_setaffinity_np()

이와 관련하여 프로그램의 CPU 선호도가 걱정된다면 프로그램이 메모리를 할당하는 방법에도 주의를 기울일 가치가 있습니다. 여러 컨트롤러(즉, 각각 자체적으로 여러 CPU 소켓)에 연결된 메모리가 있는 대규모 시스템은 서로 다른 CPU-메모리 쌍 사이의 대기 시간과 대역폭이 가변적입니다. 또한 numactlNUMA에서 사용하는 명령이나 시스템 호출을 사용하여 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

관련 정보