Come cambiare il governatore predefinito?


12

Voglio cambiare il governatore predefinito sul mio pi da ondemand a performance. C'è un modo per farlo?

Risposte:


21

Non penso che tu possa cambiare il default senza ricompilare il kernel. Con questo voglio dire, quello che il kernel sceglie all'avvio.

Tuttavia, puoi dirgli di usare un governatore diverso durante l'esecuzione, quindi se vuoi impostare efficacemente il default senza ricompilare, puoi aggiungere qualcosa /etc/rc.localo qualche altro script di avvio.

La /sysdirectory non è su disco; è un file system falso in RAM che in realtà è un'interfaccia per ottenere informazioni e inviare comandi al kernel. Questo è tutto relativo a /sys/devices/system/cpu, quindi:

> cd /sys/devices/system/cpu

Devi anche essere root per eseguire le scritture ( echo blahblah >). Comunque, relativamente alla directory sopra, per vedere i governatori disponibili:

> cat cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave performance

Apparentemente il tuo è ondemand(ma leggi "Gotcha" sotto su questo); controllare:

> cat cpu0/cpufreq/scaling_governor
ondemand

Per cambiarlo:

echo performance > cpu0/cpufreq/scaling_governor

Nota che deve essere fatto root, o in questo modo

sudo sh -c "echo performance > cpu0/cpufreq/scaling_governor"

Semplicemente sudonon funziona perché c'è un redirect, >.

Noterai ora che la /sys/devices/system/cpu/cpufreqdirectory, (NON uguale a /sys/devices/system/cpu/cpu0/cpufreq!), Che precedentemente conteneva i filehandle per la configurazione del governatore ondemand, è vuota.


Gotcha ...

Su Raspbian esiste uno script init, il nome confuso raspi-config(no, non ha nulla a che fare con l'altro, che viene eseguito al primo avvio anche dal nome confuso apply_noobs_os_config.sh), che utilizza questa tecnica per impostare il governatore su a ondemandmeno che il tasto Maiusc viene tenuto premuto ( powersavecompilato il kernel stock di Raspbian ). Non fa nient'altro, quindi è sicuro disabilitare questo ( systemctl disable raspi-config), oppure potresti modificarlo secondo la risposta di Gorkamorka , ma poi corri il rischio di averlo non modificato da un aggiornamento del sistema, ecc. - chi sa cosa qualcuno ha intenzione di fare con quello.

Potresti provare ad aggiungere la versione non sudo sopra a /etc/rc.local. Ciò può accadere dopo la chiusura dello raspi-configscript.


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
riccioli d'oro

2
Piuttosto che richiedere il passaggio a radice, basta usare tee: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor.
Nome falso

2
Altro modo: sudo sh -c "echo performance> cpu0 / cpufreq / scaling_governor"
Moonchild

Poiché Raspbian è basato su Debian, dovresti essere in grado di trovare i pacchetti cpufrequtilse sysfsutils. Dopo averli installati, puoi impostare il governatore e altri parametri da /etc/default/cpufrequtilse /etc/sysfs.conf- vedi qui: wiki.debian.org/HowTo/CpuFrequencyScaling
mbirth,


3

domanda simile sullo scambio di stack RPi qui.

per parafrasare, la velocità su richiesta aumenta al massimo quando la CPU è occupata al 95%. Puoi ridurre la quantità di tempo occupato a una percentuale più bassa (il che significa che sarà cronometrato più alto quando non è così occupato) di:

"scrivere un valore intero in un file (puoi inserire ad esempio quanto segue nel file di avvio /etc/rc.local): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"

quindi, in teoria ... potresti mettere questa percentuale a qualcosa di incredibilmente basso come 10 o 5, il che significherebbe che sarebbe sempre in esecuzione al massimo.

Spero che sia di aiuto. Assicurati di dare un punteggio alto alla persona che ha pubblicato questo nell'articolo collegato!


3
Questa non è in realtà una risposta alla domanda "come posso cambiare il governatore da ondemand a performance (sono due governatori diversi ).
goldilocks

1
@goldilocks Penso che questa risposta aggiunga ancora qualcosa di utile al quesiton poiché spiega come far sì che l'uno si comporti come l'altro.
Dmitry Grigoryev,

2

Una soluzione alternativa (se si esegue Raspbian) potrebbe essere quella di modificare lo script init.d in /etc/init.d/raspi-config per disabilitare sempre il ridimensionamento del regolatore. Il suo comportamento predefinito è abilitarlo all'avvio solo se si preme uno dei tasti Maiusc:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          raspi-config
# Required-Start: udev mountkernfs $remote_fs
# Required-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Switch to ondemand cpu governor (unless shift key is pressed)
# Description:
### END INIT INFO

. /lib/lsb/init-functions

case "$1" in
  start)
    log_daemon_msg "Checking if shift key is held down"
    timeout 1 thd --dump /dev/input/event* | grep -q "LEFTSHIFT\|RIGHTSHIFT"
    if [ $? -eq 0 ]; then
      printf " Yes. Not enabling ondemand scaling governor"
      log_end_msg 0
    else
      printf " No. Switching to ondemand scaling governor"
      SYS_CPUFREQ_GOVERNOR=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor      if [ -e $SYS_CPUFREQ_GOVERNOR ]; t
hen
        echo "ondemand" > $SYS_CPUFREQ_GOVERNOR
        echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
        echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
        echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
        echo 1 | sudo tee /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
      fi
      log_end_msg 0
    fi
    ;;
  *)
    echo "Usage: $0 start" >&2
    exit 3
    ;;
esac

-3

echo "performance" | sudo tee / sys / devices / system / cpu / cpu0 / cpufreq / scaling_governor


Sebbene ciò possa rispondere alla domanda, le risposte valide richiedono più informazioni di quelle fornite qui. Inoltre, la tua risposta non fa nulla che le risposte sopra non abbiano già fornito.
Steve Robillard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.