누군가가 대기 시간이 짧은 코어를 사용하지 않기로 선택하는 이유는 무엇입니까?

누군가가 대기 시간이 짧은 코어를 사용하지 않기로 선택하는 이유는 무엇입니까?

rtLinux lowlatency커널 에 대한 좋은 정보를 찾을 수 없습니다 .

누군가는 왜 그러는지 궁금해요아니요대기 시간이 짧은 코어를 사용하고 싶습니다.

또한 누군가가 구체적인 차이점이 무엇인지 알 수 있다면 좋을 것입니다.

답변1

"Universal", "Low Latency"(Ubuntu의 경우) 및 RT("Real Time") 등 다양한 구성은 처리량과 대기 시간의 균형을 맞추도록 설계되었습니다. 범용 코어는 대기 시간보다 처리량을 중요하게 생각하고 다른 코어는 처리량보다 대기 시간을 중요하게 생각합니다. 따라서 낮은 대기 시간보다 더 많은 처리량이 필요한 사용자는 낮은 대기 시간 코어를 선택하지 않을 것입니다.

낮은 대기 시간 코어는 일반 구성과 비교하여 다음 설정을 변경합니다.

  • 기본적으로 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는 구성과 균형, 그리고 모든 좋은 기술 매개변수를 설명합니다. 나는 단지 약간의 시각적 차이를 제공하고 싶습니다.

  • 당신은 지프를 타고 지형을 가로지르는 사파리 여행을 하고 있습니다. 당신의 먹잇감이 도망가고 있습니다. 방아쇠를 당기면 먹이가 십자선에 있을 때 소총이 발사됩니다. 계산은 간단합니다. 십자선에 있는 먹이 = 적중, 십자선에 없는 먹이 = 놓침 - 긴급하게 필요합니다낮은 대기 시간- 그런 다음 회복하고, 소총을 재장전하고, 다른 먹이를 사냥합니다. 추가 속도나 규칙성이 필요하지 않습니다.숨어있는그게 다야.

  • Safari에서 이 비디오를 변환하고 있습니다. 길고 몇 시간이 걸립니다. 특정 프레임이 처리되는 시기와 일부 프레임이 다른 프레임보다 처리하는 데 더 많은 시간이 걸리는지 여부는 중요하지 않습니다. 가능한 한 빨리 프로세스를 완료해야 합니다.처리량시간이 줄어들고 다른 것은 중요하지 않습니다

  • 당신이 받은 것은 짧고 길며 공간이 넓은 전보였습니다. 모스 전신은 해독하기 쉬웠고 각 펄스가 언제 시작되고 끝나는지 정확히 알 필요는 없었지만보장하다, 당신이 한놓치지 마세요다음 중 하나 - 필요한 것실시간(느릴 수도 있고, 전신이 그렇게 빠르지는 않지만규칙적이어야 함

이 세 가지 예 중에서 분명히 하나만 선택하셨습니다.숨어있는,처리량또는정격, 다른 두 가지를 희생시키면서-명백한 이유로. 세 가지를 모두 가질 수 없다면 그 중 하나에 대해서만 낮은 지연 시간이 필요합니다.

답변3

평신도의 용어로:

  • 정기적으로 PC 작업을 완료하지 않는 경우 대기 시간이 짧은 코어가 적합합니다.
  • PC에서 CPU 집약적인 작업을 자주 수행한다면 범용 코어가 적합합니다.
  • 컴퓨터를 아무렇지도 않게 사용하여 비디오, 음악을 탐색하고 재생한다면 낮은 대기 시간이 적합합니다.
  • 게임을 하는 경우 낮은 대기 시간과 범용 간의 이론적인 차이점은 낮은 대기 시간이 한 가지 경우를 제외한 모든 경우에서 승리한다는 것입니다. 그러나 이는 SSD 보유 여부와 기본 SSD로서의 SSD 품질에 따라 달라집니다. 최고 속도의 PCI-Express SSD는 6배 속도로 작동합니다. 기존 하드 드라이브의 속도는 0.1배입니다. 결과적으로 SSD는 기존 하드 드라이브보다 60배 더 빠릅니다.

기본적으로 범용 코어는 가장 짧은 시간에 가장 많은 작업을 수행하는 반면, 지연 시간이 짧은 코어는 커널이나 시스템에 버그가 발생하지 않는다는 가정 하에 PC의 반응성을 극대화합니다.

대부분의 사람들에게는 지연 시간이 짧은 코어가 가장 적합합니다. 그러나 항상 PC에 할 일이 많다면 General Purpose Core가 적합합니다.

즉, 모든 코어의 CPU 로드가 시간의 60% 90% 미만인 경우 지연 시간이 짧은 코어가 적합합니다. 반면, 모든 코어의 CPU 로드가 대부분의 경우 80%, 90% 이상인 경우 범용 코어가 적합합니다.

퀴즈: 벤치마크에서 어떤 코어 점수가 더 좋나요? 대기 시간을 기본 매개 변수로 무시하는 한 Universal은 항상 경쟁에서 승리하지만 대기 시간이 짧다는 것은 위임할 준비가 된 문어가 옆에 있는 것과 같습니다.

답변4

왜냐하면 그것은 절충안이기 때문입니다. 프로세스 전환이나 인터럽트 진입/종료에는 시간이 걸립니다. 예를 들어, 스케줄러를 250Hz 대신 1000Hz로 실행하면 타이머 인터럽트가 발생하고 프로세스가 4배 더 자주 전환될 수 있음을 의미합니다. 이렇게 하면 프로세스가 더 자주 실행될 수 있으므로 응답성이 더 높아집니다. 그러나 인간으로서는 아무런 차이도 느끼지 못할 것입니다(250Hz는 4밀리초에 한 번을 의미하며 이는 이미 인간의 반응 시간보다 훨씬 빠릅니다).

처리 능력이나 I/O 처리량에는 유한한 양이 있으며 스케줄러를 더 자주 호출하면 그 중 일부가 낭비된다는 의미입니다.

관련 정보