-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How can I force my AMD Ryzen 5 3500U to stay cool? #20
Comments
From what I can understand, AMD has not provided any information to open source developers on how to change the boost states on zen (all I could see is the non boosted states: page 129 and up https://developer.amd.com/wp-content/resources/56255_3_03.PDF), someone (maybe already did I'm not sure) has to reverse engineer how AMD Ryzen Master is doing it on Windows or how it's done at the UEFI level. When I added zen support to the utlity, I didn't test it (didn't have a zen based CPU), just did it based off their manual. I think the problem is, the boost algorithm used by zen makes the p-state system described in their manual useless, it probably overrides those and has its own states, hence why you when you disable P-states nothing changes, which means for zen users this utlity might only be useful for people disabling AMD's boost algorithm. |
Searching for "boost" in https://developer.amd.com/wp-content/resources/56255_3_03.PDF On page 124 "CpbDis: core performance boost disable. Read-write. Reset: 0. 0=CPB is requested to be enabled. 1=CPB is disabled. Specifies whether core performance boost is requested to be enabled or disabled. If core performance boost is disabled while a core is in a boosted P-state, the core automatically transitions to the highest performancenon-boosted P-state. " So by setting "CpbDis" to 1 should make the CPU use non boosted P-states? |
Thank you for your response (and for this tool). It'll take me quite some time to understand the content of that PDF. The description of "CpbDis" makes me reach your same conclusion. |
OK, I learned something on how MSR works. "CpbDis" is the 25th bit in the register number 0xC0010015, and it's currently unset:
In order to set it, I should set 0xC0010015 to:
If everything so far is correct, then in order to set "CpbDis" to 1 I should run:
And I should do the same thing for all the other processor cores. Is this correct? |
I finally ran that command after finding confirmation in various pieces (like this one: https://github.com/mpollice/AmdMsrTweaker/blob/master/Info.cpp#L98). I can confirm that my CPU is not entering P-State 0 and is not going above 2000 MHz anymore. |
Great! Maybe this can be added to added to amdct, just haven't had time to do anything with it lately. |
I don't know whether it's relevant here, but a couple of days ago I realized that I can enable/disable boost using If I disable boost using If this tool is meant to run on systems with a recent Linux kernel, then it's probably unnecessary to add this feature. It would however be useful for systems that don't support it already, like older kernels or non-Linux ones. |
@Ryzener Did you have any success with undervolting? I own a Thinkpad E495 with the same CPU and I would like to have the machine completely silent, as you, and not turning on the fan from time to time. Also my temp is always around 50°C, browsing the web. Would be nice to find a solution. I used https://github.com/amanusk/s-tui to monitor the cpu. Good news: Even executing stress tests with this tool, the CPU does not go beyound ~75-80°C without throttling, but the fan gets noisy. |
I tried undervolting with no success. I'm not 100% sure of what I was doing or how to test it though, so I might have done something wrong. I'm currently disabling boost states and limiting the max frequency using If you find a better solution and manage to undervolt your CPU, please let me know! :) |
@Ryzener you are genius. I wanted thermal headroom, |
FWIW, I think undervolting does work. I got an extra 10% frequency when setting P0 to 756mV instead of 1200ish - the limit was thermal. EDIT: FYI:
|
A short reason is for this behavior is work as expected. Starting with the 1st gen Ryzen this processor family is able to scale the frequency much more aggressive then ever before. This is the XFR mode is responsible for clock the chip as high as possible, while the temperature and power consumption is below the threshold. |
Cheaterman, that's exactly what I want. Also, do you know anything about the kernel parameter amdgpu.dpm=1 ? |
These are my readings for sensors.
I also find a bit strange when I boot up ISO's of older distros with older kernel version 5.8 (october 2020) then my SoC voltage is able to fluctuate again, it can go down to 0.800V on idle, but as soon as I boot distros with this newer kernel (5.10 or higher) then I notice my SoC voltage is locked at 1.09V again (waste of power on idle) Is that a regression in the kernel? Or is it that older distros were reporting older values? (unlikely, since older distros with kernel 5.8 also reported idle temps of 40 C, more similar to what I get on Windows, instead of 50 C) |
I use these settings on my 2500U, works around 38-42 oC |
Can you share the command line you use? When it comes to UNDERclocking/undervolting, there's no risk of permanent damage, is it? Just out of curiosity, I tried going from kernel 5.10 booting into an ISO with kernel 5.14, but I found that the CPU runs EVEN HOTTER there. Each version seems to bring regressions, at least for 3500U chip (zen+ Picasso generation) Using kernel boot parameter amdgpu.dpm=1 or =0 doesn't seem to make any difference, unless some other module needs to be activated along with it (again, why linux makes this non-automatic I can never understand, and why everything has to be so many layers of manual labor and cryptic information, unless someone posts the commands online you never be able to find all the features inside your own kernel) |
yes, here you go
|
Sorry for the unrelated hijack, it's not relevant to amdctl itself, but i just need to ask where can I report this. Basically none of the things mentioned above work for me:
I know boost is enabled because
My platform is AMD A10-9600P (k15 family, excavator architecture, 60h-6Fh or 70h-7Fh), and the manual in https://www.amd.com/system/files/TechDocs/50742_15h_Models_60h-6Fh_BKDG.pdf clearly says that boost activity is decided by Does anyone know if this is something worth solving, and where can I report this, if need be? Thanks in advance. |
A assume that would be a forced by the BIOS. It might worth a try to check it with turionpowercontrol ott, IIRC that has a P-State monitor function. |
@vinibali That's probably it, its a locked HP bios. Thanks! |
I would try to check even if the msr values can be changed or not. |
I'm very ignorant about CPUs and their voltage, wattage, multipliers, divisors etc.
I read the doc, #10,
amdctl -x
, the ArchWiki, something on Wikipedia and other inline information, but I'm still very unsure, especially since wrong values might fry my chip.At times I wish to keep my fan off, thus force my laptop cool. That's how I ran into
amdctl
.AMD Ryzen 5 3500U
I have an AMD Ryzen 5 3500U, family 17h:
My cores look like this:
Disabling P-States doesn't work
I tried to disable P-States 0 and 1:
After this,
amdctl
shows 0 as theirStatus
for every core.Nevertheless, my cores are still able to enter those P-States when they're under load (
amdctl
will still show "Current P-State: 1") and thecpu MHz
displayed in/proc/cpuinfo
can still close 3700.Undervolting and some questions
Should I increase CpuVid in order to undervolt my P-States?
Which P-States? And any hint on what kind of values I should use?
My lowest P-State is 3, but that one shows
-nan
CPU multiplier (and Status 0, 0 as all ids etc). Does it simply mean that I cannot tweak the lowest P-State, or is something broken?I'm also confused about a few things related to frequency...
According to the specs, my CPU's base frequency is 2.1GHz and the Max Boost Clock is up to 3.7GHz. Yet
/proc/cpuinfo
reports acpu MHz
close to 1200 when the load is minimal. Shouldn't the minimum be 2100?The P-States displayed by
amdctl
show a clock speed of 2GHz, 1.6GHz and 1.4GHz. What does it mean? Is that the minimum core frequency while the core is in the given P-State, or what else?When and how should one tweak the other settings (e.g. CPU voltage id and divisor id)? Is it better to never touch those?
I apologize in advance for the many questions!
If anybody has any links that explains how all of this works, I'm looking forward to giving them a read.
Thanks for this useful piece of open source software!
The text was updated successfully, but these errors were encountered: