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.)
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
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.
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
}
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
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
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);
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'
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.