5

I have recently increased the size of my Ubuntu /home directory and reinstalled both Windows and Ubuntu on my Lenovo Legion Y540 laptop. Installation went smoothly, but since then I have noticed that my laptop gets significantly hot (palpable on keyboard) even when simply web browsing. I have installed lm-sensors to check the temperature of my CPU and straight after booting Ubuntu, temperatures were as follows:

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +66.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +66.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +64.0°C  (high = +100.0°C, crit = +100.0°C)
Core 2:        +66.0°C  (high = +100.0°C, crit = +100.0°C)
Core 3:        +63.0°C  (high = +100.0°C, crit = +100.0°C)
Core 4:        +63.0°C  (high = +100.0°C, crit = +100.0°C)
Core 5:        +62.0°C  (high = +100.0°C, crit = +100.0°C)

At the time of writing this post I have only a dozen or so Firefox tabs enabled and the temperature are as below:

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +85.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +85.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +79.0°C  (high = +100.0°C, crit = +100.0°C)
Core 2:        +85.0°C  (high = +100.0°C, crit = +100.0°C)
Core 3:        +81.0°C  (high = +100.0°C, crit = +100.0°C)
Core 4:        +85.0°C  (high = +100.0°C, crit = +100.0°C)
Core 5:        +81.0°C  (high = +100.0°C, crit = +100.0°C)

Therefore, I am concerned to do any computing as those temperatures would certainly go even higher. I have had this laptop for about 6 months and I didn't observe this significant keyboard heat before. Any ideas what may be causing this issue and what I should change to prevent it?

I'll be happy to provide any additional information.

I worked on Windows for a couple of minutes. I don't know how can I measure the CPU temperature on Windows, but palpably, the issue was absent there.

I switched to Intel GPU as advised by @heynnema, the current output of sensors is:

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +84.0°C  (high = +100.0°C, crit = +100.0°C)
Core 0:        +76.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:        +75.0°C  (high = +100.0°C, crit = +100.0°C)
Core 2:        +85.0°C  (high = +100.0°C, crit = +100.0°C)
Core 3:        +76.0°C  (high = +100.0°C, crit = +100.0°C)
Core 4:        +80.0°C  (high = +100.0°C, crit = +100.0°C)
Core 5:        +77.0°C  (high = +100.0°C, crit = +100.0°C)

Whereas the output of ps auxc | grep -i therm. is:

root       210  0.0  0.0      0     0 ?        I<   cze07   0:00 acpi_thermal_pm
root       884  0.0  0.0 188224  9644 ?        Ssl  cze07   0:00 thermald

@Edit: systemctl status thermald output is:

