Hello to all my readers!

I bought a Lenovo Yoga in the winters. This was the first time I got a machine with AMD processor instead of Intel. I wanted to try that since AMD was kinda trending in the market and online community. At the same time, the machine with AMD processor was cheaper in price than with Intel processor.

I really liked the Lenovo Yoga that could function as a laptop and could also fold completely to function as a tablet. Plus I could use the tablet with touch screen and use whiteboard, digital writing pad and I was liking it.

I am a Linux guy and even tried Manjaro Linux with KDE on this new laptop apart from Ubuntu with Gnome. My daily softwares that run on the system include Firefox or Chrome, Visual Studio Code for coding and notes, OBS studio to create a virtual background (using green screen) for remote meetings nowadays, easyeffects for noise removal of my ceiling fan and other disturbances around, different communication applications for remote meetings.

AMD processor heats more than Intel and I could feel that. But since I use external monitor along with the laptop on a fixed desk, it was not creating trouble to my lap or fingers :). It works more like a desktop to me than a laptop.

Everything was running good and happy until summer kick in in Delhi when temperature started soaring from 35 degrees to even 45 degrees. Now I could really feel the heat of AMD processor. Not literally by hands or lap but that my video meetings started getting affected.

I could feel that my system hangs and people complain about distortion in my voice while conducting regular remote meetings on different platforms including Slack, Google Meet, MS Teams.

So, I decided to check in the CPU parameters around it.

The CPU scaling driver enabled by default is acpi-cpufreq.

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

acpi-cpufreq

The cpupower tool gives more information about the CPU and the frequencies set and used.

cpupower frequency-info                                                                                                         

analyzing CPU 2:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 2
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.40 GHz - 4.37 GHz
  available frequency steps:  1.80 GHz, 1.70 GHz, 1.40 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.40 GHz and 1.80 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 3.01 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: no

tlp is another common tool to find what is the current scaling driver, frequencies range and the scaling governer in use.

sudo tlp-stat -p

--- TLP 1.5.0 --------------------------------------------

+++ Processor
CPU model      = AMD Ryzen 7 5700U with Radeon Graphics

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver    = acpi-cpufreq
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  = schedutil
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = conservative ondemand userspace powersave performance schedutil 
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq  =  1400000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq  =  1800000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies = 1800000 1700000 1400000 [kHz]

/sys/devices/system/cpu/cpu1..cpu15: omitted for clarity, use -v to show all

/sys/devices/system/cpu/cpufreq/boost                  = 1

/sys/module/workqueue/parameters/power_efficient       = Y
/proc/sys/kernel/nmi_watchdog                          = 0

+++ Platform Profile
/sys/firmware/acpi/platform_profile                    = balanced
/sys/firmware/acpi/platform_profile_choices            = low-power balanced performance

Weather and system conditions

Outdoor temperature is around 38 degrees, indoor temperature is around 30 degrees Celsius. I got a Daikin aircon that showed what is the current room temperature. And there is only single ceiling fan running in the room for air.

The system is running two firefox windows with only a few tabs inside each. It runs chat app, visual studio code, terminal. And the CPU temperature is running above 70 degrees… That is too hot when not doing any high processing. Touching the laptop is like killing the fingers. It is too too hot.

Above image is that of KDE system monitor that shows the CPU clock speed. It can be seen that it is constantly high.

While running Google meet at this time will raise CPU temperature to close to 100 degrees. It even reaches to 102, 103 degrees. And this is where the CPU thermal throttling comes into picture that drops the clock speed to give some room for cooling. This hangs the system and thereby distorts the voice in the video meetings. This even happens in the audio meetings.

This is how the system monitor in KDE shows the CPU clock speed. See the dips in between that triggers cpu thermal throttling and makes the system unusable for a short time.

AMD Pstate

Due to this, I searched as to what can be done to keep the AMD system cool and have the video meetings going on smoothly even in the hot summer of Delhi. I stumbled upon AMD Pstate. AMD Pstate is another CPU scaling driver that is specifically designed for AMD processor. We saw earlier that by default the standard ACPI-freq CPU scaling driver is used. ACPI had only three P-states (Performance states) while AMD Pstate has more. This is basically the CPU frequency controller. It controls and manages how the CPU frequency is available upon different kinds of system load.

How to enable AMD Pstate?

I have the latest kernel 6.2 installed on Manjaro Linux. The kernel module is by default loaded with this kernel.

To enable AMD Pstate driver instead of ACPI-Freq driver, we will add a kernel parameter in the file /etc/default/grub

GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet udev.log_priority=3 amd_pstate=passive"
--snip--

I have not understood exactly what are the different values for amd_pstate parameter, but by documentation enabled the passive mode.

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

amd-pstate
cpupower frequency-info                                                                                                                                                                                                     

analyzing CPU 6:
  driver: amd-pstate
  CPUs which run at the same hardware frequency: 6
  CPUs which need to have their frequency coordinated by software: 6
  maximum transition latency: 20.0 us
  hardware limits: 400 MHz - 4.37 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 400 MHz and 4.37 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.80 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    AMD PSTATE Highest Performance: 255. Maximum Frequency: 4.37 GHz.
    AMD PSTATE Nominal Performance: 105. Nominal Frequency: 1.80 GHz.
    AMD PSTATE Lowest Non-linear Performance: 65. Lowest Non-linear Frequency: 1.11 GHz.
    AMD PSTATE Lowest Performance: 24. Lowest Frequency: 400 MHz.

We can see here that the minimum CPU frequency is lowered set at 400Mhz.

I thought this will help but it also raises the CPU temperature to around 100 degrees while doing Google meeting. And the CPU also landed in the thermal throttling. Here is another snapshot of the system monitor.

Additional Wall Fan

After no help in using AMD pstate cpu scaling driver, I decided to use a wall fan that blows air on the laptop. With an additional fan on top of laptop, the temperate while doing a video meeting stayed around 90 degrees with no thermal throttling and distortion in the meeting.

But the CPU temperature is still on a higher scale and is not good.

CPU Scaling Governer – Conservative

Then, I found that there are different CPU scaling governes that also control how the CPU clock is throttled. And I decided to use conservative governer.

While using conservative cpu scaling governer and using a wall fan on top of laptop, I could manage to get the CPU temperature below 80 and around 70-75 degrees celsius.

AirCon is the final option of-course. But if I don’t want to run aircon, then in the super hot weather of Delhi in India, this is the way to get the AMD running at low temperature and without interruptions.

Final Settings

What it took me to keep AMD heating at bay in Delhi:

  1. Use AMD Pstate CPU scaling driver
  2. Use “conservative” CPU scaling governer
  3. Use additional wall fan that blows air on laptop.

Similar Posts

Error: GraphComment couldn't be load because your settings are invalid. Please visit your admin panel and go to the GraphComment section and enter a valid website URL/ID.