Limitar velocidad máxima del procesador

cpu

Hace tiempo que me preguntaba el porque del sobrecalentamiento de mi computadora en linux, aunque también me sucedía en windows pero no tan seguido, entonces me cuestione que pasaría y me percate que solamente pasaba cuando cualquiera de los 2 procesadores estaba al 100% de frecuencia por un tiempo prolongado lo que hacía que se sobrecalentara y eventualmente se apagara.

Esto hacía casi imposible instalar cualquier distro de linux ya que desde los live cd hacían poner el procesador al máximo y tenía que poner un ventilador en la entrada de ventilación de la laptop, esto lo hice varias veces por mi manía de instalar cual distro se me pusiera en frente sólo hasta entrar a la sección pero únicamente gnome 2 podía límitar la frecuencia del procesador (en modo userspace) con el applet que estaba incluido pero se quedaba todo el tiempo en la frecuencia que le pusiera y no se encontraba en ondemand y eso hacía que siempre estuviera a la frecuancia que le deje yo y no la que el procesador necesitara.

Fue cuando busque como limitar la frecuencia máxima a la que puede trabajar el procesador, para que el procesador se manejara en ondemand sin llegar al 100% del procesador para que no se sobrecalentara.

Primero debemos saber cuantos procesadores tenemos en una terminal escribir:

ls /sys/devices/system/cpu/ | grep cpu[0-9]

En mi caso la salida fue

cpu0
cpu1

Significa que tengo 2 procesadores

Luego para cada procesador que se tenga

more /sys/devices/system/cpu/cpu[0-9]/cpufreq/scaling_available_frequencies

En mi caso las salidas fueron

