FAQ  •  Register  •  Login

ISBoxer 2 - About CPU allocation estimates

Moderator: MiRai

<<

MiRai

User avatar

Vibrant Videographer

Posts: 3010

Joined: Fri Nov 20, 2009 3:30 pm

Post Fri Feb 13, 2015 2:04 pm

Re: ISBoxer 2 Alpha

lax wrote:Here is a chart that should probably help you: http://en.wikipedia.org/wiki/Instructions_per_second#Timeline_of_instructions_per_second; it gives both "D IPS / clock cycles per second" and "D IPS / clock cycles per second / Cores per die". It INCLUDES the #1 supercomputer from your list, along with desktop CPUs and such. Note the correlation between the two columns; the number on the left is the number on the right times the number of cores (except in a couple of cases, but the point remains).

Unfortunately, this doesn't help me. I was looking for something which shows the information in a very clear X MHz + X MHz = 2X MHz (in terms of adding MHz from different cores together), or Y Application gets X% of total MHz and only X% (in terms of spreading out MHz).

I can show anyone that 4 + 4 = 8, but what I'm having a difficult time grasping is that 4GHz of one core can be added to 4GHz of another core to make 8GHz for use on any given process, and from what I understand this is what you'd be telling people in the Wizard by showing them MHz next to each Slot. My understanding has always been that the program in question needs to be specifically coded with the intention of using multiple cores (you mentioned this before), but even then it splits up its set(s) of instructions between different cores to be completed. This doesn't mean that these instructions are being completed at 8GHz, it just means that two different sets of instructions are being completed at 4GHz each (assuming we're seeing perfect 100% utilization).

lax wrote:
how do you expect the normal, everyday user to feel when they see those numbers? What will they gain by seeing those numbers?

When I show the user that I expect their game instances to each have 50Hz of power available, I expect them to understand it will probably run like shit and not because I'm making up "this is probably going to run like shit" but because there is actual numbers.

Okay, here is my final list of problems with showing raw MHz numbers (besides the fact that I still don't believe it to be broken down this way) and why I feel that the information is very misleading:

1) Does a program exist which will allow someone to assign a set amount of MHz to a specific process? If not, then how can the Wizard show the user how many MHz they can expect a specific game client to receive?

2) AMD MHz is different than Intel MHz, as well as each generation of CPU architecture of the same manufacturer having a "different level" of MHz. However, 350 HP in a 2014 Dodge Charger is the same as 350 HP in a 2014 Ford Mustang, just like 350 HP is still the same 350 HP in a 1969 Chevy Camaro.

3) If MHz can be added together in the way which has been previously mentioned, then why don't Intel and AMD market their multi-core processors as such? Wouldn't it be worthwhile for Intel to market their newest 5960X as having a base frequency of 24GHz (8 cores * 3GHz) and a turbo frequency of 28GHz (8 cores * 3.5GHz)? However, this has never been done in the history of marketing processors, as far as I know.

4) We've already established that there are several other factors (GPU, I/O, background processes, etc.) which need to be known in order to estimate overall performance. Someone is going to see an amount of MHz next to the Slot (or however it's going to be shown), and they could easily end up with the idea that as long as the number is high, then they're okay.

Let me break this same idea down with yet another example:

Code:
+--------+------+-----+
|  MHz   | Slot | FPS |
+--------+------+-----+
| 500MHz |    1 |  60 |
| 500MHz |    2 |  30 |
| 500MHz |    3 |  30 |
| 500MHz |    4 |  30 |
+--------+------+-----+

Both CPU & GPU usage is in the green, and gameplay is smooth.

In the table above, the user will be under the impression that 500MHz is enough to run the game client at 60 FPS, but in the table below...

Code:
+--------+------+-----+
|  MHz   | Slot | FPS |
+--------+------+-----+
| 500MHz |    1 |  60 |
| 500MHz |    2 |  60 |
| 500MHz |    3 |  60 |
| 500MHz |    4 |  60 |
+--------+------+-----+

GPU usage is still below 100%, but CPU usage is pegged at 100%.  Gameplay is stuttering with some random client crashing from time to time.

