Un nouveau set de patchs vient d’être partagé sur la mailing list du kernel Linux, avec un objectif clair : faire disparaître une bonne partie du stuttering qui touche les jeux sur Steam Deck. Le développeur derrière ces patchs, David Vernet, affirme avoir amélioré les 1% lows sur des CPU AMD jusqu’à 31%, ce qui n’est pas rien quand on sait à quel point ces micro-chutes de framerate plombent le ressenti en jeu.
Les patchs introduisent une fonctionnalité baptisée epp_boost au sein du driver AMD P-State. L’idée est d’améliorer les performances CPU en identifiant les cœurs occupés à un instant donné et en activant un boost EPP (Energy Performance Preference) cœur par cœur, uniquement quand c’est nécessaire.
Un boost EPP cœur par cœur, pas pour toute la puce
Quand le paramètre module epp_boost est activé, un hook update-util échantillonne la résidence C0 de chaque cœur (delta MPERF sur delta TSC) au maximum une fois toutes les 10 ms. Si un échantillon montre le cœur occupé à au moins 50%, le champ EPP de son MSR_AMD_CPPC_REQ est réglé sur performance et maintenu jusqu’à ce que 300 ms passent sans autre échantillon occupé, moment où le hook restaure la requête que la gestion de politique avait stockée en dernier dans cppc_req_cached.
– David Vernet, via la Linux Kernel Mailing List
L’objectif affiché est d’obtenir des résultats proches de l’état global EPP boost, mais sans la pénalité d’efficacité que coûte le fait de verrouiller tous les cœurs en mode haute performance. En clair, moins de gaspillage énergétique pour un gain de fluidité comparable, voire meilleur.
Des gains concrets sur Civilization VI
Le développeur a testé ses patchs directement sur un Valve Steam Deck. Le benchmark intégré de Civilization VI, utilisé comme charge de travail CPU-bound mono-thread, a montré une amélioration de 31,8% des 1%-low frame rates avec epp_boost activé, ainsi qu’un gain de 4,1% sur les p99 frame times. Le patch set fait même mieux que l’état global EPP boost natif, qui ne relevait les 1% lows que de 16%.
Les patchs n’ont toutefois pas encore été implémentés : ils doivent d’abord passer entre les mains des ingénieurs kernel d’AMD pour être examinés.
Comment le développeur a mesuré tout ça
Les tests ont été menés sur un Steam Deck LCD équipé de l’APU Van Gogh, en mode actif avec EPP réglé sur balance_performance. Le benchmark graphique de Civilization VI a servi de charge de travail CPU-bound mono-thread, avec un passage de benchmark intégré répétable. Les comparaisons ont pris la forme de tests A/B entrelacés, avec 6 itérations par configuration. Pour chaque run, les frame times par image et la fréquence du cœur occupé ont été relevés, permettant de dériver le FPS moyen, le 1%-low FPS ainsi que les percentiles p99 et p999. Les écarts ont été évalués avec un test t de Welch, p-values à l’appui.
- Réglages par défaut : fréquence médiane du cœur occupé de 2,43 GHz malgré une utilisation à 98%.
- EPP=performance en global : médiane relevée à 3,5 GHz, p999 frametime réduit d’environ 40% et 1%-low FPS en hausse d’environ 16%, mais appliqué à tous les cœurs et toutes les charges de travail.
- Variante min_perf relevé à nominal sur le cœur occupé : même médiane de 3,5 GHz, mais p999 dégradé de 13 à 21% en perturbant la gestion du boost SMU.
- epp_boost activé : cœur occupé exécutant le thread principal de Civ VI à une médiane de 3,5 GHz, gain de 31,8% en 1%-low FPS (p=0,014) et 4,1% en frametime p99 (p=0,015), avec p999 et FPS moyen inchangés.
Utile aussi pour les futures Steam Machine ?
Ce patch set serait particulièrement utile pour les systèmes limités en puissance CPU, comme la Valve Steam Machine et d’autres machines équipées de CPU basse consommation. Sur ce type de configuration, chaque watt compte, et une solution qui booste les performances sans verrouiller la puce en mode haute performance permanent a de quoi séduire.
Avant toute intégration dans le kernel, ces patchs doivent d’abord être passés au crible par les ingénieurs d’AMD, seuls habilités à valider leur fusion dans le driver AMD P-State.