::::::::::::::
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
::::::::::::::
2100000 1050000 525000
--Más--(Siguiente fichero: /sys/devices/system/cpu/cpu1/cpufreq/scaling_availabl::::::::::::::
/sys/devices/system/cpu/cpu1/cpufreq/scaling_available_frequencies
::::::::::::::
2100000 1050000 525000

Para ambos procesadores, como les comente si tengo los procesadores a 2100000 hertz se sobrecalienta después de un tiempo así que quiero límitar la frecuencia máxima, como los archivos del directorio /sys/devices/system/cpu/cpux/cpufreq/ son del administrador es necesario hacer los cambios que deseamos como administrador

La velocidad máxima se edita en el fichero

/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq

Y como quiero cambiarlo en cada inicio me conviene ponerlo en el /etc/rc.local entonces edito ese archivo como administrador
Gnome

gksu gedit /etc/rc.local

KDE

kdesu kate /etc/rc.local

Terminal (cambiar nano por su editor favorito o usar su antes de escribir el comando)

sudo nano /etc/rc.local

Añadir entre las lineas

 #!/bin/sh -e
 echo 1050000 > '/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq'
 echo 1050000 > '/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq'
 exit 0

Y así la velocidad máxima del procesador será de 1050000.

Espero le sea útil a alguien.


31 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   merlin el debianita dijo

    Que buen tip, de hecho tengo a PC de Escritorio con Solus que no podía hacer nada que se me apagaba voy a probar gracias por el artículo.

  2.   Iván Barra dijo

    Oye, algunas vez revisaste o actualizaste el BIOS del equipo?? Es acaso un modelo HP?? te pregunto, porque lo más probable es que sea un problema de BIOS y de la configuración del Intel SpeedStep o del AMD cool & Quiet, he solucionado un montón de veces el tema del sobrecalentamiento actualizando la BIOS (soy ensamblador de equipos), lo otro, es cambiar la pasta térmica que trae de fábrica (generalmente son muy malas), por una con compuestos de plata, cuestan USD$10 y generalmente son mucho mejores que las que usan al ensamblar. Lo otro, revisa la tierra o el polvo, las pelusas dentro de tu equipo y por último, puedes comprar una base (que sea de aluminio, las plásticas tienen tener el efecto contrario por el cual fueron adquiridas), y con eso ventilar la parte inferior del equipo.

    Eso, espero te ayude,

    Saludos.

    1.    Christopher Castro dijo

      Es una Toshiba Satellite A305D-SP6905R http://pcxion.com/shop/printinfo.php?products_id=1080

      Desde nueva tenía el problema, cuando tenga dinero la llevo a mantenimiento y el BIOS lo tuve que actualizar ya que no podía instalar windows 7 en su tiempo así tuve que actualizar a la fuerza y supongo fue la última actualización del BIOS que se tuvo instalar.

      1.    Iván Barra dijo

        Que raro que te pase, he tenido 2 toshiba y nunca me presentaron problemas de temperatura. No así los HP, tuve un HP Compaq tipo tablet de 13.3″ y me salió horriblemente malo. Y he reparado decenas de HP con el mismo problema, pero ha sido más que nada un problema de diseño, y los con gráficas Nvidia, el típico problema de soldadura, así que me ha tocado aplicar reballing.

        Saludos.

  3.   Ghermain dijo

    Gracias por la información, de momento mi laptop Samsung RV408 con 6GB RAM y LM14 KDE RC x64 funciona sin problemas, sin embargo por precaución y de tiempo atrás uso una base con 3 motoventiladores tanto para esta como para la netbook Acer AOD255E con 2 GB RAM y LM14 KDE RC x32 y mantienen muy refrigeradas, solo la netbook se nota que se calienta un poco cuando tengo muchos programas y ventanas abiertas, de resto nunca se me han apagado o dado alarmas por sobrecalentamiento.
    Sería bueno ir conociendo que marcas y modelos dan esos problemas y como los han solucionado, para así tener referencias.

  4.   Alf dijo

    La mía a veces se calienta, la frecuencia de mis 2 procesadores

    alf@Alf:~$ more /sys/devices/system/cpu/cpu[0-9]/cpufreq/scaling_available_frequencies
    ::::::::::::::
    /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
    ::::::::::::::
    1900000 1800000 1600000 1400000 1200000 1000000 800000
    ::::::::::::::
    /sys/devices/system/cpu/cpu1/cpufreq/scaling_available_frequencies
    ::::::::::::::
    1900000 1800000 1600000 1400000 1200000 1000000 800000
    alf@Alf:~$

    ¿Que frecuencia me sugieres dejar como máxima?

    1.    Christopher dijo

      1600000

      La verdad no sé muy bien, pero si 1.9Ghz es lo máximo 1.6 es una buena frecuencia.

  5.   hexborg dijo

    Buen tip. Nunca he tenido problemas de calentmiento, pero lo tendré en cuenta por si acaso.

  6.   Reevil dijo

    En la practica esto debe mermar bastante la velocidad con la que abren las aplicaciones y otros eventos en que el procesador tiene picos de carga de trabajo (especialmente en los equipos con un solo núcleo)
    Estoy en lo cierto?

    1.    Iván Barra dijo

      Es correcto, pero depende, si solo usas el equipo para ver internet, música y videos, no notarás la diferencia, ahora bien, si eres un compilador de código compulsivo, notarás la diferencia.

      Saludos.

  7.   autogestion dijo

    Yo también tengo este problema en un viejo Acer Aspire 5315 que deseo solucionar de una vez por todas; pero la ruta de mi árbol de directorios difiere de la que indicas, hasta cpu0 coincide pero a partir de ahí no encuentro la carpeta cpufreq sino estas otras cache, cpuidle, power, subsystem, thermal-throttle, topology y los ficheros crash-notes y uevent y en ninguna de las carpetas veo el fichero scaling_max_freq.

    1.    marito dijo

      cpu freq scaling solo esta disponible para micros posteriores a core2duo, no pentium D, 4, celeron o mononucleos. es debido a que hasta los prescott se trabajaba al maximo, desperdiciando energia y calor, yo tenia uno que siempre andaba a 40 o mas siempre, eso si en invierno no tenia los pies frios 😛 saludos

      1.    Ghermain dijo

        Jejeje 🙂 no te imaginas la idea que me has dado…!!!

  8.   Uno dijo

    Para Gnome o Unity está el indicator-cpufreq , que te permite cambiar la velocidad del procesador y la configuración de energía desde el panel superior.

  9.   Ergeo dijo

    Hola, @Christopher Castro, enhorabuena por el artículo, conciso y útil, solo una pequeña corrección, no llames procesador a los núcleos de la CPU/UCP (el procesador), ya que la gente se podría confundir.

    Lo que me extraña es que teniendo dos núcleos de procesador, tengas problemas de calentamiento, quizás debería abrirlo, y limpiarlo, o si no es por suciedad o polvo, deberías llevarlo al servicio técnico.

    Un saludo a todos.

  10.   msx dijo

    Realmente no tiene sentido limitar la velocidad del procesador si está activado el governante ONDEMAND *a menos que sepas de antemano que las tareas que vas a realizar no van a ser uso intesivo del CPU como por ejemplo navegar páginas web pesadas*.

    Hay que tener en cuenta que cuanto menos que escalemos el procesador más tiempo va a necesitar para renderizar las páginas y más energía van a consumir, por otra parte el governante ONDEMAND automáticamente setea las frecuencias al nivel más bajo cuando la máquina está inactiva.
    Lo ideal es usar ONDEMAND y tweakear correctamente el gobernante de forma que se active y desactive lo más rápido posible dependiendo la carga del sistema, por ejemplo:

    w /sys/devices/system/cpu/cpu[0-3]/cpufreq/scaling_governor – – – – ondemand
    w /sys/devices/system/cpu/cpufreq/ondemand/up_threshold – – – – 85
    w /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor – – – – 20
    (nomenclatura en formato systemd)

    Igual de importante que los gobernantes es apagar la placa gráfica dedicada si no la estamos usando (en caso que nuestra máquina tenga un sistema de video híbrido) lo mismo que el resto de dispositivos que use el sistema y, por sobretodo, usar POWERTOP 2 para poner en modo de baja energía aquellos dispositivos que están seteados para que funcionen al máximo rendimiento.

    j:0 ~ $ cat /etc/tmpfiles.d/optimized.conf
    w /sys/kernel/debug/vgaswitcheroo/switch – – – – OFF

    #w /sys/class/drm/card0/device/power_profile – – – – low
    w /sys/class/drm/card0/device/power_method – – – – dynpm

    w /sys/devices/system/cpu/cpu[0-3]/cpufreq/scaling_governor – – – – ondemand
    w /sys/devices/system/cpu/cpufreq/ondemand/up_threshold – – – – 85
    w /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor – – – – 20

    #w /sys/module/snd_hda_intel/parameters/power_save – – – – 1

    w /sys/kernel/mm/transparent_hugepage/enabled – – – – madvise
    w /sys/kernel/mm/transparent_hugepage/defrag – – – – madvise
    w /sys/kernel/mm/transparent_hugepage/khugepaged/defrag – – – – 0

    w /proc/sys/kernel/watchdog – – – – 0
    w /sys/class/scsi_host/host[0-5]/link_power_management_policy – – – – min_power
    w /sys/bus/pci/devices/*/power/control – – – – auto

    w /proc/sys/vm/dirty_writeback_centisecs – – – – 1500

    j:0 ~ $ cat /etc/rc.local
    #!/bin/bash
    #
    # /etc/rc.local: Local multi-user startup script.
    #

    modprobe radeon
    echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
    rmmod radeon
    (cuidado con el rmmod ya que si deseamos activar la placa de video especializada y tratamos de cargar nuevamente el módulo estando ésta apagada el sistema nos va a regalar un precioso kernel panic).

    1.    mariocanales dijo

      si tu hubiese entendido algo,lo probaba.es q soy nuevo en esto y necesito ver las cosas paso a paso,con peras y manzanas.encontre interesante tu respuesta.

  11.   Carlos Carmona dijo

    Que buen tipo, lo probare ya que he tenido algunos problemas con el equipo. Gracias

  12.   tuxi dijo

    Buenas, podrian decirme cual es la temperatura normal para un procesador de doble nucleo de 2ghz, Gracias y saludos

  13.   jony127 dijo

    Buenas,

    este es un tema bastante importante al cuál, después de un tiempo de estar usando linux me puse a investigar para reducir la temperatura de la cpu así como su consumo energético.

    Este tema me llevó varias horas de investigación y pruebas y les voy a comentar una manera sencilla de configurar nuestra cpu en debian para que trabaje bajo demanda, es decir, la cpu ajusta automáticamente su frecuencia según la carga de trabajo que recibe el procesador aumentándola cuando es necesario para no perder rendimiento y trabajando a la frecuencia más baja cuando es necesario, reduciendo así el consumo de energía de nuestro procesador y por consiguiente la temperatura. Aunque esto lo hice en debian debería funcionar con cualquier distro.

    Instalar los paquetes cpufreqd y cpufrequtils. (creo que después de esto era necesario un reinicio).

    Elegir y cargar el modulo para el procesador, para procesadores intel modernos lo hacemos con modprobe acpi-cpufreq (nota en debian se carga solo, lo podemos comprobar con lsmod, supongo que será igual para el resto).

    Comprobar el funcionamiento.

    Primero vamos a comprobar que se ha cargado nuestro driver para el procesador, para ello solo tenemos que hacer un cat al archivo correcto:

    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver

    La salida que deberías observar es algo así como…
    acpi-cpufreq

    Ahora si la prueba anterior ha tenido éxito podemos comprobar cuales son las frecuencias disponibles para nuestro procesador de nuevo con el comando cat:

    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

    La salida que deberías observar es algo así como…
    1600000 800000

    También podemos mostrar los gobernadores disponibles:

    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

    La salida que deberías observar es algo así como…
    powersave userspace conservative ondemand performance

    Y cual es el gobernador usado en este momento:
    cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

    Dándonos como resultado algo así:
    Performance

    Nota: debian carga por defecto ondemand.

    Este último comando nos indica el gobernador que está funcionando actualmente, el más recomendado es ondemand que es el que ajusta la velocidad del procesador según la demanda.

    Otra utilidad más directa para conocer la info de nuestra cpu:
    cpufreq-info (ejecutamos este comando para ver la info de nuestra cpu):

    pufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
    Report errors and bugs to linux@brodo.de, please.
    analyzing CPU 0:
    driver: acpi-cpufreq
    CPUs which need to switch frequency at the same time: 0
    hardware limits: 800 MHz – 1.73 GHz
    available frequency steps: 1.73 GHz, 1.33 GHz, 1.07 GHz, 800 MHz
    available cpufreq governors: conservative, ondemand, powersave, userspace, performance
    current policy: frequency should be within 800 MHz and 1.73 GHz.
    The governor «ondemand» may decide which speed to use
    within this range.
    current CPU frequency is 800 MHz.

    Son importantes las líneas hardware limits: 800 MHz – 1.73 GHz y available frequency steps: 1.73 GHz, 1.33 GHz, 1.07 GHz, 800 MHz que marcan las posibilidades del procesador que tengamos.

    Como podéis observar también nos indican el gobernador que estamos usando y la frecuencia a la que trabajando actualmente nuestra cpu.

    Para cambiar el gobernador para todos los procesadores (necesario en el caso de dobles y cuatro núcleos ) :

    cpufreq-set -r -g ondemand

    El siguiente comando también muestra la velocidad del procesador, si el ahorro funciona bien deberia dar valores menores a la max del procesador:
    $cat /proc/cpuinfo | grep -i mhz
    o
    $ watch grep \»cpu MHz\» /proc/cpuinfo

    Saludos, con esto pueden tener funcionando de manera más eficiente vuestro procesador sin desperdiciar recursos.

    1.    Christopher Castro dijo

      Nunca cambie el gobernador de mi cpu, solo límite la velocidad máxima.

      Aún uso en ondemand :D.

  14.   Ernest dijo

    Amigo, muchas gracias, es precisamente lo que andava buscando.
    Me funciono de maravilla en mi Athlon II x2 250 a 3GHz.
    Siempre que abria un vìdeo 1080p en linux, mi CPU usaba el 100%, ahora, usa
    un promedio de 40 a 50%.

    Tenia miedo de que la frequencia quedase fija en 1.8 GHz (que fue donde
    lo ajustè), pero «OnDemand» sigue activo, cuando la computadora està inactiva
    el CPU baja hasta los 800 MHz. Fabuloso! 🙂

  15.   Ellebkey dijo

    Lo he probado en elementary Os y Ubuntu y ha funcionado, pero lo he intentado en fedora 17 y no ha servido, no me deja guardar los cambios a la hora de cambiar la cantidad de max_freq. Alguien sabe de alguna manera para lograrlo? Muy buen articulo por cierto

    1.    Christopher Castro dijo

      En realidad lo que sucede es que en fedora 17 el archivo rc.local no existe y se debe crear en la carpeta /etc/rc.d/ quedando la ruta /etc/rc.d/rc.local

  16.   Juan Jho dijo

    con la arctic silver 5 hice la prueba y la temperatura del cpu bajo 10° !!!!

    1.    Blaire Pascal dijo

      O.o se oye interesante. Tengo que comprar una jeringa con eso, en verdad me llama la atención.

  17.   Crilawar dijo

    Gracias por la información, de que manera puedo administrar la velocidad de mi CPU cuando yo quiera sin tener que usar la terminal, no me sirve que lo haga cada reinicio, solo cuando dejo la maquina encendida realizando un trabajo que no toma mas de de un 10%, algún script para bajarle y para que vuelva normal

    Gracias

  18.   Juan Carlos Achig dijo

    Muchas gracias por tu consejo me ha ayudado mucho para limitar la frecuencia de mis 4 cpu’s i3-2330m; pues me preocupaba el daño que puede causar trabajar a toda la velocidad de proceso.

  19.   Francisco Islas dijo

    Muchas gracias por este valioso aporte, me ayudaste a tener instalado linux en mi macbook pro. En verdad muchas gracias

  20.   Carlos Diaz dijo

    Genial solución …. para alargar la vida útil de equipos de tecnologías antiguas, que ya su desempeño se ve estresado por las exigencias del software actual. Muchas gracias por el aporte !!

  21.   Lucciano Ponti dijo

    Hola amigos gracias por vuestros aporte espero me funcione en mi OpenSuse Tumbleweed ♣

    Saludos