Varying CPU frequency as a function of temperature

Hi folks, I’m looking for a way to vary the frequency of the CPU to prevent it from exceeding a predetermined temperature.
I couldn’t find anything that would shed any light on the subject.
I appreciate in advance if any of you have an idea, or know the solution, you can share it.

I’m not sure exactly what you’re after here! More people are spending all their time and effort trying to prevent it! I don’t know of any current CPU that doesn’t do this ‘automatically’ as necessary - all the way to shutdown if required.

It may be possible to experimentally undervolt your chip so it can’t exceed whatever number you have determined - but I am not sure how to do it programmatically. Most of what I know is limited to what can be discovered under CPU throttling on the web - and most of it applies to laptops and Windows I’m afraid.

Good luck!

There could be some advanced settings in your BIOS for this. Many manufacturers add hidden settings in their BIOS interface that can be activated with a special key combo. You could search the web for your make and model to identify that key combo for your machine and you might gain access to something like max_temp among other CPU settings.

If not, what you are looking for at OS level is CPU governors.
This article might help you move forward with your quest:

thermald looks like a good candidate for a solution

i never heard of doing such on a cpu. if its heating too much at its rated load and voltage, then cpu cooling is insufficient.

I can totally understand wanting to keep the CPU below a temperature, especially if that temperature is the threshold at which that annoying cooler kicks in.
Btw, @AlDo, you might already know this, but just in case you don’t, you can measure the temps with s-tui ( just need to do a yay -S s-tui first).

Gracias a todos. Les explico mejor. El tema es que entre el punto critico y el caliente de mi cpu hay unos cuantos grados. Mi equipo no es nuevo, y cuando uso algún editor de vídeo empieza a calentarse, apenas pasa el punto caliente (90°) yo manualmente pauso, espero un momento a que baje la temperatura y lo vuelvo a activar. el punto crítico son 105°.
Mi idea es, de ser posible, hacer que la frecuencia varíe en función de la temperatura para mantenerla en 90° máximo, de modo que se pueda mantener a la máxima capacidad sin que sufra el equipo.
Esta es la página con los detalles del procesador, aunque no entiendo mucho de lo que dice, quizas a ustedes les de más luces que a mi.

Esto mi sistema.
Agradezco a todos por su tiempo y esfuerzo

If your only worry is that the processor might overheat and get damaged, I think this is a non-issue. The processor has a built-in safe temp and will throttle automatically to prevent damage.
Unless you have deactivated the fail-safe (it’s possible on some overclocking boards), you CPU should be able to keep itself below the maximum temp, even if that temp is above 90°C.

You might want to have a look at the cooler solution inside the computer and make sure it’s clean and no dust has accumulated.


Gracias nate, en realidad no creo que se funda o algo asi, aunque nunca se sabe. Es más que nada curiosidad.

Thank you, all of you. I can’t find anything that fits my idea. I’ll let the hardware control as it sees fit. If it hasn’t fused and worked until today, I guess it’ll keep doing so until I die.

thermald is keeping temperature under 50 degrees not only by lowering frequency, but is doing what you want.

That’s true joekamprad, but try to maintain 45°C and I’m looking for something that will allow me to stay below 90.

Clean your fans / vents? What is your ambient temperature?

moving to newbie section… :hugs:

90 °C is way to high for any CPU

1 Like

Can you also post the output of inxi -Fxxxza --no-host ?

This sounds like the cooling paste is all dried up, just remove the old one from your CPU and GPU and re-apply a drop new cooling paste. Just check several Youtube videos on it. Cooling paste isn’t that expensive.

Thank you, the idea is to leave the normal control to what is already installed, and that when it is close to 90 degrees, the frequency is lowered only as necessary to prevent the temperature from rising further. I couldn’t find anything that does that, so I gave up.


           parameters: BOOT_IMAGE=/boot/vmlinuz-linux 
           root=UUID=bc414626-a98c-48a2-9d6c-6495309c30b7 rw quiet loglevel=3 nowatchdog 
           Desktop: Budgie 10.5.1 info: budgie-panel, plank wm: budgie-wm dm: LightDM 1.30.0 
           Distro: EndeavourOS 
Machine:   Type: Laptop System: VIT product: VIT P3400 v: 1.0 serial: <filter> Chassis: type: 9 
           serial: <filter> 
           Mobo: VIT model: VIT P3400 serial: <filter> UEFI: Phoenix v: 2.00.01.IP_T4 
           date: 03/25/2013 
