i9-12900K Efficiency Cores, HyperThreading - Disable these bad gimmicks for VR/Gaming/single-thread!

If you have an ‘i9-12900K’ or similar CPU.

Efficiency Cores - Go to the BIOS, disable all of them.
HyperThreading - Go to the BIOS, disable entirely.

Reportedly, benchmarks show as much as 30% single threading benefit to DDR5 vs DDR4 .

Reportedly, if you have one of the lucky chips with a Z390 chipset and an older BIOS from year 2021, you might even get AVX-512 .

Even for compiling the Linux kernel (massively parallel practical workload), with i9-12900K and DDR4-3200, all the extra parallelism was ~20minutes vs ~33minutes, with the ~30% Efficiency Cores and ~15% HyperThreading multithreaded performance benefits suggested by CPU-z offset by substantial single-thread performance tradeoffs.

Meanwhile, single-thread performance for some processes, such as shell scripts, took 50%-300% longer, if either Efficiency Cores or HyperThreading were enabled, with comparably greater jitter, depending on system load. While I have not specifically tested VR/flightSim yet, this is obviously and conclusively very bad for CPU frame latency as FPSVR would report.

Even Gentoo, CPU transcoding, and CI build servers, will not benefit very much from all the Efficiency Cores and HyperThreading. Vast majority of users would be better off outsourcing a few dollars to AWS and such for that.

Disk/NVMe throughput was not significantly affected. These efficiency cores do not help with keeping disk throughput saturated.

_

Why is Intel wasting so much sand? CPUs are just not appropriate for more than 8-cores. CPUs run a loop/script to figure out what to do next, then the GPU number crunches that. Fundamentally, this just not a good idea.

I wonder if Intel’s intended market for the ’ i9-12900K’ is really not VR/gaming, but CI build services highly priced by the minute, for some developers whose time costs some companies in very narrowly focused industries >>$100/hr . So long as such machines remain air-cooled, and more cores are the main selling point, that would make some sense.

4 Likes

I have a 12600k and months ago, i did same quickly testet without e-cores on, with asseto corsa competizione and others games that i don’t remeber right now. In those test i didn’t see any diference about framerate.

when i get some free time, i will try more test.

4 Likes

I have the 12900K.

There is no measurable advantage to disabling HT and e cores for VR Gaming.

I don’t know how that fares on Win10, but for Win11 it’s a fantastic CPU for gaming.

5 Likes

Folks, for most things, and even most games, there will indeed not be much difference. You could say the same about having a slightly less capable CPU. And we are getting to the point where CPUs are fast enough even for DCS World VR .

For scripting workloads, with any OS today, etc, HT and Efficiency Cores do both have a measurable impact, today.

Some DCS World use cases with lots of scriped objects, I would expect those might be affected enough.

But why have something enabled that isn’t really helpful, and on a bad day, could break things? Why not just disable it? HyperThreading degradation of DCS World, etc, performance is already well documented, and this is just more of the same.

Would be interesting to know which heuristics the scheduler uses to determine which threads to schedule on which efficiency/HT core (e.g. for Win10 and Win11). My guess would be one of the most relevant aspects could be thread priority. So if a developer runs latency critical work inside a thread that isn’t higher prio than the others (or has resource dependencies between the high prio thread and lower prio threads) then efficiency cores and HT could hurt if the scheduler decides to put an important thread on an efficiency/HT core. Approaches that usually help against priority inversion (ceiling, inheritance etc.) won’t help so much in that case because it might require expensive migrations from one core type to another.
But on the other hand, if the application is well designed regarding thread priorities and resource locks then running e.g. OS background tasks on efficiency or HT cores could be beneficial for latency (less context switches on the performance cores). So not sure whether it is a good idea to disable those by default and unconditionally.

My guess is MS will either ‘hide’ the flaws in the heuristics by creating ‘profiles’ to prohibit some applications (eg. ‘DCS World’) from using the Efficiency Cores, or will just not do anything at all and eventually the issue will ‘disappear’ as CPUs just get another 50% faster and it becomes unnoticeable.

Long-term, this does nothing. Short-term, the Efficiency Cores and HyperThreading are causing harm for desktop users, and some breakage for a few use cases (eg. DCS World with lots of scripted objects).

Which makes me wonder, if these features are not good for desktops, why add them?

