Cycles (and sims?): Support Intel 12th Gen CPUs #99967

Closed
opened 2022-07-25 14:04:54 +02:00 by H.Schoenberger · 24 comments

System Information
Operating system: Windows 10 and 11

Blender Version
3.2.1

Short description of error
On Windows, Cycles does not use all Cores on a Intel 12th Gen CPU ("Alder Lake", contains Efficiency and Performance cores).

Cycles has to use the Windows API function SetThreadInformation().
Or Blender SetProcessInformation()

The effect is most seen if if you are rendering and minimize Blender to e.g. browse with Firefox.
Or if you use a render manager that renders in the background.

I am not sure if there are other functions in blender that might use all cores like simulations?

Test results:


Windows 10:
-	Blender UI in Foreground:         All 4 EFF cores and all 16 PERF cores.
-	Blender UI minimzed/background:   All 4 EFF cores and   0 of 16 PERF cores.
-	Console/service render            All 4 EFF cores and   0 of 16 PERF cores.

Windows 11:
-	Blender UI in Foreground:         All 4 EFF cores and all 16 PERF cores.
-	Blender UI minimzed/background:   All 4 EFF cores and   8 of 16 PERF cores.
-	Console/service render            All 4 EFF cores and   2-8 of 16 PERF cores.
**System Information** Operating system: Windows 10 and 11 **Blender Version** 3.2.1 **Short description of error** On Windows, Cycles does not use all Cores on a Intel 12th Gen CPU ("Alder Lake", contains Efficiency and Performance cores). Cycles has to use the Windows API function **SetThreadInformation()**. Or Blender **SetProcessInformation()** The effect is most seen if if you are rendering and minimize Blender to e.g. browse with Firefox. Or if you use a render manager that renders in the background. I am not sure if there are other functions in blender that might use all cores like simulations? **Test results:** ``` Windows 10: - Blender UI in Foreground: All 4 EFF cores and all 16 PERF cores. - Blender UI minimzed/background: All 4 EFF cores and 0 of 16 PERF cores. - Console/service render All 4 EFF cores and 0 of 16 PERF cores. Windows 11: - Blender UI in Foreground: All 4 EFF cores and all 16 PERF cores. - Blender UI minimzed/background: All 4 EFF cores and 8 of 16 PERF cores. - Console/service render All 4 EFF cores and 2-8 of 16 PERF cores. ```
Author

Added subscriber: @Schoenberger

Added subscriber: @Schoenberger
H.Schoenberger changed title from Cycles: Support Intel 12th Gen CPUs to Cycles (and sims?): Support Intel 12th Gen CPUs 2022-07-25 14:13:36 +02:00
Contributor

Added subscriber: @Raimund58

Added subscriber: @Raimund58

Added subscriber: @Sergey

Added subscriber: @Sergey

As it states currently, the behavior is consistent to what is expected on Windows on a big.LITTLE architecture: processes running on a background are freeing up big cores to improve system responsivness for foreground tasks.

I am not sure forcing this behavior to change in Blender will be a good improvement. Changing process affinity/priority always gets in a way of render farms. So if anything, it should be some configuration or command line argument.

As a quick workaround you can tweak power management settings: powercfg /powerthrottling disable /path c:\path\to\blender.exe (thanks Xavier for sheding the light on this command!)

As it states currently, the behavior is consistent to what is expected on Windows on a big.LITTLE architecture: processes running on a background are freeing up big cores to improve system responsivness for foreground tasks. I am not sure forcing this behavior to change in Blender will be a good improvement. Changing process affinity/priority always gets in a way of render farms. So if anything, it should be some configuration or command line argument. As a quick workaround you can tweak power management settings: `powercfg /powerthrottling disable /path c:\path\to\blender.exe` (thanks Xavier for sheding the light on this command!)
Member

Added subscriber: @xavierh

Added subscriber: @xavierh
Member

The effect is most seen if if you are rendering and minimize Blender to e.g. browse with Firefox.

