
rt
Linux 커널 에 대한 좋은 정보를 찾을 수 없습니다 lowlatency
.
왜 누군가가 그러는지 궁금합니다.~ 아니다지연 시간이 짧은 커널을 사용하고 싶습니다.
또한 구체적인 차이점이 무엇인지 알 수 있는 사람이 있다면 그것도 좋을 것입니다.
답변1
"일반", "낮은 대기 시간"(Ubuntu에서 구성됨) 및 RT("실시간") 등 다양한 구성은 모두 처리량과 대기 시간의 균형을 맞추는 것입니다. 일반 커널은 대기 시간보다 처리량을 선호하고, 다른 커널은 처리량보다 대기 시간을 선호합니다. 따라서 낮은 대기 시간보다 더 많은 처리량이 필요한 사용자는 낮은 대기 시간 커널을 선택하지 않을 것입니다.
일반 구성과 비교하여 낮은 대기 시간 커널은 다음 설정을 변경합니다.
- IRQ는 기본적으로 스레드됩니다. 즉, 더 많은 IRQ가(여전히 그렇지 않음을 의미합니다.)모두IRQ)는 선점될 수 있으며 우선순위를 지정하고 CPU 선호도를 제어할 수도 있습니다.
- 선점은 커널 전반에 걸쳐 활성화됩니다(
CONFIG_PREEMPT
대신에CONFIG_PREEMPT_VOLUNTARY
); - 그만큼대기 시간 디버깅도구가 활성화되어 사용자가 어떤 커널 작업이 진행을 차단하는지 확인할 수 있습니다.
- 타이머 주파수는 다음과 같이 설정됩니다.1000Hz대신에250Hz.
RT 커널 추가패치의 수메인라인 커널에 추가하고 몇 가지 구성을 더 조정했습니다. 대부분의 패치의 목적은 잠금을 제거하거나 분할하여 선점을 위한 더 많은 기회를 허용하고 커널이 중단 불가능한 작업을 처리하는 데 소비하는 시간을 줄이는 것입니다(특히 로깅 메커니즘을 개선하고 사용을 줄임으로써). . 이 모든 것의 목표는 커널을 허용하는 것입니다.마감일을 맞추기 위해,즉무언가를 처리해야 할 때 다른 일을 하느라 바쁘지 않은지 확인하세요. 이는 높은 처리량 또는 낮은 대기 시간과 동일하지 않지만 대기 시간 문제를 해결하는 데 도움이 됩니다.
대부분의 배포판에서 기본적으로 구성되는 일반 커널은 "합리적인" 절충안으로 설계되었습니다. 단일 작업이 시스템을 너무 오랫동안 독점할 수 없도록 하고 작업이 합리적으로 자주 전환될 수 있지만 처리량은 저하되지 않도록 합니다. — 커널이 작업 전환(커널 내부 또는 외부) 여부를 고려하거나 인터럽트를 처리하는 데 더 많은 시간을 소비할수록 시스템 전체가 "작업"하는 데 사용할 수 있는 시간이 줄어들기 때문입니다. 이러한 절충안은 실시간 오디오 또는 비디오 처리와 같이 대기 시간에 민감한 워크로드에는 충분하지 않습니다. 이러한 경우 낮은 대기 시간 커널은 일부 처리량을 희생하면서 더 낮은 대기 시간을 제공합니다. 그리고 실시간 요구 사항의 경우 실시간 커널은 더 많은 처리량을 희생하면서 대기 시간이 짧은 차단기를 최대한 많이 제거합니다.
Linux의 주류 배포판은 대부분 서버에 설치됩니다. 전통적으로 대기 시간은 그렇게 중요하게 간주되지 않았습니다(백분위수 성능 분석을 수행하고 최고 백분위수 성능에 관심이 있다면 동의하지 않을 수도 있음). 보수적인. 데스크톱 사용자는 커널 자체 문서에서 제안한 대로 지연 시간이 짧은 커널을 사용해야 합니다. 실제로 지연 시간이 짧은 커널을 더 많이 사용할수록 관련성에 대한 피드백이 더 많아지며 이는 기본 커널 구성에 일반적으로 적용 가능한 개선 사항을 얻는 데 도움이 됩니다. RT 커널에서도 마찬가지입니다. (많은 RT 패치는 어느 시점에서는 주류 커널용으로 만들어졌습니다.)
이 주제에 대한 프레젠테이션꽤 많은 배경을 제공합니다.
Linux 커널 버전 5.12부터"동적 선점"활성화할 수 있습니다. 이를 통해 커널 명령줄에서 다음을 사용하여 기본 선점 모델을 재정의할 수 있습니다.preempt=
매개변수. 이는 현재 none
(서버), voluntary
(데스크톱) 및 full
(낮은 지연 시간 데스크톱)을 지원합니다.
답변2
Stephen Kitt는 구성과 균형 그리고 기술적인 매개변수의 모든 장점을 설명했습니다. 나는 약간의 직관적인 차이점을 제시하고 싶습니다.
당신은 지프를 타고 지형을 달리며 사파리 여행을 하고 있습니다. 당신의 먹이가 달리고 있습니다. 먹이가 십자선에 있을 때 방아쇠를 당기면 소총이 발사됩니다. 계산은 간단합니다. 십자선에 있는 먹이=적중, 십자선에 없는 먹이=놓침 - 절실히 필요합니다낮은 대기 시간- 그런 다음 회복하고, 소총을 재장전하고, 다른 먹이를 찾습니다. 추가 속도나 규칙성이 필요하지 않습니다.지연 시간전부입니다.
해당 사파리의 비디오를 변환하고 있습니다. 길고 몇 시간이 걸립니다. 특정 프레임이 언제 처리되는지, 일부 프레임이 다른 프레임보다 처리하는 데 더 많은 시간이 걸리는지는 신경 쓰지 않아도 됩니다. 가능한 한 빨리 프로세스를 완료해야 합니다. 더 좋습니다.처리량근무 시간이 줄어든다는 뜻이고 다른 것은 중요하지 않습니다
당신은 전신을 받고 있습니다 – 단지 단락, 장, 공백 – 모르스는 해독하기 쉽고 각 펄스가 정확히 언제 시작되거나 종료되었는지 알 필요는 없지만보장하다, 당신이하는놓치지 마세요그 중 하나 - 당신이 필요실시간(느릴 수도 있고 전신이 그렇게 빠르지는 않지만규칙적이어야 한다
이 세 가지 예에서는 다음 중 하나만 명확하게 선택합니다.지연 시간,처리량또는정격, 명백한 이유로 다른 두 개를 희생합니다. 동시에 세 가지를 모두 가질 수 없다면 하나만 있으면 짧은 대기 시간이 필요합니다.
답변3
평신도의 용어로:
- 정기적으로 PC 작업을 수행하지 않는 경우 대기 시간이 짧은 커널이 적합합니다.
- 지속적으로 PC CPU 집약적인 작업을 수행해야 한다면 일반 커널이 적합합니다.
- 탐색, 비디오 재생, 음악 재생을 위해 PC를 일상적으로 사용한다면 낮은 대기 시간이 적합합니다.
- 게임을 하는 경우 낮은 대기 시간과 일반 간의 이론적인 차이는 하나를 제외한 모든 시나리오에서 낮은 대기 시간이 승리할 것입니다. 수준 로딩이지만 이는 SSD 유무와 SSD의 품질에 더 많이 좌우됩니다. 기본 SSD는 1X 속도로 작동하는 반면 최고 PCI-Express SSD는 6X 속도로 작동하기 때문입니다. 기존 하드 드라이브의 속도는 0.1X입니다. 예, SSD는 기존 하드 드라이브보다 60배 더 빠를 수 있습니다.
기본적으로 일반 커널은 가장 짧은 시간에 가장 많은 작업을 수행하는 반면 대기 시간이 짧은 커널은 PC의 응답성을 가장 높게 만듭니다. 커널이나 시스템에 버그가 발생하지 않는다고 가정합니다.
대부분의 사람들에게는 대기 시간이 짧은 커널이 가장 적합합니다. 그러나 항상 PC에 수행해야 할 작업이 많다면 일반 커널이 적합합니다.
다른 말로 하면 모든 코어에서 CPU 로드 시간의 90%가 60% 미만인 경우 대기 시간이 짧은 커널이 적합합니다. 반면에 모든 코어의 CPU 로드가 80%, 90% 이상인 경우에는 일반 커널이 적합합니다.
퀴즈: 벤치마크에서 어떤 커널의 점수가 더 높을까요? 지연 시간을 벤치마크 매개변수로 무시하는 한 일반 제품이 항상 경쟁에서 승리하지만 낮은 지연 시간은 위임할 준비가 되어 있는 문어를 옆에 두는 것과 같습니다.
답변4
왜냐하면 트레이드오프(trade-off)가 있기 때문이다. 프로세스 전환이나 인터럽트 진입/종료에는 시간이 걸립니다. 예를 들어 스케줄러를 250Hz 대신 1000Hz에서 실행하면 타이머 인터럽트가 발생하고 잠재적으로 프로세스를 4배 더 자주 전환한다는 의미입니다. 이를 통해 프로세스의 실행이 더 정기적으로 허용되므로 프로세스가 더 빠르게 반응할 수 있습니다. 그러나 인간으로서는 아무런 차이도 느끼지 못할 것입니다(250Hz는 4ms마다를 의미하며 이미 인간의 반응 시간보다 훨씬 빠릅니다).
처리 능력이나 I/O 처리량의 총량은 제한되어 있으며 스케줄러를 더 자주 호출하면 그 중 일부가 낭비된다는 의미일 뿐입니다.