How to Control AMD CPU Temperatures
- 2024-11-29
- 📦 Others
- Guide Setup Performance Windows
0. Motivation
Last year, I bought a Geekom AS6 and I’m really happy with it. It has an integrated GPU (680M) that allows me to play most modern games at 1080p, such as Resident Evil 4 Remake. I bought it since it’s almost identical to the Asus PN53 and that gave me the confidence to buy from what was an unknown brand at the time.
It has been working really well until summer arrived. Due to high temperatures, the CPU was shutting down because of excessive heat.
1. What’s the problem
I have been using Open Hardware Monitor to track and store multiple data from the computer, such as temperatures, load, and power consumption.
My computer has a Ryzen 7 6800H processor, which has a default TDP of 45W but can be set between 35W to 54W. The max temperature is 95ºC.
The problem I had is that under high load in summer, temperatures were too high:
The CPU was around 97 ºC, which is higher than the max 95 ºC. Whenever it reached 100 ºC, the computer automatically turned off to prevent damage.
The CPU load looks low because I was gaming at the time (GPU intensive). GPU load is not tracked nor included in the CPU load, which is why it looks like the computer was close to idle.
2. Regular ways to prevent overheating
Here are the most common ways to prevent overheating.
2.1. Changing TDP on the BIOS
Many computers allow you to lower the Thermal Design Power (TDP) to reduce the CPU’s wattage, helping to prevent overheating.
However, some PCs (such as mine) do not have this option.
2.2. Undervolting
Another method is undervolting the CPU with a tool like MSI Afterburner. It doesn’t work for all computers and can be dangerous.
Undervolting can permanently damage your computer, proceed with caution.
2.3. Dedicated software
Some PCs have dedicated software. For example, for AMD, there is AMD Software: Adrenalin Edition™ Application and AMD Ryzen™ Master Utility for Overclocking Control. However, I couldn’t change the TDP on my computer with either of these tools.
3. Using RyzenAdj
After having no luck with the previous methods, I discovered RyzenAdj, which allows you to configure multiple settings for your AMD Ryzen CPU.
3.1. Check current setup
First, download RyzenAdj to a folder (like C:\AMD
).
Then, check the current setup with:
ryzenadj.exe -i
Must be run as an Administrator.
You will see information like this:
Name | Value | Limit | Parameter |
---|---|---|---|
STAPM | 8.0 | 35.0 | stapm-limit |
PPT FAST | 14.8 | 65.0 | fast-limit |
PPT SLOW | 8.3 | 54.0 | slow-limit |
StapmTimeConst | nan | stapm-time | |
SlowPPTTimeConst | nan | slow-time | |
PPT APU | 0.0 | 54.0 | apu-slow-limit |
TDC VDD | 5.7 | 55.0 | vrm-current |
TDC SOC | 2.2 | 15.0 | vrmsoc-current |
EDC VDD | 70.4 | 130.0 | vrmmax-current |
EDC SOC | 0.1 | 20.0 | vrmsocmax-current |
THM CORE | 53.0 | 98.0 | tctl-temp |
STT APU | 0.0 | 0.0 | apu-skin-temp |
STT dGPU | 0.0 | 0.0 | dgpu-skin-temp |
CCLK Boost SETPOINT | nan | power-saving / | |
CCLK BUSY VALUE | nan | max-performance |
I pivoted the table so that it’s easier to read.
3.2. What to change with RyzenAdj
There are multiple ways to prevent overheating. In my case, I want to change:
- STAPM Limit (
--stapm-limit=40000
): Manages the long-term average power consumption of the CPU based on thermal conditions to prevent overheating and ensure thermal comfort. - Fast Limit (
--fast-limit=45000
): Controls the maximum power the CPU can draw during short bursts of high performance, allowing the CPU to handle intensive tasks more efficiently. - Slow Limit (
--slow-limit=40000
): Sets the maximum sustained power the CPU can draw over longer periods, ensuring that the CPU does not overheat during prolonged use and maintains system stability. - Thermal Control Temperature (
--tctl-temp=90
): Sets the maximum allowable temperature for the CPU cores to prevent the CPU from reaching high temperatures, reducing thermal throttling, prolonging the lifespan of the CPU, and ensuring the system remains cool and stable.
After tracking temperatures and CPU usage, I settled for:
Name | Limit | Parameter |
---|---|---|
STAPM | 40.0 | stapm-limit |
PPT FAST | 45.0 | fast-limit |
PPT SLOW | 40.0 | slow-limit |
THM CORE | 90.0 | tctl-temp |
3.3. Limit TDP and Temperature
To apply the changes, simply run:
ryzenadj.exe --stapm-limit=40000 --fast-limit=45000 --slow-limit=40000 --tctl-temp=90 -i
Then validate that the limits are properly set up:
Name | Value | Limit | Parameter |
---|---|---|---|
STAPM | 8.0 | 40.0 | stapm-limit |
PPT FAST | 14.8 | 45.0 | fast-limit |
PPT SLOW | 8.3 | 40.0 | slow-limit |
THM CORE | 53.0 | 90.0 | tctl-temp |
4. Stress testing
Once you have changed the limits, you should test that your computer does not overheat. You can do this with 3D Mark or AIDA64 (among others). To ensure your computer doesn’t overheat, I suggest running a CPU and GPU test simultaneously.
Here are my results:
You can see that the TDP remains at 40 W and that the temperature never reaches the danger zone (above 95 ºC).
5. Limit TDP at start up
Unfortunately, the changes made by ryzenadj.exe
will only work for the current session.
Once you restart your PC, you will need to apply them again.
5.1. Create Scheduled Task
To automatically apply them at start up, you can create a Scheduled Task
.
To do so:
- Open Task Scheduler:
- Press
Win + S
and typeTask Scheduler
, then press Enter.
- Press
- Create a New Task:
- In the Task Scheduler window, click on
Create Task
in the right-hand pane.
- In the Task Scheduler window, click on
- General Tab:
- Name your task (e.g.,
Set AMD TDP Limits
). - Under
Security options
, selectRun whether user is logged on or not
. - Check
Run with highest privileges
.
- Name your task (e.g.,
- Triggers Tab:
- Click
New...
to create a new trigger. - Choose
At startup
from theBegin the task
dropdown. - Click OK.
- Click
- Actions Tab:
- Click
New...
to create a new action. - For
Action
, selectStart a program
. - In the
Program/script
field, enter the path to ryzenadj.exe. If it’s not in a standard location, you might need to use the full path. - In the
Add arguments (optional)
field, enter the arguments for the command:--stapm-limit=40000 --fast-limit=45000 --slow-limit=40000 --tctl-temp=90
- Click
OK
.
- Click
- Conditions Tab:
- Adjust any conditions if necessary, but it’s usually fine to leave them as default.
- Settings Tab:
- Ensure
Allow task to be run on demand
is checked. - Optionally, you can adjust other settings to suit your needs.
- Ensure
- Save the Task:
- Click
OK
. - You may be prompted to enter your administrator password to create the task.
- Click
5.2. Verify Scheduled Task
To ensure the task works correctly, restart your computer and validate that the limits are correctly applied with:
ryzenadj.exe -i
If you encounter any issues, you can manually run the task:
- Go back to the Task Scheduler and find your newly created task.
- Right-click the task and select “Run” to test if it works as expected.
- Ensure that the TDP limits are applied correctly.