The upside of this is Firefox browsing stays performant while rendering so I suppose current behavior should still be the default.
For users who would rather see background rendering finish earlier and render managers, calling powercfg /powerthrottling disable /path c:\path\to\blender.exe or rising process or threads priorities works already.

Then the open question is on if and how to expose the ability to use 100% of the resources available to users and if so, at what level.
On the code side, as you mentioned, deactivating power throttling can be done at thread level (could implement a TBB task_scheduler_observer to do that):

THREAD_POWER_THROTTLING_STATE throttling_state;
memset(&throttling_state, 0, sizeof(throttling_state));
throttling_state.Version = THREAD_POWER_THROTTLING_CURRENT_VERSION;
throttling_state.ControlMask = THREAD_POWER_THROTTLING_EXECUTION_SPEED;
throttling_state.StateMask = 0;
SetThreadInformation(thread_handle, ThreadPowerThrottling, &throttling_state, sizeof(throttling_state));

or process level:

PROCESS_POWER_THROTTLING_STATE throttling_state;
memset(&throttling_state, 0, sizeof(throttling_state));
throttling_state.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION;
throttling_state.ControlMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED;
throttling_state.StateMask = 0;
SetProcessInformation(process_handle, ProcessPowerThrottling, &throttling_state, sizeof(throttling_state));

more information on how hybrid scheduling works can be found here: https://www.intel.com/content/www/us/en/developer/articles/guide/12th-gen-intel-core-processor-gamedev-guide.html

> The effect is most seen if if you are rendering and minimize Blender to e.g. browse with Firefox. The upside of this is Firefox browsing stays performant while rendering so I suppose current behavior should still be the default. For users who would rather see background rendering finish earlier and render managers, calling `powercfg /powerthrottling disable /path c:\path\to\blender.exe` or rising process or threads priorities works already. Then the open question is on if and how to expose the ability to use 100% of the resources available to users and if so, at what level. On the code side, as you mentioned, deactivating power throttling can be done at thread level (could implement a TBB task_scheduler_observer to do that): ``` THREAD_POWER_THROTTLING_STATE throttling_state; memset(&throttling_state, 0, sizeof(throttling_state)); throttling_state.Version = THREAD_POWER_THROTTLING_CURRENT_VERSION; throttling_state.ControlMask = THREAD_POWER_THROTTLING_EXECUTION_SPEED; throttling_state.StateMask = 0; SetThreadInformation(thread_handle, ThreadPowerThrottling, &throttling_state, sizeof(throttling_state)); ``` or process level: ``` PROCESS_POWER_THROTTLING_STATE throttling_state; memset(&throttling_state, 0, sizeof(throttling_state)); throttling_state.Version = PROCESS_POWER_THROTTLING_CURRENT_VERSION; throttling_state.ControlMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED; throttling_state.StateMask = 0; SetProcessInformation(process_handle, ProcessPowerThrottling, &throttling_state, sizeof(throttling_state)); ``` more information on how hybrid scheduling works can be found here: https://www.intel.com/content/www/us/en/developer/articles/guide/12th-gen-intel-core-processor-gamedev-guide.html
Author

what is expected on Windows

I would state it: What is expected if you are a Windows system developer or perhaps a default windows user.
But you have to think what is expected by a Blender user. (As we got this complain from other end customers)
Other render applications have fixed it as well.

From a 3D artist view you want to render as fast as possible.
And you know if you render, it will slow down other apps on the system.
Nobody starts to play a game while he is rendering in Blender. Which is why that feature was implemented. Using foreground apps that take a lot of CPU.
The use case is completely different between a default Windows user that does not care/know about cores and CPU usage
and a 3D artist who knows about cores and cpu usage as the render time is always an issue.

You do not want that Blender uses 1/4 of your cores only, do you?
Just ask some Blender users what they think:
"Do you want that Blender always uses 1/2 or 1/4 of the cores in the case that you might want to use some other app while rendering?

If you want a reponsive UI in other apps, then there are other ways.
You have to reduce the number of render threads.
Or you can change the core affinity (which is what many render farm manager do) if someone is logged in.

