%20CPU%20%EC%84%A0%ED%98%B8%EB%8F%84%20%EC%84%A4%EC%A0%95.png)
저는 여러 병렬 애플리케이션(예: OpenMP/pthreaded 애플리케이션)을 예약하고 Linux 기반 멀티프로세서 플랫폼의 특정(파티션된) 코어에서 애플리케이션을 실행하는 방법에 대한 연구를 진행하고 있습니다.
sched_setaffinity()
시스템 호출을 사용하여 각 애플리케이션에 대한 CPU 선호도를 설정할 수 있습니다 . 그러나 아시다시피 Linux는 (모든) 실행 중인 프로그램도 관리합니다. 따라서 예약된 애플리케이션의 실행이 Linux에서 예약된 다른 프로세스에 의해 중단되는 경우가 있습니다.
모든 프로세스와 데몬(예약된 애플리케이션 제외)을 CPU 0으로 설정하고 싶습니다. 내 첫 번째 생각은 커널 모듈의 init 작업에서 모든 작업을 반복하여 CPU 0을 수동으로 설정하는 것이었습니다. 그러나 결과는 Linux 로드 밸런싱의 영향을 받습니다. Linux CPU 로드 밸런싱을 끄거나 관리하는 다른 방법이 필요합니다.
이를 수행할 수 있는 방법이나 시스템 구성이 있습니까? 내 대상 플랫폼은 AMD Opteron 서버(64개 코어 포함)이고 Linux 버전은 3.19입니다.
답변1
커널에 첫 번째 CPU만 사용하도록 지시하여 N
자동 로드 밸런싱을 비활성화 할 수 있어야 합니다. 예를 들어, 부팅 매개변수에 다음을 추가하면 전체 시스템이 CPU #0에서 효과적으로 실행됩니다(시스템은 단일 CPU만 사용하므로).
maxcpus=1
그런 다음 또는 이와 유사한 것을 사용하여 taskset
다른 CPU에서 프로세스를 실행하십시오.