CPU:       Topology: Dual Core model: Intel Core i7-3537U bits: 64 type: MT MCP arch: Ivy Bridge 
           family: 6 model-id: 3A (58) stepping: 9 microcode: 21 L2 cache: 4096 KiB 
           flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 19964 
           Speed: 1243 MHz min/max: 800/3100 MHz Core speeds (MHz): 1: 1339 2: 1270 3: 1496 
           4: 1210 
           Vulnerabilities: Type: itlb_multihit status: KVM: Split huge pages 
           Type: l1tf mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable 
           Type: mds mitigation: Clear CPU buffers; SMT vulnerable 
           Type: meltdown mitigation: PTI 
           Type: spec_store_bypass 
           mitigation: Speculative Store Bypass disabled via prctl and seccomp 
           Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer sanitization 
           Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, 
           STIBP: conditional, RSB filling 
           Type: srbds status: Vulnerable: No microcode 
           Type: tsx_async_abort status: Not affected 
Graphics:  Device-1: Intel 3rd Gen Core processor Graphics vendor: Elite Systems driver: i915 
           v: kernel bus ID: 00:02.0 chip ID: 8086:0166 
           Device-2: Acer type: USB driver: uvcvideo bus ID: 1-1.3:4 chip ID: 5986:014d 
           Display: x11 server: X.Org 1.20.8 compositor: budgie-wm driver: intel 
           unloaded: fbdev,modesetting,vesa display ID: :0 screens: 1 
           Screen-1: 0 s-res: 1366x768 s-dpi: 96 s-size: 361x203mm (14.2x8.0") 
           s-diag: 414mm (16.3") 
           Monitor-1: LVDS1 res: 1366x768 hz: 60 dpi: 112 size: 310x170mm (12.2x6.7") 
           diag: 354mm (13.9") 
           Message: Unable to show advanced data. Required tool glxinfo missing. 
Audio:     Device-1: Intel 7 Series/C216 Family High Definition Audio vendor: Elite Systems 
           driver: snd_hda_intel v: kernel bus ID: 00:1b.0 chip ID: 8086:1e20 
           Sound Server: ALSA v: k5.7.8-arch1-1 
Network:   Device-1: Qualcomm Atheros AR9485 Wireless Network Adapter vendor: AzureWave 
           driver: ath9k v: kernel port: efa0 bus ID: 01:00.0 chip ID: 168c:0032 
           IF: wlan0 state: up mac: <filter> 
           Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
           vendor: Elite Systems driver: r8168 v: 8.048.03-NAPI port: 2000 bus ID: 02:00.0 
           chip ID: 10ec:8168 
           IF: enp2s0 state: down mac: <filter> 
           Device-3: IMC Networks Atheros AR3012 Bluetooth 4.0 Adapter type: USB driver: btusb 
           bus ID: 1-1.2:3 chip ID: 13d3:3362 serial: <filter> 
Drives:    Local Storage: total: 961.33 GiB used: 25.69 GiB (2.7%) 
           SMART Message: Unable to run smartctl. Root privileges required. 
           ID-1: /dev/sda vendor: Western Digital model: WD10JPVX-22JC3T0 size: 931.51 GiB 
           block size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s rotation: 5400 rpm 
           serial: <filter> rev: 1A01 scheme: GPT 
           ID-2: /dev/sdb vendor: LITE-ON IT model: LMS-32L6M size: 29.82 GiB block size: 
           physical: 512 B logical: 512 B speed: 3.0 Gb/s serial: <filter> rev: 402 scheme: GPT 
Partition: ID-1: / raw size: 29.82 GiB size: 29.22 GiB (98.01%) used: 7.38 GiB (25.3%) fs: ext4 
           dev: /dev/sdb1 
           ID-2: /home raw size: 700.20 GiB size: 688.21 GiB (98.29%) used: 7.15 GiB (1.0%) 
           fs: ext4 dev: /dev/sda3 
           ID-3: /var raw size: 20.32 GiB size: 19.87 GiB (97.81%) used: 3.89 GiB (19.6%) 
           fs: ext4 dev: /dev/sda2 
Swap:      Alert: No Swap data was found. 
Sensors:   System Temperatures: cpu: 58.0 C mobo: N/A 
           Fan Speeds (RPM): N/A 
Info:      Processes: 220 Uptime: 18m Memory: 7.61 GiB used: 2.30 GiB (30.3%) Init: systemd 
           v: 245 Compilers: gcc: 10.1.0 Packages: 1060 pacman: 1053 lib: 269 flatpak: 7 
           Shell: Bash v: 5.0.17 running in: gnome-terminal inxi: 3.1.04 ```