CPPC Enabled VS Disabled

1 : Anonymous2021/08/25 13:56 ID: pbbqd0
CPPC Enabled VS Disabled
2 : Anonymous2021/08/25 14:27 ID: haaodky

What's CPPC?

ID: habf4qu

CPPC or Collaborative Processor Performance Control is a feature defined in the ACPI specification that allows the processor to define how an OS should operate it efficiently. ARM based processors make extensive use of this iirc.

AMD has it's own variant, the AMD CPPC introduced with Zen 2 that basically tells the OS which cores are the fastest, which are the most energy efficient etc. This allows the OS scheduler to make intelligent decisions based on the workload.

For example if you're doing a heavy task but it primarily relies on a single core, the OS scheduler may designate that workload to the fastest core. If it's doing lighter workloads, it may designate those workloads to more energy efficient cores instead.

If you open up Ryzen Master in advanced view, it'd show you your best cores in a CCX/CCD compared to others, that's basically CPPC. It defines which cores can push the highest frequency and which cores cannot.

3 : Anonymous2021/08/25 16:38 ID: hab7l06

What about Ryzen 3700x on latest Windows 10 build, is it worth it to disable CPPC and preferred cores in terms of gaming performance ?

ID: hac0tg4

Off. Windows keep throwing stuff into non-logical cores when is on.
Look at this...

/comments/czxgvg/what_exactly_does_cppc_preferred_cores_do/" class="reddit-press-link" target="_blank" rel="noopener">https://www.reddit.com//comments/czxgvg/what_exactly_does_cppc_preferred_cores_do/

ID: hac3xm0

Keep it on. It improves single thread performance.

4 : Anonymous2021/08/25 19:14 ID: habuy05

Very interesting! Here's my results with my R5 3600:

Assassins Creed Odyssey (insanely CPU bound game):

CPPC Enabled:

CPPC Disabled

CPPC Disabled second run

Assassins Creed Valhala: (More GPU bound game, but still kinda CPU bound)

CPPC Enabled

CPPC Disabled

CPPC Disabled (2nd run)

Look at the total frames on the Odyssey benchmark and the minimum FPS on the Valhala benchmark.

This could be worth more people checking out with different configs. I think you might be into something OP.

5 : Anonymous2021/08/25 14:06 ID: haalbok

CPPC is supposed to improve performance not decrease it. Which motherboard have you got?

ID: haam0cs

MSI x570 Tomahawk WIFI

it improves singlecore performance.. but decrease multicore performance

ID: haba4ak

I have had "CPPC Preferred Cores" disabled for my 3900x for a long time. I found this resulted in stutter free gaming. With it enabled i was always getting stutters.

I first learned about this tip from the following post:

/comments/d1d2jd/turn_off_cppc_preferred_cores_to_sacrifice_single/" class="reddit-press-link" target="_blank" rel="noopener">https://www.reddit.com//comments/d1d2jd/turn_off_cppc_preferred_cores_to_sacrifice_single/

Are you also disabling CPPC? I currently have that enabled. Not sure what CPPC does, as the "CPPC Preferred Cores" option is the one that controls the preferred cores behavior.

ID: haapxz6

cppc makes it so it uses fastest cores before using slower one's that can't boost as high.

6 : Anonymous2021/08/25 16:16 ID: hab4buk

No surprise on Ryzen 5000 since there is only 1CCX/CCD. For 3000 series it's pretty much needed on Windows however, as the technology is misused to guide the scheduler into selecting the most beneficial CCX for thread allocation.

On Linux, I use the PDS scheduler and it 'just werks' with amazing performance and good boost clocks, despite there not being any X86 CPPC support.

ID: habh8di

Yea the thing that pisses me off is that AMD tried to get CPPC support merged into Linux over 2 years ago but just gave up after the first patchset submitted and no news on it since. Some guy actually ported the original patchset to v5.8 and found some pretty amazing results though it's somewhat bodged.

Hoping that with their refocus on Linux due to Steam's gaming console that they'll get back to CPPC support and eventually get it mainlined. It may not be needed really for Zen 3 (unless you're pushing multi-CCDs like the 5900X/5950X) but it's definitely a benefit to have for Zen 2.

ID: habwj86

For the Steam Deck, it wouldn't be useful at all since there is only a single CCX and boost is handled differently on mobile parts anyways (boost isn't as high but every core is capable of hitting the advertised clockspeeds, there are no possible latency panalties since there is only a single L3 cache slice, etc.)…

I think the reason why AMD's CPPC implementation wasn't upstreamed into the Linux kernel was that AMD made a vendor- or product-specific implementation instead of following existing kernel infrastructure and paradigms.

Historically, there were separate frequency scaling drivers for every few CPU models in each architecture supported by Linux. It took a long time to get to a generic driver (cpufreq) that worked in a vendor- and architecture agnostic manner and it was needed in order to purge the code duplication and maintenance burden that resulted from the old paradigm.

So instead of adding generic CPPC2 support for cpufreq on X86 (a working implementation is already present for aarch64 and some of the code could be reused), AMD created a vendor specific driver for their own CPUs and called it amd_cpufreq.

The driver was rejected due to the aforementioned reasons and AMD probably figured it was too expensive/not worth the effort to rework it, so they just gave up on the endeavour… Since on 5000 series, all Ryzen APUs (and probably future products too) and 99.99% of Epyc users(!), CPPC isn't needed anymore/at all, I don't think that official support for it will land in cpufreq anytime soon.

