Korištenje RT kernela (mala latencija)

Miguel Mayol, sjajni sljedbenik i komentator ovog bloga, preporučio je članak objavljen u hispasonic o upotrebi RT kernela, koje smo odlučili objaviti i proširiti u nekim od njegovih dijelova.

u RT kerneli dopustiti a optimalne performanse u nekim određene situacijeNa primjer, audio montaža ili uporaba virtualnih muzičkih instrumenata.

Multitasking kernel

Linux kernel, kao i većina modernih operativnih sistema, je multitasking. To znači da se istovremeno pokreće nekoliko programa.

U stvarnosti to nije baš slučaj. Ono što radite je da programe stavite u red i jedan po jedan, mikroprocesor ih izvršava određeno vrijeme. Kad se ovo iscrpi, mikroprocesor prekida zadatak, ostavljajući ga na pola puta, i ustupa mjesto sljedećem. Ova količina vremena naziva se kvantum ili vremenski presjek i ne mora biti konstantna.

Dobra analogija mogla bi biti kuharica u baru koja istovremeno priprema nekoliko jela: sendvič sa slabinom, sendvič s tripicama, miješana salata ... Sad lomim kruh, okrećem tavu, dok se zagrijavam, perem zelena salata itd.

Ako je kvantum dovoljno mali, subjektivan dojam za sporoga promatrača, poput ljudskog bića, jest da umjesto brzog procesora koji izvršava zadatke naizmjenično imamo polaganog procesora za svakog od njih (nekoliko kuhara u istoj kuhinji polako rade svaki jedan jedini tanjir).

Prebacivanje zadataka košta

Višezadaćnost nije besplatna: uključuje troškove procesora. Zapravo, istjerivanje jednog zadatka i učitavanje sljedećeg dodatni je posao. Ova se operacija naziva 'prebacivanje konteksta' ili 'prebacivanje zadataka'. U smislu CPU isplativije bi bilo pokretati programe u potpunosti, jedan po jedan, nego ih rezati na „kriške“ i skakati s jednog na drugi. Međutim, sistem bi izgubio interaktivnost, ne bismo mogli imati nekoliko otvorenih prozora ili, u slučaju servera, istovremeno pratiti nekoliko zahtjeva.

Latencija i performanse

Pretpostavimo da naš kuhar mora oguliti 20 kilograma kozica i izvaditi 20 kilograma maslina. Kako je planiran posao?

U ekstremnom slučaju, prvo bi ogulio sve kozice, oprao ruke kako bi izbjegao miješanje okusa, a zatim bi sve masline izvadio na koštice. Zastupit ćemo ga ovako:

GGGGGGGGGGGGGGGGGGGGGGG… C AAAAAAAAAAAAAAAAAAAAAA…

U suprotnoj krajnosti, gulio bi kozicu, oprao ruke, nakopao maslinu, oprao ruke ... kozicu, maslinu, kozicu, maslinu ... Predstavljaćemo je ovako:

GCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCACGCAC…

'C' predstavlja promjenu konteksta: operite ruke, promijenite posuđe ...

Istodobno, konobar prikuplja zahtjeve kupaca: "jedan s gamborima!" ... "jedan s maslinama!" ... i prenosi ih u kuhinju.

U prvom slučaju, pretpostavimo da kupac uđe i zatraži dio škampa. Nema problema, odmah se servira. Ali što ako zatraži masline? Konobar ga nije mogao poslužiti dok sve kozice nisu oljuštene. U ovom slučaju, latencija, odnosno vrijeme koje prolazi od trenutka podnošenja zahtjeva do njegovog pristupanja, bila bi vrlo velika.

U drugom slučaju, sve što klijent zatraži, bit će dostupno u kratkom vremenu, također praktično isto u oba slučaja. Latencija će biti niska, ali uz cijenu: uslijed promjena konteksta doći će do smanjenja performansi, shvaćenih kao dio vremena tokom kojeg CPU radi direktno produktivne zadatke, umjesto zadataka podrške.

Očito je da bi u ovom slučaju idealno rješenje bilo srednje sredstvo, koje bi ovisilo o veličini obroka i statističkoj raspodjeli zahtjeva. Teorija čekanja je grana matematike koja je odgovorna za proučavanje ovih situacija i pružanje optimalnih rješenja.

