¿Cómo cambiar el gobernador predeterminado?


12

Quiero cambiar el gobernador predeterminado en mi pi de ondemand a performance. ¿Hay alguna forma de hacer esto?

Respuestas:


21

No creo que pueda cambiar el valor predeterminado sin volver a compilar el núcleo. Con eso quiero decir, el que elige el núcleo cuando se inicia.

Sin embargo, puede indicarle que use un gobernador diferente mientras se ejecuta, por lo que si desea establecer de manera efectiva el valor predeterminado sin volver a compilar, puede agregar algo /etc/rc.localu otro script de inicio.

El /sysdirectorio no está en el disco; es un sistema de archivos falso en RAM que en realidad es una interfaz para obtener información y enviar comandos al núcleo. Todo esto es relativo a /sys/devices/system/cpu, entonces:

> cd /sys/devices/system/cpu

También debe ser root para hacer los write ( echo blahblah >). De todos modos, en relación con el directorio anterior, para ver los gobernadores disponibles:

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

Aparentemente, el tuyo es ondemand(pero lee "Gotcha" a continuación sobre esto); verificar:

> cat cpu0/cpufreq/scaling_governor
ondemand

Para cambiarlo:

echo performance > cpu0/cpufreq/scaling_governor

Tenga en cuenta que esto debe hacerse root, o de esta manera

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

Simplemente sudono va a funcionar porque no hay una redirección, >.

Ahora notará que el /sys/devices/system/cpu/cpufreqdirectorio (¡NO es el mismo que /sys/devices/system/cpu/cpu0/cpufreq!), Que anteriormente contenía identificadores de archivo para configurar el gobernador bajo demanda, está vacío.


Gotcha ...

En Raspbian hay un script de inicio, el nombre confuso raspi-config(no, no tiene nada que ver con el otro, que se ejecuta en el primer arranque por el nombre también confuso apply_noobs_os_config.sh), que utiliza esta técnica para configurar el gobernador a ondemandmenos que la tecla shift se mantiene presionado (se ha powersavecompilado el núcleo de Raspbian ). No hace nada más, por lo que es seguro deshabilitar this ( systemctl disable raspi-config), o puede editarlo según la respuesta de Gorkamorka , pero corre el riesgo de que una actualización del sistema no edite , etc. sabe lo que alguien planea hacer con eso.

Puede intentar agregar la versión anterior a no sudo /etc/rc.local. Esto puede suceder después de que el raspi-configscript haya salido.


Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Ricitos de oro

2
En lugar de requerir el cambio a raíz, sólo tiene que utilizar tee: echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor.
Nombre falso

2
Otra forma: sudo sh -c "echo performance> cpu0 / cpufreq / scaling_governor"
Moonchild

Como Raspbian está basado en Debian, debería poder encontrar los paquetes cpufrequtilsy sysfsutils. Después de instalarlos, puede configurar el gobernador y otros parámetros desde /etc/default/cpufrequtilsy /etc/sysfs.conf- vea aquí: wiki.debian.org/HowTo/CpuFrequencyScaling
mbirth


3

pregunta similar sobre el intercambio de pila RPi aquí.

Parafraseando, la velocidad bajo demanda sube al máximo cuando la CPU está al 95% ocupado. Puede reducir la cantidad de tiempo ocupado a un porcentaje menor (lo que significa que aumentará cuando no esté tan ocupado):

"escribir un valor entero en un archivo (puede poner lo siguiente, por ejemplo, en el archivo de inicio /etc/rc.local): echo 60> / sys / devices / system / cpu / cpufreq / ondemand / up_threshold"

entonces, teóricamente ... podrías poner este porcentaje en algo increíblemente bajo como 10 o 5, lo que significaría que siempre estaría funcionando al máximo.

Espero que esto ayude. ¡Asegúrese de puntuar a la persona que publicó esto en el artículo vinculado!


3
Eso no es realmente una respuesta a la pregunta: "¿cómo cambio el gobernador de OnDemand con el rendimiento (que son dos diferentes gobernadores).
goldilocks

1
@goldilocks Creo que esta respuesta aún agrega algo útil a la pregunta ya que explica cómo hacer que uno se comporte como el otro.
Dmitry Grigoryev

2

Una solución alternativa (si está ejecutando Raspbian) podría ser modificar el script init.d en /etc/init.d/raspi-config para deshabilitar siempre el regulador de escala. Su comportamiento predeterminado es habilitarlo solo al inicio si se presiona una de las teclas de mayúsculas:

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


Si bien esto puede responder a la pregunta, las buenas respuestas requieren más información de la que ha proporcionado aquí. Además, su respuesta no hace nada que las respuestas anteriores no hayan proporcionado.
Steve Robillard
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.