martes, 4 de marzo de 2025

¿Como funciona el procesador con linux?

 El rendimiento de la CPU es algo que, dependiendo de la situación, puede resultar de vital importancia... A veces necesitamos que ésta actué de una forma distinta a la habitual y queremos sacarle el máximo partido para que se adapte a nuestras necesidades de la mejor forma posible... En el último artículo he hablado sobre la priorización y reserva de núcleos del procesador, cosa que nos puede resultar útil para sacarle el máximo partido, pero en este caso voy a hacer referencia a otro punto... A la manipulación frecuencia de las CPU dentro de Sistemas GNU/Linux.

La CPU puede trabajar a mayor o menor rendimiento si bien dependiendo la configuración que tengamos implantada en el equipo podemos tener una CPU a la que no estemos sacando partido, una CPU que está trabajando siempre a pleno rendimiento sin necesidad o una CPU cuya frecuencia varíe dependiendo del uso de la "demanda" del sistema. Cada una tiene sus ventajas y desventajas... A veces nos interesa tener la CPU trabajando siempre al mínimo, ya que puede ser que estemos usando un portátil y queramos que el consumo de batería sea bajo, además de que el tener la CPU en  un sistema de refrigeración "pobre" como el de un portátil (por ejemplo) hace que uno tema sobre-calentarla.

Para poder hacer estas modificaciones tendremos que tener instalado el paquete cpufrequtils, el cual puede ser instalado desde los repositorios tal que así:

apt-get install cpufrequtils

Para cambiar el comportamiento de la CPU, solamente habría que introducir uno de los mencionados arriba en el fichero scaling_governor. Por ejemplo, si deseásemos que la CPU siempre trabajase al máximo y dicha opción apareciese en scaling_available_governors, ejecutaríamos el siguiente comando como root:

for i in /sys/devices/system/cpu/cpu[0-$(cat /proc/cpuinfo |grep 'processor' |wc -l)]/cpufreq; do echo 'performance' > $i/scaling_governor; done

Con este comando haríamos el cambio en todos los núcleos al mismo tiempo en vez de ir uno por uno realizando el cambio con el riesgo de dejarnos alguno por el camino. El problema que tiene el realizar el cambio de dicha forma es que en caso de reiniciar el equipo, los cambios realizados se perderían, cosa que generalmente no desearemos... Para evitar dicho problema, tendremos que hacer dicho cambio persistente, lo cual afortunadamente es muy sencillo, pues simplemente habría que crear un fichero llamado cpufrequtils dentro del directorio /etc/default y he introducir allí el valor GOVERNOR="comportamiento_deseado"; por ejemplo podríamos hacer:

  1. touch /etc/default/cpufrequtils
  2. echo 'GOVERNOR="ondemand"' > /etc/default/cpufrequtils

Si queremos saber exactamente a qué frecuencia estaría actualmente trabajando la CPU tendríamos que revisar el fichero cpuinfo_cur_freq dentro del mismo directorio que los dos ficheros anteriores, es decir en: /sys/devices/system/cpu/cpuX/cpufreq/. Dicho fichero mostraría la frecuencia en la que está trabajando el núcleo en MHZ, y se podrían consultar los ficheros correspondientes a todos los núcleos con el comando:

for i in /sys/devices/system/cpu/cpu[0-$(cat /proc/cpuinfo |grep 'processor' |wc -l)]/cpufreq; cat $i/cpuinfo_cur_freq; done

No hay comentarios:

Publicar un comentario