Kao što vidite, kašnjenje i performanse su suprotne. Iz tog razloga nije ispravno reći da rt kerneli daju više performansi. Suprotno tome, smanjenje latencije smanjuje performanse mašine i stoga je loš izbor za sisteme koji ne zahtijevaju super brze odgovore, kao što su web ili serveri baza podataka.

Suprotno tome, jezgra s malim kašnjenjem idealna su u situacijama kada je potrebna maksimalna brzina odgovora na vanjske podražaje, kao što su industrijski upravljački sustavi ili interaktivne multimedijske aplikacije, znajući da žrtvujemo dio snage stroja garantirajući tu brzu reakciju .

Prioriteti

Zanimljiva opcija u multitasking sistemima je zadavanje zadataka različitim prioritetima, na način da oni najvažniji dobivaju više vremena od procesora, a oni manje važni. U normalnom jezgru to se radi naredbom 'nice'. Ako naš kuhar očekuje da će poslužiti više porcija kozica nego maslina, bilo bi dobro da više vremena potroši na prvu, naravno.

Kernel RT (ili mala latencija)

Problem normalnih jezgri je taj što se zadaci ne mogu nigdje prekinuti, morate pričekati da dođu do određenih točaka izvršenja na kojima se mogu zaustaviti da bi se prebacili na drugo. Ovo uvodi ono što nazivamo latencijom.

Pojednostavljeno rečeno, RT kerneli omogućavaju prekidanje zadataka na više mjesta od uobičajenih kernela. Oni mogu, tako reći, tanji kriški vremena, tako da će se trenutni zadatak brže izbaciti i naš prioritetni zadatak moći će pristupiti CPU-u prije. Stoga će latencija biti manja.

Recimo da nam RT jezgra omogućuje ostavljanje poluoguljene škampe ako je u to vrijeme hitno potrebno maslinovo meso izvaditi što je prije moguće, dok bi u normalnoj jezgri bilo potrebno završiti ljuštenje škampa.

Pored toga što kriške čine tanjim, RT kerneli imaju i mnogo stroži sistem prioriteta, gdje se zadaci prioriteta nemilosrdno usitnjavaju (preempt) kako bi stekli kontrolu nad CPU-om, usporavajući druge programe sve što je potrebno da bi se udovoljilo vašim zahtjevima.

Kada je važno koristiti RT kernel?

U dva slučaja:

1) Kada su nam potrebne vrlo niske latencije, odnosno vrlo brze reakcije mašine. Najjasniji je primjer izvedbe virtualnih instrumenata, gdje instrument treba odmah zazvučati kada pritisnete tipku na MIDI tastaturi.

2) Kada su nam potrebni vrlo strogi prioriteti, odnosno da naš zadatak s visokim prioritetom ne prekida ništa na svijetu (osim u katastrofalnom slučaju da je CPU toliko preopterećen da prelazi 100% iskorištenosti). Na primjer, snimamo audio sesiju s Ardorom i gledamo kako se indikatori fader-a penju gore-dolje. Nije bitno gubimo li osvježavajući okvir fadera sve dok se ne prekida prenos zvuka sa mikrofona na tvrdi disk. RT kernel će usporiti fader osvježavanje onoliko koliko je potrebno sve dok se ne izgubi niti jedan uzorak zvuka.

To je reklo, generalno govoreći, novija jezgra koja nisu RT znatno su poboljšala planiranje zadataka i upravljanje prioritetima. Ako nemate CPU na granici njegovih mogućnosti (recimo ispod 50% iskorišćenja) ili ako vam ne smeta što s vremena na vrijeme postoji mali mikrorez (klik) u zvuku (mnogo strašniji xruns), jezgro normalno daje savršeno prihvatljive performanse.

Koja je latencija preporučljiva?

Lično, sve ispod 10 ms mi odgovara, a od 20 ms već počinjem jasno primjećivati ​​kašnjenje. Postoje zahtjevniji ljudi.

Instalacija

O Ubuntuu i izvedenicama:

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

Prilikom pokretanja imat ćete obje opcije (normalno jezgro i ono s malim kašnjenjem).

U Arch i izvedenice:

yaourt -S linux -rt
sudo update-grub

