J'aimerais définir le régulateur d'échelle de fréquence de la CPU pour tous les cœurs en même temps au lieu de le faire individuellement pour chaque cœur. Y a-t-il un moyen de faire cela?
(Je sais qu'il serait facile de rappeler le gouverneur à /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
, mais je ne cherche pas de solution personnalisée.)
J'ai beaucoup cherché sur Google et je pense que ce n'est tout simplement pas possible. J'ai donc ajouté la ligne suivante à mon .bashrc
:
function setgov ()
{
echo "$1" | 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 basculeront vers le gouverneur ondemand.
Je suis toujours un noob linux mais vous ne pensez pas que cpufrequtils vous laisse le faire en utilisant (il n'est pas fourni dans le système d'exploitation Ubuntu mais se trouve dans le référentiel)
Sudo apt-get install cpufrequtils
Sudo cpufreq-set -r -g performance
-r
est utilisé pour définir la modification pour tous les cœurs ("tous les matériels liés")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 htorque mentionné, vous devrez l'exécuter en tant que root Sudo setgov performance
:
function setgov ()
{
for i in {0..7};
do
cpufreq-set -c $i -g $1;
done
}
La façon dont j'ai réglé le problème depuis que le gouverneur par défaut revenait à powersave après environ 30 secondes à compter de la version Ubuntu 16.04 ou plus récente (je suis sur Ubuntu Mate);
Mettez cette (une ligne de) code (merci, merci 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'
dans le fichier dans le répertoire
/etc/rc.local
La mienne est une ligne au-dessus de "sortie 0" et non commentée, sous les commentaires.
"rc.local" pour ceux qui ne le savent pas, il lance la commande en tant que Sudo. Il semble que toute commande, pour changer de gouverneur, doit être exécutée en tant que Sudo.
Il permet au gouverneur de réinitialiser la sauvegarde et de lancer le code en tant que Sudo au bout de 60 secondes pour rétablir les performances.
Changez le "60" (dans le code que vous copiez) en n’importe quelle heure (en secondes. 60 = 60 secondes = 1 minute) vous devez retarder la commande et "performance" (dans la partie commande) à quel gouverneur vous voulez qu'il soit. changer à.
En dehors de mes heures et de mes heures de recherche, je n'ai pas trouvé de solution permanente à ce problème. Je suppose que quelques minutes sont consacrées à PowerSave si c'est la meilleure solution que j'ai trouvée, n'est-ce pas? Droite.
Ce n’est pas la meilleure solution, mais cela le rend un peu permanent une fois que c’est son changement qui passe à PowerSave. Si vous voulez démarrer correctement et vous lancer dans un jeu ou quelque chose comme ça, vous devrez attendre une minute pour le code que vous venez de mettre pour le remettre en place de powersave ou pour en réduire le temps (en fonction du temps que cela prend). tout pour démarrer afin que les performances reviennent correctement).
Et, comme toujours, pour revenir aux valeurs par défaut (j'ai constaté certains problèmes dus à une surchauffe des ordinateurs personnels (c'est pourquoi ils l'auraient peut-être modifié par défaut), il suffit de supprimer le code de rc.local et de le réinitialiser ou de le restaurer. manuellement avec votre commutateur d'indicateur d'icône cpu ou exécuter;
Sudo /etc/init.d/cpufrequtils restart
dans le terminal et ou redémarrez.
Autant ajouter du code bash, pendant que nous y sommes:
function setgovernor () {
echo "$1" | Sudo tee
/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
}
complete -W "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)" setgovernor
En me basant sur la réponse de switch87, j'ai créé un script simple, cpufreq-set-all
, qui permettra d'effectuer d'autres opérations 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 "$@;
cpufreq-set -c $i $@ ;
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
Vous pouvez le faire pour tous les cœurs à la fois en exécutant
Sudo cpupower frequency-set --governor performance