HOWTO: Activar cpu frequency de un AMD64 k8 en Debian

Una de las cosas que me da grima (y por eso siempre compilo mi propio kernel) es tener una maquina más o menos “decente” y sufrir el martirio de tener el reloj del CPU a 800Mhz y el reloj del FSB a 250mhz como máximo (El “por defecto” de casi todas las distribuciones que conozco); pareciera como que estuviera trabajando en un servidor.

En muchos casos la gente se acostumbra, pero yo no …

En mi caso, poseo una (ya viejita) máquina MSI k8n platinum Socket 939 con un AMD64 +3200 y 2Gb de RAM; luego de una instalación limpia de Debian GNU/Linux hice lo que debía, compilar un kernel; básicamente solo cambié algunas opciones:

Cambios en el Kernel:

Nota: opción (Y) indica YES, opción (M) indica “Como Módulo”.

Processor type and features

Tickless System (Dynamic Ticks) NO_HZ (Y)

Processor Family -> Opteron/Athlon64/Hammer/K8 MK8

Generic x86 support X86_GENERIC (Y) //Agrega optimizaciones genéricas para los CPU x86

Preemption Model -> Preemptible Kernel (Low-Latency Desktop) PREEMPT //No saben lo bien que se mueve un desktop con esta opcion

Timer Frequency (Mhz) -> 1000 HZ HZ_1000 //Para desktops, ampliar el espectro de frecuencia del kernel, mejora su respuesta

Power management options
CPU Frequency scaling

ACPI Processor P-States Driver (M) //driver genérico, llamado acpi_cpufreq, DEBE estar activado

Desactiven todos los scalings de Intel, VIA y Ciryx y solo incluyan:

AMD Opteron/Athlon64 PowerNow! X86_POWERNOW_K8 (M)
ACPI Support (Y)

Agreguen como módulo todos los gobernadores (userspace, ondemand, powersave, conservative) y dejen como instalado (Y) a performance (es el por defecto).

Los gobernadores:

Los gobernadores son gestores de la energía y el scaling del CPU, cada uno hace lo que debe:

performance: mantiene el CPU en el mayor consumo y la mayor velocidad posible, siempre

ondemand: aumenta el consumo de CPU de acuerdo a tareas determinadas; cuando se requiera mucho CPU, este gobernador aumenta el consumo automáticamente; es un equilibrio entre conservative y performance.

Conservative (y powersave): ambos tratan de mantener al mínimo la velocidad del CPU, no importando la tarea, adicionalmente, powersave trata de reducir el core voltaje del CPU y del northbridge (si la placa base acepta) para tambien tratar de ahorrar energia.

userspace: permite definir una escala propia de velocidad (ej. fijarla siempre en 1Ghz)

Algunos detalles de performance:

He agregado algunos detalles adicionales, pero que no vienen al caso del performance (bueno, he desactivado TODO lo que tiene que ver con Kernel Debugging en:

Kernel hacking -> Kernel Debugging (agrega simbolos y traces para hacer depuración del kernel, para que?, no soy developer del kernel!).

Activando CPU Freq:

Inicialmente, si nos fijamos, el freq del CPU emite este error en el dmesg:

powernow-k8: BIOS error - no PSB or ACPI _PSS objects

Y falla en la carga: para evitar esto; debemos realizar 3 cosas; primero:

Habilitar SysFS al arranque:

agreguen la siguiente linea a su FSTAB:

sysfs /sys sysfs defaults 0 0

Instalar powernowd:

aptitude install powernowd

Powernowd es un demonio en userpace que se encarga de gestionar el frequency scaling de nuestro CPU AMD (aunque tambien sirve para Centrino, según tengo entendido).

Habilitar Cool n’ Quiet en el BIOS:

Muchas veces la gente no activa la tecnología powerNow! de AMD en su BIOS (busquen la opción Cool n’ Quiet en el manual de su Motherboard).

En mi caso, una MSI K8N Platinum, está en un menú TWEAK y se busca bajo CPU Overclocking la opción Cool n’ Quiet

Opciones de estabilidad en el GRUB:

Como siempre, agrego algunas “cosas” para que nuestro kernel sea algo más “estable” en su arranque:

idebus=66 irqpoll pci=assign-busses pci=routeirq apic

Iniciar equipo y revisar el DMESG:

Ahora, al iniciar el equipo, vemos lo siguiente en el dmesg:

powernow-k8: Found 1 AMD Athlon(tm) 64 Processor 3200+ processors (1 cpu cores) (version 2.20.00)
powernow-k8: 0 : fid 0xc (2000 MHz), vid 0x6
powernow-k8: 1 : fid 0xa (1800 MHz), vid 0x8
powernow-k8: 2 : fid 0x2 (1000 MHz), vid 0x12

weee! funciona!, ahora, activemos el applet de gnome-cpufreq; para ello:

Activando gnome-cpufreq applet:

El applet de gnome-cpufreq necesita (para poder gestionar el scaling) tener uid de root; para ello, ejecutamos:

dpkg-reconfigure gnome-applets

Esta opción mostrará una pantalla, que pedirá si deseamos darle el SUID root a “The ‘cpufreq-selector’ program”; presionan ACEPTAR, luego le dicen que “YES” a la pregunta “Desea que cpufreq-selector corra con privilegios de root”; y luego lo montan en alguna parte de su escritorio gnome:

panel.png

Y tendrán un icono donde verán la frecuencia actual del CPU, pero podrán tambien cambiarla (tanto frecuencia como gobernadores).

UPDATE: para algunas tareas que corren en background (sobre todo tareas queue o marcadas como nice); el kernel no logra calcular el load Balance del CPU; para evitar este comportamiento y agregar dichas tareas tambien al calculo de la CPU, debemos ejecutar:

echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load

Evidentemente, ese cambio no subsiste al reinicio; por ende, debemos agregarlo en el /etc/init.load

Como una prueba de que el scaling esta funcionando correctamente (más la gestión de CPU y memoria); decidí hacer una prueba intensiva que incluye:

Firefox cargado (con mi blog).

2 Terminales (para pruebas)

un bluefish cargado con un archivo docbook bastante grande

TV Time para ver History Channel

Amarok escuchando música de fondo

Gimp editando una foto (mis queridas Mediaeval Baebes)

Un screenshot aqui:

pantallazo.png

Y se prueba que el Scaling funciona, que el equipo corre suavemente,  y si nos damos cuenta; vemos que NI SIQUIERA TOCA el SWAP:

total       used       free     shared    buffers     cached
Mem:       2076688     537528    1539160          0      46748     243624
-/+ buffers/cache:     247156    1829532
Swap:      1052216          0    1052216
El CPU aguanta todo y la RAM más que favorecida por ello …

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 21 febrero 2008 en Cultura Libre, Linux, PlanetaLinux. Añade a favoritos el enlace permanente. Deja un comentario.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: