Hosszabb szünet után ismét előtérbe került az NTSYNC Linux kernelmeghajtó fejlesztése, amely a Windows NT szinkronizációs primitívekkel való kompatibilitást hivatott javítani. Ez különösen a Wine és Proton (Steam Play) által futtatott Windows-játékok teljesítményét érinti pozitívan Linux alatt.
A Linux 6.10-ben debütáló NTSYNC driver a Windows NT szinkronizációs primitívek emulálására lett kifejlesztve, hogy a Wine és a Steam Play (Proton) alapú Windows-játékok futtatása Linux alatt sokkal hatékonyabb és gyorsabb legyen. A Wine egy szoftverréteg, amely lehetővé teszi, hogy Windows-alkalmazásokat futtassunk Linuxon, míg a Proton kifejezetten a Windows-játékok kompatibilitásának javítására lett optimalizálva Linuxon. Az új NTSYNC driver lehetőséget kínál arra, hogy a Windows-szoftverek szinkronizációs műveleteit natívan kezelje, így növelve a hatékonyságot és a teljesítményt. Ez különösen fontos a játékok számára, ahol a szinkronizáció kulcsszerepet játszik a sima futásban és a stabil teljesítményben.
A legújabb fejlesztések
Az NTSYNC meghajtó hat hónapnyi csend után ismét napirendre került a Linux kernel levelezőlistán. A legutóbbi, v7 verziójú patch két kulcsfontosságú API-tervezési fejlesztést tartalmaz:
-
Terminológiai pontosítás
Az NTSYNC_IOC_SEM_POST elnevezést NTSYNC_IOC_SEM_RELEASE-re módosították, hogy jobban illeszkedjen a Windows NT terminológiájához, ahelyett hogy POSIX-alapú lenne. Ez segít a kompatibilitás és az érthetőség javításában. -
Objektumkezelés egyszerűsítése
Az objektumok létrehozásához kapcsolódó ioctl (input/output control) hívások mostantól közvetlenül fájlleírókat (FD) adnak vissza a visszatérési értékben, nem pedig az argumentumstruktúrákon keresztül. Ez egyszerűsíti az NTSYNC API-t, és könnyebbé teszi a használatát.
A fejlesztés jelenlegi szakaszában az NTSYNC patch-eket a Linux 6.13 aktuális kódjára alapozták újra, és az említett API-fejlesztésekkel kiegészítették. Ez a lépés lehetőséget ad arra, hogy a meghajtó a Wine és a Proton által használt Windows-alkalmazások teljesítményét jelentősen növelje Linux rendszereken.
A „hibás” státusz és a késlekedés
Bár az NTSYNC driver első verziója bekerült a Linux 6.10 Git tárolójába, az összes szükséges funkciót biztosító javításokat nem sikerült időben beépíteni. Ezért a driver jelenleg „hibás” jelzéssel van ellátva, ami azt jelenti, hogy nem fog automatikusan lefordulni a szokásos kernelépítések során. Ez nagy csalódást jelenthet a játékosok és fejlesztők számára, mivel az NTSYNC jelentős teljesítménynövekedést hozhatna a Windows-játékok Linux alatti futtatásában. Azonban a fejlesztők remélik, hogy a hiányzó foltok a Linux 6.11 verzióban vagy a közeljövőben beépítésre kerülnek.
A Wine projekt a Windows API-t emulálja a felhasználói térben. Az API egy része, különösen az NT szinkronizációs primitívek, történelmileg RPC-n keresztül került kezelésre egy dedikált „kernel” folyamaton keresztül. Azonban az újabb alkalmazások egyre inkább használják ezeket az API-kat, és az RPC overhead korlátozó tényezővé vált.
Az NT szinkronizációs API-k túl bonyolultak ahhoz, hogy egyszerűen ráépítsék a meglévő primitívekre 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 olyan várakozási sor megvalósítása, ami elég robosztus a Wine számára a felhasználói térben, nem lehetséges. Ezért 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 bemutatásra került a 2023-as Linux Plumbers Conference konferencián. Azoknak, akik mélyebben érdeklődnek 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.
Hogyan érhető el?
A v7 patch-ek már megtekinthetők a Linux kernel levelezőlistán, és várhatóan hamarosan teljes mértékben integrálódnak. Az NTSYNC meghajtó végleges változata a Linux kernel jövőbeli verzióiban lesz elérhető, amikor a "BROKEN" státuszt feloldják.
Várakozások és jövőbeli fejlesztések
Az NTSYNC driver bevezetése nagy lépés a Windows-játékok Linux alatti teljesítményének javítása felé. Amint a hiányzó javításokat és funkciókat beépítik, a játékosok komoly teljesítményjavulásra számíthatnak. Ez újabb lendületet adhat a Linux-alapú játékrendszerek és a Proton népszerűségének, lehetővé téve a Windows-platformon elérhető játékok szélesebb körű támogatását. Az NTSYNC-hez kapcsolódó fejlesztések beépítése kulcsfontosságú lesz a jövőbeni Linux-kiadások számára, és a Linux-közösség reménykedik, hogy a következő verziókban már teljes mértékben működőképes lesz. Az NTSYNC célja, hogy a Windows NT szinkronizációs mechanizmusait hatékonyabban emulálja Linux alatt, ami kulcsfontosságú a Windows-játékok sima futtatásához Wine vagy Proton környezetben. Az ilyen szinkronizációs primitívek pontos implementációja drámai teljesítményjavulást hozhat, különösen játékok esetében.
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.
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% |