산업용 기계 제어/로봇 공학 등에 이상적으로 적합한 실시간 특성을 갖도록 Linux 컨테이너(예: cgroups/네임스페이스 격리 프로세스 트리)를 구성할 수 있는 방법이 있습니까?
아마도 컨테이너와 아무 관련이 없으며 항상 단일 프로세스에 실시간 기능을 제공하는 것일까요? OTOH, 이러한 컨테이너에는 완전히 다른(RT?) Linux 배포판이 포함될 수 있으며 멀티 코어 프로세서의 한 코어에 독점적으로 액세스할 수 있습니까?
현재로서는 구체적인 사용 사례가 없습니다. Linux가 대체할 수 있는지/어떻게 대체할 수 있는지 궁금합니다.PLC.
답변1
가능하지만 요구 사항에 따라 그렇지 않을 수도 있습니다.
"실시간"은 낮은 대기 시간의 개념을 의미합니다. 즉, 이론상으로는 "지연 시간 없음"을 의미하지만 실제로는아니요결국 대기 시간은 불가능합니다. 입력이 일부 출력을 생성하기 전에 항상 발생해야 하는 처리가 있으므로 항상 발생합니다.일부단 하나의 클럭 사이클이라도 지연됩니다.
그러나 지연이 있고 지연이 있으며 일곱 가지가 있습니다 ;-)
프로세스 또는 해당 디스패치 큐의 우선순위를 변경하거나 대기 시간이 짧은 C 라이브러리로 전환하면 Linux 시스템에서 대기 시간을 줄일 수 있습니다. 이는 이미 다음 요구 사항을 충족합니다.일부"라이브" 설정의 한 형태입니다. 그게 전부라면 물론 컨테이너를 사용하면 시스템의 지연 시간이 짧은 부분을 나머지 부분과 분리할 수 있습니다(해당 컨테이너의 프로세스가 일정 우선 순위를 수정하도록 허용하는 경우). 큰 차이를 참조하세요.
그러나 더 많은 작업을 수행해야 할 수도 있습니다. 대기 시간을 수정하는 더 많은 방법이 있습니다. "가장 적은 작업"부터 "가장 많은 작업"까지의 순서대로 다음을 알고 있습니다.
- 대부분의 기본 배포 커널에서는 스케줄러 작동 방식을 변경하는 일부 부팅 시간 옵션을 설정하여 대기 시간을 줄일 수 있습니다(평균 대기 시간은성능고생할 수도 있음)
- 설정할 수 있는 컴파일 시간 옵션도 많이 있습니다(현재 많은 옵션이 부팅 시간 옵션으로 변경되었지만 여전히 몇 가지 남아 있습니다).
- 보다 엄격한 실시간 요구 사항을 충족하는 지연 시간이 짧은 패치가 많이 있습니다(또는 적어도 제가 마지막으로 확인했을 때).
이들 중 하나가 필요한 경우 컨테이너는 여전히 시스템의 나머지 부분과 동일한 커널을 사용하기 때문에 컨테이너가 도움이 되지 않습니다.
그러고 보면 어떤 경우에는가능한동일한 시스템의 다른 애플리케이션과 함께 컨테이너에서 라이브 애플리케이션을 실행하려면 이에 반대하는 것이 좋습니다. 동일한 시스템에서 여러 작업을 실행하면 시스템에서 실행 중인 애플리케이션이 지연될 가능성이 높으므로 컨테이너가 필요한 작업을 수행하도록 허용하더라도 시스템이 이를 따라잡지 못할 수 있습니다.