Vraag Hoe stel ik de gouverneur voor het schalen van de CPU-frequentie in voor alle kernen tegelijk?


Ik zou graag de gouverneur voor het schalen van de CPU-frequentie willen instellen voor alle kernen tegelijk in plaats van het individueel te doen voor elke kern. Is er een manier om dit te doen?

(Ik weet dat het makkelijk zou zijn om de gouverneur te echoën /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor, maar ik ben niet op zoek naar een aangepaste oplossing.)


31
2018-01-06 08:53


oorsprong


Met "aangepaste oplossing" bedoelt u dat een shellscript onaanvaardbaar is, het een ingebouwde GUI-knop moet zijn? - j-g-faustus
Ik vraag me af of er al een oplossing bestaat in een standaardinstallatie (hoeft geen GUI te hebben). - htorque
Controleer deze pagina: idebian.wordpress.com/2008/06/22/cpu-frequency-scaling-in-linux onder "debian-implementatie": het is schijnbaar mogelijk om de opstartstandaard te wijzigen en er is een gebruikersruimtetool genaamd powernowd. (Dit is een reactie in plaats van een reactie omdat de post uit 2008 komt en ik heb niet getest of het nog werkt ...) - j-g-faustus


antwoorden:


Ik ben nog steeds een Linux-noob, maar denk niet dat cpufrequtils het je laat doen door het te gebruiken (het is niet gebundeld in het Ubuntu OS maar is aanwezig in de repository)

sudo apt-get install cpufrequtils
sudo cpufreq-set -r -g performance
  • De -r flag wordt gebruikt om de wijziging voor alle ("alle hardware gerelateerde") kernen in te stellen

18
2018-03-06 15:13



De -r-gerelateerde optie doet het niet voor alle kernen. We moeten het cpu-nummer specificeren met de optie -c <nummer> maar dit script doet het voor alle cpu's in één keer: for ((i = 0; i <$ (nproc); i ++)); doe cpufreq-set-c $ i -r -g prestaties; gedaan - Sri
Precies, @Sri heeft gelijk. cpufreq-set in feite ontbreekt het aan uiteindelijk eenvoudige maar noodzakelijke functionaliteit. Veel mensen, zoals deze stemtellers duidelijk laten zien, zijn zich er gewoon niet van bewust, omdat de beschrijving ervan eenvoudigweg misleidend is om het af te maken. - poige
Wie geeft deze + 1's zonder te testen ???? Dit werkt helemaal niet. Ik postte de eenvoudigste werkende oplossing die ik kon vinden. - switch87


Ik heb veel gegoogeld en ik denk dat het gewoon niet mogelijk is, daarom heb ik de volgende one-liner aan mijn toegevoegd .bashrc:

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

Nu kan ik zoiets doen setgov ondemand en alle cores zullen overschakelen naar de op aanvraag gouverneur.


14
2018-01-23 22:17



Dit werkt niet omdat het bestand scaling_governor eigendom is van root en beperkte machtigingen heeft. Het wijzigen van de rechten wordt niet altijd aanbevolen. - Sri
Zie alternatief script in mijn commentaar op het antwoord van user49449. - Sri


de kortste opdracht om de gouverneur van alle kernen te veranderen is de volgende:

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

Je zou het aan .bashrc zoals htorque genoemd kunnen toevoegen, je zult het als root moeten uitvoeren sudo setgov performance:

function setgov ()
{
     for i in {0..7}; 
     do 
         cpufreq-set -c $i -g $1; 
     done
}

4
2017-12-01 12:48





Kan net zo goed toevoegen van bash-code, terwijl we bezig zijn:

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

2
2018-06-05 22:03





Op basis van het antwoord van switch87 maakte ik een eenvoudig script cpufreq-set-all, wat het mogelijk maakt om een ​​ander te doen cpufreq-set dingen met alle CPU's:

   #!/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

Nu kan het worden aangeroepen (na chmod +x, natuurlijk) zoals dit:

cpufreq-set-all -g powersave

of

cpufreq-set-all -f 800Mhz

0
2017-12-08 11:56





De manier waarop ik dit heb ingesteld, omdat de gouverneur standaard teruggaat naar powersave na ongeveer 30 seconden vanaf Ubuntu 16.04 of eerder (ik ben op Ubuntu Mate);

  1. Zet deze (één regel) code (bedankt, met dank aan switch87 in het vorige antwoord)

    sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
    
  2. in het bestand in de map

    /etc/rc.local
    

Mine is een regel boven "exit 0" en niet gecommentarieerd, onder de gecommenteerde.

"rc.local" voor degenen die het niet weten, het voert het commando uit als sudo. Elke opdracht die het lijkt, om de beheerder te wijzigen, moet als sudo worden uitgevoerd.

Het laat de regelaar terugzetten naar powersave en voert de code als sudo uit na 60 seconden om hem weer te laten werken.

Verander de "60" (in de code die u kopieert) naar welk tijdstip dan ook (in seconden. 60 = 60 seconden = 1 minuut) u moet het commando en de "uitvoering" (in het commandogedeelte) uitstellen naar welke gouverneur u wilt dat het veranderen naar.

Uit mijn uren en uren zoeken heb ik hiervoor geen meer permanente oplossing gevonden. Ik bedenk wat een paar minuten is dat het op powersave is als dit de beste oplossing is die ik heb gevonden, toch? Rechts.

Niet de beste oplossing, maar het maakt het enigszins blijvend nadat het een kleine overstap naar het energiebesparingsprogramma heeft gemaakt. Als je meteen wilt opstarten en in een game wilt springen, moet je een minuutje wachten op de code die je zojuist hebt ingevoerd om deze terug te zetten van powersave of de timing ervan te verlagen (afhankelijk van hoe lang het duurt alles om op te starten, zodat het correct terugkeert naar de prestaties).

En, zoals altijd, om terug te keren naar de standaardinstellingen (ik heb een aantal problemen met oververhitting van de pc's van mensen gezien, vandaar dat ze dit standaard hadden ingesteld op powersave) verwijder gewoon de code uit rc.local en start deze opnieuw op of schakel deze terug handmatig met uw cpu-pictogram indicatorswitcher of run;

 sudo /etc/init.d/cpufrequtils restart

in de terminal en of start opnieuw op.


0
2018-04-13 04:35