Utilizarea unui kernel RT (latență scăzută)

Miguel Mayol, un mare adept și comentator al acestui blog, a recomandat un articol publicat în hispasonic despre utilizarea nucleelor ​​RT, pe care am decis să le publicăm și să le extindem în unele dintre părțile sale.

L RT miezuri permite a performanța optima în unele situații particulareDe exemplu, editarea audio sau utilizarea instrumentelor muzicale virtuale.

Kernel multitasking

Kernel-ul Linux, la fel ca cel al majorității sistemelor de operare moderne, este multitasking. Aceasta înseamnă că mai multe programe rulează în același timp.

În realitate, nu este exact așa. Ceea ce faceți este să puneți programele într-o coadă și, unul câte unul, microprocesorul le execută pentru o anumită perioadă de timp. Odată ce acest lucru este epuizat, microprocesorul întrerupe sarcina, lăsând-o la jumătatea drumului și cedează loc următoarei. Această cantitate de timp se numește cuantică sau felie de timp și nu trebuie să fie constantă.

O bună analogie ar putea fi bucătarul dintr-un bar care pregătește mai multe feluri de mâncare în același timp: un sandviș de cozonac, un sandviș de tripă, o salată mixtă ... Acum rup pâinea, deschid tigaia, în timp ce se încălzește spăl salata etc.

Dacă cuantica este suficient de mică, impresia subiectivă pentru un observator lent, cum ar fi ființa umană, este că, în loc de un procesor rapid care execută sarcini alternativ, avem un procesor lent pentru fiecare dintre ele (mai mulți bucătari din aceeași bucătărie fac încet fiecare o singură farfurie).

Comutarea sarcinilor are un cost

Multitasking-ul nu este gratuit: implică procesor peste cap. Într-adevăr, evacuarea unei sarcini și încărcarea următoarei este o muncă suplimentară. Această operațiune se numește „comutare de context” sau „comutare de sarcini”. Ar fi mai rentabil în ceea ce privește procesorul să ruleze complet programele, unul câte unul, decât să le tăiem în „felii” și să saltăm de la unul la altul. Cu toate acestea, sistemul ar pierde din interactivitate, nu am putea avea mai multe ferestre deschise sau, în cazul unui server, să asistăm simultan la mai multe cereri.

Latență și performanță

Să presupunem că bucătarul nostru trebuie să decojească 20 de kilograme de creveți și să scoată 20 de kilograme de măsline. Cum este planificată lucrarea?

Într-un caz extrem, el mai întâi curăța toți creveții, se spăla pe mâini pentru a evita amestecarea aromelor și apoi scotea toate măslinele. O vom reprezenta astfel:

GGGGGGGGGGGGGGGGGGGGGGG… C AAAAAAAAAAAAAAAAAAAAAA ...

La extrema opusă, el coaja o creveță, se spăla pe mâini, scufunda o măslină, se spăla pe mâini ... creveți, măsline, creveți, măsline ... O vom reprezenta astfel:

GCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCAC ...

„C” reprezintă schimbarea în context: spălați-vă pe mâini, schimbați ustensilele ...

În același timp, un chelner strânge cererile clienților: „una cu creveți!” ... „una cu măsline!” ... și le transferă în bucătărie.

În primul caz, să presupunem că un client intră și cere o porție de creveți. Nicio problemă, se servește imediat. Dar dacă îi cere măsline? Chelnerul nu l-a putut servi până nu s-au curățat toți creveții. În acest caz, latența, care este timpul care trece de la momentul în care se face o cerere până la răspuns, va fi foarte mare.

În cel de-al doilea caz, indiferent de cererea clientului, acesta va fi disponibil în scurt timp, practic la fel și în ambele cazuri. Latența va fi scăzută, dar la un cost: datorită modificărilor de context, va exista o scădere a performanței, înțeleasă ca partea de timp în care CPU face sarcini direct productive, în loc de sarcini de suport.

Evident, în acest caz, soluția ideală ar fi o cale de mijloc, care ar depinde de mărimea rațiilor și de distribuția statistică a cererilor. Teoria cozilor este ramura matematicii care este responsabilă de studierea acestor situații și de a le oferi soluții optime.

