Korzystanie z jądra RT (małe opóźnienie)

Miguel Mayol, świetny obserwator i komentator tego bloga, polecił artykuł opublikowany w Hispasoński na temat używania jąder RT, które postanowiliśmy opublikować i rozszerzyć w niektórych jego częściach.

L Jądra RT pozwól optymalna wydajność w niektórych szczególne sytuacjeNa przykład edycja dźwięku lub użycie wirtualnych instrumentów muzycznych.

Jądro wielozadaniowe

Jądro Linuksa, podobnie jak większość nowoczesnych systemów operacyjnych, jest wielozadaniowe. Oznacza to, że jednocześnie działa kilka programów.

W rzeczywistości tak nie jest. To, co robisz, to umieszczanie programów w kolejce, a mikroprocesor wykonuje je jeden po drugim przez określony czas. Gdy to się wyczerpie, mikroprocesor przerywa zadanie, pozostawiając je w połowie i ustępuje następnemu. Ta ilość czasu nazywana jest kwantem lub wycinkiem czasu i nie musi być stała.

Dobrą analogią może być kucharz w barze, przygotowujący kilka potraw jednocześnie: kanapkę ze schabu, flaczki, mieszankę sałat ... Teraz tłuczę chleb, włączam patelnię, podczas podgrzewania myję sałata itp.

Jeśli kwant jest wystarczająco mały, subiektywne wrażenie dla powolnego obserwatora, takiego jak człowiek, jest takie, że zamiast szybkiego procesora wykonującego zadania naprzemiennie mamy powolny procesor dla każdego z nich (kilku kucharzy w tej samej kuchni powoli robi każde jeden pojedynczy talerz).

Przełączanie zadań wiąże się z kosztami

Wielozadaniowość nie jest darmowa: wiąże się z obciążeniem procesora. Rzeczywiście, wyrzucenie jednego zadania i załadowanie następnego to dodatkowa praca. Operacja ta nosi nazwę „przełączania kontekstu” lub „przełączania zadań”. Z punktu widzenia procesora bardziej opłacalne byłoby uruchamianie programów w całości, jeden po drugim, niż pocięcie ich na „plasterki” i przeskakiwanie z jednego do drugiego. Jednak system straciłby interaktywność, nie moglibyśmy mieć otwartych kilku okien lub, w przypadku serwera, obsługiwać kilka żądań jednocześnie.

Opóźnienie i wydajność

Przypuśćmy, że nasz kucharz musi obrać 20 kilogramów krewetek i wypić 20 kilogramów oliwek. Jak planowana jest praca?

W skrajnym przypadku najpierw obrałby wszystkie krewetki, umył ręce, aby uniknąć mieszania smaków, a następnie wszystkie oliwki pestki. Przedstawimy to w ten sposób:

GGGGGGGGGGGGGGGGGGGGG… C AAAAAAAAAAAAAAAAAAAAAA…

Z drugiej strony obrałby krewetkę, umył ręce, wypił oliwkę, umył ręce ... krewetka, oliwka, krewetka, oliwka ... Przedstawimy to w ten sposób:

GCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCAC…

Litera `` C '' oznacza zmianę kontekstu: myj ręce, zmieniaj naczynia ...

W tym samym czasie kelner zbiera życzenia klientów: „Jedna z krewetkami!”… „Jedna z oliwkami!”… I przenosi je do kuchni.

W pierwszym przypadku załóżmy, że klient przychodzi i prosi o porcję krewetek. Nie ma problemu, jest podawany natychmiast. A co, jeśli poprosi o oliwki? Kelner nie mógł go podać, dopóki wszystkie krewetki nie zostaną obrane. W takim przypadku opóźnienie, czyli czas, który upływa od wysłania żądania do odpowiedzi, będzie bardzo duże.

W drugim przypadku, o co poprosi klient, będzie to dostępne w niedługim czasie, również praktycznie to samo w obu przypadkach. Opóźnienie będzie niskie, ale kosztowne: ze względu na zmiany kontekstu nastąpi spadek wydajności, rozumiany jako część czasu, w którym procesor wykonuje zadania bezpośrednio produktywne, zamiast zadań pomocniczych.

Oczywiście w tym przypadku idealnym rozwiązaniem byłby kompromis, który zależałby od wielkości racji żywnościowych i statystycznego rozkładu wniosków. Teoria kolejek jest działem matematyki odpowiedzialnym za badanie takich sytuacji i dostarczanie im optymalnych rozwiązań.

Jak widać, opóźnienie i wydajność są przeciwieństwami. Z tego powodu nie jest poprawne stwierdzenie, że jądra rt zapewniają większą wydajność. Wręcz przeciwnie, zmniejszenie opóźnień zmniejsza wydajność maszyny i dlatego jest złym wyborem dla systemów, które nie wymagają superszybkich odpowiedzi, takich jak serwery WWW lub bazy danych.

