Is 4 cores really the end? (Part 3)
OK, so I promised to add some more traces showing speedups of real user applications, i.e. not developer tools or benchmark suites. The weekends over, but I thought that I would add an application that I’m confident a lot of people are using… Internet Explorer 7.
How does IE use 4-cores?
Well, if you remember that IE let’s you have multiple home pages in multiple tabs. I use this feature to track the news sites I read and my web-mail, and it’s definitely using so here’s what it looks like on a quad core:
You should be able to see that it’s taking about 7.5 seconds to launch IE then the CPU to settle down. More importantly, there’s a period of approximately 2 seconds between the 3.5 & 5.5 second tickmarks where the CPU utilization is at > 70%.
What about 8-cores?
I happen to be fortunate enough to run this same scenario on a dual-socket quad core and so I collected a trace on that as well. Keep in mind that the clock speeds of these 2 are completely different so comparing benchmarks between them is quite inadvisable, but I’m going to do it anyways :).
You can see in the capture below that on the 8-way the time has been reduced to 5.5 seconds… it’s still using > 70% of the CPU but now it’s 70% of 8 cores instead of 4…
And that period of high CPU utilization (between 8.5 seconds & 9 seconds on this box) is now only about a second long.
Hey it didn’t get twice as fast, why is this good?
I could very easily have shown a paint.net application getting twice as fast as it did on my quad-core, but that’s actually not very interesting. The point here is that we took a look at an existing application that was easy to find use that was already multi-threaded and was designed to take advantage of inherent latencies in I/O and showed that some decent speedups were available to be taken advantage of with a multi-core system. This is really just an opportunistic performance win and real users, using real applications will see some noticeable improvements without installing developer tools or running gadzillions of applications at once (and don’t knock that – I think I have about 40 windows open on my desktop right now).
Perhaps in a future post, I’ll post a couple ideas of how to take even better advantage of multiple cores using something like the Task Parallel Library or PLINQ, but for now that’s it.
-Rick