20 oct. 2026 · matos & conso · testé chez moi

j'ai undervolté ma 3090 et ma 3080 ti sous linux, -94 W pour presque rien

deux agents de code qui bossent en même temps, 452 W → 358 W sur les deux cartes, les ventilos passent de 91% à 48%, et le débit perd 7%

résultat3090 + 3080 Ti, 80go
-94 W
avant452 W · ventilo 3090 à 91%
après358 W · ventilo 3090 à 48%
débit67,0 → 62,0 tok/s par agent (-7%)

ce que je voulais savoir

ma box fait tourner deux agents de code en même temps sur un gros MoE (Qwen 3.8 Flash Next, 125B), et d'origine les deux cartes tirent 452 W pendant que la 3090 souffle à 91% de ventilo, ce qui finit par s'entendre depuis l'autre pièce. je voulais savoir combien de watts je pouvais enlever avant que le débit commence vraiment à en souffrir.

la méthode

sous linux on ne peut pas régler la tension d'une carte nvidia directement, donc on passe par un détour : on bloque la fréquence max de la carte avec nvidia-smi -lgc, puis on décale toute la courbe tension/fréquence vers le haut avec l'appel NVML nvmlDeviceSetGpcClkVfOffset (+150 MHz ici). la carte atteint alors la même fréquence en demandant moins de tension, et c'est là que les watts disparaissent. le pas à pas complet, avec le script que j'utilise au démarrage, est dans le guide undervolt.

pour chaque réglage j'ai laissé tourner 3 minutes avec deux vraies code reviews en parallèle, sur des contextes qui montaient jusqu'à ~110K tokens, plutôt qu'un bench synthétique qui n'aurait pas reflété mon usage.

les chiffres

réglage 3090 3080 Ti débit par agent conso des deux ventilo 3090
260 W, d'origine 260 W 67,0 tok/s 452 W 91%
220 W, d'origine 220 W 56,8 tok/s 406 W 80%
200 W, d'origine 200 W 54,2 tok/s 367 W 66%
180 W, d'origine 180 W 42,7 tok/s 326 W 63%
undervolt 1500 MHz +150 260 W 63,5 tok/s 404 W 59%
undervolt 1650 MHz +150 260 W 63,6 tok/s 420 W 74%
undervolt 1500 MHz +150 undervolt 1800 MHz +150 62,0 tok/s 358 W 48%

avec un seul agent, le débit ne bouge presque pas jusqu'à 200 W (111 tok/s à 260 W, 104 à 200 W) : c'est vraiment quand les deux agents génèrent en même temps que la conso se paie.

ce qui m'a surpris

le plus contre-intuitif, c'est que baisser simplement la limite de puissance fait plus de dégâts que l'undervolt : à 220 W le débit à deux agents perd déjà 15%, alors que l'undervolt garde 63,5 tok/s en tirant moins que ça.

la petite carte compte aussi plus que la grosse. avec le même undervolt sur la 3090, passer la 3080 Ti de 260 à 200 W fait tomber le débit de 63,5 à 54,6 tok/s, parce que dans un setup à deux cartes c'est la plus faible qui donne le rythme.

et sous 200 W la 3090 s'effondre carrément (788 MHz à 180 W), alors que monter le blocage de 1500 à 1650 MHz ne rapporte rien du tout, à part plus de conso et plus de bruit.

ce qui n'a pas marché

j'avais prévu de vérifier la stabilité en comparant les réponses au bit près avant et après, mais même sans undervolt le moteur ne redonne pas exactement le même texte d'un run à l'autre, donc j'ai remplacé ça par une petite série de questions de calcul (4/4 justes avec et sans undervolt). la nouvelle API d'offset par P-state renvoyait 0 après réglage, et seul l'offset GPC a vraiment pris.

ce que je garde

les deux cartes sont undervoltées, la 3090 bloquée à 1500 MHz et la 3080 Ti à 1800 MHz avec +150 MHz chacune : ça fait -94 W, le ventilo de la 3090 passe de 91% à 48%, et chaque agent tourne à 62 tok/s au lieu de 67. la box est devenue vivable dans la pièce, et ça vaut largement les 7%.

un bébé sur une plage, le poing serré plein de sable, l'air fier

ce que ces mesures ne disent pas

  • une seule mesure de 3 minutes par réglage, en vraie charge d'agents, donc un écart de moins de 5 à 10% reste dans le bruit
  • la stabilité a été vérifiée sur une quinzaine de minutes de charge, pas sur des jours, et chaque carte encaisse l'undervolt différemment
  • la 3090 monte quand même à 84 °C : le gain se joue surtout sur la conso et le bruit
  • je n'ai mesuré ni la vitesse de lecture des prompts (prefill) avec l'undervolt, ni la conso à la prise

tu es un agent ? cette page en markdown · les mesures en json