Comment définir le régulateur de fréquence du processeur pour tous les cœurs à la fois?

31

Je voudrais définir le régulateur de fréquence du processeur pour tous les cœurs au lieu de le faire individuellement pour chaque cœur. Y a-t-il un moyen de le faire?

(Je sais qu’il serait facile de faire écho au gouverneur à /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor , mais je ne recherche pas de solution personnalisée.)

    
posée htorque 06.01.2011 - 09:53
la source

6 réponses

14

J'ai beaucoup cherché sur Google et je pense que ce n’est tout simplement pas possible, alors j’ai ajouté la monotouche suivante à mon .bashrc :

function setgov ()
{
    echo "" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}

Maintenant, je peux exécuter quelque chose comme setgov ondemand et tous les cœurs passeront au gouverneur ondemand .

    
réponse donnée htorque 23.01.2011 - 23:17
la source
18

Je suis toujours un nob linux mais ne pensez-vous pas que cpufrequtils vous permet de le faire en utilisant (Il n'est pas intégré au système d'exploitation Ubuntu mais est présent dans le dépôt)

sudo apt-get install cpufrequtils
sudo cpufreq-set -r -g performance
  • L'indicateur -r est utilisé pour définir le changement pour tous les cœurs ("tous liés au matériel")
réponse donnée user49449 06.03.2012 - 16:13
la source
4

la commande la plus courte pour changer le gouverneur de tous les cœurs est la suivante:

sudo bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'

Vous pouvez l’ajouter à .bashrc comme mentionné dans htorque, vous devrez le lancer en tant que root sudo setgov performance :

function setgov ()
{
     for i in {0..7}; 
     do 
         cpufreq-set -c $i -g ; 
     done
}
    
réponse donnée switch87 01.12.2016 - 13:48
la source
1

Peut aussi bien compléter le code bash, alors que nous y sommes:

function setgovernor () {
    echo "" | sudo tee 
    /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}
complete -W "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)" setgovernor
    
réponse donnée Ray Malanga 06.06.2018 - 00:03
la source
0

Sur la base de la réponse de switch87, j'ai créé un script simple cpufreq-set-all , qui permettra de faire d’autres choses cpufreq-set avec tous les processeurs:

   #!/bin/bash
   MAX_CPU=$(('nproc --all' - 1))
   for i in $(seq 0 $MAX_CPU); do
       echo "Changing CPU " $i " with parameter "[email protected];
       cpufreq-set -c $i [email protected] ;
   done

Maintenant, il peut être appelé (après chmod +x bien sûr) comme ceci:

cpufreq-set-all -g powersave

ou

cpufreq-set-all -f 800Mhz
    
réponse donnée side2k 08.12.2016 - 12:56
la source
0

La façon dont je mets cela en place puisque le gouverneur revient par défaut à powersave après environ 30 secondes à partir d'Ubuntu 16.04 ou plus tôt (je suis sur Ubuntu Mate);

  1. Mettez cette (une ligne de) code (merci, courtoisie de switch87 dans la réponse précédente)

    sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
    
  2. dans le fichier du répertoire

    /etc/rc.local
    

Le mien est une ligne au dessus de "exit 0" et non commentée, sous les commentaires.

"rc.local" pour ceux qui ne connaissent pas, il exécute la commande en tant que sudo. Toute commande, semble-t-il, pour changer le gouverneur, doit être exécutée en tant que sudo.

Il permet au gouverneur de revenir à powersave et exécute le code en tant que sudo après 60 secondes pour le ramener à la performance.

Remplacez le "60" (dans le code que vous copiez) par l’heure (en secondes. 60 = 60 secondes = 1 minute), vous devez retarder la commande et la "performance" (dans la partie commande) veux que ça change pour.

En dehors de mes heures et heures de recherche, je n’ai pas trouvé de solution plus permanente que celle-ci. Je pense que quelques minutes sont écoulées sur powersave si c'est le meilleur correctif que j'ai trouvé, non? Droit.

Ce n’est pas la meilleure solution, mais elle le rend un peu permanent après qu’il a peu changé de comportement. Si vous voulez démarrer directement dans un jeu ou quelque chose que vous allez devoir attendre une minute pour le code que vous venez de mettre pour le ramener de powersave ou réduire le timing (en fonction du temps nécessaire) tout pour démarrer afin de revenir aux performances correctement).

Et, comme toujours, pour revenir à la valeur par défaut (j'ai vu certains problèmes de surchauffe des PC des personnes, c'est pourquoi ils ont pu le faire par défaut sur powersave). Supprimez simplement le code de rc.local et redémarrez ou Rétablissez-le manuellement avec votre sélecteur d'icône de processeur ou lancez-le;

 sudo /etc/init.d/cpufrequtils restart

dans le terminal et / ou redémarrer.

    
réponse donnée Roiikka 13.04.2018 - 06:35
la source

Lire d'autres questions sur les étiquettes