Valve propose des modifications du noyau Linux pour le rendre plus « game-friendly »
Les premiers tests montrent de modestes gains de performances

Le , par Christian Olivier

39PARTAGES

24  1 
Linux n’a jamais été la plateforme de jeu par excellence. Pourtant, la société Valve la considère comme « ;l'avenir du jeu ;» et estime que les systèmes fermés sont en contradiction avec l’évolution du marché du jeu vidéo. L’éditeur de Steam souhaite depuis longtemps que Linux remplace Windows en tant que plateforme majeure de jeu sur PC et c’est probablement l’une des raisons pour lesquelles il redouble d’efforts afin de « ;mettre Linux à niveau ;».


L’année dernière, Valve a officialisé Steam Play et Proton, un outil utilisé par le client Linux de Steam pour fournir la compatibilité interplateformes Windows-Linux et permettre de jouer facilement à des jeux Windows ou d’exécuter des applications 3D Windows sous Linux. Proton est construit autour d’une version personnalisée de Wine et intègre d’autres bibliothèques développées en parallèle. Il est entièrement open source et offre dans bien des cas des performances supérieures à Wine, la couche logicielle de compatibilité grâce à laquelle il est possible d’utiliser sur un environnement Linux, FreeBSD et macOS des applications Windows.

Les implémentations de DirectX 11 et 12 dans Proton sont basées sur Vulkan (DXVK et vkd3d) et les performances dans les jeux multithreads auraient été grandement améliorées par rapport à celles de Wine. Des optimisations apportées au support plein écran et au support des contrôleurs de jeu afin qu’en mode plein écran, les jeux puissent s’ajuster harmonieusement à la résolution désirée sans interférer avec la résolution native du moniteur et qu’ils puissent reconnaitre automatiquement les contrôleurs pris en charge par Steam sont également de la partie.

Dans la version la plus récente des notes de mise à jour de son outil Proton, Valve propose désormais d’apporter des changements au noyau Linux afin de surmonter les problèmes rencontrés en essayant de lancer certains jeux et de rendre les distributions Linux plus « ;game-friendly ;». L’éditeur de Steam veut notamment étendre la fonctionnalité futex() et apporter des modifications à glibc et à lbpthread afin d’améliorer les opérations multithreadées.

À ce propos, Valve a expliqué : « ;Nous proposons d’apporter des changements au noyau Linux pour étendre l’appel système futex() afin d’exposer ce que nous pensons être la fonctionnalité essentielle supplémentaire nécessaire pour supporter une synchronisation optimale du pool de threads ;».

Valve suggère en premier lieu de remplacer la fonctionnalité baptisée esync par une nouvelle encore expérimentale appelée fsync, qui fournit « ;une prise en charge des primitives de synchronisation intraprocessus basées sur un futex ;» et réduit davantage l’utilisation du processeur que esync. Toutefois, comme cela nécessite l’utilisation de la fonction eventfd() du noyau Linux, des modifications de ce dernier sont nécessaires pour fonctionner correctement.

Dans les premiers tests prenant en compte ces changements, Valve a noté des gains de performance de 4 % sur le jeu Beat Saber et de 1,5 % sur Shadow of the Tomb Raider avec Proton. L’entreprise est malgré tout persuadée que des améliorations significatives pourront être obtenues ultérieurement. La version 4.11 de Proton devrait bénéficier du patch fsync pour utiliser le nouveau noyau lorsqu’il sera supporté.

Source : LKML

Et vous ?

Que pensez-vous de cette initiative de Valve ?
Ces efforts pourraient-ils aider à Linux à s’imposer rapidement comme la plateforme de jeu par excellence dans les années à venir ?

Voir aussi