...they come to find out that it isn't. So, what exactly is MHz telling the user in this situation? Nothing. Ultimately, they should be learning that 2GHz isn't enough to output a total of 240 FPS across four game clients, but I don't see how they can gather that information from seeing Slot-specific MHz when the first table provided misleading information.

bob wrote:Speak for yourself :). I understand the idea, and even why, and even the how of the Mhz Madness

Then someone needs to link to something that makes sense in normal everyday computing that a normal person can understand, because that's what, and who, we're dealing with here. You've both learned this information from somewhere, and someone needs to provide some cut-and-dry documentation on how X MHz + X MHz = 2X MHz, and how we're allowed to just ignore cores and caches and what not. I guess I'm the idiot here because I've never heard of anything like this.

At this point, I'm done, and I firmly believe that no good can come from showing raw MHz numbers to the end user, and, if anything, is only going to lead to confusion.
<<

lax

User avatar

Site Admin

Posts: 7301

Joined: Tue Nov 17, 2009 9:32 pm

Post Fri Feb 13, 2015 2:46 pm

Re: ISBoxer 2 - About CPU allocation estimates

what I'm having a difficult time grasping is that 4GHz of one core can be added to 4GHz of another core to make 8GHz for use on any given process

Stop thinking about it in terms of processes and start thinking about threads instead. There's several threads running in most processes, granted most threads are usually idle. Your threads may be bounced around between whatever processors Windows schedules it on, at whatever priority it feels is best.

This doesn't mean that these instructions are being completed at 8GHz, it just means that two different sets of instructions are being completed at 4GHz each (assuming we're seeing perfect 100% utilization).

Right... 2 sets of instructions (e.g. 2 threads) utilizing 4GHz each, is what is being completed at a total of 8GHz.

1) Does a program exist which will allow someone to assign a set amount of MHz to a specific process? If not, then how can the Wizard show the user how many MHz they can expect a specific game client to receive?

Yes it's called the operating system's scheduler ;) And no it does not usually "assign a set amount of MHz" but its job is to determine how much of a time slice any given thread should get at a time.

2) AMD MHz is different than Intel MHz, as well as each generation of CPU architecture of the same manufacturer having a "different level" of MHz. However, 350 HP in a 2014 Dodge Charger is the same as 350 HP in a 2014 Ford Mustang, just like 350 HP is still the same 350 HP in a 1969 Chevy Camaro.

Right, I mentioned something along those lines a few posts back.

3) If MHz can be added together in the way which has been previously mentioned, then why don't Intel and AMD market their multi-core processors as such?

Because they're not marketing to multiboxers, they're marketing to someone who is playing WoW at 4K on Ultra settings. That guy can't expect exploding returns by adding more CPU cores. Supercomputers are labelled and marketed as such (total FLOPS) because it is a different market.

Wouldn't it be worthwhile for Intel to market their newest 5960X as having a base frequency of 24GHz (8 cores * 3GHz) and a turbo frequency of 28GHz (8 cores * 3.5GHz)?

That's just silly and not what I'm suggesting.

So, what exactly is MHz telling the user in this situation? Nothing. Ultimately, they should be learning that 2GHz isn't enough to output a total of 240 FPS across four game clients, but I don't see how they can gather that information from seeing Slot-specific MHz when the first table provided misleading information.

You're misleading yourself. From your tables I can only assume this is either a) a single-core CPU, or b) not pegged by the 4 game instances. If you're trying to imply this is a 4-core 2GHz CPU, each of those Slots should say 2000MHz.

