Reducción del consumo de energía de Linux - Parte 1: El subsistema CPUfreq

Conozca todos los componentes para mejorar el consumo de energía de Linux en System x

Esta serie dividida en tres partes marca su punto de partida para poner a punto su sistema con el objetivo de lograr una mayor eficiencia energética. En la Parte 1, usted obtendrá toda la información necesaria sobre los componentes y los conceptos necesarios para poner a punto un servidor System x basado en Linux con el objetivo de lograr una mayor eficiencia energética. Usted aprenderá a activar el subsistema Linux CPUfreq, obtendrá instrucciones sobre los estados C y P y determinará cuáles de los cinco reguladores dentro del kernel son necesarios para mejorar la eficiencia energética de su sistema.

Comparta sus puntos de vista: ¿Qué tan importante es el ahorro de energía para su compañía? Agregue sus comentarios a continuación.

Jenifer Hopper, Software Engineer, IBM

author photo - Jenifer HopperJenifer Hopper es Software Engineer para el IBM Linux Performance Group en Austin, Texas. En la actualidad, se concentra en High Performance Computing (HPC), en las cargas energéticas de trabajo y en las herramientas de análisis de datos y generadores de datos de sistemas.



28-12-2009

Sobre esta serie

En esta serie, usted aprenderá a realizar la puesta a punto de su servidor IBM System x basado en Linux para lograr una mayor eficiencia energética. Usted aprenderá qué son los reguladores dentro del kernel, cómo configurarlos y cómo usarlos. Además, usted también podrá observar los efectos que tienen los reguladores puestos a punto sobre el rendimiento energético y la carga de trabajo de e-commerce. Los ejemplos se basan en un servidor System x que usa la versión 5.2 de Red Hat Enterprise Linux (RHEL 5.2). Sin embargo, estos mismos lineamientos son aplicables a cualquiera de los kernels 2.6.x y a cualquier tipo de procesador que soporte el escalamiento de frecuencia.

La Parte 1 introduce los componentes y los conceptos que usted necesitará para realizar la puesta a punto de su sistema con el objetivo de lograr una mayor eficiencia energética (incluyendo el subsistema Linux CPUfreq, los estados C y P y los cinco reguladores dentro del kernel).

La Parte 2 le ofrece más detalles sobre la configuración general del subsistema Linux CPUfreq y los cinco reguladores dentro del kernel:—performance (rendimiento), powersave (ahorro de energía), userspace (espacio de usuario), ondemand (a pedido) y conservative (conservador)— y sus configuraciones.

La Parte 3 compara el rendimiento de los cinco reguladores dentro del kernel en un estado puesto a punto y en uno no puesto a punto con el objetivo de mostrarle los resultados que usted puede obtener si realiza la puesta a punto para que su sistema logre una mayor eficiencia energética.

La eficiencia energética es una consideración importante para todas aquellas personas que se preocupan por los costos de negocios o los problemas medioambientales. En este artículo, veremos cómo usar el subsistema Linux CPUfreq y los reguladores dentro del kernel para modificar la frecuencia operativa del procesador con el objetivo de mejorar la eficiencia energética de su sistema sin que esto afecte el rendimiento. Sin embargo, la puesta a punto de la eficiencia energética se ve limitada por el hardware actual. Para mayor información sobre esto, vea la Parte 2 de esta serie.

El subsistema Linux CPUfreq

Comenzando con el kernel Linux 2.6.0, usted puede escalar las frecuencias del procesador de manera dinámica por medio del subsistema CPUfreq. Cuando los procesadores operan a una menor velocidad de reloj, consumen menos energía y generan menos calor. Este escalamiento dinámico de la velocidad de reloj le permite controlar el funcionamiento del sistema con el objetivo de consumir menor energía cuando no se esté operando al máximo de su capacidad.

