RT 커널 사용 (낮은 지연 시간)

이 블로그의 훌륭한 추종자이자 해설자 인 Miguel Mayol은 히 스파 소닉 RT 커널의 사용에 대해, 우리는 일부 부분에서 공개하고 확장하기로 결정했습니다.

RT 커널 허용 최적의 성능 일부에서 특정 상황예를 들어, 오디오 편집 또는 가상 악기 사용.

멀티 태스킹 커널

대부분의 최신 운영 체제와 마찬가지로 Linux 커널은 멀티 태스킹입니다. 이것은 여러 프로그램이 동시에 실행되고 있음을 의미합니다.

실제로는 그렇지 않습니다. 당신이하는 일은 프로그램을 대기열에 넣고, 마이크로 프로세서가 일정 시간 동안 프로그램을 하나씩 실행하는 것입니다. 이것이 소진되면 마이크로 프로세서는 작업을 중단하고 작업을 중간에두고 다음 작업으로 넘어갑니다. 이 시간을 퀀텀 또는 타임 슬라이스라고하며 일정하지 않아도됩니다.

좋은 비유는 바의 요리사가 동시에 여러 가지 요리를 준비하는 것일 수 있습니다. 허리 샌드위치, 트리 프 샌드위치, 혼합 샐러드 ... 이제 빵을 깨고 팬을 켜고 가열하는 동안 양상추를 씻습니다.

양자가 충분히 작 으면 인간과 같은 느린 관찰자에게 주관적인 인상은 빠른 프로세서가 번갈아 작업을 실행하는 대신 각각의 프로세서를 느리게 처리한다는 것입니다 (동일한 주방의 여러 요리사가 각 작업을 천천히 수행 단일 플레이트).

작업 전환은 비용이 듭니다

멀티 태스킹은 무료가 아닙니다. 프로세서 오버 헤드를 수반합니다. 실제로 한 작업을 제거하고 다음 작업을로드하는 것은 추가 작업입니다. 이 작업을 '컨텍스트 전환'또는 '작업 전환'이라고합니다. 프로그램을 '슬라이스'로 잘라서 다른 프로그램으로 건너 뛰는 것보다 프로그램을 하나씩 완전히 실행하는 것이 CPU 측면에서 더 비용 효율적입니다. 그러나 시스템은 상호 작용을 잃게되며 여러 개의 창을 열 수 없으며 서버의 경우 여러 요청에 동시에 참석할 수 없습니다.

지연 시간 및 성능

우리 요리사가 새우 20kg의 껍질을 벗기고 올리브 20kg을 구워야한다고 가정 해 보겠습니다. 작업은 어떻게 계획됩니까?

극단적 인 경우에는 먼저 모든 새우를 껍질을 벗기고 맛이 섞이지 않도록 손을 씻은 다음 모든 올리브를 구 웠습니다. 다음과 같이 표현합니다.

GGGGGGGGGGGGGGGGGGGG…

반대 극단에서 그는 새우 껍질을 벗기고, 손을 씻고, 올리브를 뽑고, 손을 씻습니다. 새우, 올리브, 새우, 올리브 ... 우리는 이것을 다음과 같이 나타낼 것입니다.

GCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCAC…

'C'는 상황 변화를 나타냅니다 : 손 씻기,기구 교체 ...

동시에 웨이터는 고객의 요청을 수집합니다 : "하나는 새우와 함께!"... "하나는 올리브와 함께!"... 그리고 그들을 부엌으로 옮깁니다.

첫 번째 경우 고객이 들어 와서 새우의 일부를 요청한다고 가정합니다. 문제 없습니다. 즉시 제공됩니다. 그러나 그가 올리브를 요구한다면? 웨이터는 새우가 모두 껍질을 벗길 때까지 그것을 제공 할 수 없었습니다. 이 경우 요청이있을 때부터 참석할 때까지 걸리는 시간 인 대기 시간이 매우 길어집니다.

두 번째 경우에는 고객이 무엇을 요청하든 짧은 시간에 사용할 수 있으며 두 경우 모두 거의 동일합니다. 대기 시간은 낮지 만 비용이 발생합니다. 컨텍스트 변경으로 인해 CPU가 지원 작업 대신 직접 생산적인 작업을 수행하는 시간의 일부로 이해되는 성능이 저하됩니다.

분명히이 경우 이상적인 솔루션은 배급의 크기와 요청의 통계적 분포에 따라 달라지는 중간 지점이 될 것입니다. 큐잉 이론은 이러한 상황을 연구하고 최적의 솔루션을 제공하는 수학 분야입니다.

