linux:frequencies

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:frequencies [2020/07/15 11:39] – add how to disable hyperthreading phswlinux:frequencies [2025/05/24 18:05] (Version actuelle) – [Fréquences matérielles] add link phsw
Ligne 1: Ligne 1:
 ====== Fréquences matérielles ====== ====== Fréquences matérielles ======
 +
 +  * [[https://www.grid5000.fr/w/CPU_parameters]]
 +
 +  * [[https://github.com/readex-eu/libfreqgen]]
 +
 +  * [[https://chipsandcheese.com/p/zen-5s-avx-512-frequency-behavior|Zen 5's AVX-512 Frequency Behavior]]
 +
 +On peut utiliser l'outil ''powertop'' (fourni par le paquet éponyme).
  
  
Ligne 38: Ligne 46:
 Sinon il est aussi possible de changer les limites avec ''cpupower'': Sinon il est aussi possible de changer les limites avec ''cpupower'':
 <code bash> <code bash>
-sudo cpupower frequency-set -u 3000MHz # max +sudo cpupower -c all frequency-set -u 3000MHz # max 
-sudo cpupower frequency-set -d 2800MHz # min+sudo cpupower -c all frequency-set -d 2800MHz # min
 </code> </code>
  
Ligne 46: Ligne 54:
 <code bash> <code bash>
 cpupower frequency-info # nous dit qu'on peut utiliser userspace et quelles sont les fréquences permises cpupower frequency-info # nous dit qu'on peut utiliser userspace et quelles sont les fréquences permises
-sudo cpupower frequency-set -g userspace +sudo cpupower -c all frequency-set -g userspace 
-sudo cpupower frequency-set -f 1600000+sudo cpupower -c all frequency-set -f 1600000
 </code> </code>
  
 +Mais cela n'est pas forcément suffisant si on souhaite rester constamment à une fréquence élevée: les cœurs finissent par diminuer leur fréquence s'ils sont inactifs. Pour éviter ça, il faut aussi désactiver les C-states.
 +
 +=== C-states ===
 +
 +  * [[http://ena-hpc.org/2014/pdf/paper_06.pdf]]
 +  * [[https://access.redhat.com/articles/65410]]
 +  * [[https://www.deltasight.fr/processeurs-gestion-energie-frequence/]]
 +  * [[https://doc.ubuntu-fr.org/utilisateurs/naziel/gestion_energie_processeur]]
 +  * [[https://community.intel.com/t5/Software-Tuning-Performance/How-can-I-lock-my-Xeon-CPU-frequency-in-Ubuntu/m-p/1126076#M6300]]
 +
 +En plus de faire attention au //driver// et au //governor//, il faut tenir compte des C-states, qui sont des états où les cœurs inoccupés réduisent leur fréquence, voir vident leur cache. Suivant le C-state dans lequel est un cœur, il met plus ou moins de temps à repasser à sa fréquence nominale. 
 +
 +Pour connaître les C-states disponibles:
 +<code bash>
 +sudo cpupower idle-info
 +</code>
 +
 +Pour savoir dans quel état sont majoritairement les cœurs:
 +<code bash>
 +sudo cpupower monitor
 +</code>
 +
 +Pour désactiver les C-states, (on peut apparemment le faire depuis le BIOS ?) il faut ajouter ''idle=poll'' à la ligne de boot dans GRUB. Attention, apparemment désactiver les C-states ne fait pas bon ménage avec l'hyperthreading. Les fréquences des cœurs sont alors constantes.
 +
 +
 +=== Résumé pour définir les fréquences manuellement ===
 +
 +  - ''intel_pstate=disable idle=poll'' dans la ligne de boot
 +  - <code bash>
 +sudo cpupower -c all frequency-set -g userspace
 +</code>
 +  - <code bash>
 +sudo cpupower -c all frequency-set -f 1600MHz
 +</code>
 +  - <code bash>
 +watch -n 1 "cat /proc/cpuinfo | grep MHz"
 +</code>
 +
 +
 +==== Surveiller la température ====
 +
 +  * [[https://askubuntu.com/a/15834]]
 +
 +<code bash>
 +cat /sys/class/thermal/thermal_zone*/temp # en millidegrés Celsius
 +
 +# ou bien fouiller dans
 +cat /sys/class/hwmon/hwmon*/temp*
 +
 +# ou bien, fourni par le paquet lm-sensors :
 +sensors
 +</code>
  
  
Ligne 61: Ligne 121:
  
  
-==== Hyper threading ==== 
  
-(ou //logical processor//, //SMT//) 
  
-Pur le désactiver, plusieurs possibilités: +==== Changer la fréquence maximale des cœurs au démarrage ==== 
-  * dans le BIOS + 
-  * écrire dans ''/sys/devices/system/cpu/smt/control''+  * [[https://wiki.archlinux.org/title/CPU_frequency_scaling]] 
 +  * [[https://wiki.debian.org/CpuFrequencyScaling]] 
 + 
 +(sur Raspberry Pi) 
 + 
 +Créer une règle udev : 
 +<file bash /etc/udev/rules.d/50-throttle-frequency.rules> 
 +SUBSYSTEM=="module", ACTION=="add", KERNEL=="cpufreq_dt", RUN+="/bin/sh -c 'cpupower -c all frequency-set -u 900MHz'
 +</file> 
 + 
 +Lorsque le module ''cpufreq_dt'' est chargé au lancement du noyau, exécute la commande ''RUN''. Pour connaître après quel module exécuter la commande, trouver le driver avec ''cpupower frequency-info'', et trouver le nom du module noyau correspondant avec ''lsmod | grep cpufreq'' (ici, ''-'' est transformé en ''_''). 
 + 
 +Redémarrer. 
 + 
 + 
 +==== Changer le gouverneur par défaut ==== 
 + 
 +  * [[https://askubuntu.com/questions/1322492/how-to-set-as-default-performance-mode-on-ubuntu-20-04-instead-of-powersave]] 
 +  * [[https://moisescardona.me/changing-the-cpu-governor-to-performance-in-linux/]] 
 + 
 +Ajouter ''cpufreq.default_governor=powersave'' à la variable ''GRUB_CMDLINE_LINUX_DEFAULT'' dans le fichier ''/etc/default/grub''. Mettre à jour GRUB : 
 +<code bash> 
 +update-grub 
 +</code> 
 + 
  
  
  
  
  • linux/frequencies.1594805983.txt.gz
  • Dernière modification : 2021/04/04 17:01
  • (modification externe)