● thermald.service - Thermal Daemon Service
   Loaded: loaded (/lib/systemd/system/thermald.service; enabled; vendor preset:
   Active: active (running) since Mon 2020-07-20 08:29:43 CEST; 12h ago
 Main PID: 995 (thermald)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/thermald.service
           └─995 /usr/sbin/thermald --no-daemon --dbus-enable

lip 20 08:29:43 jakes systemd[1]: Starting Thermal Daemon Service... lip 20 08:29:43 jakes systemd[1]: Started Thermal Daemon Service. lip 20 08:29:43 jakes thermald[995]: 22 CPUID levels; family:model:stepping 0x6:9 lip 20 08:29:43 jakes thermald[995]: Polling mode is enabled: 4 lip 20 08:29:43 jakes thermald[995]: sysfs read failed constraint_0_max_power_uw

jakes
  • 145

4 Answers4

2

Under volting helps a lot when there is over heating (and by lot I mean A LOT). To be on a safer side, manufacturers supply higher voltage than required to the CPU (which causes heating), as at very lower voltages CPU doesn't work properly under stress. Under volting is completely safe. It will not void your warranty whatsoever. Under volting is basically removing the excess voltage supplied and giving the minimum voltage required to run the CPU smoothly.

Try intel-undervolt from here on GitHub.

Here is an article on CPU undervolting in Linux which I followed

Some terms in the guide might be deprecated. Refer to the first link for the deprecated terms.

Here is a step by step procedure with the non deprecated terms

  1. install git with sudo apt install git
  2. run git clone https://github.com/kitsunyan/intel-undervolt
  3. sudo su and then enter password
  4. run ./configure --enable-systemd --enable-openrc && make && make install
  5. close the root mode by typing exit and press enter
  6. run sudo systemctl daemon-reload
  7. run sudo gedit /etc/intel-undervolt.conf this will open a text editor
  8. change the value in line 10 (in front of CPU) to -130 like this undervolt 0 'CPU' -130 (recommended -125)
  9. now save that text file and exit
  10. run sudo intel-undervolt apply and then run sudo systemctl start intel-undervolt
  11. use the system for some time, if it looks stable then run sudo systemctl enable intel-undervolt.

As of selecting the offset, I use undervolt 0 'CPU' -130 in the /etc/intel-undervolt.conf file. As a beginner I would suggest you to stick to undervolting the CPU only.

To find the correct offset (unique to each CPU piece. Same CPU but on different computer could have different ideal offset) slowly lower the offset by small values (I used 10), and at the point where your PC crashes, is the threshold. And set the final value to threshold - 10. In my case it crashed at 140 so I set it to 130.

The only downside (if you don't choose sudo systemctl enable intel-undervolt) is that you will have to apply the settings on every boot. I have created an alias with alias us='sudo intel-undervolt apply && sudo tlp start'. So I just have to type us in the terminal on a boot, and then I am good to go.

Note: the crashing of PC to calculate the offset is completely safe. It will not damage you hardware whatsoever.

Note: Any Intel CPU can go to -125 at least, above that comes the difficult part. If you want to take it to the limit, then only try increasing it step by step. Otherwise -125 will work just fine for any Intel CPU.

Abhay Patil
  • 2,705
  • I'd prefer less rough solution. The second thing is that, with my limited understanding, if undervolting is needed wouldn't temperatures be the same on Windows? – jakes Jul 20 '20 at 18:52
  • This is not rough at all. If you wish, I can update my post with step by step procedure. And when you compare it with Windows, let me tell you that Windows is more optimised than Ubuntu, hence it is expected to have higher temps (both desktop and laptop) and less battery life (in case of laptops) when on Ubuntu (infact any linux distro) as compared to Windows (or MacOS, if you are rich enough). – Abhay Patil Jul 20 '20 at 19:03
  • Because small changes won't make much of a difference. I have tried so many options to lower the temperature, but believe me undervolting was the most effective. – Abhay Patil Jul 20 '20 at 19:05
  • I'd be grateful for more detailed procedure then! – jakes Jul 20 '20 at 19:27
  • @jakes I check the updated answer. Read the complete answer, I have made slight changes in the other parts also – Abhay Patil Jul 20 '20 at 20:10
  • @jakes this reduced my temps from 60degrees to 50degrees. Hence worth a shot – Abhay Patil Jul 20 '20 at 20:18
  • @jakes did this help?? – Abhay Patil Jul 24 '20 at 20:13
  • Unfortunetely, the issue persists even after undervolting – jakes Aug 09 '20 at 08:19
0

I'll recycle my answer from this question.

You should pay attention to your CPU fan speeds - can you hear the fan spinning when your CPU is hot? I'd recommend going into UEFI settings at first and see if you have any kinds of options for setting fan speeds there. Take a look at this question here.

One of the major problems for overheating can be dust - open your case and remove any dust you can find.

You should also pay attention to overall performance as well. A computer which is optimised is also cooler (in both senses of the word, hehe). I would suggest:

  • underclocking/undervolting CPU (explained in the previous answer)
  • underclocking/undervolting your GPU as well (if you have a dedicated one), in hopes to decrease the "ambient" temperature inside your laptop (increasing GPU's fan speed might help as well)
  • reducing load (disabling processes and services which you don't need)
  • optimising your programs (Xorg, chrome)
  • updating your software & drivers
  • updating your kernel and firmware (or OS)

"mods":

  • add some extra heatsinks inside the computer if you can, and if you think it will help (you can add them to the existing cooling systems - note: a nicely placed aluminium 8mmx8mm heatsink helped decrease my desktop's Nvidia GPU temperatures by 1°C)
  • drill a few holes for extra air circulation

updates:

  • get a CPU that has a lower TDP (Thermal Design Power)
  • GPU which uses less power
  • SSD instead of HDD can also help, but not significantly
GChuf
  • 495
  • Would you be so kind and advice how can I audit which processes are reduntant? I don't want to disable anything significant – jakes Jul 20 '20 at 18:57
  • you mentioned underclocking/undervolting which necessarily suggests that both these are same. Instead put an or between those two, as they are not same. – Abhay Patil Jul 20 '20 at 20:11
  • @jakes, disabling unnecessary processes and services could be a question on its own :) You can get a list of all services by running service --status-all. For example, if you only use ethernet, you could disable wifi and bluetooth, although these can be disabled in your GUI as well. You can play around with journald config to reduce the load of logging on your disk, and reduce some visual candy to reduce load on GPU. Redundant processes are different for every user - the best you can do is search for more info on the internet and make decisions yourself. – GChuf Jul 21 '20 at 06:45
  • @AbhayPatil, a slash does not necessarily suggest both options are the same - in fact, when searching on the internet for the "meaning of slash", it seems that people agree that it's indicating the word or. – GChuf Jul 21 '20 at 06:47
  • @hextech fine by me then. – Abhay Patil Jul 21 '20 at 07:36
0

Is thermald running on your laptop? check it out by running this command in a terminal:

systemctl status thermald

If it is not running or if it is not installed, please install it and run it. You can start thermald by entering the command

systemctl start thermald

Some of the Lenovo Legion laptops have nonstandard ACPI/firmware settings. Is your firmware up to date with the latest version? It is possible that thermald does not correctly interpret the values from your firmware,in that case you need to make your own configuration for it. Try using this manual: https://wiki.ubuntu.com/Kernel/PowerManagement/ThermalIssues

Ferdi
  • 517
  • 2
  • 5
0

In my case just stopping the Thermald service helped.

systemctl stop thermald

For more information have a look here. Thermald is totally broken, or its default configuration is

** WORKAROUND**: shut down the thermald process completely. If your computer has an actual physical cooling fan and it's fully functional, you don't need thermald at all.