Comme prévu après avoir signalé pour la première fois il y a un mois lorsque les correctifs FUTEX2 ont été mis en file d’attente dans lock/core, ce travail avec le nouvel appel système sys_futex_waitv() pour aider l’expérience de jeu Windows sur Linux atterrira en effet pour Linux 5.16.
Le travail sur FUTEX2 a été long à venir et le débarquement pour Linux 5.16 est la partie principale: l’appel système sys_futex_waitv qui permet d’attendre sur plusieurs futex. Ceci est très utile pour Wine et Proton (Steam Play) pour mieux correspondre au comportement de la fonctionnalité WaitForMultipleObjects de Microsoft Windows. L’utilisation de ce nouvel appel système sur Linux 5.16+ lors de l’arrivée des correctifs pour Wine/Proton permettra de meilleures possibilités de performances. Les jeux Linux natifs peuvent également utiliser cet appel système directement ou via un wrapper (par exemple, les correctifs glibc ont été flottants) ainsi que pour des avantages en termes de performances/efficacité. L’avantage de performance peut être de l’ordre de quelques pour cent.
À l’origine, FUTEX2 allait également incorporer des futex de taille variable, la prise en compte de NUMA et d’autres améliorations. Ce travail a cependant été repoussé pour l’instant simplement en fusionnant sys_futex_waitv pour les avantages du jeu Linux et les autres améliorations peuvent venir plus tard lorsqu’elles seront prêtes.
Ce nouveau code a été envoyé aujourd’hui pour ce premier jour de la fenêtre de fusion Linux 5.16 en tant qu’ajout principal des mises à jour de verrouillage modifie ce cycle. Linus devrait tirer le premier lot de 5,16 PR dans les prochaines heures.
Il y a eu des patches Proton/Wine alors que maintenant que cet appel système est en cours de mise en ligne, les correctifs seront, espérons-le, mis en place rapidement.