Page 1 of 1
SL410 compatibility issues with P9600 (Penryn)?
Posted: Fri Oct 15, 2021 9:30 pm
by Xenomorph
ThinkPad SL410, Type 2842
(latest BIOS available, 1.52 / 2012-06-19, whitelist patched)
Its original CPU was a T5870 (2.0 GHz, 800 MHz BUS, 2MB Cache, 65nm, 35W).
I popped a P9600 in it (2.66 GHz, 1066 MHz BUS, 6MB Cache, 45nm, 25W).
I swore that I read that the system was compatible with the newer/better CPUs before I got one.
After noticing slowdowns and really bad benchmark scores, I discovered that the CPU Modulation keeps scaling down when the system is plugged in and under load. 87.5%, 75%, 50%, etc. The multiplier is max and Windows is set to 100% min/max for speed. This seems unrelated to any Windows setting, and more like an issue with the system's motherboard or BIOS.
I can use ThrottleStop to lock the CPU Modulation to 100%, but that means it has to run at boot and always stay on. How can I keep CPU Modulation to stay at 100%? Is this a BIOS compatibility issue?
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sat Oct 16, 2021 12:32 am
by RealBlackStuff
No/bad battery?
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sat Oct 16, 2021 12:44 am
by Xenomorph
It has its original battery. Despite its age, it holds a good charge and lasts several hours.
Original Lenovo charger, as well.
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sat Oct 16, 2021 2:46 am
by RealBlackStuff
Maybe you got a Chinese knock-off CPU?
Happens regularly.
What happens if you put the old CPU back in?
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sun Oct 17, 2021 1:04 am
by Xenomorph
I hope it's not a knock-off CPU!
The seller on eBay has sold a lot of them (and there are still some available). It looked fine to me, and with clock modulation disabled or forced to max, its benchmarks (GeekBench, etc.) are comparable to similar CPUs.
I'm not even sure where my original CPU is. I guess I could pull everything apart to put it back in for testing, when I find it.
I just noticed the same thing happens under Ubuntu 20.04.
When unplugged and on battery, the CPU runs at 100% (2.66 GHz).
When plugged in, ODCM/On-Demand Clock Modulation scales the CPU down. scaling_cur_freq drops from 2667000 (normal) to 2335319. This is the same "87.5%" reduction I was seeing in Windows (a ~12.5% reduction in speed).
Also, it looks like the CPU went back to 100% / 2.66GHz when the battery charges up to 91%. So this definitely seems like something controlled by the system and related to charging.
I even verified it. I unplugged the AC adapter, drained down to 87% or so, and plugged back in. The clock modulation dropped back to 87.5%, CPU 2.33 GHz. As soon as the battery charged up to 91%, clock modulation was back to 100% and the CPU back to 2.66 GHz.
I have the original Lenovo 65W power adapter. I used a multimeter to test it, and it reads correctly at the full 20V. But it also gets REALLY hot when plugged in and charging the laptop (like, too hot to hold). I ordered a new Lenovo 90W AC adapter, just in case mine is bad or isn't delivering enough power. Perhaps the system is reducing the system speed because it isn't getting enough power?
When trying to figure out how to manually set clock modulation, most stuff I find mentioned BD PROCHOT, which is thermal throttling. I just need something to force the "ODCM" to max. ThrottleStop does that for Windows. But what about Linux?
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sun Oct 17, 2021 2:07 am
by RealBlackStuff
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sun Oct 17, 2021 3:47 am
by Xenomorph
It's not a permanent fix, but it did help point me in the right direction!
0x19a = IA32_CLOCK_MODULATION = ODCM
This is what my system was showing in register 0x0000019A as it kept throttling down:
0x00000000 = 100%
0x0000001E = 87.5%
0x0000001C = 75%
...
There is a chart of Clock Modulation values here (on Page 4):
http://www.cse.psu.edu/conferences/icpp ... slides.pdf
Since I'm using ThrottleStop in Windows to keep resetting the Clock Modulation, I wanted a way to do
just that.
I then found this program:
https://github.com/cocafe/msr-utility
It's basically the Linux msr-tools package for Windows (read and write) and even has a daemon utility made specifically so you don't have to rely on programs like ThrottleStop.
My msr-watchdog.ini script has this in it:
Code: Select all
# keep running
OneShot=0
# check clock modulation every second
WatchdogIntervalMS=1000
# keep core 0 and 1 locked at 100% clock modulation
MSRGeneralRegLock=0, 0x0000019a, 0x00000000, 0x00000000
MSRGeneralRegLock=1, 0x0000019a, 0x00000000, 0x00000000
msr-watchdog checks 0x19a every second and changes its back to 0x00 if the system tries to set it to 0x1e or whatever. It's using less than 700KB of memory, and 0% CPU.
I guess I can create a cronjob in Ubuntu to run wrmsr every second...
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Fri Oct 22, 2021 4:36 pm
by Xenomorph
I just got a new 90W adapter, and the issue hasn't happened once. 100% ODCM during 100% load.
I guess the system doesn't think the 65W adapter provided enough power.
The system was sold with a 65W adapter, and I went from the T5870 CPU (35W) to the newer & more-efficient P9600 (25W), so I figured there would be less power draw. Perhaps the old 2009 65W adapter just isn't as good as it use to be.
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sat Oct 23, 2021 7:08 pm
by axur-delmeria
I wonder if the bump in FSB clock (800MHz to 1066MHz) has anything to do with it...
Re: SL410 compatibility issues with P9600 (Penryn)?
Posted: Sat Oct 23, 2021 10:09 pm
by kfzhu1229
Now, see if the issue persists when the system starts with just the battery.
I have had this happen to my Dell laptops with the Penryn CPU's when either using a shotty/weak battery or the internal battery's voltage is abnormal (i.e. internal discharge but the battery IC didn't register percentage drop). In which case throttlestop fixes it. But that should only happen on a beefy system with discrete graphics and high end power hungry screens and everything, and probably not on something of the calibre of a SL410.
But yeah I guess if your charger is about to die and isn't supplying full 65W of power, that can be it too