Quad Core Desktops and Diminishing Returns

The Apache results indicate that something else (probably network resource contention) is a limiting factor.
The Quad CPU would appear to be slower (or Jeff has the numbers the wrong way round) than the dual CPU config - which is typically what happens when there are more processes fighting over a shared resource - more locks to manage.

I normally have 5 or 6 apps and 2 virtual machines running at all times. Often, several of the programs are CPU intensive.

Each app is ALSO a thread, so it is not hard to see that you can easily grow into 4 or 8 processors just by DOING MORE instead of having apps written differently.

It isn’t about running all the processors at 95% all the time, its about being able to GET a few of the CPUs saturated and still having plenty of guts left in your machine to do yet more.

I think the real winner is the user experience, not how fast a single app runs. Even with dual core, how often has your system dogged down on you? Mine does this often. I would definitely pay to have a system that was nearly invulnerable to this.

That being said, I work on developing an application that is heavily multi-threaded (too much in some cases) so the more cores the merrier.

No one needs more than 640K either, right? The multicore desktops will enable new, mostly as of yet unimagined applications that are so CPU aggressive, you need to run them on their own core lest they interfere with desktop apps like office or a browser. A good example would be running a dedicated Halo server on the extra core, which is what I plan to do on my new dual core.

Yeah, but having multiple processors in a system like the XBox 360 allows features like interacting with the dashboard and performing background downloads while you are playing a game.

Multiple cores or processors could also possibly help out with online games where maybe 1 of the cores could handle networking while the other handled game processing? No? It might be a pain to get it all synchronized, but I dunno. I don’t write games!

Adam has the right idea. XCode lets you distribute compilation (with GCC) across all the CPU’s in your network, not just on servers, but on everyone’s workstations. Last year’s Power Macs already had quad cores so it’s already proved its worth.

“1 core for iTunes and Transmit/ssh”

Seriously – an entire core for an SSH session and playing MP3s?

Even my “old” AthlonXP 1800 didn’t have problems with this kind of thing.

Whack in some visual effects and you might be lucky to hit 15% utilisation - of an AthlonXP 1800. A single core from a Core 2 Duo is what - 2-3x faster?

Here’s what I’d be thinking of with 4 cores:
1 Core: OS, AV, other non-major stuff (mail, im, downloader apps, media playing apps)
1 Core: Your chosen IDE
1 Core: Your app in debug mode / server running your app / etc.
1 Core: Database being used by your app, continuous integration, unit tests, etc. Browser session (many windows, not processor intensive)

Sure, at the moment, I could probably get away with two - it’d be nicer with three, and four is just luxury. Then again, vista’s new UI could probably help use up one of those cores.

Speaking of vista - the things you’ll be able to do with Windows Presentation Framework will make it much easier to present information in 3D. I know I have difficulty presenting complex data in 2D, even with the pseudo-3D offered by the “3D” charting in excel doesn’t help much.

Letting managers be able to scroll around a 3D representation of the data may be very much useful in some fields.

So, yes, 4 Cores arn’t necessary right now in the desktop - but like someone else said - making this available will let people come up with a whole bunch of ideas.

Like how things changed (somewhat for the better) when people realised that they could exchange data with the server, without involving a page reload or any special plugins (Yes, AJAX).

At first it was people doing authentication without a page reload, or pulling down little bits of information.

A few months later and suddenly, someone realises they can combine this with a bunch of other technology, and… Hey-presto! we have a fully functional spreadsheet or email client in this relatively “dumb” browser.

-end-of-rant-

The real bottleneck or diminishing returns to multiple CPU cores is memory bandwidth and contention for other resources, not a lack of things to run on them.

Clearly people have already hit on the idea having several applications going simultaneously has benefits. This benefit will increase as more applications are designed to operate all the time, not just based on user input and then action. The programs will be doing work or searches on your behalf in a predictive manner. The additional CPU’s will allow this to be done in a less intrusive manner.

As just an example, think of MS-Word. It already does this to a large extent with threads doing background spell checking, grammer checking, repagination after local formatting changes, print formatting, etc. Those are all threaded up already, it just happens to be that a single core can handle all those operations pretty effectively already.

As you make more horsepower available, those parallel operations can be much more CPU intensive and still not get in the way of the primary interface threads.

I suggest playing with Vista and Office 2007 Betas for a little while and I think you will see some ideas of what all the processors might be doing pretty soon.

Again, what I worry about is bottlenecks of memory, disk and network bandwidth choking the cores off - not the applications running on them.

But throwing 2 more cores in there is a negligible perf gain except in highly specialized scenarios.

Very true. I wasn’t attempting to suggest everyone is hitting a webserver running on their system with a web browser running on a virtual machine on the same system, while tracing the web application’s execution and watching the latest episode of Hell’s Kitchen in VLC. :slight_smile:

Quad core means that when I plug in an external drive, I don’t notice Spotlight updating it’s index for the drive. It means that I can start a 40 minute build without causing an H.264 video to skip a single frame. It means that I can devote an entire core to filtering out ambient noise in speech recognition.

The scenarios are uncommon now, but I’d expect them to be approaching commonplace by the end of these new quad core machine’s lifecycle. And, of course, for them to be completely overshadowed by things I haven’t thought of. So, while I’d agree that these machines aren’t necessary right now, I expect that situation to have noticeably changed within the next 3 years.

I wonder how much of it is that, until now, there was no point in using a lot of threads beyond one for user interaction and one for crunching. Why would anyone bother?

Perhaps now that they’ve been built, the applications will come…

