Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== 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). ==== Fréquence Uncore ==== Une fréquence par socket. Le comportement peut se configurer depuis le BIOS. * [[https://www.phoronix.com/scan.php?page=news_item&px=Intel-Uncore-Frequency-Driver]] À partir de Linux 5.6, il y a un support directement dans Linux (si compilé avec ''CONFIG_INTEL_UNCORE_FREQ_CONTROL=y''). Les fichiers à consulter sont dans ''/sys/devices/system/cpu/intel_uncore_frequency/''. ==== Fréquence des CPUs ==== * [[https://www.blaess.fr/christophe/2012/04/30/modifier-facilement-la-frequence-processeur/]] * [[https://wiki.archlinux.org/index.php/CPU_frequency_scaling]] * [[https://wiki.debian.org/CpuFrequencyScaling]] * [[https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt]] Toutes les informations sont dans ''/sys/devices/system/cpu/cpu0/cpufreq/''. On peut obtenir des informations avec ''cpupower frequency-info'' du paquet ''linux-cpupower''. Les drivers permettent de communiquer avec le processeur pour lui indiquer à quelle fréquence tourner. Celui activé par défaut maintenant est ''intel_pstate''. Ensuite, les //governors// permettent de dire au driver à quelle fréquence le processeur doit fonctionner. Le driver ''intel_pstate'' n'en permet que deux: ''performance'' et ''power_save'' (voir [[https://wiki.archlinux.org/index.php/CPU_frequency_scaling|la page de ArchLinux]] pour plus d'infos). === Changer les fréquences manuellement === Avec ''intel_pstate'', pour changer les valeurs limites des fréquences, il est possible d'écrire une valeur en pourcentage dans les fichiers ''/sys/devices/system/cpu/intel_pstate/{min,max}_perf_pct'' ([[https://www.reddit.com/r/linux/comments/1hdogn/acpi_cpufreq_or_iantel_pstates/|source]]): <code bash> # zsh semble poser problème... sudo sh -c "echo 28 > /sys/devices/system/cpu/intel_pstate/max_perf_pct" </code> Sinon il est aussi possible de changer les limites avec ''cpupower'': <code bash> sudo cpupower -c all frequency-set -u 3000MHz # max sudo cpupower -c all frequency-set -d 2800MHz # min </code> Si on souhaite se passer de ''intel_pstate'' pour pouvoir utiliser le driver ''userspace'' et vraiment définir nous-même la fréquence, il faut d'abord désactiver ''intel_pstate'', en rajoutant ''intel_pstate=disable'' à la ligne de boot. Ensuite: <code bash> cpupower frequency-info # nous dit qu'on peut utiliser userspace et quelles sont les fréquences permises sudo cpupower -c all frequency-set -g userspace sudo cpupower -c all frequency-set -f 1600000 </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> ==== Turbo boost ==== Savoir si le turbo boost est activé ([[https://askubuntu.com/a/991839|Source]]): <code bash> cat /sys/devices/system/cpu/intel_pstate/no_turbo # 0 => turbo boost on, off otherwise </code> ==== Changer la fréquence maximale des cœurs au démarrage ==== * [[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.txt Dernière modification : 2025/05/24 18:05de phsw