Question Raptor Lake - Official Thread

Page 16 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

dullard

Elite Member
May 21, 2001
24,086
2,319
126
How many programmers actually hand-select thread priority level? I can see setting a low priority on threads produced by, say, an AV scanner or something that's never really meant to have focus, but anything else . . . ? From what little I've seen, most programmers rely on the OS scheduler.
All of them. When you create a thread, you must assign a priority level. It is a necessary step in defining a thread. There isn't an option otherwise. You can choose to go with the default (the Normal priority), but that is still a choice.

But even if you give a thread the Highest priority, the OS scheduler still comes into play. The programmer's Highest priority just stated that the scheduler needs to put your thread above any thread with AboveNormal, Normal, BelowNormal, or Lowest priority. The scheduler still decides which thread wins when multiple threads have Highest priority.
 
Last edited:

Doug S

Golden Member
Feb 8, 2020
1,322
1,965
106
Finally, doesn't the Apple M2 have 4 big and 4 little cores?
Yes, but that's the same as the M1 - and like M1 the M2 will also go in iPads which have different requirements for power use.

The performance gap between big and little cores was reduced by the little core improvements in A15 (to about 3:1) so it is possible Apple will have more of them in M2 Pro/Max. We'll have to see.

Intel has little cores that use more power than Apple's (which are about 10:1 to between big and little) but more performance (about 2:1) which was probably by design to have more of them. Or perhaps even create SKUs for embedded markets that are all E cores.
 

TheELF

Diamond Member
Dec 22, 2012
3,676
555
126
I'm sure they'll be thrilled at the added expense.
At least as much as they are for every new GPU tech from AMD/Nvidia, or as much as they where for ryzen.
Thrilled or not, if the install base is big enough that they can't ignore it they add it.
You've just described the target audience for 12P+ cores. Anyone doing pro or semi-pro work and looking for a strong multi-core setup won't bother with the inconsistency that E cores come with atm.

Maybe they fix some of this with the RPL launch, but anyone looking at 12900K today for demanding foreground & background usage better not count on E cores, especially if we're talking video editing / transcoding.
Sure but the pro and semi-pro already knows how a PC works and can do whatever they want to without the director.
Marketing is for the noobs that don't know how to do that themselves, just ask a normal average user how to change priority or affinity for a task, not even a thread, and they will look at you like you are an alien.
Literally any of these prefer all big cores, just ask them to choose between 10+P cores, or 8P + 8E and come back here.
No you go and ask them if they would prefer 20 threads or 24 threads and come back here.
There are people on both sides of this dilemma, some prefer one way, other people the other, that's how people are, just because you prefer all big cores that slow down to a crawl when all cores are working doesn't mean that everybody prefers that.
If you have a game that runs at ~5Ghz when it runs alone but at 3.5Ghz when you run stuff in the background then you will definitely notice a difference.
If you are a programmer like mentioned above then sure your main work is compiling and that uses all cores so you don't loose anything and if you browse the web or do other light stuff that would run at low clocks anyway so no difference there either.
 

desrever

Member
Nov 6, 2021
54
147
66
Every since threads were invented, they have always needed to be given priorities. That is the first and most fundamental part of working with multiple threads. You absolutely do NOT want all threads to finish ASAP since you know there are limited resources.
The OS level priority are there for the OS, it abstracts away the need to deal with managing thread timings in a normal, non real time OS. You absolutely do want your threads to finish ASAP in the context of that abstraction. Unless you are extremely low level programming everyone just relies on threadpools to handle work. Guess what, they are all normal priority by default. What percent of threads running on any system is anything other than normal?

The examples you suggests:
background tasks: 1-2 E-cores can handle most of it. How much CPU do you think it takes outlook to send an email or a virus scan? Why do you think these even have to be E-cores outside of mobile space? 1 P-core can handle it fine. My computer idles at 1-3% CPU load with a bunch of background stuff running without any E-cores.