Don’t get me wrong, I will continue buying the highest single-thread performance CPU with at least ~8 cores, regardless of useless features I have to disable. The ‘i9-12900K’ probably is the best CPU out there. I just don’t see any point to these weird features for desktop users.

So if not for desktops, then what? Does this help Intel win some benchmarks? Or is ‘enterprise’ a far larger market for these chips now, and workstation/gaming PCs are just eating the byproducts of that?

1 Like

To save the environment? Lower electric bills? Heat up the room less? There are other factors besides pure performance that people might care about here even for desktops.

A lot of focus in saving energy waste is on energy use when idle. So not when you’re actually playing a game, but when you’re not.

And frankly having additional efficiency cores to offload non-time critical tasks (especially tasks that aren’t part of the game) will also help increase framerates in games.

Short term issues with software that isn’t tuned to use newer hardware properly is just that: short term. It’s just growing pains. Wait a while for software to catch up, and the benefits of the new hardware design will become more pronounced.

Not really helping any of that. After disabling all this and pegging the CPU cores to 100% so they can’t drop below 2.5GHz, I find the CPU can still get to 8W reported by HWMonitor. And don’t forget, a lot of person hours that went into this stuff could have gone into other industry efficiency gains.

Heuristics would have to be near-perfect to avoid context switching. Only way I see that happening is if MS ships a profile of what processes should NEVER run on Efficiency Cores, and actually gets it right. In fact, it should be an allowlist of only a few processes, such as video transcoding. Otherwise some LUA script or something will end up slowing down a rendering pipeline running on an ‘Efficiency Core’ somewhere. Even for software video transcoding, better to use the GPU, that’s what it’s good for.

Parallel software can be rewritten to run on GPU, better than any amount of CPU ‘Efficiency Cores’ or ‘HyperThreading’.

CPU has one job. The stuff that can’t be parallel. Which I conjecture is 100% figuring out what to do next in some sort of loop/script, and giving that to the GPU.

E-cores are not as powerfull as a p-core, but anyway they give more power to multi threading aplications, like cinebench. I belive is a mid way between a very expensive and consuption processor with only a lot p-cores and other with only a few.

On the other hand these processor must be use on windows 11, becasue it is optimized for them,

This afternoon a did a quick test again with assetto corsa competizione in a race with full grid, and dirt 2, and i didn’t see any improve disabling e-cores and HT.

In my day to day, i haven’t got any issue

Just because you haven’t measured it yet doesn’t mean it won’t affect you. My use cases do show a very measurable difference.

Regardless of the OS, so far, it is definitely possible for a thread to get assigned to an ‘E-core’, when it should not be. Many threads can be busy for a long time or for a short time, while other threads are busy for a long or short time, yet all of these threads can be vital for interactivity.

There is just no way the OS could know which threads are ‘interactive’ for the user (eg. a game) and which are not. Unless your game really is doing that much parallel stuff on the CPU, in which case, why is that not happening on the GPU instead.

At best, when enough threads are on the system, every ‘P-core’ is going to be occupied. Then the OS could wait to see if a ‘P-core’ becomes available, or after adding some latency waiting, put that thread on an ‘E-core’. Result: at best any busy system is going to have the OS occasionally delayed a thread, then put it on a slow core for a while, and maybe add a few context switches.

If you’re playing an FPS, that means jitter, and misses. If you’re doing flight sim, which is heavily single-threaded right now, with a lot of scripted/objects on the CPU, such things are going to happen often enough to drop frames.

And at the end of the day, all just to software transcode a video or compile a kernel maybe ~30% faster. Worth it? I think not.

1 Like

Please edit your title.

You have an opinion but it’s not a good best practice suggestion for Gaming and VR.

2 Likes

That’s a shocking suggestion.

You don’t have sufficient data to falsify my measurements showing HyperThreading or Efficiency Cores can cause a realistic 100ms single-thread to take at least 50ms longer. Yet I have conclusively tested exactly that, I know how this affects relevant applications (ie. Gaming and VR, especially flight sim), and the benchmarks I have read reported by others show significant performance loss with HyperThreading enabled. Your hypothesis is not consistent with any data except your own absence of observation.

Moreover, disabling Efficiency Cores, HyperThreading is not bad practice. Things will not break due to doing this. Things may break due to not doing this.

At the end of the day, I agree the i9-12900k is a ‘fantastic CPU for gaming’. Tweaking some things just makes even more use cases possible, that might not be otherwise.