După cum puteți vedea, latența și performanța sunt opuse. Din acest motiv, nu este corect să spunem că nucleele rt oferă mai multă performanță. Dimpotrivă, scăderea latenței reduce performanța mașinii și, prin urmare, este o alegere slabă pentru sistemele care nu necesită răspunsuri foarte rapide, cum ar fi servere web sau baze de date.

Dimpotrivă, nucleele cu latență scăzută sunt ideale în situațiile în care este necesară viteza maximă de răspuns la stimulii externi, cum ar fi sistemele de control industrial sau aplicațiile multimedia interactive, știind că sacrificăm o parte din puterea mașinii pentru a garanta că reacție rapidă.

Priorități

O opțiune interesantă în sistemele multitasking este de a acorda priorități diferite sarcinilor, în așa fel încât cele mai importante primesc mai mult timp de la procesor și cele mai puțin importante mai puțin. Într-un nucleu normal, acest lucru se face cu comanda „frumos”. Dacă bucătarul nostru se așteaptă să servească mai multe porții de creveți decât măsline, ar face bine să dedice mai mult timp primelor, desigur.

Kernel RT (sau latență scăzută)

Problema cu nucleele normale este că sarcinile nu pot fi întrerupte nicăieri, trebuie să așteptați ca acestea să ajungă la anumite puncte de execuție unde pot fi oprite pentru a trece la altul. Aceasta introduce ceea ce numim latență.

Pentru a o pune într-un mod simplificat, nucleele RT permit întreruperea sarcinilor în mai multe locuri decât nucleele normale. Pot face, ca să spunem așa, felii de timp mai subțiri, astfel încât sarcina actuală va fi evacuată mai repede și sarcina noastră prioritară va putea accesa CPU mai devreme. Prin urmare, latența va fi mai mică.

Să spunem că un sâmbure RT ne permite să lăsăm un creveț pe jumătate decojit dacă ceea ce este necesar în acel moment este să punem o măslină cât mai curând posibil, în timp ce într-un sâmbure normal ar fi necesar să terminăm decojirea creveților.

În plus față de a face felii mai subțiri, nucleele RT au un sistem de priorități mult mai strict, în care sarcinile prioritare se toacă fără milă (prevenind) pentru a obține controlul procesorului, încetinind alte programe, orice este necesar pentru să vă îndeplinească cerințele.

Când este important să folosiți un kernel RT?

În două cazuri:

1) Când avem nevoie de latențe foarte mici, adică reacții foarte rapide ale mașinii. Cel mai clar exemplu este performanța instrumentelor virtuale, unde aveți nevoie ca instrumentul să sune imediat atunci când apăsați o tastă de pe o tastatură MIDI.

2) Când avem nevoie de priorități foarte stricte, adică sarcina noastră cu prioritate ridicată nu este întreruptă de nimic în lume (cu excepția cazului în care catastrofala este că CPU este atât de supraîncărcat încât depășește 100% de utilizare). De exemplu, înregistrăm o sesiune audio cu Ardor și urmărim indicatorii fader în sus și în jos. Nu contează dacă pierdem un cadru de reîmprospătare a faderelor atâta timp cât transportul sunetului de la microfon la hard disk nu este întrerupt. Un kernel RT va încetini reîmprospătarea faderului atâta timp cât este necesar, atât timp cât nu se pierde niciun eșantion de sunet.

Acestea fiind spuse, în general, noile nuclee non-RT și-au îmbunătățit considerabil planificarea sarcinilor și gestionarea priorităților. Dacă nu aveți CPU la limita posibilităților sale (să spuneți sub 50% de utilizare) sau dacă nu vă deranjează că din când în când există un mic micro cut (faceți clic) în sunet (mult temutele xruns), un nucleu normal oferă performanțe perfect acceptabile.

Ce latență este recomandată?

Personal, orice sub 10 ms este bine pentru mine și de la 20 ms încep deja să observ clar întârzierea. Sunt oameni mai pretențioși.

Instalare

Pe Ubuntu și derivate:

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

La pornire veți avea ambele opțiuni (nucleul normal și cel cu latență scăzută).

În Arch și derivate:

yaourt -S linux-rt
sudo update-grub

Fuente: hispasonic


