CPUfreq y governors en Fedora 20

0
39
CPUfreq y governors en Fedora 20
CPUfreq y governors en Fedora 20
Son muchas las herramientas que pueden ayudarte a conocer información relacionada al hardware como temperatura, conectores, modelo del motherboard, entre otros. En este entrada hablaré acerca de lo que se conoce como CPUfreq, una herramienta super utilizada en linux/gnu que permite tener control sobre la frecuencia de tu procesador a través de los governors y demás. Si quieres saber más, te invito a que sigas leyendo :D.

Muchos portátiles en linux tienen desventaja en su rendimiento energético si no se hace una configuración correcta, igual pasa en los ordenadores de mesa en menor proporción. El resultado inapropiado de la energía en nuestro ordenador se ve reflejado en cuánto tiempo podemos hacer uso de nuestras herramientas mientras no se esté conectado a una fuente que supla energia eléctrica.

Uno de los principales componentes dentro de una computadora es el procesador. Dentro de un procesador, se tiene un conjunto de circuitos encargados de ejercer operaciones aritméticas/lógicas, otros que se encargan de almacenar los datos en registros, y mucho más. En un procesador existe un dispositivo llamado reloj que se encarga de llevar el control de cuándo ejecutar una instrucción y cuánto tiempo dura.

El tiempo que le tarda a un procesador ejecutar una instrucción hace referencia al valor inverso de la frecuencia del reloj. Si tenemos un procesador que trabaja a una frecuencia de 2.80 GHz, quiere decir que cada instrucción le toma ejecutarla aproximadamente 357.14 pS, esto es en caso general ya que hoy día se tienen procesadores muy complejos que incluyen cores y demás, pero esa es la idea básica.

Para aumentar el período de vida de la batería, se debe modificar la frecuencia de operación del procesador. Dependiendo si se está trabajando en algo que requiera muchos recursos o no. Así se puede lograr tener un manejo eficiente en términos de consumo energético.

En Fedora existe una herramienta llamada CPUfreq también conocido como CPU frequency scaling o CPU speed scaling y su principal objetivo radica en variar la frecuencia del procesador dependiendo de eventos ACPI, carga del sistema o de una configuración manual de usuario.

Partiendo de lo mencionado anteriormente, se puede formular la pregunta: ¿Cómo sé cuál frecuencia asignar a mi procesador, qué normas debo seguir y cómo lo hago? Para eso existen los governors. Los governos definen parámetros de potencia dentro del procesador dando como resultado características, propósitos e idoneidad en función de la carga de trabajo.

Veamos cuáles están disponibles dentro del kernel de Fedora 20 categorizados en base a su frecuencia de operación:

Frecuencia estática:
cpufreq_performance: Utiliza la frecuencia máxima del procesador. En términos de potencia esto dará como resultado que el equipo funcione a su máxima capacidad consumiendo su máxima potencia. Este tipo de governor se utiliza cuando se necesita trabajar con aplicaciones que requieran un alto performance.

cpufre_powersave: Utiliza la frecuencia mínima del procesador. En términos de potencia se tendrá como resultado un menor consumo de potencia sacrificando performance. Al sacrificar performance se tendrá entonces un ordenador que trabaje más lento por lo tanto se aplica cuando no se requiera trabajar con aplicaciones que requieran alto performance o cuando el ordenador esté en períodos ociosos o cuando haya problemas de sobrecalentamiento en el equipo.

Frecuencia dinámica:
cpufreq_ondemand: Modifica la frecuencia de operación desde la mínima a la máxima o a la inversa dependiendo de la carga del CPU. Es un governor que puede ser utilizado para sistemas que necesiten en promedio un buen rendimiento en cuanto a consumo de potencia, performace y manejabilidad. Sin embargo, este governor lo hace a expensas de la latencia entre el cambio de frecuencia.

cpufreq_userspace: Permite a programas externos que corran a través de root editar las configuraciones de frecuencia dependiendo del gusto del usuario.

cpufreq_conservative: Ajusta la frecuencia de operación igual que en cpufreq_ondemand solo que no lo hace de manera abrupta sino de manera gradual. Sin embargo aquí se utiliza una latencia mayor.

Una manera sencilla de asignar diferentes governors a nuestro ordenador consiste en habilitarlos a través de cron. De esa manera podemos tener habilitados el governor más eficiente en términos de horarios, por ejemplo cuando se está en el trabajo y se necesite un alto performance o cuando se está en la noche redactando artículos tranquilos.

Después de conocer un pequeño resumen de los governors ya que esto es toda una ciencia en base a algoritmos de implementación, verán entonces cómo pueden hacer uso de los governors.

Para llevarlo a cabo necesitaremos cpupower que nos permite saber información de los governors disponibles, frecuencia máxima y mínima del procesador a través de línea de comando y además, habilita un systemd o demonio para modificar el governor en el boot.

Para qué frecuencia actual se está trabajando, normas actuales entre otra información relevante ejecuta:

Para saber qué governors tenemos disponibles en nuestro ordenador, ejecutamos:

Para habilitar cualquiera de los governos listados:

Ahora muchos de los procesadores traen consigo más de un core. Para asignar un governor a cada core se utiliza el flag -c con el rango de los cores o una lista separada por comas seguido del governor a asignar:

En procesadores de la marca AMD e viejos Intel el governor que viene por defecto generalmente es cpufreq_ondemand mientras que para procesadores Intel Sandybridge y los actuales se encuentra cpufreq_powersave.

Si quieres obtener información en función de parámetros puedes utilizar cualquier de los siguientes flags y añadirlos al comando cpupower frequency-info:
–freq: Muestra la frecuencia actual de procesador de a cuerdo a CPUfreq core en kHz.
–hwfreq: Muestra la frecuencia actual del procesador de acuerdo al hardware en kHz.
–driver: muestra los drivers utilizados en CPUfreq.
–governors: Muestra los governor habilitados en el kernel.
–hwlimits: Muestra la lista de frecuencia mínima y máxima del procesador en kHz.

¿Cómo asigno las frecuencias mínimas y máxima?
Lo puedes hacer a través de: cpupower frequency-set seguido de –min freq –max freq. Es importante asignar la frecuencia máxima primero.

El uso de los governors a través de cpupower nos permite tener un control más eficiente a la hora de hablar de rendimiento en nuestro ordenador, brinda esa libertad de poder conocer más a fondo nuestro hardware y de obtener la mejor solución dependiendo de nuestras necesidades.

Espero que les haya gustado este artículo. Y si tienen alguna pregunta o comentario pueden hacerlo. Si te gustó este artículo, pido que lo compartas con los demás en las redes sociales.

Imagen de portada tomada de: Iconarchive