I agree, absolutely shocking :joy::joy:

There is zero impact on gaming and VR, as has been observed.

Rather than asking why Intel is ‘wasting so much sand’ you should also yourself why you are wasting your time and the time of others suggesting bad practices only and if relevant in absolute edge cases.

You finding an impact on DCS isn’t enough to recommend disabling HT and efficiency cores ‘for gaming and VR’ because they are gimmicks.

Please get off your high horse and invest your apparent enthusiasm in something productive.

2 Likes

Actually, my ‘apparent enthusiasm’ was immediately already invested elsewhere - I have been running my use cases much faster now. Thought maybe I should share.

Meanwhile your claims that my suggestions are somehow bad practices, contradicts my own unambigious findings, others published reported benchmarks, and the Pimax, flight sim, and VR, community historical experience with HyperThreading.

Hardly seems like I am the individual who needs to ‘get off your high horse’.

Meanwhile, I still get the impression Intel is reluctant to prioritize single-thread performance above some other lucrative market.

but, what do you feel? and, what games?

If i understand you, at DCS with e-cores an HT, you watch some drop frames or stuterin, don’t you?

Do do you have more experiences in other games to try to test us?

HyperThreading has noticeably reduced performance of DCS World by ~5%-15% depending on map and presence of scripted objects. Reducing resolution or other GPU loads was proportionately necessary to prevent frame dropping.

Elite Dangerous and other relatively difficult games, IIRC, did show measurable CPU frame latency changes due to HyperThreading, but usually did not break, being GPU bottlenecked.

Efficiency Cores have added 50%-300% delays to some of my developer use cases, same as HyperThreading does. While admittedly not a direct test of VR applications, there is no logical reason to expect the same and I have no doubt at all, this will affect DCS World, MSFS, X-Plane 11, etc.

Bottom line is, unless you’re doing massively parallel software builds, software transcoding, etc, there is no reason not to disable HyperThreading and Efficiency cores, and much reason to disable.

the last intel gaming cpu was 9600k. after that, the race for the number of cores began. looks great on paper. hyperthreading is an old idea that has survived and is actually obsolete with today’s number of physical cores. HT also needs resources and time to function. you can also go one step further and disable several p cores and overclock the remaining cores a few hundred MHz further.

Disabling stuff could be a workaround for specific applications that are known not to cope well with the new core types. (Instead of outright disabling the efficiency cores there are afaik tools that allow to pin threads manually to cores - which imho would be better - e.g. the task manager: https://www.thewindowsclub.com/processor-affinity-windows). But in the long run I hope and expect that games and applications will use appropriate functions to help the scheduler decide which threads are important and should stay on the performance cores. (e.g. there is an EfficiencyClass in the PROCESSOR_RELATIONSHIP structure that can be queried to determine the performance cores - then critical threads can be pinned to those via an affinity mask).
This would have the advantage that the uncritical background threads can still use the efficiency cores. Which takes load away from the performance cores (which can reduce latency) and saves energy.

This is actually true. Back when we had just one or two physical cores, I was enthusiastic that HyperThreading might help prevent a single thread from locking up the machine. After 8 cores though, seems less important now.

Ah, but with VR six cores is about right, and seemingly about half the overclockable CPUs can get maximum speeds on all cores (due to transistors on a single chip being well matched). SteamVR compositor and such waste a couple cores, in addition to DCS World and such needing two - one for the single thread and the other for what little is on a separate thread like audio. After that having at least a couple full-performance cores mostly idle for the scheduler to juggle things around without anything getting ‘stuck’ in a bad situation seems to help. At least my experiments with DCS World strongly favor, fully overclocked, all-cores, all the time 5.3GHz.

Theoretically, yes. IIRC, ProcessLasso can do such things. On desktop preemptable Linux, I would be reasonably confident in such techniques. MSW though, OS kernel spinlocking could get stuck on an efficiency core and pile up things like Inter-Process Communication.

Issue here is that when FPSVR shows CPU latency at 90% of frame dropping, every 1% in single-thread performance is a whole 10% of your margins to avoid frame dropping.

Buy 1000W worth of solar panels instead, add 2kWh of renewable energy to the grid every day. Better investment than weirdness in the single-thread performance of the highest single-thread performing chip.

try 1.45v and limit the cpu temp to 80 ° c in the bios. so you have heat under control for a good stability. then up with the all core clock. is not for benching, just for gaming

1 Like