Actualización: ir a este nuevo intento porque lo expuesto aquí parece que no funcionó del todo.
Actualización: solución final.
Parece ser que hay un problema con los procesadores multicore que en algunos casos los deja colgados *casi* aleatoriamente, como me pasaba a mi. El problema está con el contador de ticks del procesador, y la solución es cambiar el origen de los ticks y mantener la CPU a la máxima frecuencia siempre.
Poner las opciones “notsc clocksource=acpi_pm” en la línea “kernel” de menu.lst del cargador grub. En mi caso:
kernel /boot/vmlinuz-2.6.28-15-generic root=UUID=eac3b079-db42-4dfb-909a-7a3a210e6057 NvAGP=0 notsc clocksource=acpi_pm ro quiet splash
Instalar el paquete cpufreqd:
sudo apt-get install cpufreqd
Modificar /etc/default/cpufreqd y establecer el “governor” de escalado a “performance”:
CPUFREQ_GOV_MODULES="performance"
Modificar /etc/init.d/cpufrequtils y modificar la línea “GOVERNOR=” a:
GOVERNOR="performance"
En este punto debería cambiar automáticamente el “governor” a “performance” al iniciar el ordenador, pero como es un multicore quisquilloso, al tratar de cambiar las frecuencias de ambos cores se hace un lío y deja todo en “ondemand” con lo que el ordenador se cuelga. Para ver que falla, comprobar que aparece un “[fail]” al hacer:
sudo /etc/init.d/cpufrequtils start
La solución es eliminar en la línea 84 del fichero /etc/init.d/cpufrequtils el parámetro: --cpu $cpu
de modo que el cambio de frecuencia afecte a todos los cores a la vez, quedando la línea así:
$CPUFREQ_SET $CPUFREQ_OPTIONS 2>&1 > /dev/null || \
========== Actualización ==========
He comprobado que el paquede de Ubuntu 9.04 configura las cosas de manera extraña (con Debian no me pasaba). La cuestión es que no cambia el governor y lo deja en “ondemand”.
Es necesario editar el fichero /etc/init.d/ondemand, y en la línea 27, donde pone:
echo -n ondemand > $CPUFREQ
cambiarlo por:
echo -n performance > $CPUFREQ
y ahora sí que al iniciar el ordenador pone el “governor” a “performance”.