Inicio > Archlinux, Linux > Cpufrequtils, escalado para la frecuencia de tu CPU.

Cpufrequtils, escalado para la frecuencia de tu CPU.

Miércoles, 30 de Septiembre de 2009

El escalado de CPU, lo que hace es poner a trabajar el procesador a una frecuencia reducida, siempre que no sea necesaria tanta potencia, ahorrando energía, batería en caso de los portátiles, y por lo tanto también se calienta menos, y no hace falta que los ventiladores giren tan rápido, alargando algo la vida de nuestro CPU.

Antes de nada, decir que los comandos, y la ubicación de los archivos de configuración pueden variar ligeramente, dependiendo de que distro de Linux estemos usando. Pero si tenéis un poco de experiencia, no creo que os cueste seguir los pasos. Todos los comandos escritos aquí, son para Archlinux.

Vamos a empezar, comprobando que tenemos bien configurada la BIOS. En las opciones del CPU, tine que poner algo como “Cool’n'Quiet (AMD)” o “SpeedStep (Intel)”. Si es así comprobaremos que están activadas. En algunos procesadores vienen activadas por defecto, y no tenemos opción para manipularlo.

También necesitamos el modulo adecuado, que controle nuestro procesador:

  • AMD Sempron/Athlon/MP ( K7 ). El módulo a cargar se llama powernow-k7
  • AMD Duron/Sempron/Athlon/Opteron 64/Turion ( K8 ). El módulo a cargar se llama powernow-k8
  • Intel Dual core/Pentium M/Core 2 Duo/Quad core/Centrino. Para estos procesadores tenemos dos módulos diferentes: speedstep-centrino (deprecated) y el más actual acpi-cpufreq
  • Intel Pentium 4. El módulo adecuado para esta familia de procesadores es el p4_clockmod
  • Otros (Desconocido). Si tu procesador no funciona con ninguno de los módulos mostrados arriba, puedes intentar, aunque no se puede asegurar que funcione, el módulo acpi-cpufreq

Si no sabemos cual es nuestro CPU, podemos usar el comando:

cat /proc/cpuinfo

Ahora cargamos el modulo deseado con modprobe (en mi caso acpi-cpufreq, para un Dual Core):

sudo modprobe acpi-cpufreq

Para que se inicie siempre que arranquemos el equipo, tendremos que añadir el nombre del módulo al array de los modulos en el archivo “/etc/rc.conf

Ahora, instalamos el paquete cpufrequtils. Lo encontrareis en los repositorios de vuestro distro, yo escribo el comando para Archlinux, que es el que uso:

yaourt -S cpufrequtils

Una vez instalado el programa, teclearemos el siguiente comando en la consola para obtener información sobre nuestro CPU:

cpufreq-info

A mí me arroja la siguiente información:

cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@vger.kernel.org, please.

analyzing CPU 0:
   driver: acpi-cpufreq
   CPUs which need to switch frequency at the same time: 0
   hardware limits: 1.20 GHz - 2.50 GHz
   available frequency steps: 2.50 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz
   available cpufreq governors: ondemand, performance
   current policy: frequency should be within 1.20 GHz and 2.50 GHz.
                           The governor "ondemand" may decide which speed to use
                            within this range.
   current CPU frequency is 1.20 GHz.

cpufreq stats: 2.50 GHz:2,60%, 2.00 GHz:0,25%, 1.60 GHz:0,40%, 1.20 GHz:96,74%  (11695)

analyzing CPU 1:
   driver: acpi-cpufreq
   CPUs which need to switch frequency at the same time: 1
   hardware limits: 1.20 GHz - 2.50 GHz
   available frequency steps: 2.50 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz
   available cpufreq governors: ondemand, performance
   current policy: frequency should be within 1.20 GHz and 2.50 GHz.
                          The governor "ondemand" may decide which speed to use
                          within this range.
   current CPU frequency is 1.20 GHz.