Wręcz przeciwnie, jądra o niskim opóźnieniu są idealne w sytuacjach, w których potrzebna jest maksymalna szybkość reakcji na bodźce zewnętrzne, takich jak przemysłowe systemy sterowania lub interaktywne aplikacje multimedialne, wiedząc, że poświęcamy część mocy maszyny, aby to zagwarantować szybka reakcja.

Priorytety

Ciekawą opcją w systemach wielozadaniowych jest nadawanie zadaniom różnych priorytetów, tak aby najważniejsze z nich otrzymywały więcej czasu od procesora, a mniej ważne mniej. W normalnym jądrze odbywa się to za pomocą polecenia „nice”. Jeśli nasz kucharz spodziewa się podawać więcej krewetek niż oliwek, to oczywiście dobrze by było, gdyby spędził więcej czasu na tej pierwszej.

Kernel RT (lub małe opóźnienie)

Problem z normalnymi jądrami polega na tym, że zadań nie można nigdzie przerwać, trzeba poczekać, aż osiągną określone punkty wykonania, w których można je zatrzymać, aby przełączyć się na inne. To wprowadza coś, co nazywamy opóźnieniem.

Upraszczając, jądra RT pozwalają na przerywanie zadań w większej liczbie miejsc niż zwykłe jądra. Mogą robić, że tak powiem, krótsze odcinki czasu, więc bieżące zadanie zostanie eksmitowane szybciej, a nasze priorytetowe zadanie będzie miało szybszy dostęp do procesora. Dlatego opóźnienie będzie mniejsze.

Powiedzmy, że jądro RT pozwala nam zostawić w połowie obraną krewetkę, jeśli w tym czasie pilnie potrzebne jest jak najszybsze wypłukanie oliwki, podczas gdy w normalnym jądrze konieczne byłoby dokończenie obierania krewetki.

Oprócz tego, że plasterki są cieńsze, jądra RT mają znacznie bardziej rygorystyczny system priorytetów, w którym zadania priorytetowe bezlitośnie tną się nawzajem (wyprzedzając), aby uzyskać kontrolę nad procesorem, spowalniając inne programy, co jest konieczne, aby spełnić Twoje wymagania.

Kiedy ważne jest, aby używać jądra RT?

W dwóch przypadkach:

1) Gdy potrzebujemy bardzo małych latencji, czyli bardzo szybkich reakcji maszyny. Najlepszym przykładem są gry na instrumentach wirtualnych, w przypadku których instrument powinien brzmieć natychmiast po naciśnięciu klawisza na klawiaturze MIDI.

2) Kiedy potrzebujemy bardzo ścisłych priorytetów, to znaczy, że nasze zadanie o wysokim priorytecie nie jest przerywane przez nic na świecie (chyba że w katastrofalnym przypadku, gdy procesor jest tak przeciążony, że przekracza 100% wykorzystanie). Na przykład nagrywamy sesję audio z Ardorem i obserwujemy, jak wskaźniki suwaków rosną i opadają. Nie ma znaczenia, czy zgubimy ramkę odświeżania tłumików, o ile transport dźwięku z mikrofonu na dysk twardy nie zostanie przerwany. Jądro RT spowolni odświeżanie fadera tak długo, jak to konieczne, o ile ani jedna próbka dźwięku nie zostanie utracona.

To powiedziawszy, generalnie nowsze jądra inne niż RT znacznie poprawiły planowanie zadań i zarządzanie priorytetami. Jeśli nie masz procesora na granicy jego możliwości (powiedzmy poniżej 50% wykorzystania) lub jeśli nie masz nic przeciwko temu, że od czasu do czasu pojawia się małe mikro cięcie (klik) w dźwięku (przerażające xruny), jądro normalne daje całkowicie akceptowalną wydajność.

Jakie opóźnienie jest zalecane?

Osobiście wszystko poniżej 10 ms jest dla mnie w porządku, a od 20 ms już zaczynam wyraźnie zauważać opóźnienie. Są bardziej wymagający ludzie.

instalacja

W Ubuntu i pochodnych:

sudo apt-get install linux-headers-lowlatency
sudo apt-get install Linux-lowlatency
sudo update-grub

Przy starcie będziesz mieć obie opcje (normalne jądro i niską latencję).

W Arch i pochodnych:

yourt -S linux-rt
sudo update-grub

