Ugyan még csak véleményezés alatt az egész terv, de máris jól látható hatalmas sebességnövekedést hozhat a Wine alatt futtatott játékoknál egy új megoldás, amelyet a Linux kernelben szeretnének bevezetni a fejlesztők. Beszéljenek először a számok:
Játék | Eredeti | ntsync | Javulás |
---|---|---|---|
Anger Foot | 69 | 99 | 43% |
Call of Juarez | 99.8 | 224.1 | 125% |
Dirt 3 | 110.6 | 860.7 | 678% |
Forza Horizon 5 | 108 | 160 | 48% |
Lara Croft: Temple of Osiris | 141 | 326 | 131% |
Metro 2033 | 164.4 | 199.2 | 21% |
Resident Evil 2 | 26 | 77 | 196% |
The Crew | 26 | 51 | 96% |
Tiny Tina's Wonderlands | 130 | 360 | 177% |
Total War Saga: Troy | 109 | 146 | 34% |
A Wine projekt a Windows API-t emulálja a felhasználói térben. Ezen API egy része, nevezetesen az NT szinkronizációs primitívek, történelmileg RPC-n keresztül lettek lekezelve egy dedikált „kernel” folyamaton keresztül. Azonban az újabb alkalmazások intenzívebben használják ezeket az API-kat, és az RPC overheadje korlátozó tényezővé vált.
Az NT szinkronizációs API-k túl bonyolultak ahhoz, hogy a meglévő primitívek tetejére helyezzék anélkül, hogy a jó működést feláldoznák. Bizonyos műveletek, mint például az NtPulseEvent() vagy az NtWaitForMultipleObjects() „mindenre várakozás” módozata, közvetlen ellenőrzést igényel a várakozási sorral kapcsolatban, és egy olyan várakozási sort megvalósítani, ami elég robosztus a Wine számára a felhasználói térben, nem lehetséges. Ezért a javasolt, hogy a vezérlő illesztőprogram közvetlenül a Linux kernelben kerüljön megvalósításra a problémás interfészek jobb teljesítményű megoldásával.
Ez a vezérlő illesztőprogram került bemutatásra a Linux Plumbers Conference 2023 konferencián. Azoknak, akik mélyebben érdeklődnek a a Wine-ban használatos szinkronizáció iránt és a történettel kapcsolatban, illetve a probléma korábbi megoldási kísérletei kapcsán, a prezentáció felvételét itt tekinthetik meg:
Linux Plumbers Conference 2023 prezentáció
Ezzel a Linux kernel számára egy új karaktereszköz-illesztőprogram került bevezetésre, a /dev/ntsync, amelyet a Windows NT szinkronizációs primitívek implementálására használnak.
A teljesítmény növekedése nagy mértékben változik az alkalmazástól és a felhasználó hardverétől függően. Néhány játék esetében az NT szinkronizáció nem okoz lassulást, és semmilyen változást nem lehet észlelni, de más játékok esetében a képfrissítési sebesség akár 50-150% javulását is megfigyelhették. A fenti táblázat különböző játékok képfrissítési sebességét mutatja be különböző hardvereken, Dmitry Skvortsov, FuzzyQuills, OnMars és a szerző által mért adatok alapján.
A CodeWeavers cégnél dolgozó Elizabeth Figura, aki közzétette a „megjegyzések kérését” (RFC) különböző Linux kernel levelezési listákra, elmagyarázta a szinkronizációs vezérlő illesztőprogram motivációit a Windows NT kernel működésének szempontjából. Ez a javítás 32 patchből áll, valamint 17 patchet tartalmaz az aktuális Wine implementációhoz. A patchek szándékosan a Windows függvények megfelelőinek megfelelő viselkedését kívánják leképezni. Mivel nem elvárás, hogy a fejlesztők ismerősek legyenek a Windows syscalls-sal, különösen a részletes működést isemrvén, a sorozatban szereplő dokumentációs patch-ekben részletesen leírja a fejlesztő az elvárt viselkedést, és használható a sorozat többi részének specifikációjaként.
Az egész sorozatot itt lehet elérni vagy megtekinteni:
A Wine által használt patcheket itt található:
Ez nem teljesen új koncepció, mivel évek óta a Wine fejlesztők egy új Linux kernel szinkron API-t keresnek, ami jobb, mint az esync/fsync, hogy kezelje a Windows NT szinkronizációs objektum API igényeit.
Nagyon érdekes lesz látni, hová vezet ez az NT szinkronizációs vezérlő illesztőprogram és hogy mikor fogják végül elfogadni a fő Linux kernelbe annak érdekében, hogy javítsák a Windows játékok/alkalmazások Linuxon való futtatásának teljesítményét. Kíváncsi vagyok ez a megoldás mikor érkezhet meg a stabil kernelbe, és teszi jobbá mindnyájunk windows-os programfuttatási élményét Linux alatt.
Hozzászólások
Remélem ez a változtatás
Beküldte kami911 -
Értékelés:
Remélem ez a változtatás mihamarabb belekerül a Linux kernelbe és a Wine-ba. Érdekes lesz látni, hogy ettől mennyivel gyorsabbak lesznek a játékok Wine alatt. Lehet, hogy gyorsabbak mint Windows alatt?