cpufreq stats: 2.50 GHz:3,08%, 2.00 GHz:0,26%, 1.60 GHz:0,41%, 1.20 GHz:96,25%  (11021)

Más adelante explicaré como configurarlo para que nos de los datos estadísticos escritos en verde. Mi procesador es un Core2 duo a 2.5 Ghz, y como podéis ver, la mayor parte del tiempo trabaja a 1.2 Ghz.

Lo primero es elegir el “governor” que más nos convenga, aquí una pequeña explicación:

  • Ondemand. Frecuencia de procesamiento basada en la carga. El módulo a cargar se llama cpufreq_ondemand
  • Conservative. Este modo es parecido al gobernador ondemand, el procesador se configura de alguna manera dependiendo del uso. Difiere en que el comportamiento del conservative hace el escalado de manera mucho más gradual que ondemand que realiza saltos a la máxima velocidad en el momento en que un proceso lo requiera.El módulo a cargar se llama cpufreq_conservative.
  • Performance. La CPU funciona solamente en la frecuencia máxima sin importar carga. Este gobernador se encuentra implícito al cargar un módulo de control del procesador.
  • Powersave La CPU funciona solamente en la frecuencia mínima sin importar carga. El módulo a cargar es cpufreq_powersave
  • Userspace Permite seleccionar al usuario a que frecuencia funcionara el procesador sin importar la carga. El nombre del módulo es cpufreq_userspace.

Y también nos tenemos que fijar, cuales son los límites de nuestro CPU, que nos lo dice en la linea “hardware limits: 1.20 GHz – 2.50 GHz”. Teniendo todo esto claro, pasaremos a editar el archivo de configuración:

sudo gedit /etc/conf.d/cpufreq

Este es mi archivo, para que veáis como hay que rellenarlo:

#configuration for cpufreq control

# valid governors:
#  ondemand, performance, powersave,
#  conservative, userspace
governor="ondemand"

# valid suffixes: Hz, kHz (default), MHz, GHz, THz
min_freq="1.20GHz"
max_freq="2.50GHz"

Las lineas en verde son las que tenemos que rellenar con los datos deseados. Y ahora lo único que nos queda, es arrancar el demonio con el comando:

sudo /etc/rc.d/cpufreq start

Si queremos que se inicie siempre al encender el equipo, lo agregaremos al array de Daemons, como estamos acostumbrados, en el archivo /etc/rc.conf.

Por último, si quereis que al hacer un cpufreq-info os salgan las estadísticas sobre el tiempo que pasa trabajando a cada frecuencia (os lo comentaba más arriba),  necesistamos tener cargado el modulo cpufreq_stats. Lo cargamos con modprobe como hemos hecho antes, y también lo podemos agregar al rc.conf.

Para los usuarios de Gnome (de kde no se si habrá equivalente), se puede añadir un applet para ver la frecuencia del CPU, y cambiar el Gobernador con un solo click. Pulsamos con el botón derecho en nuestro panel, elegimos añadir al panel, y en el panel que nos aparece, seleccionamos monitor de frecuencia de la cpu . Si tenemos dos nucleos, tendremos que agregar 2 applets, y poner a cada uno monitorizando un núcleo (se elige pulsando botón derecho /preferencias).

Eso es todo. A quedado un poco largo, pero no es complicado, son solo un par de cosillas.

Fuentes:
http://archxz.wordpress.com/?s=cpufreq
http://www.esdebian.org/wiki/cpu-scaling-debian