La estructura de CPUfreq usa reguladores y daemons para configurar una política energética estática o dinámica para el sistema. Los reguladores dinámicos, que se discuten más adelante en este artículo, pueden alternar las frecuencias del CPU basándose en la utilización del CPU para así permitir el ahorro de energía sin necesidad de sacrificar el rendimiento. Estos reguladores también permiten que los usuarios los modifiquen levemente con el objetivo de personalizar y cambiar el escalamiento de frecuencia. Además de esto, las configuraciones sched_mc_power_savings y sched_smt_power_savings usan subprocesos de consolidación para ahorrar energía.


Estados C y estados P

Únase a los grupos ecológicos en My developerWorks

Discuta diversos temas y comparta recursos relativos a la energía, la eficiencia y el medioambiente en el espacio GReen IT Report y en el grupo de computación ecológica en My developerWorks.

Antes de comenzar a hablar sobre CPUfreq, revisemos los estados C y P.

Estados C: Casi todos inactivos

Los estados C, con la excepción del estado C0 donde se ejecuta el procesador, son estados inactivos en los que el procesador dejará de medir el tiempo y apagará componentes para ahorrar energía. Cuanto más profundo sea el estado C, más pasos se darán para el ahorro de energía—(como, por ejemplo, la detención del reloj del procesador o la detención del ingreso de interrupciones). Estos estados pueden contribuir con el ahorro de energía cuando el sistema esté inactivo.

También existe un modo denominado C1E (al que también se lo conoce como Enhanced C1 o C1 Enhanced Mode) que también puede contribuir con el ahorro de energía cuando el sistema esté inactivo. C1E intenta ofrecer un mayor ahorro de energía que el tradicional estado C1 (que sólo detiene la señal de reloj) disminuyendo el voltaje y la frecuencia. De hecho, C1E tiene la capacidad de disminuir el voltaje / la frecuencia más rápido que cualquiera de los otros reguladores de CPUfreq.

No todos los procesadores cuentan con estas opciones. Pero para usar los estados C y C1E, asegúrese de que las opciones de BIOS CPU C State y C1E(o algo similar) estén activadas para así lograr el mayor ahorro de energía posible cuando el sistema esté inactivo. Algunos sistemas soportan un estado C3 e incluso un estado C6 de hibernación profunda.

Recuerde: Cuanto más profundo sea el estado C, más energía se ahorrará.

Estados P: En operación

Los estados P son estados operacionales que se relacionan con la frecuencia y el voltaje del CPU. Cuanto más alto sea el estado P, menor será la frecuencia y el voltaje al que el procesador funcionará. Los reguladores de CPUfreq usan estados P para cambiar las frecuencias y disminuir el consumo de energía.

Usted debe tener activada la opción de BIOS denominada Processor Performance States(o algo similar) en su sistema para poder usar los estados P y los reguladores de CPUfreq. La Figura 1 es un diagrama simple de los estados C y P.

Figura 1. Estados C y P
Estados C y P

Requisitos previos del subsistema CPUfreq

Antes de que usted pueda usar el subsistema CPUfreq, es necesario cumplir con todos los requisitos previos que se describen en esta sección. CPUfreq está activado de manera predeterminada en RHEL 5.2. También suele estar activado en otras distribuciones. Una forma rápida de verificar si CPUfreq ya está activado consiste en fijarse en el sistema de archivos /sys. Si puede observar el directorio cpufreq en /sys/devices/system/cpu/cpu*/cpufreq/, esto quiere decir que su sistema tiene activado CPUfreq. Si no puede encontrar este directorio, siga las instrucciones que figuran a continuación para asegurarse de que cuenta con todo lo necesario.

En primer lugar, asegúrese de que su procesador pueda soportar el escalamiento de frecuencia. Vea la lista de hardware que soporta el subsistema CPUfreq en Recursos más adelante en este artículo.

