Linus Torvalds hodhi poshtë problemet me planifikuesin e detyrave, që u shfaqën gjatë testit të performancës

Zhvilluesi i lojërave Malte Skarupke publikoi krahasimi i performancës së bllokimeve të bazuara në Mutex dhe Spinlock kur përdoren planifikues të ndryshëm detyrash. Testet treguan vonesa anomalisht të mëdha kur përdorej Spinlock me planifikuesin e detyrave që përdoret si parazgjedhje në Linux. Autori i testeve arriti në përfundimin se planifikuesi i detyrave Linux ka probleme që ndikojnë negativisht në funksionimin e lojërave të zhvilluara për shërbimin Google Stadia, ku lojërat ekzekutohen në GPU në një mjedis cloud dhe ai që përdor shërbimin vetëm transmeton përmbajtjen e ekranit me një frekuencë deri në 60 kadra në sekondë. Në këto kushte, është e nevojshme të sigurohet një dalje e duhur e kadrove në ekran dhe vonesat që tejkalojnë një milisekondë bëhen të dukshme.

Për diskutimin e testeve mori pjesë Linus Torvalds, i cili i quajti ato plehra (“pure garbage”) dhe një shembull se si, pa e kuptuar krejtësisht temën, mund të arrihen tregues që nuk reflektojnë realitetin e vërtetë. Spinlock është një primitiv i nivelit të ulët që, në hapësirën e përdoruesit, duhet të përdoret me kujdes të madh dhe duke kuptuar plotësisht detajet, përndryshe mund të arrihesh atë që është demonstruar nga autori i testit. Linus e këshilloi zhvilluesit e lojërave të mos përdorin spinlock dhe të mos përpiqen të krijojnë sisteme të tyre të bllokimit mbi këtë bazë, por të përdorin mekanizmat e provuar ekzistues që e informojnë sistemin për pritjen e lirimit të bllokimit për të eliminuar ndikimin e planifikuesit.

Shtresat mbi bazën e Spinlock mund të përdoren vetëm nëse jeni plotësisht të sigurt se planifikuesi nuk do të ndërpresë ekzekutimin e tyre. Bllokimet e përdorura në testet që janë në bazë të spinlock janë realizuar përmes një mbështjelljeje të bërë në shtëpi që punon në hapësirën e përdoruesit. Planifikuesi i detyrave mund të marri kontrollin në çdo moment rastësor gjatë ekzekutimit të kësaj mbështjelljeje dhe të kalojë në ekzekutimin e detyrës tjetër. Duke qenë se matja e performancës bëhet në bazë të vlerave absolute të timerit, vonesat e caktuara në teste përfshijnë jo vetëm vonesat në trajtuesin e bllokimit, por edhe kodin që është ekzekutuar në një kontekst tjetër, dmth. matin jo vetëm atë që përpiqej të matte autori i testit, por edhe “zhurmën” nga llogaritë e tjera në sistem.

Autori i testit përpiqej të kontestosh Linus, duke theksuar se përdorimi i sistemeve të bllokimit të bazuara në spinlock shpesh përdoret në praktikë në lojëra, pasi testi tregon performancë më të lartë me planifikues më të thjeshtë se ai në Linux. Linus kontestoi, se planifikuesi i Linux është universale, i zhvilluar për dekada dhe optimizuar jo vetëm për desktop dhe lojëra, por edhe për lloje të tjera ngarkesash, si p.sh. për sistemet serverike, prandaj merr parasysh shumë nuanca gjatë planifikimit të ekzekutimit të detyrave.

Shtimi i optimizimeve specifike që do të lejojnë të ulë vonesat në lojëra si Google Stadia, mund të rrisë përgjigjen në rastin specifik, por me siguri do të sjellë një ulje të efikasitetit të planifikuesit në tërësi. Për shembull, planifikuesi i Windows sillet më mirë në testet e diskutueshme, pasi është ndjeshëm më i thjeshtë se ai i Linux dhe është optimizuar kryesisht për detyra specifike për desktop.

Burimi: opennet.ru

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster