További frissítést kapott a játékokban nagy sebességnövekedést hozó ntsync karaktereszköz

kami911 képe

A „v2” verziójú patchekkel, melyeket tegnap tettek közzé, teljessé vált a 29 patchből álló sorozat. Az újított patchek javítják a patch leírásokat, hogy könnyebb legyen a kód ellenőrzése, az objektumok most már fájlok, nem pedig táblák indexei, javították néhány expozíciós ioctl nevét, és egyéb apró kódbeli fejlesztéseket hajtottak végre a múlt héten történt kódellenőrzés alapján.

Az érdeklődők megtekinthetik a „ntsync” nevű Windows NT szinkronizációs primitív illesztőprogram „v2” verziójú patcheit, miközben a fejlesztők várják, hogy mennyi érdeklődés és támogatás mutatkozik ennek a funkciónak a kernelbe való beolvasztására.

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.

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%

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.

(forrás)