From this statement my assumption is that I should just remove the FPS numbers from the CPU Module, and the FPS limits are just that, a self-imposed limitation which may never be met by any of the game instances. (I'm changing it now to not just say "Foreground FPS" and "Background FPS".) The MHz number is not meant to imply anything about the FPS, I'm not about to build a table of how well MHz relates to each particular game's possible FPS which by the way also depends on numerous settings in each game, the inter-relations between other processes, the GPU, etc.

I'll make you a less misleading table with the same data...
4 core 2GHz CPU...
Code:
+------+------------+-----------------------------------------------------+-----------------------------+
| Slot |  CPU Cores | Estimated Maxed CPU based on selected Cores (MHz) * | Allow no more than this FPS |
+------+------------+-----------------------------------------------------+-----------------------------+
|  1   |    1st     |        2000MHz                                      |  60                         |
|  2   |    2nd     |        2000MHz                                      |  60                         |
|  3   |    3rd     |        2000MHz                                      |  60                         |
|  4   |    4th     |        2000MHz                                      |  60                         |
+------+------------+-----------------------------------------------------+-----------------------------+
Note: I chose 1 core per Slot here. The MHz number would be the same on all/all.
* This is an estimate of how about much CPU time the process may have available to it, if the CPU is under heavy load. If the CPU is not under heavy load, each Slot is more likely to opt to yield CPU time. Real world performance will vary depending on a number of other factors.


In this scenario the estimated CPU is not an incredibly helpful number to the end user. You already thought you were getting 2GHz for each game instance, I'm not showing you anything new. It is more helpful when you change to 8 (1000MHz) or 16 (500MHz) instances, where you start to see that you don't have a full 2GHz available to each. This is more accurate to say than it is to say that 1 WoW on CPUs 1,2,3,4 should get 8000MHz in which case the CPU is not under heavy load and this information is not helpful to the user. This is why I offered to only show it when performance is expected to be low.

Also this control is not just for the wizard, you get the same controls for changing settings later on. While you're running your team, ISBoxer 2 can show a graph of actual FPS numbers and CPU usages...
<<

bob

User avatar

League of Extraordinary Multiboxers

Posts: 4587

Joined: Sat Feb 15, 2014 11:14 am

Location: In the dining room, with the lead pipe.

Post Fri Feb 13, 2015 3:28 pm

Re: ISBoxer 2 Alpha

umm, some cross posting so this was being typed while Lax typed.. :)


MiRai wrote:I can show anyone that 4 + 4 = 8, but what I'm having a difficult time grasping is that 4GHz of one core can be added to 4GHz of another core to make 8GHz for use on any given process

Well that'll never happen, because if you have a single threaded process (it's threads that execute, not processes. Processes are just containers), then that 1 thread will only ever run on a single core at any one time, so the maximum it will get out of the potential 32,000MHz (our 8 core 4Ghz cpu referred to earlier) is 4,000Mhz, because that 32,000MHz is broken down into 8 distinct paths. A single thread can only travel one path at a time.

The other side of course is that if a process had 8 threads, then every thread could be scheduled 1 per core, and thus it would potentially run 8 times faster, so at 32,000MHz.
But it won't; and it won't because there is always synchronisation/task allocation to the threads, or other tasks that take priority, interrupt, or just need their time slice.

So you don't have 32,000 MHz, you have the potential ability to run 8 threads at 4GHz each. If those threads come from a single process, there is the potential for that process to be executing at an effective cumulative speed of 32,000MHz, but that is only if the tasks that need doing have been split into 8 separate chunks that are independent and do not require any cross communication or synchronisation, and nothing else needs to run while those tasks are running. This would be a very rare (mainly because Windows needs to switch in the next thread and ask, "do you need to do any work?" - this switching itself takes cycles).

You could use an analogy (you seem to like them). You have one worker who has 32 hours of work to do. If you have 8 workers that same amount of work could potentially be completed in 4 hours if it is split into 8 separate tasks. Unfortunately because of management and co-ordination requirements that work actually takes 6 hours for each worker to complete in parallel; so a total amount of 48 hours worked. It is completed in a shorter timeframe, but the cumulative total of hours worked is longer.

MiRai wrote:1) Does a program exist which will allow someone to assign a set amount of MHz to a specific process? If not, then how can the Wizard show the user how many MHz they can expect a specific game client to receive?

No. Simply the Windows Pre-Emptive Scheduler can chuck your thread off any core if it decides something else has priority. This is a result of Windows not being a real time operating system (and no, priority of Real Time is still not Real Time and can be interrupted), and you having FA control over it.

MiRai wrote:2) AMD MHz is different than Intel MHz, as well as each generation of CPU architecture of the same manufacturer having a "different level" of MHz.

