EN DIRECT 1806 connexion / inscription
Connexion

Surnom/Pseudo
Mot de Passe :

[ Vous avez perdu votre mot de pass ? | Devenir membre ]

×

[howto] undervolter son gpu amd sous linux

CowcotLand topic RSS feed Surveiller les réponses de ce sujet
rimaille
Cultivateur
Cultivateur

1046pts

Inscrit le: 16 septembre 2011
Age: 40
Messages: 712
Localisation: Sisteron
Navigateur : n.c.

Hors ligne
Message Posté le: Samedi 13 Juil 2019 à 09:18:14  Lien permanent
Répondre en citant
/!\ Attention, cela peut potentiellement engendrer des pannes matérielles, si vous appliquez ce tuto faites-le à vos risques et périls et en pleine conscience, je ne serai en aucun cas responsable d'un quelconque problème

L'intérêt est grand d'undervolter un gpu amd : on réduit sa conso, sa chauffe, le bruit généré.
Par défaut les produits AMD sont souvent survoltés en usine : cela permet d'augmenter le nombre d'unités valides qui tourneront aux fréquences désirées, mais dans les faits une immense majorité de gpu peuvent s'undervolter franchement.
Dans certains cas on augmente même ses performances, comme la carte n'atteint pas sa température limite, on peut overclocker ram et core plus haut sans que ça throttle. Ce n'est pas mon but ici, mais bon à savoir...

C'est tout simple, mais d'abord il faut autoriser la modification de ces paramètres en rajoutant amdgpu.ppfeaturemask=0xffffffff aux options de boot du noyau, et relancer linux.

Ensuite il faut rentrer les bonnes valeurs dans le bon fichier, en root.

d'abord je détaille un poil la syntaxe :

Code:
echo "s 0 300 750" > /sys/class/drm/card0/device/pp_od_clk_voltage


ici "s" veut dire qu'on va modifier le core ("m" pour la mémoire)
0 c'est le pstate, de 0 à 7 sur ma rx580
300 c'est les Mhz du core
750 c'est les mV qu'on veut appliquer

En résumé : au repos, le core de la carte tournera à 300Mhz avec une alimentation de 750millivolts

C'est parti, voici mes réglages pour ma rx580 nitro+ :

Code:
echo "s 0 300 750" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 1 600 769" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 2 900 887" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 3 1145 975" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 4 1215 975" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 5 1257 1002" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 6 1300 1002" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 7 1340 1002" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 0 300 750" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 1 1000 850" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 2 2000 900" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage


Si vous obtenez des artefacts graphiques (peu probable, ça n'arrive que dans certaines situations très rares... comme pour moi qui utilise openbox et dont l'affichage a du mal avec l'activation de ppfeaturemask), c'est causé par les variations de fréquence de la mémoire de la vram, il suffit donc de la bloquer (aucune incidence sur la consommation globale ça consomme très peu, ni sur la chauffe de la carte en tout cas sur ma rx580 nitro+) :
Code:
echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo "2" >  /sys/class/drm/card0/device/pp_dpm_mclk


Enfin, une autre option intéressante, c'est de pouvoir changer le powercap : on peut demander à la carte de ne consommer que 200W max en crête par exemple, si on a une vega c'est intéressant, ou si notre alim est faiblarde etc
Code:
echo 200000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap
Voir le profil de l'utilisateur Envoyer un message privé
rimaille
Cultivateur
Cultivateur

1046pts

Inscrit le: 16 septembre 2011
Age: 40
Messages: 712
Localisation: Sisteron
Navigateur : n.c.

Hors ligne
Message Posté le: Samedi 13 Juil 2019 à 09:30:03  Lien permanent
Répondre en citant
/!\ Attention, cela peut potentiellement engendrer des pannes matérielles, si vous appliquez ce tuto faites-le à vos risques et périls et en pleine conscience, je ne serai en aucun cas responsable d'un quelconque problème

Et mon script pour la gestion des ventilos (je sais ça tourne pas vite, je suis un ayatola du bruit, mais ça tourne nickel et ça chauffe modérément avec l'undervolt), je suis à 0rpm en bureautique et dans la plupart des usages courants, même avec ces fortes chaleurs d'été.

note : ce ne sont pas des pourcentages, vous aurez peut-être noté la présence du 200 qui correspond à ma ventilation de secours. /sys/class/drm/card0/device/hwmon/hwmon0/pwm1 peut prendre 255 pour 3200rpm. Pour calculer le nombre de rpm il faut donc faire un produit en croix :
awk '{printf "%.fRPM", $1 * 3200 / 255}' /sys/class/drm/card0/device/hwmon/hwmon0/pwm1

Code:
#!/bin/sh

function f_set_gpu_fan {
echo 1 > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable
echo ${1} > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1
}
while true ; do
                temp=$(awk '{print $1 / 1000}' /sys/class/drm/card0/device/hwmon/hwmon0/temp1_input)
                if [ ${temp} -lt 50 ] ; then f_set_gpu_fan 0
                elif [ ${temp} -lt 55 ] ; then f_set_gpu_fan 20
                elif [ ${temp} -lt 56 ] ; then f_set_gpu_fan 30
                elif [ ${temp} -lt 57 ] ; then f_set_gpu_fan 40
                elif [ ${temp} -lt 58 ] ; then f_set_gpu_fan 50
                elif [ ${temp} -lt 59 ] ; then f_set_gpu_fan 60
                elif [ ${temp} -lt 60 ] ; then f_set_gpu_fan 80
                elif [ ${temp} -lt 65 ] ; then f_set_gpu_fan 90
                elif [ ${temp} -lt 70 ] ; then f_set_gpu_fan 100
                elif [ ${temp} -ge 80 ] ; then f_set_gpu_fan 200
                fi
        sleep 1
done
Voir le profil de l'utilisateur Envoyer un message privé
Sauter vers: 
Surveiller les réponses de ce sujet CowcotLand topic RSS feed  

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sujets similaires

Sujet Auteur Forum Réponses Posté le
Pas de nouveau message Créer une sous-section DONS maziere00 Amélioration du site 1 Mercredi 11 Sep 2019 à 14:10:07
Pas de nouveau message GPU sous exploité en jeux reminos Cartes Graphiques 26 Mardi 10 Sep 2019 à 22:55:58
Pas de nouveau message Réduire la latence sous W10 Tolex Optimisation Windows 11 Samedi 10 Aoû 2019 à 15:05:35
Pas de nouveau message [howto] Gérer sa souris moderne (res, rgb, pollrate, binds) rimaille Linux 0 Mardi 23 Juil 2019 à 12:34:25
Pas de nouveau message [howto] overclocker son écran sous linux rimaille Linux 1 Samedi 13 Juil 2019 à 08:51:54