Quote:That's how it should be, but in reality if you ask an i7 owner how many cores he has, he'll say 8.
I've never seen that before. And even if an i7 user did say that they would be completely wrong so there is no reason to say it here.
The common expression is "4 cores, 8 threads". Which I find acceptable since in this context "threads" can refer to hardware threads.
Quote:This is what I mean obviously. Even while it's not technically correct, it's the easiest way to explain it so people can comprehend it.
I don't care if people know what you meant to say. Using incorrect terminology only makes the problem worse by getting readers who don't know any better to start using it as well. For the love of all that is holy please don't do it.
Quote:@NaturalViolence
I think I begin to understand. But I may have misunderstood your last sentence. I do have lock thread to cores off. It is pretty obvious to everyone (including me!) that I am in this case CPU limited. So shouldn't I see a 100% usage in at least one logical core (please see the screen-shots)? If not (seems to be the case here), please tell the criteria to know when the CPU is at its limit.
I'll make this as simple as I can.
Calculating CPU load
This is how task manager calculates your total cpu load:
1. Every once and awhile task manager looks at the schedulers for each cpu core to see how busy they are.
2. For each logical core it looks at the time spent doing work vs. time spent idle.
3. It then calculates the ratio of the two by dividing and converts that to a percent. This gives it the percent load for each logical core.
4. It then adds up the percentages of all of the logical cores and divides by the total number of logical cores. This gives it the average load.
With HT on you have 8 logical cores.
100 / 8 = 12.5
Meaning each logical core is worth 12.5% of the total.
Dolphin has two main work threads that run in parallel (ignoring all of the minor threads). Which means at any given moment in time it can use, at most, two logical cores at the same time.
12.5 x 2 = 25
This means that dolphin can use at most 25% of your total cpu load at any moment in time. Which means your average is never going to be any higher than that.
The problem with thread affinity
With lock threads to cores turned off the OS is in charge of setting the thread affinity (the affinity is basically the OS allocating time on a logical core to a software thread). This causes the threads to jump around as the OS keeps reassigning them to different logical cores. This means cores that are not running dolphin are at 0% load while cores that are running dolphin are at 100% load. However these threads are rapidly jumping from one core to another so the cores that dolphin uses end up jumping rapidly between 0% and 100% load depending on whether or not that core is running one of dolphins software threads at that particular moment in time.
Displaying cpu load
Since your cpu processes billions of operations per second task manager can't accurately graph that considering that your monitor only runs at 60Hz (and even if your monitor and computer could graph the load in real time your human eyes wouldn't be able to keep up). So instead each point on the graph is an average of the cpu load on that logical core over a period of time. Since the cores that dolphin uses jump between 0% and 100% load as threads come and go all we can say is that the graph point is going to be somewhere between 0% and 100% depending on how much of that time was spend processing a thread and how much time wasn't. Like I said, it's an average because it's not fast enough to display the changes in load in real time.
What happens if you turn lock threads to cores on?
This will allow dolphin to set the affinity of the threads manually. Ensuring that the threads stay on whatever core they are assigned to and don't jump around. This will make the cpu load easy to graph in an accurate way. But either way your total average cpu load is still going to be 25% regardless of whether the threads are allowed to jump around or not because dolphin still won't be able to use more than two logical cores at the same time either way.
Does all of this make sense to you (this post ended up being longer and more complex than I had originally intended)?