Tepes Archlinux, Linux , , , , ,

  1. ikanovo
    Miércoles, 30 de Septiembre de 2009 a las 20:53 | #1

    Hola, lo he intentado pero no me funciona…
    ———————————————————————————–
    # modprobe powernow-k8
    FATAL: Error inserting powernow_k8 (/lib/modules/2.6.30-ARCH/kernel/arch/x86/kernel/cpu/cpufreq/powernow-k8.ko): No such device
    ———————————————————————————–

    Creo haber usado el modulo adecuado ya q mi CPU AMD Athlon(tm) 64 X2 Dual Core Processor 5200+, además tengo activado en la BIOS la opción “Cool’n’Quiet”, intenté con los otros módulos q decís pero tampoco funciona. Saludos

    Con Mozilla Mozilla 1.9.1.3 en Linux Linux
  2. Tepes
    Miércoles, 30 de Septiembre de 2009 a las 21:09 | #2

    Has ejecutado el comando como root, o con un sudo delante?

    Saludos!!

    Con Mozilla Mozilla 1.9.1.3 en Linux Linux
  3. Tepes
    Miércoles, 30 de Septiembre de 2009 a las 21:18 | #3

    Vale, está la almohadilla en tu mensaje,no me había fijado, así que parece que eso no es :)

    Con Mozilla Mozilla 1.9.1.3 en Linux Linux
  4. ikanovo
    Jueves, 1 de Octubre de 2009 a las 01:16 | #4

    Si, lo ejecuté como root, y uso la versión para 64 bits de Archlinux, no si puede tener q ver con eso…

    Con Mozilla Mozilla 1.9.1.3 en Linux Linux
  5. Jueves, 1 de Octubre de 2009 a las 05:28 | #5

    Muchísimas gracias por el dato.

    Hace unos meses conocí a otra aplicación bastante útil tambien para el ahorro de energía en las portátiles que puede interesaste, aunque probablemente ya la conozcas.

    http://cyb3rpunk.wordpress.com/2009/06/17/powertop/

    Con Opera Opera 9.80 en Linux Linux
  6. Tepes
    Jueves, 1 de Octubre de 2009 a las 15:44 | #6

    @ikanovo
    No, yo uso también la versión de 64 bits. He copiado el error que te dice la consola en google, y hay más gente a la que le pasa, pero no se aclara por qué.

    @Ramón
    No la conocía. Yo no tengo portatil, así que no me preocupo mucho de este tema. Le echaré un ojo como curiosidad.

    Saludos!!

    Con Mozilla Mozilla 1.9.1.3 en Linux Linux
  7. Sábado, 3 de Octubre de 2009 a las 04:36 | #7

    Y por fin me puedo pasar por acá! [Maldito tiempo xD]

    Pues nada… muy buena la guía tepes! En verdad logré entender más o menos el funcionamiento de cpufreq.

    Pregunto, alguna velocidad del procesador que recomiendes? o alguna que sea buena para un rendimiento óptimo?

    Yo también le echaré un ojo a powertop que parece será útil para mi portátil :P

    Saludos y grax de nuevo por la guía!

    P.D. Recurro a tus conocimientos… de casualidad no sabes qué es lo que sucede al suspender o hibernar un equipo? ya que tengo un problema con los ventiladores de mi portátil que únicamente encienden si primero suspendo el sistema y después lo reanudo :-( .
    Alguna sugerencia/ayuda de cómo simular o realizar esa “reanudación” viva? o sea sin suspender el equipo primero?

    Disculpa las molestias.

    Con Safari Safari 532.1 en Mac OS Mac OS X
  8. Tepes
    Sábado, 3 de Octubre de 2009 a las 11:29 | #8

    @Gómez Hyuuga

    Ni idea :( . Yo no he tenido un portatil en la vida, así que no me preocupo mucho de esos temas, pero suena raro ese problemilla. Igual podrías mirar la configuración en la Bios de los ventiladores, o usar algún programas como lm-sensors + fancontrol. Pero yo ni idea, ya lo siento.

    En cuanto a los procesadores, yo lo tengo en “Ondemand”. Se pasa casi todo el tiempo a la mínima frecuencia (1.2), y no noto perdida de rendimiento. Gracias por pasarte!

    Saludos!!

    Con Mozilla Mozilla 1.9.1.3 en Linux Linux
  1. Miércoles, 30 de Septiembre de 2009 a las 16:29 | #1
  2. Miércoles, 30 de Septiembre de 2009 a las 17:51 | #2