Linux에서 프로세스의 CPU 선호도를 설정하기위한 시스템 호출은 sched_setaffinity
입니다. 그런 다음 명령 행에이를 수행 할 수 있는 taskset
도구 가 있습니다.
단일 프로그램을 하나의 CPU에서만 실행하려면 다음과 같은 것을 원한다고 생각합니다.
taskset -c 1 ./myprogram
(모든 CPU 번호를 -c
스위치 의 인수로 설정하십시오 .)
다른 프로세스가 측정하려는 프로세스에 비해 너무 많이 실행되지 않거나 다른 CPU에 예약 된 경우 단일 프로세서 시스템에 충분히 가까워 야합니다. 하나의 CPU를 해당 단일 프로세스 에만 사용 하고 다른 프로세스가 해당 CPU에서 실행 되지 않도록 하려면 선호도도 설정해야합니다.
즉, 내가 하지 않습니다 제대로 수행하는 방법을 알고있다. init
부팅 프로세스 초기에 프로세서 선호도를 매우 일찍 설정 하여 시스템의 모든 프로세스에 상속되도록해야합니다. 이 문제를 해결하기 taskset -c -p 0 $PID
위해 다른 모든 프로세스에서 CPU # 0에서만 실행되도록 할 수 있습니다 .
systemd는CPUAffinity=
단위 파일의 선호도를 제어해야 하며 유닉스 SE에서 기본 선호도를 설정하는 방법 에 대한 몇 가지 질문이 있지만 좋은 해결책을 찾지 못했습니다.
로 비록 @Kamil Maciorowski가 주석 및 superuser.com에 대한 또 다른 질문에 대답 설정 isolcpus=1
상의 커널 명령 줄 당신이 할 수 있습니다 무언가이다, "일반 스케줄링 알고리즘에서 해당 CPU를 분리"해야한다.