Ok, after some tinkering I think I got it right this time.
To document it somewhere, I'll park the info here. Here is what I did:
- Updated the BIOS and EC to the newest version (for me it was for MSI raider GE75 8SF, from the MSI website).
- Kept BIOS settings mostly untouched after update (just disabled safe boot and switched to optane technology so that windows actually boots up in the first place, that's it).
Then set ThrottleStop as follows:
- Note that I typed in `0` for the number to the right of `Speed Shift` to make it pull maximum power for performance.
- The only odd thing about the above seems to me is that `Speed Shift` and `SpeedStep` are both active (Would have thought these two compete with each other). But I saw this combination in a tutorial on youtube and just went with it as well.
Then we go into the TPL menu and set the following:
- Check the boxes for `Enable Speed Shift`
- Drag the `Turbo Time Limit` all the way up
- Set the `Turbo Boost Long/Short Power Max` both to 60W. This is the maximum Watt number we want the system to pull (Just my estimate, since going above that tends to overheat the sink and thermo- and power-throttle). If this is set any higher, the system gets greedy and pulls too much (recall that we set `0` for `Speed Shift` in main menu?) which over-feeds the CPU and just swings back into a PL1 or PL2 throttling situation almost immediately. Limiting the power to the max desired power by hand keeps things in balance and allows to stay near max frequencies at near max load for a long time without running into throttling.
Here is how it looks in my case:
Finally, the remaining step is to go into the FIVR menu and actually undervolt. Since we limit the power draw to 60W max, the CPU will be able to reach only a specific frequency under full load at a given voltage off-set (depends on the build). So what we do is:
- In the `CPU Core`, `CPU Cache` and `Intel GPU` sections we click on `Unlock Adjustible Voltage`
- In all three sections above we then start decreasing the `Offset Voltage` slider bit by bit, while clicking OK and running a CPU cinebench benchmark after each change. This will increase the CPU frequency the system can reach under full load at the given Wattage -- we are looking for it to reach the maximum 3.9GHz for the 8750h, at which point we can stop. If you go too far with the undervolting, the system will freeze under load and crash. This would tell us that we cannot undervolt further and have to increase the slider again. That would set a limit on how many GHz we can squeeze out. But hopefully before the system freezes, we reach a point at which the system gets to 3.9GHz under full load and we are done.
For me, this happens around -153mV undervolt (for all three `CPU Core`, `CPU Cache` and `Intel GPU`). This is device specific, for you the number probably will be different:
All done! Now we see full 3.9GHz frequency while all cores are at 100% C0% load and system is pulling at most 60W:
The `Throttle` indicator will obviously light up, and `Limits` will show PL1 and PL2 throttling since we intentionally throttle the power supply to 60W max, so this is desired behavior. In fact, since we keep the power supply modest at all times, the system is less likely to snap into a firmware dictated 45W maximum PL1 value. This would bring my frequencies down to 3.6GHz and decrease performance. Had we not restricted the Wattage to 60W, this would happen almost immediately, while at 60W it almost never happens. Still, the system randomly decides to do this sometimes.
The performance gain e.g. in cinebench is quite nice (getting consistently the same score, with max fan speed button enabled):