Question: IN the last 20 years, have someone ever opened a feature request like these:
"Please make Blender slower, I cannot properly play a game while rendering"?
"Please let blender always use less cores by default".

Just think about it from an Blender end user perspektive.

Thanks

>what is expected on Windows I would state it: What is expected if you are a Windows system developer or perhaps a default windows user. But you have to think what is expected by a Blender user. (As we got this complain from other end customers) Other render applications have fixed it as well. From a 3D artist view you want to render as fast as possible. And you know if you render, it will slow down other apps on the system. Nobody starts to play a game while he is rendering in Blender. Which is why that feature was implemented. Using foreground apps that take a lot of CPU. The use case is completely different between a default Windows user that does not care/know about cores and CPU usage and a 3D artist who knows about cores and cpu usage as the render time is always an issue. You do not want that Blender uses 1/4 of your cores only, do you? Just ask some Blender users what they think: "Do you want that Blender always uses 1/2 or 1/4 of the cores in the case that you might want to use some other app while rendering? If you want a reponsive UI in other apps, then there are other ways. You have to reduce the number of render threads. Or you can change the core affinity (which is what many render farm manager do) if someone is logged in. Question: IN the last 20 years, have someone ever opened a feature request like these: "Please make Blender slower, I cannot properly play a game while rendering"? "Please let blender always use less cores by default". Just think about it from an Blender end user perspektive. Thanks
Author

Firefox browsing stays performant while rendering so I suppose current behavior should still be the default.

The issue is that Firefox does not use 10 or 16 cores.
You loose these cores. They are just idle for nothing.

Forgot to mention that you have the option to reduce the priority of the render threads to low.
This way other apps stay performant as well.

I would recommend SetProcessInformation().
As it covers all threads in Blender and batch rendering would otherwise use 4 cores of 20 only.
Which is a massive slowdown for simulations.

And for the UI mode, use an bool option right beside the thread count setting.
As the thread count is exactly what Intel tries to force.
As stated in your help about threads:
"This can be useful for example, if you want to use your computer while rendering".

>Firefox browsing stays performant while rendering so I suppose current behavior should still be the default. The issue is that Firefox does not use 10 or 16 cores. You loose these cores. They are just idle for nothing. Forgot to mention that you have the option to reduce the priority of the render threads to low. This way other apps stay performant as well. I would recommend SetProcessInformation(). As it covers all threads in Blender and batch rendering would otherwise use 4 cores of 20 only. Which is a massive slowdown for simulations. And for the UI mode, use an bool option right beside the thread count setting. As the thread count is exactly what Intel tries to force. As stated in your help about threads: "This can be useful for example, if you want to use your computer while rendering".

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

Added subscriber: @mano-wii

Added subscriber: @mano-wii

Added subscriber: @deadpin

Added subscriber: @deadpin

I did a bit digging into the OpenData benchmark and the 12th gen's do seem to exhibit much wider variation compared to 10th on all scenes and maybe this is partly to blame?
When downloading the raw json dump and looking at some basic stats for "Intel Core i7-10700 CPU @ 2.90GHz" vs "12th Gen Intel Core i7-12700" on version 3.1.0:

scene 10th (min, max, std. dev) 12th (min, max, std. dev)
monster 63, 93, 10.7 25, 157, 24.3
junkshop 0.8, 56, 12 1.8, 84, 19.33
classroom 28, 43, 5.9 11, 74, 12.9

Doesn't the behavior here also change if the user is using a multi-monitor setup? I remember reading that this type of balancing will be disabled in that case since it's not clear if 1 app is in the background vs. not etc.

We should probably just use all the threads and let the user pick how many, if they don't want All, with the existing option that is available in the UI.