Multithreaded programs: They will use all cores given their definition and will prioritize P-cores because of Amdahl's law. Switching them to the E-cores only make sense if the user want them there for w/e reason.

The only use case would be if you want to run a game and something else demanding like streaming in the background. In which case, why would a dev need to specify what the thread priority would need to be? Just prioritize P-core unless in background, which the OS already knows.
 

dullard

Elite Member
May 21, 2001
24,086
2,319
126
What percent of threads running on any system is anything other than normal?
That is going to have extreme variances based on what the user is doing. For example, when I read your post, I booted up Process Explorer and did nothing else. I had Outlook, Excel, and Chrome open to 3 tabs. Then just various virus scanners, Windows stuff, etc are running in the background. Everything was as idle as they could be--no Excel calculations ongoing or anything else of much consequence. This computer isn't very powerful (AMD Ryzen 5 PRO 2400GE) but it was at 16% CPU utilization. It had 18.3% of the 241 threads at above or below normal priority. Then I closed all Chrome, Excel, and Outlook apps (but left the normal background things running). Dropped to about 6% utilization and 10.0% threads were not at normal priority.

So in that very simple example the answer of the percent of non-Normal priority threads roughly doubled just by having a few normal things open (mostly Chrome). I can't answer for other uses or heavy uses.
background tasks: 1-2 E-cores can handle most of it. How much CPU do you think it takes outlook to send an email or a virus scan? Why do you think these even have to be E-cores outside of mobile space? 1 P-core can handle it fine. My computer idles at 1-3% CPU load with a bunch of background stuff running without any E-cores.
Full computer virus scans? It can be a lot of CPU time. But I don't think that is what you were talking about. What about opening up a zip file? My virus scanner was at 6% CPU. But now think about a future secure computer with 100% encryption/decryption. It would be nice to have an E core for that to have full encryption without any performance change (either files or even memory encryption).

Multithreaded programs: They will use all cores given their definition and will prioritize P-cores because of Amdahl's law. Switching them to the E-cores only make sense if the user want them there for w/e reason.
Your problem is that you are thinking only about today. With 1 to 16 cores total, yes, P cores are best. But, when you have more and more cores, the P cores become starved for power in multithreaded applications and performance starts to plunge. Cores that are geared to ~2 W to 3 W of power each will be necessary when you have 64+ cores. Guess what: those aren't P cores. The choice in the future with more cores is either all E cores or a mix of P and E cores. There is no hidden other option. Trying to stick with P cores in the future with more than about 32 cores will be like walking through molasses except for the multithreaded things that scream at high speeds.

The only use case would be if you want to run a game and something else demanding like streaming in the background. In which case, why would a dev need to specify what the thread priority would need to be? Just prioritize P-core unless in background, which the OS already knows.
I answered that above. The game itself can be faster with less lag if some threads are on the P cores and the game reserves the rest for the E cores.
 

dullard

Elite Member
May 21, 2001
24,086
2,319
126
You can buy a new car and it will come with a color scheme. Just because you buy whatever color the dealer randomly gives you does not mean you didn't choose to buy a car with that color. You chose the color of the car on the lot. There is no car without color.
 

DrMrLordX

Lifer
Apr 27, 2000
19,941
8,915
136
At least as much as they are for every new GPU tech from AMD/Nvidia, or as much as they where for ryzen.
Thrilled or not, if the install base is big enough that they can't ignore it they add it.
At least in the case of GPUs, there are common APIs available to developers. We all know that at least in the case of graphics development, certain tricks are necessary to work with specific hardware even with common APIs, though most of those "tricks" wind up being baked into drivers by hardware vendors, so again the work is shifted away from the developer. Unless there's a brand new API.

In the case of heterogeneous core arrangements e.g. Alder Lake or Raptor Lake, can you really say that? Currently no.
 

DrMrLordX

