4개의 코어(예: Intel I5)와 1000mA가 있는 CPU가 있는 경우 Linux 스케줄러에 의해 중단되지 않고 해당 코어에서만 프로세스가 몇 밀리초 동안이라도 실행되도록 해야 합니다.
내가 무엇을해야 하나?
이 질문에 덧붙여서 연구를 해서 이론이 생겼습니다.
- 내가 원하는 코어를 제외하도록 프로세스 CPU 선호도를 설정합니다. 이러한 코어를 방지하기 위해 다른 모든 프로세스를 설정합니다.
- 프로세스에 대한 FIFO 정책을 사용하도록 Linux 스케줄러를 설정합니다. 즉, CPU가 해제될 때 프로세스가 중지되지 않습니다.
- FIFO 정책과 경쟁하지 않으려면 다른 모든 프로세스를 유휴 상태로 설정하세요.
- 커널이 이러한 CPU 코어를 사용하지 못하도록 하려면 isolcpus 커널 옵션을 설정하십시오.
Linux 스케줄러에 대해 아는 것이 있으면 프로세스가 CPU 코어를 독점하지 않도록 프로세스를 일시 중지하도록 설계되어 있기 때문에 프로세스가 중지되는 것을 방지하는 것이 가능한지 잘 모르겠습니다.
일부 연구 및 과학 애플리케이션에서는 실시간 애플리케이션을 캡슐화하는 가상 머신을 실행해야 하기 때문에 이 문제는 중요합니다. 따라서 Linux가 프로세스 목록을 확인하거나 CPU 코어를 다른 프로세스에 릴리스하기 위해 가상 머신을 중지하면 해당 애플리케이션도 중지됩니다.
답변1
몇 밀리초 동안이라도 Linux 스케줄러의 방해를 받지 않고 이러한 코어에서만 프로세스를 계속 실행해야 합니다.
이는 불가능합니다(사용자 영역 애플리케이션의 경우). Linux(가장 일반적인 운영 체제와 마찬가지로)는 다음을 사용합니다.선제공격일정.
그러나 다음 내용을 자세히 읽어 보십시오.실시간리눅스&제노마이
(물론 커널 부분은 비선점형인 경향이 있지만 그런 목적으로 커널 모듈을 작성하고 싶지는 않을 것입니다)
실제로 벤치마크 목표에 비해 선점을 무시할 수 있도록 시스템을 구성할 수 있을 것이라고 확신합니다. 스케줄링 오버헤드는 밀리초가 아닌 마이크로초 단위일 수 있습니다(또는 그렇게 구성될 수 있습니다).
(그렇지 않으면 Linux 사용을 포기합니다)
바라보다예약(7)