Luego de esto, observe su archivo de configuración kernel. Generalmente, todas las opciones requeridas vienen seleccionadas de manera predeterminada para el kernel RHEL 5.2. De todas formas, es posible que usted desee modificar algunas de estas opciones para conseguir el estado de inicio deseado para su sistema. Las siguientes opciones se encuentran en la sección CPU Frequency scaling (Escalamiento de frecuencia del CPU) en el archivo de configuración:

  CONFIG_CPU_FREQ

En esta opción, seleccione y para así garantizar el escalamiento de frecuencia del CPU del kernel.

  CONFIG_CPU_FREQ_GOV_PERFORMANCE, CONFIG_CPU_FREQ_GOV_POWERSAVE,
  CONFIG_CPU_FREQ_GOV_USERSPACE, CONFIG_CPU_FREQ_GOV_ONDEMAND,
  CONFIG_CPU_FREQ_GOV_CONSERVATIVE

Estas opciones sirven para cada uno de los reguladores de CPUfreq disponibles. Para usar un regulador, seleccione la opción y om. Si elije la opción y, el regulador en cuestión se incluirá en el kernel. Si elije la opción m, usted deberá cargar el módulo en cada arranque ingresando uno de los siguientes comandos (o todos ellos):

  modprobe cpufreq_performance
  modprobe cpufreq_powersave
  modprobe cpufreq_userspace
  modprobe cpufreq_ondemand
  modprobe cpufreq_conservative

De manera alternativa, si elije m, usted podrá hacer que se cargue el módulo durante el arranque mediante la adición de los módulos del regulador a /etc/rc.local. También tenga en cuenta que usted puede seleccionar la opción predeterminada para los reguladores userspace o performance seleccionando y para CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE o CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE.

Además, para usar sched_mc_power_savings y sched_smt_power_savings, que se discuten a continuación, asegúrese de seleccionar y para las opcionesCONFIG_SCHED_MC y CONFIG_SCHED_SMT en la sección Processor type and features (Tipo de procesador y características) del archivo de configuración.

Para que se apliquen los cambios realizados al archivo de configuración, usted debe reconstruir y volver a arrancar su kernel. Es probable que usted sepa cómo hacer esto. Pero si tiene alguna duda sobre los detalles de cómo hacerlo, vea alguna de las tantas fuentes disponibles para obtener instrucciones sobre la reconstrucción de un kernel de Linux. Ver la sección Recursos para obtener sugerencias al respecto.


Aquí vienen los reguladores

Existen cinco reguladores dentro del kernel disponibles para usarlos con el subsistema CPUfreq. Estos reguladores configuran la frecuencia del procesador basándose en ciertos criterios. Algunos de estos modifican la frecuencia dinámicamente cuando el sistema o el usuario modifican los datos de entrada. Este artículo se concentra en RHEL 5.2, que se basa en el kernel 2.6.18. Por lo tanto, todos estos reguladores están disponibles para que usted los use. Conozcámoslos. La Parte 2 y la Parte 3 de esta serie les ofrecen más detalles sobre los reguladores.

Regulador de performance: Frecuencia más alta

El regulador performance configura el procesador de manera estática para que use la frecuencia más alta disponible. Usted puede ajustar el rango de frecuencias disponibles para este regulador. Como lo implica su nombre, el objetivo de este regulador consiste en lograr el mayor rendimiento del sistema mediante la aceleración al máximo de la velocidad de reloj del procesador. De manera predeterminada, este regulador no intenta ahorra nada de energía. De todas formas, usted puede personalizarlo para que modifique la frecuencia seleccionada.

Regulador powersave: Frecuencia más baja

A diferencia del regulador anterior, powersave configura el procesador de manera estática para que use la frecuencia más baja disponible. Recuerde que usted puede ajustar el rango de frecuencias disponibles para este regulador. El propósito de este regulador consiste en funcionar a la menor velocidad posible en todo momento. Por supuesto que esto puede llegar a afectar el rendimiento, ya que la frecuencia nunca aumentará (sin importar lo ocupados que estén los procesadores).

