CPU Affinities and order

Started by Pulse, February 25, 2026, 10:31:06 AM

Previous topic - Next topic

Pulse

I have an AMD 9950x3d processor.
I configured program priorities in CPU Affinities so that specific applications use either all cores or specific ones.
For example, I'm testing the rules like this:
OCCT.exe - 0-31cores (use all cores)
Other processes - 16-31 (use only CCD1 cores)

With the *:16-31 rule enabled at the bottom of the list, the occt.exe:0-31 rule shows that all cores are being used. But in reality, this isn't the case.


If I remove the *:16-31 rule, everything works as expected.



Is this a bug, or is this how it's supposed to work, and is it possible to set this rule for all processes except those specified in additional rules?

I thought the CPU Affinities rules in Process Lasso were prioritized from top to bottom, meaning the top rule takes precedence over the bottom rule. Is this correct?

Jeremy Collake

Your understanding of the rule precedence is correct, and the resulting CPU affinity for occt.exe is set as expected.

The likely cause of the variance is that occt is dependent on some other process that is receiving the 16-31 affinity rule, effectively limiting it.

Based on your log, that problem process may be cpuocct64.exe. Changing your occt rule to *occt* would therefore resolve it. Give that a try and let me know!


Software Engineer. Bitsum LLC.

shuwam

#2
On a Ryzen 9 9950X3D, what you're seeing is expected behavior.

In Process Lasso, wildcard rules like *:16-31 are applied broadly and can still influence scheduling order, even if a more specific rule (e.g. occt.exe:0-31) appears above it. The UI may show 0-31 allowed, but the effective scheduling can still be constrained by the global rule depending on rule evaluation and core parking/preferred core logic.

Key points:

X3D CPUs have asymmetric CCD behavior (cache vs frequency).

Windows + CPPC2 + AMD driver may override pure affinity expectations.

"Allowed cores" ≠ "actively scheduled cores".

If you want OCCT to truly use all cores:

Exclude it from the wildcard rule (add an explicit opposite rule), or

Move *:16-31 higher and create a stricter per-process rule for OCCT, or

Temporarily disable the wildcard rule while testing.

Also verify actual usage in Task Manager → Logical processors view, not just rule display.
 

Pulse

Quote from: Jeremy Collake on February 25, 2026, 03:51:52 PMChanging your occt rule to *occt* would therefore resolve it. Give that a try and let me know!
yes, it works
ty