I did a bit digging into the OpenData benchmark and the 12th gen's do seem to exhibit much wider variation compared to 10th on all scenes and maybe this is partly to blame? When downloading the raw json dump and looking at some basic stats for "Intel Core i7-10700 CPU @ 2.90GHz" vs "12th Gen Intel Core i7-12700" on version 3.1.0: | scene | 10th (min, max, std. dev) | 12th (min, max, std. dev) | -- | -- | -- | | monster | 63, 93, 10.7 | 25, 157, 24.3 | junkshop | 0.8, 56, 12 | 1.8, 84, 19.33 | classroom | 28, 43, 5.9 | 11, 74, 12.9 Doesn't the behavior here also change if the user is using a multi-monitor setup? I remember reading that this type of balancing will be disabled in that case since it's not clear if 1 app is in the background vs. not etc. We should probably just use all the threads and let the user pick how many, if they don't want All, with the existing option that is available in the UI.
Philipp Oeser removed the
Interest
Render & Cycles
label 2023-02-09 14:04:11 +01:00

We should probably just use all the threads and let the user pick how many,
if they don't want All, with the existing option that is available in the UI.

Any update??

>We should probably just use all the threads and let the user pick how many, >if they don't want All, with the existing option that is available in the UI. Any update??

No update really.

Such things are always tricky. It is very case-specific. For some artists using all cores even when minimized might be the desired solution, but for others not.

From the experience in the past, every time we are trying to be smart about affinity and performance settings it breaks render farms as many of them want to be in full control of the threading settings, and it is not possible to tell from the Blender side that some setting is enforced by the parent process.

So the proper solution is not really clear.

No update really. Such things are always tricky. It is very case-specific. For some artists using all cores even when minimized might be the desired solution, but for others not. From the experience in the past, every time we are trying to be smart about affinity and performance settings it breaks render farms as many of them want to be in full control of the threading settings, and it is not possible to tell from the Blender side that some setting is enforced by the parent process. So the proper solution is not really clear.

Hi

So the proper solution is not really clear.

Keep it the same as it has always been for 25 years?
Did you ever got complains in these years "Blender is using too many cores. The render is too fast!" ?
And if you got this complain, then you have the Thread Count setting for Cycles.

when minimized might be the desired solution

I am mostly interested about batch rendering/render farms.
4 of 20 Cores used!
It is a HUGE waste of CPU time.

(IMHO it should apply for UI render as well, but I am not a front end user)

many of them want to be in full control of the threading settings

Exactly! THAT's what I want.
But that is not the case!
We cannot use Blenders/Cycles Thread setting to use all cores.

and it is not possible to tell from the Blender side that some setting is enforced by the parent process

Sorry, I do not get it.
I had send you 2 Windows API C++ functions to control the setting from within your Blender source files.
You have 2 options:

  1. Blender can tell Windows that the whole app should use all cores. And with it all threads started.
    e.g. in case simulations are multi-threaded as well
  2. OR Blender tells Windows that Thread XY should use all cores.

every time we are trying to be it breaks render farms

I understand that a behavoir should not change. (I am doing Render Farm development for over 20 years)
BUT it already changed!
It should work like it has always been.
Blender should take care that the behavior is still the same as before/as with all other CPUs.
Or do you think that End users expect that Blender works on one PC differently than on others?

Think about this poll within end users:
"Do you want that Blender uses less cores than your CPU has? And of course without any option to change that."
"Yes?/No?"

Hi >So the proper solution is not really clear. Keep it the same as it has always been for 25 years? Did you ever got complains in these years "Blender is using too many cores. The render is too fast!" ? And if you got this complain, then you have the Thread Count setting for Cycles. >when minimized might be the desired solution I am mostly interested about batch rendering/render farms. **4 of 20 Cores used!** It is a HUGE waste of CPU time. (IMHO it should apply for UI render as well, but I am not a front end user) >many of them want to be in full control of the threading settings Exactly! THAT's what I want. But that is not the case! We cannot use Blenders/Cycles Thread setting to use all cores. >and it is not possible to tell from the Blender side that some setting is enforced by the parent process Sorry, I do not get it. I had send you 2 Windows API C++ functions to control the setting from within your Blender source files. You have 2 options: 1) Blender can tell Windows that the whole app should use all cores. And with it all threads started. e.g. in case simulations are multi-threaded as well 2) OR Blender tells Windows that Thread XY should use all cores. >every time we are trying to be it breaks render farms I understand that a behavoir should not change. (I am doing Render Farm development for over 20 years) BUT it already changed! It should work like it has always been. Blender should take care that the behavior is still the same as before/as with all other CPUs. Or do you think that End users expect that Blender works on one PC differently than on others? Think about this poll within end users: "Do you want that Blender uses less cores than your CPU has? And of course without any option to change that." "Yes?/No?"
Contributor