źródło: Hispasoński


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Jordi Fdez powiedział

    bardzo kompletne i dobre
    wyjaśniono. tak, używam Linuksa do produkcji muzyki z
    zwykła dystrybucja i nie mam problemów z opóźnieniami, plik
    reakcja jest natychmiastowa podczas odtwarzania dźwięku. nie mam wielu
    wiedzy, ale myślę, że sterowniki audio w Linuksie są
    całkiem nieźle, nie potrzebuję nawet jack, żeby dostać dobry
    wydajność

  2.   Carlos powiedział

    Świetny artykuł i wyjaśnienie nie mogło być lepsze. Twoje zdrowie

  3.   carlesa25 powiedział

    Witam: Bardzo interesujące, przetestuję to w zadaniach obliczeniowych intensywnie wykorzystujących CPU + GPU.

    Ponieważ możesz zostawić system operacyjny Ubuntu 12.0 tak jak poprzednio, to znaczy odinstaluj "linux-headers-lowlatency". Pozdrowienia.

  4.   Th3Gh057 powiedział

    Bardzo dziękuję za artykuł. To naprawdę bardzo interesujące wiedzieć, jak działają rdzenie o niskim opóźnieniu. To wzbudziło moje zainteresowanie, aby dowiedzieć się więcej o nim i jego przydatności. Twoje zdrowie

  5.   Oliver powiedział

    Świetny artykuł! Słyszałem kiedyś, że jądro o niskim opóźnieniu jest konieczne, aby uruchomić bardziej responsywną klawiaturę, ale nie miałem pojęcia, dlaczego i jak to zrobić. Analogia jest bardzo jasna.

  6.   Odwaga powiedział

    Tak, całkowicie prawda.

    Jest to również coś bardzo istotnego w produkcji muzycznej, jak mówi się przy korzystaniu z VST, na przykład podczas występu na żywo za pomocą kontrolera MIDI musimy iść w tym samym czasie, co inne instrumenty, a wysokie opóźnienie może nam zagrozić.

    Lub niekoniecznie w korzystaniu z wirtualnych instrumentów, ale podczas nagrywania, przez opóźnienie interfejsu pojawia się, co może zmylić nas podczas interpretacji instrumentów

  7.   Rayonant powiedział

    Świetny artykuł, nie miałem pojęcia, co oznacza małe opóźnienie w jądrze (chociaż powiązałem to z opóźnieniami w modułach RAM)

  8.   Gerardo Azonos powiedział

    Bardzo dobrze ... Bardzo mi się podobało.
    Zmieniając temat, ktoś wie jak rozwiązać problem wifi (bezprzewodowego mojego kolana), który nie pozwala mi pracować w przestrzeni publicznej, sygnał jest bardzo słaby.
    Mam ubuntu 11.10, a moje kolana to: Dell Inspiron n4110.
    Z góry dziękuję.

  9.   Miquel Mayol i Tur powiedział

    Dziękuję, dodam, że Sabayon niesie ze sobą to jądro, skompilowane domyślnie z częstotliwością 1000 Hz, które jest również idealne dla serwerów gier FPS i samych gier FPS oraz dla każdego wymagającego, może z wyjątkiem tych, które korzystają z baz danych, chociaż dla mnie w Sabayon freeciv zwalił mnie z nóg ..

    Na komputerze stacjonarnym zwykle nadaje priorytet zadaniu głównemu, więc może być wygodne z jego użycia, nawet jeśli jest mniej wydajne w przypadku innych zadań, ponieważ to, co robimy w tej chwili, będzie działać szybciej, aw obecnych nowoczesnych komputerach może być całkiem interesujące.

    To kwestia zainstalowania ich, przetestowania ich przez tydzień, powrotu do jądra - normalnego - i zobaczenia, jak poszło i który wolimy, a także wykorzystania go do konkretnych zadań, że każdy z nich jest lepszy.

  10.   Gustaw Trepat powiedział

    Świetny artykuł, bardzo dobrze wyjaśniony.
    Dziękuję.

  11.   Esteban powiedział

    Świetne wyjaśnienie, bardzo dziękuję, bardzo mi pomogło 🙂

  12.   Carlos Martinez powiedział

    Bardzo interesujący artykuł, był dla mnie trochę jaśniejszy, chociaż nadal mam wątpliwości, czy odpowiada mi jądro o niskiej opóźnieniu. Jak mogę poznać opóźnienie jądra? Twoje zdrowie

  13.   JULIO powiedział

    Niedawno zainstalowałem dystrybucję studia ubuntu i zdałem sobie sprawę z niskiego opóźnienia, sprawdzając, czy trafiłem na twoją stronę. Mam bardzo jasne pojęcie o podstawowych koncepcjach systemów operacyjnych, a twoje wyjaśnienie było doskonałe. Rozpracowałeś to. Gratulacje