In den Quellcode von Wine, auf dessen Basis in einer Woche die Version 10.15 erstellt wird, wurde die UnterstĂŒtzung fĂŒr den ntsync-Treiber hinzugefĂŒgt, der die Leistung von Windows-Spielen, die ĂŒber Wine gestartet werden, erheblich steigern kann. Der Treiber ist seit der Version 6.14 Teil des Linux-Kernels und implementiert das symbolische GerĂ€t /dev/ntsync sowie eine Reihe von Synchronisationsprimitive, die im Windows NT-Kernel verwendet werden.
Der signifikante Leistungszuwachs ergibt sich aus der Eliminierung der Overheads, die mit der Verwendung von RPC im Benutzermodus verbunden sind. Zum Beispiel stieg die maximale FPS in dem Spiel Dirt 3 bei Verwendung des ntsync-Treibers im Vergleich zur Implementierung der NT-Synchronisationsprimitive im Benutzermodus um 678%, in Resident Evil 2 um 196%, in Tiny Tinaâs Wonderlands um 177%, in Lara Croft: Temple of Osiris um 131%, in Call of Juarez um 125%, in The Crew um 96%, in Forza Horizon 5 um 48% und in Anger Foot um 43%.
Um die optimierten Synchronisationsprimitive in Wine zu nutzen, muss das Kernel-Modul ntsync aktiviert werden, das standardmĂ€Ăig deaktiviert ist. Zur Aktivierung kann eine Konfigurationsdatei /etc/modules-load.d/ntsync.conf hinzugefĂŒgt werden, die die Zeile ântsyncâ enthĂ€lt, und das System muss neu gestartet werden oder das Modul kann manuell mit dem Befehl âsudo modprobe ntsyncâ geladen werden. Es wird mindestens der Linux-Kernel 6.14 benötigt.
Um sicherzustellen, dass ntsync tatsĂ€chlich funktioniert, muss etwas in Wine gestartet werden. Zum Beispiel reicht es aus, den Befehl âwinecfgâ auszufĂŒhren, danach âlsof /dev/ntsyncâ zu starten und sicherzustellen, dass im Output Prozesse von wine angezeigt werden, die ntsync verwenden. Beispiel: $ lsof /dev/ntsync COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME start.exe 658466 user 12r CHR 10,260 0t0 630 /dev/ntsync services. 658474 user 11r CHR 10,260 0t0 630 /dev/ntsync explorer. 658484 user 11r CHR 10,260 0t0 630 /dev/ntsync winedevic 658499 user 10r CHR 10,260 0t0 630 /dev/ntsync svchost.e 658552 user 10r CHR 10,260 0t0 630 /dev/ntsync plugplay. 658557 user 10r CHR 10,260 0t0 630 /dev/ntsync winedevic 658605 user 10r CHR 10,260 0t0 630 /dev/ntsync conhost.e 658623 user 11r CHR 10,260 0t0 630 /dev/ntsync winecfg.e 658625 user 11r CHR 10,260 0t0 630 /dev/ntsync
Quelle: opennet.ru