We are able to set the cores in the performance tab or with -t.
But if I understand correctly, the actual behavior doesn't match the expected behavior because of the different usage of the Efficiency and Performance cores.
So, why not match the expected behavior again and pull all power we can get from the CPU if not specified otherwise by the user?
EDIT: I wanted to answer Sergey. I agree with the reply of H.Schoenberger.

We are able to set the cores in the performance tab or with `-t`. But if I understand correctly, the actual behavior doesn't match the expected behavior because of the different usage of the Efficiency and Performance cores. So, why not match the expected behavior again and pull all power we can get from the CPU if not specified otherwise by the user? EDIT: I wanted to answer Sergey. I agree with the reply of H.Schoenberger.

Long story short: from my understanding, use of the SetThreadInformation()/SetProcessInformation() will effectively ignore setting possibly enforced on the OS level, or via the powercfg command line tool. This is not something that we immediately find expected or desired.

So on a technical level it all boils down to: how can Blender utilize SetProcessInformation()/SetThreadInformation() in a way that does not override explicit external settings (powercfg, possible other system-wide settings, etc).

Long story short: from my understanding, use of the `SetThreadInformation()`/`SetProcessInformation()` will effectively ignore setting possibly enforced on the OS level, or via the `powercfg ` command line tool. This is not something that we immediately find expected or desired. So on a technical level it all boils down to: how can Blender utilize `SetProcessInformation()`/`SetThreadInformation()` in a way that does not override explicit external settings (`powercfg`, possible other system-wide settings, etc).

Hi

About Powercfg
a) OS Setting
You are missing an important point: There is no "OS level setting".
Powercfg is a tool to disable it.
Powercfg is never used to enable this functionality.

b) Windows Experts?
How many end-users are true experts in Windows internals and know about Powercfg?
Even you did not know about Powercfg as you stated "(thanks Xavier for sheding the light on this command!)" .
Are you a newbie in Blender?
Or why didn't you know about that command? ;-)

c) Network Share, NO powercfg workaround
Powercfg does not work if Blender is installed on a shared network drive.
Which is common on render farms in companies to use the same Blender version on all machines.
In this case there is NO way to use all cores.

"Expected behavoir".
You are always talking about "Expected behavoir".
Please let answer these 4 questions or let anybody in a chat answer these questions:

a) Batch render.
Do you know that Blender uses 4 of 20 cores on the farm only?
Do you expect that?

b) Cycles settings
I tell Blender to use 20 Threads in the cycles options or with -t
And it uses 4 Cores only.
Is that expected?

c) UI Render
A user starts to render a frame in Blender UI.
Blender states it will take "10 minutes".
So the user reads emails and browses in Facebook.
10 minutes later he switches back to Blender.
The image is not done, Blender states "50 minutes remaining"!
Is that expected?

d) Why isn't the expected behavoir of Blender more important than some default in Windows for office applications?

What does Microsoft state?
The OS feature was build for office applications, not for high compute apps.
SetProcessInformation help:
"EcoQoS should not be used for performance critical or foreground user experiences"
(EcoQoS is the default)

In a nutshell:
If someone wants to use less cores, then you have a setting that works since years.
What is the problem with the max threads setting (-t)?
If a end user want to use 4 cores, he can use "-t 4".
If the end user wants to use 20 cores, he uses "-t 20".