13 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Jordi Fdez el a spus

    foarte complet și bun
    a explicat. da, folosesc Linux pentru producția de muzică cu
    o distribuție obișnuită și nu am probleme de latență,
    răspunsul este instantaneu la redarea audio. Nu am multe
    cunoștințe, dar cred că driverele pentru audio în Linux sunt
    destul de bine nici nu am nevoie de jack pentru a obține un bun
    performanță

  2.   Carlos el a spus

    Articol excelent și explicația nu ar putea fi mai bună. Noroc

  3.   carlesa25 el a spus

    Bună: Foarte interesant, îl voi testa în sarcini de calcul intensive CPU + GPU.

    Deoarece puteți părăsi sistemul de operare Ubuntu 12.0 ca și până acum, adică dezinstalați „linux-headers-lowlatency”. Salutari.

  4.   Th3Gh057 el a spus

    Vă mulțumesc foarte mult pentru articol. Este foarte interesant să știți cum funcționează nucleele cu latență scăzută. Mi-a trezit interesul de a ști mai multe despre ea și utilitatea sa. Noroc

  5.   Oliver el a spus

    Super articol! odată ce am auzit că era necesar un nucleu cu latență scăzută pentru a rula o tastatură mai receptivă, dar nu aveam idee de ce și cum să o fac. Analogia este foarte clară.

  6.   Curaj el a spus

    Da, domnule, complet adevărat.

    Este ceva complet vital și în producția de muzică, așa cum se spune în utilizarea VST-urilor, de exemplu într-un spectacol live folosind un controler MIDI, trebuie să mergem în același timp cu celelalte instrumente și o latență ridicată ne poate juca un truc.

    Sau nu neapărat în utilizarea instrumentelor virtuale, ci în înregistrare, prin intermediul interfeței are loc o latență care ne poate deruta atunci când interpretăm instrumentele

  7.   Rayonant el a spus

    Articol grozav, habar n-aveam ce înseamnă latența scăzută într-un kernel (deși am raportat-o ​​la latențele din modulele RAM)

  8.   Gerardo Azonos el a spus

    Foarte bine ... mi-a plăcut foarte mult.
    schimbând subiectul, cineva știe să rezolve problema wifi-ului (wireless din poala mea) care nu-mi permite să lucrez în spații publice, semnalul este foarte scăzut.
    Am ubuntu 11.10 și poala mea este: Dell inspiron n4110.
    Multumesc in avans.

  9.   Miquel Mayol i Tur el a spus

    Vă mulțumim, pentru a adăuga că Sabayon poartă acest kernel, compilat în mod implicit la 1000 Hz, care este ideal și pentru serverele de jocuri FPS și pentru jocurile FPS în sine și oricare dintre cele mai solicitante, cu excepția poate a celor care folosesc baze de date, deși pentru mine în Sabayon freeciv m-a suflat ..

    Pe un desktop, de obicei acordă prioritate sarcinii principale, deci poate fi convenabil să o folosești chiar dacă este mai puțin eficientă pentru celelalte sarcini, pentru ceea ce facem în acest moment va merge mai repede, iar în computerele moderne actuale poate fi destul de interesant.

    Este o chestiune de a le instala, de a le testa timp de o săptămână, de a reveni la nucleu - normal - și de a vedea cum a mers, și pe care le preferăm, precum și de a le folosi pentru sarcinile specifice pe care fiecare dintre ele le este mai bine.

  10.   Gustavo Trepat el a spus

    Articol excelent, foarte bine explicat.
    Mulţumesc.

  11.   Esteban el a spus

    Explicație excelentă, vă mulțumesc foarte mult, m-a ajutat foarte mult 🙂

  12.   Carlos Martinez el a spus

    Un articol foarte interesant, mi-a fost puțin mai clar, deși încă mai am îndoieli cu privire la faptul dacă mi se potrivește un kernel lowlatency. Cum pot cunoaște latența unui nucleu? Noroc

  13.   JULIO el a spus

    Am instalat recent o distribuție de studio ubuntu și mi-am dat seama de latența scăzută, investigând că am ajuns la pagina ta. Sunt foarte clar despre conceptele de bază ale sistemelor de operare și explicația dvs. a fost perfectă. Ai rezolvat-o. Felicitări