보시다시피 지연 시간과 성능은 반대입니다. 이러한 이유로 rt 커널이 더 많은 성능을 제공한다고 말하는 것은 옳지 않습니다. 반대로 지연 시간을 줄이면 시스템 성능이 저하되므로 웹 또는 데이터베이스 서버와 같이 초고속 응답이 필요하지 않은 시스템에는 적합하지 않습니다.

반대로, 대기 시간이 짧은 커널은 산업 제어 시스템 또는 대화 형 멀티미디어 응용 프로그램과 같이 외부 자극에 대한 최대 응답 속도가 필요한 상황에서 이상적이며 빠른 반응을 보장하기 위해 기계의 힘의 일부를 희생하고 있음을 알고 있습니다. .

우선 순위

멀티 태스킹 시스템에서 흥미로운 옵션은 가장 중요한 것은 프로세서로부터 더 많은 시간을 받고 덜 중요한 것은 덜받는 방식으로 작업에 다른 우선 순위를 부여하는 것입니다. 일반 커널에서는 'nice'명령으로 수행됩니다. 우리 요리사가 올리브보다 새우를 더 많이 제공하기를 기대한다면, 물론 이전에 더 많은 시간을 할애하는 것이 좋습니다.

커널 RT (또는 낮은 지연 시간)

일반 커널의 문제는 작업을 어디에서든 중단 할 수 없다는 것입니다. 다른 작업으로 전환하기 위해 중지 할 수있는 특정 실행 지점에 도달 할 때까지 기다려야합니다. 이것은 우리가 대기 시간이라고 부르는 것을 소개합니다.

간단히 말해서 RT 커널은 일반 커널보다 더 많은 곳에서 인터럽트 작업을 허용합니다. 말하자면, 그들은 더 얇은 시간 조각을 할 수 있으므로 현재 작업이 더 빨리 제거되고 우선 순위 작업이 CPU에 더 빨리 액세스 할 수 있습니다. 따라서 지연 시간이 더 짧아집니다.

RT 커널을 사용하면 그 시간에 긴급하게 필요한 것이 올리브를 가능한 한 빨리 구부리는 것이면 반 껍질을 벗긴 새우를 남길 수 있지만 일반 커널에서는 새우 껍질을 다 벗겨야합니다.

슬라이스를 더 얇게 만드는 것 외에도 RT 커널은 훨씬 더 엄격한 우선 순위 시스템을 가지고 있습니다. 우선 순위 작업은 CPU를 제어하기 위해 무자비하게 서로 펀치 (선점)하여 필요에 따라 다른 프로그램을 느리게합니다. 귀하의 요구 사항을 충족하십시오.

RT 커널을 사용하는 것이 언제 중요합니까?

두 가지 경우 :

1) 매우 낮은 대기 시간, 즉 기계의 매우 빠른 반응이 필요할 때. 가장 명확한 예는 MIDI 키보드의 키를 누를 때 즉시 소리를 내야하는 가상 악기의 성능입니다.

2) 매우 엄격한 우선 순위가 필요할 때, 즉 우리의 높은 우선 순위 작업이 세상의 어떤 것에 의해 중단되지 않도록합니다 (CPU가 너무 과부하되어 100 % 사용률을 초과하는 치명적인 경우가 아닌 경우). 예를 들어, Ardor로 오디오 세션을 녹음하고 페이더 표시기가 위아래로 움직이는 것을보고 있습니다. 마이크에서 하드 디스크로의 사운드 전송이 중단되지 않는 한 페이더의 리프레시 프레임을 잃어도 상관 없습니다. RT 커널은 오디오 샘플이 하나도 손실되지 않는 한 필요한만큼 페이더 새로 고침 속도를 늦 춥니 다.

즉, 일반적으로 최신 non-RT 커널은 스케줄링 시스템과 우선 순위 관리를 크게 개선했습니다. CPU가 그 가능성의 한계 (예 : 50 % 미만)에 있지 않거나 때때로 사운드에 작은 마이크로 컷 (클릭)이 있다는 사실을 염두에 두지 않으면 (훨씬 두려운 xruns) 커널 보통은 완벽하게 수용 가능한 성능을 제공합니다.

어떤 지연 시간이 권장됩니까?

개인적으로 10ms 미만이면 괜찮습니다. 20ms부터는 이미 지연을 분명히 알기 시작했습니다. 더 까다로운 사람들이 있습니다.

설치

Ubuntu 및 파생 제품 :

sudo apt-get install linux-headers-lowlatency 설치
sudo apt-get 설치 linux-lowlatency
sudo update-grub

시작시 두 가지 옵션 (일반 커널과 낮은 지연 시간)이 있습니다.

