Thank you for purchasing through links and ads on this site.
diglloyd Deal Finder...
Buy other stuff at
Speed To Create, Capacity To Dream
Storage Wishlist…

When More Is Less: Photoshop Slower With 12 Cores Than 6

Last updated 2011-01-27 - Send Feedback
Related: Macs, software, Mac Pro, Photoshop, Mac

Update: see the November 2012 diglloyd benchmark results with Photoshop CS6 and 12-core / 6-core Mac Pro.

See the diglloydMedium benchmark.

For several years, I’ve lamented the scalability issues with Photoshop. Yet nothing has changed with CS5; the 2010 12-core Mac Pro at 3.33GHz shows severely impaired performance compared to the 6-core model. It’s not only not better, it’s worse—a lot worse (see graph below). And 12 cores are slower than the 4-core model too!

ThunderBay 4 - The Speed To Create. The Capacity To Dream.
Storage Wishlist…

More cores and more memory?

Giving CS5 twice the memory (48GB) and twice the cores (12) causes its performance to decline by 32%. Throwing money at a problem is not always the solution!

diglloydMedium benchmark

Photoshop is the problem; it does not scale beyond 4 cores

While the 6-core model is slightly faster than the 4-core model, it also has a 50% larger on-chip cache. And don’t confuse the small gain seen with 6 cores (vs 4) with scalability; that marginal increase means that it does not scale from 4 to 6 cores.

As further confirmation, the 8-core 2.93GHz model is faster than the 12-core 3.33GHz model in this test; all the results are consistent: more than 4 cores means marginal improvement, followed by degraded performance.

Below is a graph with more machines at other speeds. The rule holds— too many cores is a drag on performance (the iMac is slow because of only 16GB memory).

diglloydMedium benchmark

Disabling cores

Disabling hyperthreading is easy, but you’ll have to download Apple’s developer tools to get the Processor control panel (maybe there is some other program that I’m unaware of). But it’s good for a 25% performance gain with the 3.33GHz 12-core Mac Pro!

CPU cores can be disabled, making it possible to analyze the behavior with and without hyperthreading (hyperthreading = virtual cores) and various numbers of real hardware CPU cores.

That a user should have to disable CPU cores to improve CS5 performance is not funny.

The Processor control panel used to disable cores


The graph below show a number of variants with varying numbers of cores with and without hyperthreading. All machines at 3.33GHz.

HT-off means that hyperthreading is off (no virtual cores)
N/6 means that N cores of 6 are used, N/12 means N cores of 12
Which particular cores are disabled can also affect the results, but the pattern holds.

The 2010 3.33GHz 6-core is the easy winner, with the 12-core 3.33GHz machine far behind. Note that with hyperthreading disabled, the 3.33GHz 6-core gains 7% more performance.

That the 12-core 3.33Ghz model is 31% slower than the 3.33GHz 6-core model is surprising. More suprising is that with a single CPU core, the hexacore still outperforms. This makes no sense, but I re-ran the tests multiple times with very consistent results. Some is screwball in Photoshop land.

diglloydMedium benchmark

Why does Photoshop CS5 perform so much worse with 12 CPU cores?

In general, more threads incur scheduling and synchronization overhead in attacking the problem (e.g., shared mutex locks and similar synchronizers). Such issues are a well-understood challenge in multi-threaded architectures, and often a serious problem in scaling to more CPU cores. I’ve written quite a lot of such high-contention computer code in multi-threaded server software, so those statements are based on the realities of software design as a professional software engineer.

My reckoning is that the internal CS5 code architecture was designed for 2-4 cores some years ago, and is algorithmically inappropriate for systems with more than 4 cores—hence minimal improvement when going from 4 to 6 cores, and a sharp degradation beyond that. Will Adobe fix this? We can hope, but past actions are a strong predictor of the future.

Here is what I observed for thread allocation in CS5. Oddly, 12 cores with and without hyperthreading show the same number of threads allocated (12 hardware cores or 24 virtual cores). Perhaps a hard-coded limit exist.

 1 core:  30 threads
2 cores: 34 threads
4 cores: 42 threads
8 cores: 58 threads
12 cores: 68 threads
24 cores: 68 threads
All the internal reasons that CS5 degrades are known only to Adobe;, but the tests speak for themselves.
SSD Upgrade for MacBook Pro Retina
Internal SSD Wishlist… | Terms of Use | PRIVACY POLICY
Contact | About Lloyd Chambers | Consulting | Photo Tours
Mailing Lists | RSS Feeds | Twitter
Copyright © 2008-2017 diglloyd Inc, all rights reserved.
Display info: __RETINA_INFO_STATUS__