Valve Changes Everything For Low VRAM GPUs On Linux

La développeuse Natalie Vock de Valve a créé des correctifs pour le noyau Linux et des utilitaires espace utilisateur qui améliorent radicalement la gestion de la VRAM pour le jeu, en priorisant intelligemment les applications en premier plan (comme les jeux) via les cgrou...

Voir la source

SYNTHÈSE STRUCTURÉE

Le problème : La bataille anarchique pour la VRAM

Sur un système de bureau Linux standard, de nombreuses applications (navigateur, environnement de bureau, Discord) se partagent la VRAM du GPU avec le jeu. Lorsque la mémoire vient à manquer, le noyau doit “évincer” des données de la VRAM pour faire de la place. Historiquement, ce mécanisme était aveugle et pouvait choisir d’évincer la mémoire du jeu, l’application la plus sensible aux performances, causant des ralentissements et des saccades. Comme l’explique l’intervenant : “Pour le noyau, tout est juste quelque chose qui demande de la mémoire. […] Le meilleur choix ? Ne pas prendre de décision.”

La solution technique : Le contrôleur DMEM cgroup

La solution repose sur l’introduction d’un nouveau contrôleur de cgroup appelé DMEM (Device Memory). Il permet d’attribuer une protection à la mémoire allouée par un groupe de processus. Une mémoire protégée sera la dernière à être évincée par le noyau. Cela permet enfin de faire la distinction entre un jeu (prioritaire) et une application d’arrière-plan. L’intervenant souligne : “Les cgroups sont super géniaux pour organiser des groupes de processus aléatoires en unités organisationnelles uniques.”

L’intégration avec le bureau : Plasma Foreground Booster

Pour être efficace, le système doit savoir quelle application est prioritaire. Heureusement, KDE Plasma avait déjà implémenté un mécanisme similaire pour la RAM système, utilisant les cgroups pour booster l’application au premier plan. Le travail a donc consisté à étendre cette logique à la VRAM via le contrôleur DMEM. “Ajouter la priorisation de la VRAM dans mon fork était pratiquement une promenade de santé.”

Le pont nécessaire : DMEMCGbooster

Un obstacle est apparu : systemd, qui gère les cgroups, ne supporte pas encore nativement le contrôleur DMEM. Pour ne pas bloquer le développement, l’intervenant a créé dmemcg-booster, un utilitaire en Rust qui, après que systemd a créé la hiérarchie des cgroups, active le contrôleur DMEM et configure les paramètres de protection nécessaires. C’est une solution temporaire en attendant une intégration native dans systemd.

Comment en bénéficier aujourd’hui (méthode simple)

La méthode la plus simple pour tester ces améliorations est d’utiliser CachyOS avec l’environnement de bureau KDE Plasma.

  1. Utiliser CachyOS avec un noyau version 7.0 RC7-2 ou supérieure.
  2. Installer les paquets nécessaires :
    sudo pacman -S dmemcg-booster plasma-foreground-booster
  3. Redémarrer. Les correctifs du noyau et les utilitaires sont alors actifs.

Alternatives pour d’autres distributions Arch

Pour les utilisateurs d’Arch Linux standard ou d’une distribution dérivée :

  • Noyau : Installer le noyau linux-dmemcg depuis l’AUR, ou le noyau CachyOS.
  • Utilitaires : Installer dmemcg-booster et plasma-foreground-booster (dans l’AUR sous le nom plasma-foreground-booster-dmemcg) depuis l’AUR. L’intervenant note : “Je recommanderais simplement d’installer le noyau CachyOS, comme ça vous obtenez aussi d’autres améliorations de CachyOS.”

Alternative sans KDE : Gamescope

Il n’est pas obligatoire d’utiliser KDE. L’utilisation d’une version récente de Gamescope, le compositeur de Valve, peut aussi tirer parti de ces améliorations. Dans ce cas, il faut toujours installer dmemcg-booster et avoir un noyau patché. “Cela vous permet de régler beaucoup de problèmes que les jeux ont avec le redimensionnement et diverses autres choses.”

Résultat concret sur Cyberpunk 2077

Avant les correctifs, Cyberpunk 2077 pouvait se voir allouer une partie importante de ses textures en GTT (mémoire système utilisée comme “swap” pour le GPU), au-delà de ses 650 Mo alloués intentionnellement, causant des ralentissements. Après les correctifs, seule la partie intentionnelle du jeu réside en GTT. Le reste reste en VRAM, car la mémoire des applications d’arrière-plan est évincée en premier. “Tout le reste est juste en train de grignoter ce qui pourrait tourner en arrière-plan et de le donner au jeu.”

Limitations et support matériel

  • AMD & Intel : Les correctifs principaux concernent les pilotes open-source amdgpu et i915.
  • NVIDIA Open-Source : Un correctif séparé existe pour les pilotes nouveau.
  • NVIDIA Propriétaire : Non supporté, comme souvent pour ce type d’innovation open-source. “Pour le NVIDIA propriétaire, bonne chance !”
  • iGPU : Le bénéfice est incertain, car elles utilisent déjà la RAM système comme VRAM. L’intervenant avertit : “Tous les utilitaires en espace utilisateur dépendent fortement de systemd. Sans systemd, vous devez écrire vos propres utilitaires.”

CONCEPTS CLÉS

  • VRAM : Mémoire vidéo dédiée, rapide, située sur la carte graphique.
  • GTT (Graphics Translation Table) : Mémoire système (RAM) mappée et accessible par le GPU. Plus lente que la VRAM, utilisée comme extension ou “swap”.
  • Éviction : Processus par lequel le noyau déplace des données hors de la VRAM (vers le GTT) pour libérer de l’espace.
  • cgroups (control groups) : Fonctionnalité du noyau Linux permettant de limiter, prioriser et suivre les ressources (CPU, mémoire, etc.) d’un groupe de processus.
  • DMEM cgroup controller : Nouveau contrôleur permettant d’appliquer des politiques (comme la protection) à la mémoire allouée sur des périphériques spécifiques comme les GPU.
  • Gamescope : Compositeur (gestionnaire de fenêtres) développé par Valve, optimisé pour le jeu, utilisé dans le Steam Deck.

CONCLUSION

Ces correctifs représentent une avancée significative pour l’écosystème du jeu sur Linux, en apportant une gestion intelligente et prioritaire de la VRAM directement au niveau du noyau. Le message principal est que l’expérience gaming peut être considérablement améliorée non pas en ajoutant du matériel, mais en optimisant l’allocation des ressources existantes grâce à une collaboration entre les pilotes GPU, le noyau (cgroups) et l’espace utilisateur (les environnements de bureau). Cela compte car cela améliore la stabilité et les performances pour la majorité des joueurs qui n’ont pas de cartes haut de gamme, renforçant ainsi la position de Linux comme plateforme de jeu viable. Comme le résume l’intervenant : “C’est un autre ‘W’ (win) pour Valve, un autre ‘W’ pour KDE, et c’est une bonne chose selon moi.”

Du même canal

Tout voir