Lifer
Apr 27, 2000
19,941
8,915
136
You can buy a new car and it will come with a color scheme.
"Any customer can have a car painted any color that he wants so long as it is black. "

(yeah not really applicable here, just the first thing that came to mind, and it kind of plays in to the idea that many developers do not set thread priority)
 

Hitman928

Diamond Member
Apr 15, 2012
4,159
5,045
136
That is going to have extreme variances based on what the user is doing. For example, when I read your post, I booted up Process Explorer and did nothing else. I had Outlook, Excel, and Chrome open to 3 tabs. Then just various virus scanners, Windows stuff, etc are running in the background. Everything was as idle as they could be--no Excel calculations ongoing or anything else of much consequence. This computer isn't very powerful (AMD Ryzen 5 PRO 2400GE) but it was at 16% CPU utilization. It had 18.3% of the 241 threads at above or below normal priority. Then I closed all Chrome, Excel, and Outlook apps (but left the normal background things running). Dropped to about 6% utilization and 10.0% threads were not at normal priority.
How are you checking priority? I've never seen that large of a percentage of processes assigned to something outside of normal priority.
 

dullard

Elite Member
May 21, 2001
24,086
2,319
126
How are you checking priority? I've never seen that large of a percentage of processes assigned to something outside of normal priority.
Here is how I did it. There are probably easier ways, but this worked for me.
  1. Download Process Explorer: https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer
  2. Run "procexp.exe"
  3. Right click on the Columns
  4. Select "Select Columns"
  5. Click "Process Performance Tab" in the "Select Columns" window
  6. Check "Base Priority"
  7. Click Ok
  8. Left Click on the table
  9. Type Control-A (opens a Save Dialog that will save the entire table)
  10. Click "Save"
  11. Open the data file in Notepad
  12. Press Control-A then Control-C (copies the entire table) from Notepad
  13. Open Excel and click a cell
  14. Click the down arrow under the Paste button
  15. Select "Use Text Import Window"
  16. Click "Next"
  17. Select Tab and deselect "Space"
  18. Click Finish.
  19. Then I simply manually counted the priorities that weren't 8. You could do something fancier, but that worked for a simple Anandtech post.
  20. Count the total entries (Excel rows help there).
  21. Divide the result from step 19 by step 20.
 

hemedans

Member
Jan 31, 2015
48
6
71
There s a review, overall at relatively low power AMD s 8C/16T has 50% better perf/watt than a 2 + 8 ADL, Big cores are not less efficient if they are clocked similarly to small ones.

Vs Ryzen 5700U right? Not all test though, you can see in average Usage (load average) alderlake used 27W while Ryzen 5700U used 35W, so in mixed usage Alderlake U has advantage, only in max loading Ryzen has Advantage.
 

coercitiv

Diamond Member
Jan 24, 2014
5,159
8,251
136
Vs Ryzen 5700U right? Not all test though, you can see in average Usage (load average) alderlake used 27W while Ryzen 5700U used 35W, so in mixed usage Alderlake U has advantage, only in max loading Ryzen has Advantage.
Seems to me you were looking at the fain noise table, power usage table shows a different story.
 
  • Like
Reactions: hemedans

igor_kavinski

Diamond Member
Jul 27, 2020
4,723
2,968
106
Wow. Is Intel prioritizing MT over ST for Raptor Lake? I hope that's not true for the other SKUs, especially 13100,13400,13500 and 13600.
 

Det0x

Senior member
Sep 11, 2014
793
1,847
136
Wow. Is Intel prioritizing MT over ST for Raptor Lake? I hope that's not true for the other SKUs, especially 13100,13400,13500 and 13600.
Dunno, seems strange they are regressing in ST performance in this fixed comparison at static 3.8ghz
Maybe Raptor Lake took a large latency hit from doubling the L2 cache (?)
..Or its the extra stops on the ringbus that's hurting gaming performance ?
 

ASK THE COMMUNITY