Izvor: hispasonic


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Jordi Fdez rekao je

    vrlo kompletna i dobra
    objašnjeno. da, koristim Linux za muzičku produkciju sa
    obična distribucija i nemam problema sa kašnjenjem,
    odgovor je trenutni prilikom reprodukcije zvuka. Nemam ih puno
    znanje, ali mislim da su pokretački programi za audio u Linuxu
    prilično dobro, čak mi ni Jack ne treba za dobar
    performance

  2.   Carlos rekao je

    Odličan članak i objašnjenje ne mogu biti bolji. Živjeli

  3.   carlesa25 rekao je

    Pozdrav: Vrlo zanimljivo, testirat ću ga u CPU + GPU intenzivnim računalnim zadacima.

    Kao što možete napustiti Ubuntu 12.0 OS kao i prije, to jest, deinstalirajte "linux-headers-lowlatency". Pozdrav.

  4.   Th3Gh057 rekao je

    Hvala vam puno na članku. Zaista je vrlo zanimljivo znati kako rade jezgre s malim kašnjenjem. Probudilo me je zanimanje da znam više o tome i njegovoj korisnosti. Živjeli

  5.   Oliver rekao je

    Odličan članak! Jednom sam čuo da je jezgro s malim kašnjenjem neophodno za pokretanje tipkovnice koja reagira više, ali nisam imao pojma zašto i kako to učiniti. Analogija je vrlo jasna.

  6.   hrabrost rekao je

    Da, gospodine, potpuno tačno.

    To je nešto potpuno bitno i u muzičkoj produkciji, kao što se kaže u upotrebi VST-ova, na primjer u izvedbi uživo pomoću MIDI kontrolera moramo ići istovremeno s ostalim instrumentima i velika latencija može svirati trik na nama.

    Ili ne nužno u upotrebi virtualnih instrumenata, već u snimanju, kroz interfejs dolazi do kašnjenja koje nas može zbuniti prilikom tumačenja instrumenata

  7.   Rayonant rekao je

    Odličan članak, nisam imao pojma što znači mala latencija u kernelu (iako sam ga povezao s latencijama u RAM modulima)

  8.   Gerardo Azonos rekao je

    Vrlo dobro ... stvarno mi se svidjelo.
    mijenjajući temu, neko zna kako riješiti problem WiFi-ja (bežične veze u mom krilu) koji mi ne dozvoljava da radim u javnim prostorima, signal je vrlo nizak.
    Imam ubuntu 11.10 i moje krilo je: Dell inspiron n4110.
    Zahvaljujem vam unaprijed.

  9.   Miquel Mayol i tur rekao je

    Zahvaljujem na dodavanju da Sabayon nosi ovu jezgru, standardno kompajliranu na 1000 Hz, koja je također idealna za FPS servere igara i za same FPS igre i bilo koju zahtjevniju, osim možda onih koje koriste baze podataka, iako mi je u Sabayonu puhao freeciv ja daleko ..

    Na radnoj površini obično daje prioritet glavnom zadatku, pa ga može biti prikladno koristiti čak i ako je manje efikasan za ostale zadatke, jer će ono što radimo trenutno ići brže, a u sadašnjim modernim računarima može biti prilično zanimljivo.

    Stvar je u tome da ih instaliramo, testiramo tjedan dana, vratimo se u jezgru - normalno - i vidimo kako je prošlo i koja nam je draža, kao i da je koristimo za određene zadatke da je svaki od njih bolji.

  10.   Gustavo Trepat rekao je

    Odličan članak, vrlo dobro objašnjen.
    Hvala.

  11.   Esteban rekao je

    Izvrsno objašnjenje, puno vam hvala, puno mi je pomoglo 🙂

  12.   carlos martinez rekao je

    Vrlo zanimljiv članak, bio mi je malo jasniji, mada još uvijek sumnjam u to odgovara li mi kernel niske latencije. Kako mogu znati kašnjenje jezgra? pozdrav

  13.   Juli rekao je

    Nedavno sam instalirao ubuntu studio distro i shvatio sam malu latenciju istražujući da sam došao na vašu stranicu. Jasno sam razumio osnovne koncepte operativnih sistema i vaše objašnjenje je bilo savršeno. Ti si to riješio. Cestitam