Hi **About Powercfg** a) OS Setting You are missing an important point: There is no "OS level setting". Powercfg is a tool to disable it. Powercfg is **never** used to **enable** this functionality. b) Windows Experts? How many end-users are true experts in Windows internals and know about Powercfg? **Even you** did not know about Powercfg as you stated _"(thanks Xavier for sheding the light on this command!)"_ . Are you a newbie in Blender? Or why didn't you know about that command? ;-) c) Network Share, NO powercfg workaround Powercfg does **not** work if Blender is installed on a shared network drive. Which is common on render farms in companies to use the same Blender version on all machines. In this case there is **NO** way to use all cores. **"Expected behavoir"**. You are always talking about "Expected behavoir". Please let answer these 4 questions or let anybody in a chat answer these questions: a) Batch render. Do you know that Blender uses 4 of 20 cores on the farm only? Do you expect that? b) Cycles settings I tell Blender to use 20 Threads in the cycles options or with -t And it uses 4 Cores only. Is that expected? c) UI Render A user starts to render a frame in Blender UI. Blender states it will take "10 minutes". So the user reads emails and browses in Facebook. 10 minutes later he switches back to Blender. The image is not done, Blender states "**50** minutes remaining"! Is that expected? d) Why isn't the expected behavoir of Blender more important than some default in Windows for office applications? **What does Microsoft state?** The OS feature was build for office applications, not for high compute apps. SetProcessInformation help: "EcoQoS should not be used for performance critical or foreground user experiences" (EcoQoS is the default) **In a nutshell:** If someone wants to use less cores, then you have a setting that works since years. What is the problem with the max threads setting (-t)? If a end user want to use 4 cores, he can use "-t 4". If the end user wants to use 20 cores, he uses "-t 20".

Please feel free to submit a PR with full presentation of the solution, which clearly shows all consequences and clarifies why overriding the default behavior is unarguably better. Keep in mind that even for render farms it is not always desirable to use full available power of the machine (depending on type of the provided hardware, billing plans, etc).

There is definitely an improvement possible, but we do not have time to properly analyse possible solutions and to deal with any followup reports caused by the change.

Please feel free to submit a PR with full presentation of the solution, which clearly shows all consequences and clarifies why overriding the default behavior is unarguably better. Keep in mind that even for render farms it is not always desirable to use full available power of the machine (depending on type of the provided hardware, billing plans, etc). There is definitely an improvement possible, but we do not have time to properly analyse possible solutions and to deal with any followup reports caused by the change.

to deal with any followup reports caused by the change.

Think about complains:
How many complains did you got in the last 20 years that Blender uses all cores of a machine?
One. And you implemented the threads setting in Blender.
And since then? None.

You implicate that everyone using an AMD or an Intel before 2020 is not able to use Blender properly?
What about Linux Users? Which complains do you get from them atm?

Keep in mind that even for render farms it is not always desirable to use full available power of the machine

Again, do you implicate that everyone using an AMD or an Intel before 2020 is not able to use Blender properly?
I am working for the render farm of hundrets of companies for over 20 years, so I know their requirements.

There are only very few reasons not using all cores. e.g. if you start 2 render instances on one machine.
BUT: Even that is NOT POSSIBLE with Blender now.
No matter how many Blender instances you start, all share these 4 cores.

submit a PR

So I should now download the Blender git, dig into them and fix it?
I do not know where you want to have these 2 lines of code.
First in the main() function?
Where is the main.cpp file in your git?

>to deal with any followup reports caused by the change. Think about complains: How many complains did you got in the last 20 years that Blender uses all cores of a machine? One. And you implemented the threads setting in Blender. And since then? None. You implicate that everyone using an AMD or an Intel before 2020 is not able to use Blender properly? What about Linux Users? Which complains do you get from them atm? >Keep in mind that even for render farms it is not always desirable to use full available power of the machine Again, do you implicate that everyone using an AMD or an Intel before 2020 is not able to use Blender properly? I am working for the render farm of hundrets of companies for over 20 years, so I know their requirements. There are only very few reasons not using all cores. e.g. if you start 2 render instances on one machine. BUT: Even that is NOT POSSIBLE with Blender now. No matter how many Blender instances you start, all share these 4 cores. > submit a PR So I should now download the Blender git, dig into them and fix it? I do not know where you want to have these 2 lines of code. First in the main() function? Where is the main.cpp file in your git?

