Lo que nesesitamos para ello es un procesador AMD superior a k6, una placa madre que admita esta funcionalidad (practicamente todas en la acctualidad), y una distribución de linux, en mi caso yo estoy con debian etch, pero la siguiente receta es tambien valida para las demas distribuciones.
1.- Verificamos que en el bios de nuestra placa madre este habilitado cool 'n' quiet [enable], el como habilitarlo depende de tu placa madre, normalmente esta en la sección CPU.
2.- Linux puede manejar esta tecnología mediante una serie de módulos que deben ser habilitados en la compilación del kernel, en el caso de debian etch estos ya los viene agregados por defecto, para las otras distribuciones lo mas probable es que tambíen los traigan agregados, pero para salir de dudas podemos darnos una vuelta por /boot/config-
$ vim /boot/config-
#
# CPUFreq processor drivers
#
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_X86_POWERNOW_K6=m
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPI=y
CONFIG_X86_POWERNOW_K8=m
CONFIG_X86_POWERNOW_K8_ACPI=y
CONFIG_X86_GX_SUSPMOD=m
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=m
CONFIG_X86_SPEEDSTEP_SMI=m
CONFIG_X86_P4_CLOCKMOD=m
CONFIG_X86_CPUFREQ_NFORCE2=m
CONFIG_X86_LONGRUN=m
CONFIG_X86_LONGHAUL=m
Lo que principalmente nos interesa son los CONFIG_X86_POWERNOW_Kx=m, (x= 6 7 8), debe estar asignados con m (m -> indica que se cargará como módulo), de no estarlo será nesesario reconpilar el kernel, pero modificando estos a estos valores el archivo de configuración del nuevo kernel.
3.- Instalar powernowd que es un demonio en cargado de gestionar estos módulos.
apt-get install powernowd -> En debian, y sus deribados
yum install powernowd -> En alguna distro basada en redhat
4.- Arrancar el módulo corespondiente, esto lo logramos mediante el comando:
modprobe powernow-k8 -> Para un AMD64
Solamente variar el número de kx del 6 hasta el 8, si no se sabe cual procesador tiene, hasta que deje de salir "FATAL: Module powernowd_k7 not found", u dispositivo no encontrado.
5.- Una ves que sabemos que modulo tenemos que arrancar lo agregamos al fichero /etc/modules mediante su editor de texto favorito, en mi caso.
$ sudo kwrite /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
loop
nvidia
powernow-k8
6.- Arrancamos powernowd, en mi caso:
$ sudo powernowd
powernowd: PowerNow Daemon v0.97, (c) 2003-2006 John Clemens
powernowd: Found 1 scalable unit: -- 1 'CPU' per scalable unit
powernowd: cpu0: 1000Mhz - 2200Mhz (4 steps)
7.- Verificamos, podemos ver la frecuencia actual del procesador mediante le comando:
cat /proc/cpuinfo |grep -i mhz
En mi caso:
$ sudo cat /proc/cpuinfo |grep -i mhz
cpu MHz : 1000.000
Como mi procesador trabaja como máximo a 2200 se puede ver que ahora esta trabajando a una frecuencia menor (cuando no hace prácticamente nada), lo cual indica que si trabaja correctamente el módulo.
8.- Frecuencia por demanda, es nesesario indicar que queremos que la velocidad del prcesador se de segun la demanda, esto lo logramos modificando el archivo /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor, que por defecto tiene una única lines "userspace", rempazando esta únicaq linea por "ondemand".
Pero este cabio no es permanente asi que debemos cambiar este archivo cada ves que se inicie el sistema, esto lo podemos hacer añadiendo la siguiente linea a un archivo que siempre se ejecute al iniciar el sistema, un script, puede estar ubicado en /etc/rc.local , o en el caso de otras distribuciones /etc/conf.d/local.start, en mi caso por usar debian etch tuvo que se en la primera opcion.
$ sudo kwrite /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
exit 0
9.- solo nos queda :
cat /proc/cpuinfo
En mi caso:
$ sudo cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 47
model name : AMD Athlon(tm) 64 Processor 3500+
stepping : 2
cpu MHz : 1000.000
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts fid vid ttp tm stc
bogomips : 2016.26
clflush size : 64
y final mente a Disfrutar . . .:-)
No hay comentarios:
Publicar un comentario