En los tiempos que corren, muchas personas (no es mi caso) tienen CPUs de doble núcleo (o de más de dos), o con varios procesadores. Además, tenemos que tener en cuenta que todo el tiempo (seguro) que un ordenador personal no está utilizando los dos núcleos, de forma considerable todo el tiempo; pero siempre está trabajando, aunque no esté haciendo nada (lo cual causa un gasto de energía y un calentamiento del equipo en general), si lo sumamos a que muchos usuarios son de dispositivos portátiles y que la batería de éstos no es eterna (mi batería dura ya unos 15 minutos); tendremos en algún momento la necesidad de desactivar un núcleo en algún momento determinado (aunque sólo sea para estirar la batería unos 10 minutos más).
Tal y como vi en Muy Linux, hace unos días hay una forma sencilla de desactivar núcleos o procesadores.
A menudo, mantengo en ejecución un monitor de los núcleos, que indica u uso y velocidad (este que se ve en la ilusración es el plasmoid Coremoid). Vemos cómo los dos núcleos están en uso. Ahora, como root ejecutamos:
1 | echo 0 > /sys/devices/system/cpu/cpu1/online |
Lo siento, no es posible hacerlo con la CPU0, un poco de sentido común, si desactivamos los dos procesadores, mejor nos compramos un ábaco y nos quitamos de ordenadores.
Pero un detalle, podremos observar que incluso de /proc/cpuinfo ha desaparecido la CPU 1:
# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Duo CPU T5250 @ 1.50GHz
stepping : 13
cpu MHz : 1000.000
cache size : 2048 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up arch_perfmon pebs bts pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm
bogomips : 2993.32
clflush size : 64
power management:
Ahora damos un paso más, aunque éste ya es un viejo conocido de muchos:
1 2 3 | # modprobe cpufreq_userspace # cpufreq-set -g userspace # cpufreq-set -f 1G |
y podremos modificar la frecuencia de la CPU, podemos, por ejemplo ponerla al mínimo cuando sepamos que no vamos a utilizarla en exceso, y darle velocidad cuando vayamos a hacer algo pesado (en realidad existe un governor (eso de userspace) que se llama ondemand que modifica la velocidad de la CPU dependiendo del uso que le demos, aunque a veces llega a modificar la velocidad con demasiada frecuencia y personalmente no me gusta marear tanto la CPU.
Para consultar las velocidades disponibles de CPU podemos ejecutar:
1 | # cpufreq-info |
y nos dirá lo que necesitamos saber.
Un apunte más, para volver a activar una CPU, basta con hacer:
1 | echo 1 > /sys/devices/system/cpu/cpu1/online |
¡ y listo ! con esto, seguro que más de uno ya tiene ideas para posibles scripts que permitan ahorrar algo de energía, o darle un respiro térmico a su equipo.
Pingback: Bitacoras.com /