Valve muscle son service de Cloud gaming, Steam Link, avec Steam Link Anywhere, désormais vous pouvez jouer en streaming à vos jeux PC partout
Microsoft veut qu'Azure devienne la solution serveur multijoueur pour toutes les plateformes, grâce à PlayFab Multiplayer Servers
Google lance en bêta-test son service de streaming de jeux vidéo via Chrome, Project Stream va inaugurer le jeu Assassin's Creed Odyssey d'Ubisoft
Google et Ubisoft s'unissent pour développer une architecture serveurs dédiée aux jeux vidéo qui s'appuie sur Kubernetes

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de lsbkf
Membre habitué https://www.developpez.com
Le 03/08/2019 à 1:12
Oui enfin avant de penser à faire des gains de 5%, on pourrait pas faire une campagne de sensibilisation auprès des devs de jeu pour qu'ils arrêtent de faire des boucles d'attente actives, et être plus CPU-friendly ? C'est pas en changeant le noyau Linux que d'un seul coup un pauvre menu composé de 5 sprites va passer de 100% à 95% de consommation de ressources.
7  0 
Avatar de lsbkf
Membre habitué https://www.developpez.com
Le 03/08/2019 à 20:44
Ce qui ne sert à rien si tu continues à cramer le CPU dans le vide quand tu limites le framerate. Moi je parle d'utiliser les ressources proprement, pas de concours de bites. Ils font leurs tests avec le jeu seul sur un PC haut de gamme et l'OS fraîchement installé en regardant leur nombril alors que dans un cas réel tu as typiquement le browser qui tourne (et d'autres trucs variés) et qui est souvent utilisé en parallèle. Lui en revanche va devenir 10 fois plus lent pour tout faire même s'il ne se passe rien dans ta fenêtre de jeu, et à son tour va provoquer du stuttering dans ton jeu parce que le scheduler ne saît pas qu'il peut donner la main à autre chose pendant que ton jeu est dans sa boucle active, puis finalement alloue du temps au browser pendant que le jeu est dans une section de code utile.
Certains développeurs évitent d'utiliser la fonction Sleep (ou autre équivalent) car ils s'imaginent (ou "on leur a dit" que la granularité du scheduler va les désavantager sur le temps disponible dans une frame, mais en réalité cette granularité est quand même présente (en plus du problème de stuttering), tandis que si tous les processus jouent la carte de la coopération tu peux réveiller ton thread pile au moment où tu le voulais, et dès que tu as fini les autres peuvent faire leur travail immédiatement et laisser autant de marge que possible pour tous ceux qui ont besoin d'un timing spécifique.
D'autres développeurs vont rejeter la faute sur leur moteur de jeu et il ont seulement à moitié raison : ils ont aussi le droit de faire remonter le problème, ou modifier le moteur eux-mêmes.
5  1 
Avatar de strato35
Membre actif https://www.developpez.com
Le 05/08/2019 à 11:10
Ces efforts pourraient-ils aider à Linux à s’imposer rapidement comme la plateforme de jeu par excellence dans les années à venir ?
Je pense que le seul moyen que Linux s'impose comme plateforme de jeu par excellence est de continuer à dévorer windows de l'intérieur comme actuellement, à savoir être installé dans windows.
Perso je n'est rien contre Linux, au contraire je l'aime bien et c'est un compagnon de travail depuis de nombreuses années. De travail oui, car steam sont bien gentils, mais malgré leurs position dominante ce ne sont pas les seuls, et je suis curieux de voir si ubisoft, EA et compagnie suivront le mouvement...
Petite pensée pour ceux qui profitent des facilités qu'offre windows pour le multi-plateforme entres xbox et windows 10, je suis certains qu'ils soutiendront l’initiative de valve ...

Non mais plus sérieusement, qu'ils boost Linux pour le jeu, c'est très bon, mais de là a avoir l'intention de remplacer windows comme plateforme de jeu, je n'y crois absolument pas.
C'est pas tout d'avoir des jeux compatibles, faut aussi les périphériques ... (logitech, si vous lisez ce message, entendez mon appel au secours et rendez vos casques 5.1 et 7.1 USB compatibles nuNux )
3  0 
Avatar de air-dex
Membre expert https://www.developpez.com
Le 03/08/2019 à 15:58
Linux ne sert pas qu'à jouer. Du coup j'ai hâte de lire la réponse du maître Torvalds avec ses mots bien à lui.
3  1 
Avatar de walfrat
Membre actif https://www.developpez.com
Le 03/08/2019 à 15:58
Citation Envoyé par lsbkf Voir le message
Oui enfin avant de penser à faire des gains de 5%, on pourrait pas faire une campagne de sensibilisation auprès des devs de jeu pour qu'ils arrêtent de faire des boucles d'attente actives, et être plus CPU-friendly ? C'est pas en changeant le noyau Linux que d'un seul coup un pauvre menu composé de 5 sprites va passer de 100% à 95% de consommation de ressources.
Certes, de plus un gain de performance veut pas nécessairement dire passer de 100% à 95% de CPU mais simplement plus d'IPS (ou FPS si vous préférez).
1  0 

 
Responsable bénévole de la rubrique 2D - 3D - Jeux : LittleWhite -

Partenaire : Hébergement Web