Just using the L3$ topology aware ProjectC/PDS (or BMQ) scheduler with an increased kernel tickrate (500hz or higher), voluntary preemption and the 'schedutil' governor on a somewhat recent kernel (IIRC at least 5.10 or 5.11 is needed, earlier versions have to use 'ondemand' due to bugs) yields a consistent performance increase, allowing the CPU to reach its advertised boost speeds and match or exceed the performance of the Windows scheduler that has to misuse CPPC. The performance bump also applies to games btw., as the scheduler "knows" when it makes sense to put threads onto the same CCX in order to benefit from the reduced latency that results from sharing the same block of L3$ and when not.

7 : Anonymous2021/08/25 15:49 ID: hab08r2

I also disable CPPC, and CPPC Preferred Core in the BIOS.

If you need that extra little push, you can disable Global C-State Control to keep cores from enter C0 sleep state, also disabling Spread Spectrum will ensure that you're using the complete clock speed entered & ensure that BCLK is at 100, next I disable PSS Support (AMD's Cool n' Quiet Mode).

ID: hab50jb

C0 is active state aka "core is doing work". You disable C6 (core parking) and IF sleep mode via disabling "Global C-State Control". This means that there is less latency associated with handing work to an idle core.

Disabling Cool n' Quiet on the other hand just wastes electrical energy by preventing downclocking of inactive cores and can thereby negatively affect the boost clocks you achieve on active cores (esp. on Ryzen 3000). Ramping clock speeds is fast enough since 3000 series, so CnC can be left enabled.

ID: hab99iy

C6, my bad.

ID: hab9z3h

The difference in wattage used with PSS enabled / disabled is only 10W. I do this with a manual OC where my clock does not boost like it does with the default clock & PBO enabled.. so it's beneficial.

I'm not worried about an extra 10W at idle, I think I can spare the couple of extra dollars per month lol.

ID: habavmo

also disabling Spread Spectrum will ensure that you're using the complete clock speed entered & ensure that BCLK is at 100

Could you plz explain why?

ID: habge5k

Spread spectrum is a feature of motherboards that is required to pass some safety rules defined by the FCC. Basically it slightly reduces the base clock speed (usually to around 98.8 MHz) to avoid some EMI interference which can affect some things like pacemakers or sensitive electronics in the area.

With it disabled, clocks aren't reduced (therefore increasing EMI) and it increases performance. The base clock is the "fundamental" clock in an operating system and many things are derived from it based on a multiplier, including the CPU, RAM, PCIe speeds.

Say for example your CPU boosts up to 3.6 GHz, the multiplier for that is x36 and is based off the BCLK which is usually 100 MHz (36 x 100 = 3600 MHz). If you had spread spectrum enabled, your BCLK may drop to 98.8 MHz or so, so in actuality your processor's real speed drops from 3.6 GHz to 3.556 GHz (36 x 98.8 = 3556.8 MHz).

8 : Anonymous2021/08/25 15:35 ID: haay6jx

To properly work with CPPC you need and power plan like the CommunityPlan v3/v4 or 1usmus one if you are not using CRT.

Global C-state Control = Enabled

Power Supply Idle Control = Low Current Idle

CPPC = Enabled

CPPC Preferred Cores = Enabled

PPC Adjustment = PState 0

ID: hab03r3

Cppc is Auto enabled on Most Mainboards.. togheter with the Standart balanced powerplan

ID: hab1f3d

AMD said on Zen 3 which OP uses you only need to use Microsoft's build in power plans..

ID: hab2pes

Ok my mistake as using Zen 2

9 : Anonymous2021/08/25 22:04 ID: hack79t

these results are kinda worthless if you didn't change your boost mode on the power plan

/performance-tuning/hardware/powe-performance-tuning" class="reddit-press-link" target="_blank" rel="noopener">https://docs.microsoft.com/en-us/windows-serve/performance-tuning/hardware/powe-performance-tuning

CPPC will win if you choose efficient aggressive for boost

there's not much difference between CPPC off,on if you set the boost modes

CPPC off does favour the boost core 1 , core 2, etc

CPPC on, will use the factory marked cores, they might not be core1,2 and those other cores might be lower quality, so that's why you might see fps drop

all depends on cpu core quality, and those are diff on all cpus

ID: hacy2yq

Not dabbling with that nonsense, but using a 3700x I'm noticing a clear performance uplift with keeping CPPC on and turning CPPC Preferred cores off. 10 points ST / 130 points NT in CPU-Z. Apex is running about 8-10fps better on average. Testing more now.

10 : Anonymous2021/08/25 22:06 ID: hackhft

So should I be using CPPC or not on my 3500X?

Edit: Should I be disabling just 'CPPC Preferred Cores' or both 'CPPC' and 'CPPC Preferred Cores'?

11 : Anonymous2021/08/25 22:17 ID: hacly9w

Found the same thing on my 5800X.

With my previous 3600X, CPPC boosted benchmarks and foreground app performance. The 3600X performed better with CPPC on.

With my 5800X, it seems like CPPC causes core contention. Seems like too many tasks are getting assigned to the two best cores which ends up causing performance degradation for foreground apps. The 5800X performs better with CPPC off.

ID: hacxmru

Doing testing on my 3700x and I'm seeing clear and noticeable performance increases compared to having "CPPC preferred cores" disabled. Another 10 points ST/ 130 points MT in CPU-Z. Apex Legends runs about 8-10fps better on average.

12 : Anonymous2021/08/25 23:25 ID: hacv2lp

Got mini freezes on beat saber, gonna test this tomorrow and update you !
Got a 5600x on a b550 aorus elite v2 with an untouched reference 6700xt and 16Gb of 3600Mhz crucial ballistix ram @ 3800 -16 18 18 38, untouched timings-, cpu has -15/-20/-25 on cores and best cores respectively, an offset of 100Mhz and fclk at 1900. I only get these mini freezes on beat saber, headset is Quest 2, don't think I had freezes with my old pc which had a 1600af

Sorry for the info dump but I thought it could be relevant
(Edited for formatting and added info)


Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x