De hecho, este regulador no suele ahorrar nada de energía, ya que los ahorros de energía más significativos provienen de aquellos momentos en los que el sistema está inactivo mediante el ingreso de estados C. Al usar el regulador powersave, se prolongan los procesos que se están ejecutando (ya que se ejecutan a la frecuencia más baja posible). Por lo tanto, el sistema tardará más tiempo en quedar inactivo y en beneficiarse de los ahorros de energías del estado.

Regulador userspace: Frecuencias manuales

Luego de esto, encontramos el regulador userspace, que le permite seleccionar y configurar una frecuencia manualmente. Este regulador también funciona con daemons de frecuencia de procesador que se ejecutan en userspace para controlar la frecuencia. En la Parte 2, entraremos más en detalle sobre los daemons e incluiremos ejemplos. Este regulador resulta muy útil para configurar una única política energética que no forma parte de los otros reguladores ni está disponible por medio de ellos. Usted también puede usar esto para experimentar con las políticas.

Tenga en cuenta que el regulador userspace en sí mismo no modifica la frecuencia dinámicamente. En cambio, permite que tanto usted como un programa userspace pueda seleccionar la frecuencia del procesador de manera dinámica.

Regulador ondemand: Cambio de frecuencia basado en el uso del procesador

Introducido en el kernel 2.6.10, el regulador ondemand fue el primer regulador dentro del kernel capaz de modificar la frecuencia del procesador dinámicamente basándose en la utilización del procesador. El regulador ondemand verifica la utilización del procesador y, si excede el umbral, configura la frecuencia más alta disponible. Si el regulador observa que la utilización se encuentra por debajo del umbral, se disminuye la frecuencia hasta alcanzar el siguiente nivel más bajo disponible. Si se sigue utilizando el sistema cada vez menos, el regulador seguirá disminuyendo la frecuencia hasta alcanzar el punto más bajo disponible.

Usted puede controlar el rango de frecuencias disponibles, la velocidad a la que el regulador verifica la utilización del sistema y el umbral de utilización.

Regulador conservative: Un regulador como ondemand pero más gradual

Basándose en el regulador ondemand, el regulador conservative (que se introdujo en el kernel 2.6.12) es similar debido a que ajusta las frecuencias dinámicamente basándose en la utilización del procesador. Sin embargo, el regulador conservative se comporta de manera diferente y permite un aumento más gradual del consumo de energía. El regulador conservative verifica la utilización del procesador y, si se encuentra por encima o por debajo de los umbrales de utilización, incrementa o disminuye la frecuencia hasta llegar al siguiente nivel disponible (en vez de pasar directamente a la frecuencia más alta, como lo hace el regulador ondemand).

Usted puede controlar el rango de frecuencias disponibles, la velocidad a la que el regulador verifica la utilización del sistema, los umbrales de utilización y la velocidad de la frecuencia.


La próxima vez

En la Parte 2, entraremos más en detalle sobre la configuración y el uso del subsistema. Además, incluiremos algunos ejemplos sobre las opciones generales de configuración y uso para el subsistema Linux CPUfreq y algunas opciones de interfaz diferentes. Además, también nos ocuparemos de las configuraciones específicas de cada regulador y de los planificadores de administración para ayudarlo a concentrarse en las herramientas correctas para sus necesidades de uso.

En la Parte 3, discutiremos los efectos que cada regulador puede tener sobre las diferentes cargas de trabajo usando dos cargas de trabajo de configuración muy populares.

Recursos

Aprender

Obtener los productos y tecnologías

  • Usando el software a de prueba de IBM, que está disponible para su descarga directa desde developerWorks, cree su próximo proyecto de desarrollo en Linux.

Comentar

  • Involúcrese en la comunidad My developerWorks. Con su perfil personal y su página de inicio personalizada, podrá personalizar developerWorks según sus intereses e interactuar con otros usuarios de developerWorks.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=458905
ArticleTitle=Reducción del consumo de energía de Linux - Parte 1: El subsistema CPUfreq
publish-date=12282009