아치 및 파생 상품 :

yaourt -S 리눅스 -rt
sudo update-grub

출처 : 히 스파 소닉


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   조르디 프 데스

    매우 완전하고 좋은
    설명했습니다. 예, 음악 제작에 Linux를 사용하고 있습니다.
    일반 배포판이고 지연 문제가 없습니다.
    응답은 오디오를 재생할 때 즉각적입니다. 나는 많지 않다
    지식이 있지만 Linux의 오디오 드라이버는
    꽤 좋아 나는 좋은 것을 얻기 위해 잭도 필요하지 않습니다
    공연

  2.   카를로스

    훌륭한 기사와 설명이 더 좋을 수는 없습니다. 건배

  3.   칼레사25

    안녕하세요 : 매우 흥미 롭습니다. CPU + GPU 집약적 인 컴퓨팅 작업에서 테스트하겠습니다.

    Ubuntu 12.0 OS를 이전처럼 그대로 둘 수 있습니다. 즉, "linux-headers-lowlatency"를 제거하십시오. 문안 인사.

  4.   Th3Gh057

    기사 주셔서 대단히 감사합니다. 저 지연 코어가 어떻게 작동하는지 아는 것은 정말 흥미 롭습니다. 그것은 그것과 그것의 유용성에 대해 더 많이 아는 것에 대한 나의 관심을 불러 일으켰습니다. 건배

  5.   올리버

    멋진 기사! 더 반응이 빠른 키보드를 실행하려면 지연 시간이 짧은 커널이 필요하다는 말을 들었지만 그 이유와 방법을 알지 못했습니다. 비유는 매우 분명합니다.

  6.   용기

    네, 완전히 사실입니다.

    예를 들어 MIDI 컨트롤러를 사용하는 라이브 공연에서 다른 악기와 동시에 가야하고 높은 레이턴시로 연주 할 수 있습니다. 우리를 속이십시오.

    또는 반드시 가상 악기를 사용하는 것은 아니지만 녹음 중에 인터페이스를 통해 악기를 해석 할 때 혼란을 줄 수있는 지연이 발생합니다.

  7.   레이온

    훌륭한 기사, 커널에서 낮은 대기 시간이 무엇을 의미하는지 전혀 몰랐습니다 (램 모듈의 대기 시간과 관련이 있지만)

  8.   헤라르도 아조뇨스

    아주 좋아요. 정말 좋았어요.
    주제를 바꾸면 누군가가 공공 장소에서 작업 할 수없는 Wi-Fi (내 무릎의 무선) 문제를 해결하는 방법을 알고 있습니다. 신호가 매우 낮습니다.
    우분투 11.10이 있고 무릎은 Dell inspiron n4110입니다.
    미리 감사드립니다.

  9.   미켈 마욜 이 투르

    감사합니다. Sabayon이 기본적으로 1000Hz로 컴파일 된이 커널을 운반한다는 점을 추가해 주셔서 감사합니다.이 커널은 FPS 게임 서버와 FPS 게임 자체 및 까다로운 모든 게임에도 이상적입니다. Sabayon freeciv가 날 날려 버렸다 ..

    데스크톱에서는 일반적으로 기본 작업의 우선 순위를 지정하므로 다른 작업에는 덜 효율적이더라도 사용하는 것이 편리 할 수 ​​있습니다. 현재 수행중인 작업은 더 빠르게 진행될 것이며 현재 최신 컴퓨터에서는 가능합니다. 꽤 흥미 롭습니다.

    그것들을 설치하고, 일주일 동안 테스트하고, 커널로 돌아가서 (정상적으로), 그것이 어떻게되었는지, 우리가 선호하는 것을 보는 것, 그리고 그것들 각각이 더 나은 특정 작업을 위해 그것을 사용하는 문제입니다.

  10.   구스타보 트레 팟

    아주 잘 설명 된 훌륭한 기사.
    그라시아.

  11.   에스테반

    훌륭한 설명, 대단히 감사합니다, 그것은 저를 많이 도왔습니다 🙂

  12.   카를로스 마르티네즈

    매우 흥미로운 기사는 저 지연 커널이 나에게 적합한 지 여전히 의심 스럽지만 조금 더 명확 해졌습니다. 커널의 지연 시간을 어떻게 알 수 있습니까? 건배

  13.   JULIO

    최근에 우분투 스튜디오 배포판을 설치했는데 지연 시간이 짧다는 것을 깨달았고 귀하의 페이지를 조사했습니다. 나는 운영 체제의 기본 개념에 대해 매우 명확하며 귀하의 설명은 완벽했습니다. 당신은 그것을 해결했습니다. 축하합니다