MHz means the same thing regardless. Cycles per second. The difference is what can occur in those cycles, which is probably why Lax mentioned Instructions Per Second. But then that comes down to what instructions because IPS is only going to average those instructions that take 4 cycles, vs the ones that take 1 (Pentium4 was a good example where is was slower despite higher MHz because it took more cycles to process the same instructions than a PIII). Back to workloads, or the real old measurement of Drystone/Whetstones. Even FLOPS is kind of BS unless that is all the core is doing.

MiRai wrote:However, 350 HP in a 2014 Dodge Charger is the same as 350 HP in a 2014 Ford Mustang, just like 350 HP is still the same 350 HP in a 1969 Chevy Camaro.

Your analogy is wrong because it doesn't take into account any losses. 350HP of potential engine output (calculated based on bore/stroke/fuel load/mixture ratio/compression) is not the same as actual engine output. You could use BHP as this takes into account some losses, but this is still wrong. What about weight, tyre tread type/friction, aerodynamics. Cars end up being measured on the 0-60mph (or 0 -100 kph), and that actually provides a far better measurement than anything else. How much time taken to complete the exact same task, and then for more measurement at what point does the ability to carry on to 100mph wain, how long does that take. This is of course the same issue with the suggestion of using allocated MHz, or even a relative comparison per slot.

MiRai wrote:3) If MHz can be added together in the way which has been previously mentioned, then why don't Intel and AMD market their multi-core processors as such? Wouldn't it be worthwhile for Intel to market their newest 5960X as having a base frequency of 24GHz (8 cores * 3GHz) and a turbo frequency of 28GHz (8 cores * 3.5GHz)? However, this has never been done in the history of marketing processors, as far as I know.

No, because of the same reasons as my worker analogy. Intel have hoped that people have become smarter and realized that their computer has 2,500+ threads running at a time (well mine does), and these are all competing for their 30ms of CPU time (I can't find the exact text where that 30ms came from, but I'm sure it was Mark Russinovich, and he's far smarter than me).
Although oddly when reporting FLOPS the sum total of all cores/processors is reported. Usually because there is an expectation that the rest of the hardware and the OS/management system on top of it is setup in such a way that you will get the total FLOPS, if you are only using the cores for FLOP. As soon as you do any other type of work on the core/processor, the FLOP value is worthless.

MiRai wrote:4) We've already established that there are several other factors (GPU, I/O, background processes, etc.) which need to be known in order to estimate overall performance. Someone is going to see an amount of MHz next to the Slot (or however it's going to be shown), and they could easily end up with the idea that as long as the number is high, then they're okay.

Only if they be stupid (ok, there are stupid people out there, but stupid people don't multibox). The disclaimer needed next to the number is going to need to be huge. It'll be like those EULA's that no-one reads. This is pretty much why Intel and AMD don't market their cpus at 28GHz chips, oh and the worker analogy.

MiRai wrote:
bob wrote:Speak for yourself :). I understand the idea, and even why, and even the how of the Mhz Madness

Then someone needs to link to something that makes sense in normal everyday computing that a normal person can understand, because that's what, and who, we're dealing with here. You've both learned this information from somewhere, and someone needs to provide some cut-and-dry documentation on how X MHz + X MHz = 2X MHz, and how we're allowed to just ignore cores and caches and what not. I guess I'm the idiot here because I've never heard of anything like this.


Not sure I can really - at least none that I've found.
I don't think your wrong, but I don't think Lax is wrong for wanting to try and give the user some idea of the allocation of CPU time per slot. I understand what Lax wants to represent, but the representation method is never going to be correct, and never will be without know exactly what else is occurring on the computer at any given moment; so unless there is some real time monitoring (ok as real time as it gets in Windows) going on when the games are running and outputting the % of CPU time that each slot is receiving (much like Task Manager - although this does tell lies so it may not be the best example) then it is all bullshit.

As I see it, the idea was along the lines of "Hey dude, this game says it needs a dual core 2.4GHz CPU as minimum spec, but your affinity setting is like allocating a 1 core 1300Mhz. Chances are performance will be shite". Not that Lax will probably want to store or maintain that level of game information, and as we multiboxers know, the minimum CPU specs are usually codswallop anyway. Most game shops specify the minimum CPU spec based on the generation of CPU that was being manufactured at the time of the minimum GPU that they want you to run with!, not because that CPU is the actual minimum (and sometimes this falls afoul of the CPU limited game just to prove there are no rules).