Will: In regards to video editing and encoding data streams, I mentioned something to Rick Brewster of Paint.NET when they first introduced their multi-proc save routine. It would split the data file into chunks but if say chunk 5/8 was corrupt, the entire thing was. That’ll be the most likely problem everyone faces when they start to break up their save routines but it’s not particularly difficult to fix.

Assigning applications to cores would solve a lot of concurrency issues but hopefully the designers of operating systems don’t allow this to be programmatically altered by the app itself. Why? Your apps will fight for a core all to themselves and this is something the user should be managing anyway. How would you even optimize such a function? If CPU = 100% on core 1, pause, shift higher % down one core, release, rinse, repeat? That would be nice and I believe OSs will eventually need the overhead to detect when a CPU is bogged down and have the ability to auto-correct it. As long as applications can’t control their own fate this should be pretty useful.

I agree with both Jeff and Larry though. There will be gains if done correctly but there’s a potential to really screw the pooch or just not see any difference when the time actually comes. Developers really can’t wait until this becomes a serious issue before tackling it.

I remember a while back, id was talking about a special version of Quake 2, or one of the Quakes…

He was running it on a dual-cpu W2K machine. IIRC, he was pretty impressed with the performance? So, maybe PC game developers can start exploiting this new technology. Or, maybe they have already and I’m just 5 years behind?

I think it’s difficult to make use of more than two apps at a time in a typical desktop situation, so what will determine the usefullness of greater than two cores is the ability of single apps to use more than one core.

If one or both of the apps is multi-threaded, then the third and fourth core would be useful. I think the chart hints at that. Those apps that are serious about using many threads get very nice improvements going from two to four cores.

One reason why some classes of apps, like 3D games, may be slow to use multiple cores is because it takes years to develop the 3D engine. The physics and sound processing may be licensed and all of that may need to be upgraded to support multi-core. Some non-3D games already use multiple cores - Football Manager (used to be Championship Manager pre CM5) for example, but then some folks will tell you that’s more like a number-crunching spreadsheet than a game.

Hi, Jeff,

Actually, I have seen some cases where my MBP bogs down, and another CPU would help. Not the common case when all I am doing is running some tunes, but that common case is not really going to tax a single cpu on a four year old computer.

The quad would help me in the same cases where the dual really seems to be a good thing - IDE at full bore, unit tests and integration running, tunes in the background, perhaps the odd streaming video running muted, and lots of system stuff doing things. At this point, a third CPU would satisfy things, but I would bet you that once those became popular, then a fourth would find things to do.

Obvioutly, I could cut out all but the core dev process, but it is convenient that I am really not impacted by other things I may happen to have simmering away on a back burner. It also means that I am less concerned about what other processes are up to.

So, is a quad useful for most users? Not yet, but that is partially because they are not yet used to a dual core. Give the typical user a year to find things to do, and the extra cpus will be used.

Scott

I remember a while back, id was talking about a special version of Quake 2, or one of the Quakes

It’s “r_smp” in Quake:

http://techreport.com/reviews/2001q4/athlonmp/index.x?pg=4

A handful of games are multithreaded, but the gains, even in the best possible scenario, are not that significant.

All modern games are far more video card limited than CPU limited. That’s why most review sites, when testing CPUs, will run the games at absurdly low resolutions like 640x480 or 800x600 with no anti-aliasing. Which, in my opinion, entirely defeats the point. (Note that the game performance numbers I cited in this post are run at typical gaming resolutions, eg, 1024x768 or higher.)

Upgrading from the slowest Pentium D to the fastest Core Duo (which is ~30% faster) is a giant waste of money for a gamer. Spend your money on a better video card instead!

–Sorry to turn this into a discussion board, but –
Mike Swaim said “The C++ compiler in VS2005 has some pragmas … apparantly fairly .net hostile, too, and can’t be done anywhere near managed code.”

This is not correct. These are the OpenMP pragmas and, today, they work fine in mixed-mode C++/CLI (/clr) and, they’ve announced that in the future they will work with /clr:pure and /clr:safe.

As an example of how little CPU matters to modern games, see here:

http://techreport.com/reviews/2006q3/core2/index.x?pg=7

Note the individual framerate scores for each 3DMark06 game (Return to Proxycon, Firefly Forest, etc) are virtually identical, from the slowest and moldiest Pentium D, up to the latest and fastest Core Duo 2 extreme.

Ars Technica review of the Mac Pro:

“Going from a Dual 2.5GHz Power Macintosh G5 to a quad-core 2.66GHz Xeon doesn’t feel that much different under normal usage. Both machines feel about as equally responsive, although the Mac Pro appears to boot up much quicker. Really, under everyday load, this machine doesn’t feel that different than the other Macs I use on a day-to-day basis (the aforementioned G5 and iMac) although it’s far more responsive than my PowerBook G4.”

http://arstechnica.com/reviews/hardware/macpro.ars/6

With the latest release of Xoreax Incredibuild you’ll get all CPU’s (or cores) being utilized for Visual Studio builds.

Many games that are currently in production (including the one I’m working on) rely heavily on multi-threading for performance gains and do see large improvements on multi-core systems. For example, you run graphics on one thread, simulation on a second, pathfinding on a third and ai on a fourth. You’ll be seeing more games like this as all of the current gen game consoles are multi-core, so the threading model will carry over to the desktop ports.

who benefits from quad core CPUs? Maybe not lay users but definately: Developers, Developers, Developers! As previously mentioned compiling can greatly speed up. I also happen to run mysql, apache, JBoss, vmware, and a compiler all on the same desktop while developing web services and applications. I definately benefit from my quad processor box. It’s getting to be a few years old though so I’ll have to upgrade soon.