I can write a whole description why these code lines have to the added.
Current issue, what is solved, any disadvantages.
But I am not familiar with Blender sources, no matter if core or addon.
So It makes no sense if I add some code somewhere into the Blender git.
Does it?

This would be the code required:

#ifdef WIN
// HighQoS // Turn EXECUTION_SPEED throttling off.
// ControlMask selects the mechanism and StateMask is set to zero as mechanisms should be turned off.
PowerThrottling.ControlMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED;
PowerThrottling.StateMask = 0;
SetProcessInformation(GetCurrentProcess(), ProcessPowerThrottling, &PowerThrottling, sizeof(PowerThrottling));
#endif

I can write a whole description why these code lines have to the added. Current issue, what is solved, any disadvantages. But I am not familiar with Blender sources, no matter if core or addon. So It makes no sense if I add some code somewhere into the Blender git. Does it? This would be the code required: #ifdef WIN // HighQoS // Turn EXECUTION_SPEED throttling off. // ControlMask selects the mechanism and StateMask is set to zero as mechanisms should be turned off. PowerThrottling.ControlMask = PROCESS_POWER_THROTTLING_EXECUTION_SPEED; PowerThrottling.StateMask = 0; SetProcessInformation(GetCurrentProcess(), ProcessPowerThrottling, &PowerThrottling, sizeof(PowerThrottling)); #endif

Will it be fixed?
As a user, I expect rendering to be on all cores. It is very strange to see a decrease in performance when losing focus from the blender window.

There are few complaints about this, because few people have processors of the 12th and 13th generation. And few people go into the task manager to see if the cores are working. And few people render on processors.

It's 100% wrong that the P-cores that ARE SUPPOSED to do their job are just shutting down.

For example, cinebench renders on all cores even when the window is minimized, and this is correct.

I want the blender to be as productive as possible. Why should I keep the blender window in focus so that the rendering goes correctly.
I want to use the browser at this time. Because of this, I will have to disable the e-cores in the bios, which I would not like to do.

Will it be fixed? As a user, I expect rendering to be on all cores. It is very strange to see a decrease in performance when losing focus from the blender window. There are few complaints about this, because few people have processors of the 12th and 13th generation. And few people go into the task manager to see if the cores are working. And few people render on processors. It's 100% wrong that the P-cores that ARE SUPPOSED to do their job are just shutting down. For example, cinebench renders on all cores even when the window is minimized, and this is correct. I want the blender to be as productive as possible. Why should I keep the blender window in focus so that the rendering goes correctly. I want to use the browser at this time. Because of this, I will have to disable the e-cores in the bios, which I would not like to do.
Contributor

AFAIK you just have to set your energy management inside of Windows to "High Performance" and Blender should behave as expected.
But if you did set it to " Save Power", well, Windows tries to save energy by giving Blender only the E-Cores.
Please correct me if I am wrong.

AFAIK you just have to set your energy management inside of Windows to "High Performance" and Blender should behave as expected. But if you did set it to " Save Power", well, Windows tries to save energy by giving Blender only the E-Cores. Please correct me if I am wrong.

energy management inside of Windows to "High Performance"
Wrong

  1. And even if:
    Blender has moved from an application that an average user can use
    to an application that requires knowledge of CPU architecture, Windows behavoir and advanced settings.
    The issue is not even mentioned in the help files for the average user.

PS:
I do not care any more about this bug, we have fixed it with our C++ code for all customers using our render manager.

1) >energy management inside of Windows to "High Performance" Wrong 2) And even if: Blender has moved from an application that an average user can use to an application that requires knowledge of CPU architecture, Windows behavoir and advanced settings. The issue is not even mentioned in the help files for the average user. PS: I do not care any more about this bug, we have fixed it with our C++ code for all customers using our render manager.
Thomas Dinges added
Status
Archived
and removed
Status
Needs Info from Developers
labels 2023-10-06 16:42:59 +02:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
8 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#99967
No description provided.