As for reading material (if you really want it), the Windows Internals series by Mark Russinovich are very helpful, along with Intel Platform and Architecture documentation (I had the paperback copies for the 386 x86 microprocessor, and it consisted of approximately 40 books, and upwards of 3000 pages per book (rice paper of course) - thankfully I never had to read them all).


edit: I rambled somewhat. I blame the fermented grapes. Just wanted to put that out there.
Last edited by bob on Fri Feb 13, 2015 6:31 pm, edited 1 time in total.
<<

MiRai

User avatar

Vibrant Videographer

Posts: 3010

Joined: Fri Nov 20, 2009 3:30 pm

Post Fri Feb 13, 2015 5:09 pm

Re: ISBoxer 2 Alpha

bob wrote:
MiRai wrote:However, 350 HP in a 2014 Dodge Charger is the same as 350 HP in a 2014 Ford Mustang, just like 350 HP is still the same 350 HP in a 1969 Chevy Camaro.

Your analogy is wrong because it doesn't take into account any losses. 350HP of potential engine output (calculated based on bore/stroke/fuel load/mixture ratio/compression) is not the same as actual engine output. You could use BHP as this takes into account some losses, but this is still wrong. What about weight, tyre tread type/friction, aerodynamics. Cars end up being measured on the 0-60mph (or 0 -100 kph), and that actually provides a far better measurement than anything else. How much time taken to complete the exact same task, and then for more measurement at what point does the ability to carry on to 100mph wain, how long does that take. This is of course the same issue with the suggestion of using allocated MHz, or even a relative comparison per slot.

I disagree. I'd say my analogy is spot on if we're only focusing on MHz as a unit to gauge expected performance (as we have been), and I left out everything else on purpose because we're ignoring the external factors.
<<

bob

User avatar

League of Extraordinary Multiboxers

Posts: 4587

Joined: Sat Feb 15, 2014 11:14 am

Location: In the dining room, with the lead pipe.

Post Fri Feb 13, 2015 6:28 pm

Re: ISBoxer 2 Alpha

MiRai wrote:
bob wrote:
MiRai wrote:However, 350 HP in a 2014 Dodge Charger is the same as 350 HP in a 2014 Ford Mustang, just like 350 HP is still the same 350 HP in a 1969 Chevy Camaro.

Your analogy is wrong because it doesn't take into account any losses. 350HP of potential engine output (calculated based on bore/stroke/fuel load/mixture ratio/compression) is not the same as actual engine output. You could use BHP as this takes into account some losses, but this is still wrong. What about weight, tyre tread type/friction, aerodynamics. Cars end up being measured on the 0-60mph (or 0 -100 kph), and that actually provides a far better measurement than anything else. How much time taken to complete the exact same task, and then for more measurement at what point does the ability to carry on to 100mph wain, how long does that take. This is of course the same issue with the suggestion of using allocated MHz, or even a relative comparison per slot.

I disagree. I'd say my analogy is spot on if we're only focusing on MHz as a unit to gauge expected performance (as we have been), and I left out everything else on purpose because we're ignoring the external factors.


I thought that might be your point, but as I've had a few, and I spent my addled state typing I thought I'd stick with it.
<<

lax

User avatar

Site Admin

Posts: 7301

Joined: Tue Nov 17, 2009 9:32 pm

Post Thu Feb 26, 2015 12:18 pm

Re: ISBoxer 2 - About CPU allocation estimates

Here's what I went with for now (this image is from the Team Editor instead of the New Team Wizard; the Team Editor is unpolished and will get a makeover)
Image
<<

bob

User avatar

League of Extraordinary Multiboxers

Posts: 4587

Joined: Sat Feb 15, 2014 11:14 am

Location: In the dining room, with the lead pipe.

Post Thu Feb 26, 2015 4:15 pm

Re: ISBoxer 2 - About CPU allocation estimates

Looks cools. Shows what is happening, doesn't allocate a figure which is hard to numerate, lets people make their own determination as to the "amount" of CPU allocated.
Previous

Return to Alpha Discussion

Who is online

Users browsing this forum: No registered users and 0 guests