Linus Torvalds a negat problemele cu planificatorul de sarcini, care au apărut în testul de performanță.

Dezvoltator de jocuri Malte Skarupke a publicat compararea performanței blocajelor bazate pe Mutex și Spinlock folosind diferiți programatori de sarcini. Testele au arătat întârzieri anormal de mari la utilizarea Spinlock cu programatorul de sarcini folosit în mod prestabilit în Linux. Autorul testelor a concluzionat că programatorul de sarcini Linux are probleme care afectează negativ performanța jocurilor create pentru serviciul Google Stadia, în care jocurile rulează pe GPU într-un mediu cloud, iar clientul primește doar conținutul ecranului în flux, cu o frecvență de până la 60 de cadre pe secundă. În astfel de condiții, este necesar să se asigure o redare la timp a cadrelor pe ecran, întârzierea depășind o milisecundă devine vizibilă.

La discuția testelor s-a alăturat Linus Torvalds, care le-a numit gunoi („pure garbage”) și un exemplu de cum se pot obține, fără a înțelege pe deplin tema, rezultate care nu reflectă realitatea. Spinlock este un primitiv de nivel scăzut care trebuie folosit cu mare prudență în spațiul utilizatorului și cu o înțelegere completă a detaliilor, altfel se poate obține ceea ce a fost demonstrat de autorul testului. Linus le-a sfătuit pe dezvoltatorii de jocuri să nu folosească spinlock și să nu încerce să creeze propriile sisteme de blocare pe baza acestuia, ci să folosească mecanismele existente, testate, care informează sistemul despre așteptarea eliberării blocajului pentru a evita influența programatorului.

Suplimentele bazate pe Spinlock pot fi folosite doar cu o certitudine totală că programatorul nu va întrerupe execuția lor. Blocajele folosite în teste bazate pe spinlock sunt implementate printr-o învăluire personalizată, care funcționează în spațiul utilizatorului. Programatorul de sarcini poate prelua controlul în orice moment aleatoriu în timpul execuției acestei învăluiri și poate comuta la execuția altei sarcini. Deoarece măsurarea performanței se realizează pe baza valorilor absolute ale unui temporizator, întârzierile definite în teste acoperă nu doar întârzierile din handlerul de blocare, ci și codul care a fost executat în alt context, adică măsoară nu doar ceea ce a încercat autorul testului să măsoare, ci și „zgomotul” de la alte calcule din sistem.

Autorul testului a încercat a contrazice pe Linus, arătând că utilizarea propriilor sisteme de blocare bazate pe spinlock este frecvent utilizată în practică în jocuri, deoarece teste efectuate cu planificatoare mai simple decât cele din Linux arată o performanță mai mare. Linus a contrazis, că planificatorul Linux este universal, rafinat de-a lungul decadelor și optimizat nu doar pentru desktop și jocuri, ci și pentru alte tipuri de sarcini, de exemplu, pentru sisteme server, deci ia în considerare numeroase detalii în planificarea execuției sarcinilor.

Adăugarea de optimizări specifice care permit reducerea latenței în jocurile Google Stadia poate crește reactivitatea în anumite cazuri, dar cel mai probabil va duce la o scădere a eficienței planificatorului în ansamblu. De exemplu, planificatorul Windows se comportă mai bine în teste discutate, deoarece este semnificativ mai simplu decât planificatorul Linux și optimizat în principal pentru sarcini specifice desktop-ului.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster