Locality and Convoys
If you're trying to untangle all the complexities of keeping your parallel code scalable, you probably want Herb Sutter in your corner. His latest column is a clear-eyed discussion of the importance of locality (knowing where your data is stored) in avoiding a classic parallel computing problem: the convoy.
In a convoy, says Herb, "only one thread can make progress at a time... At any given time, all of the threads save one are piled up behind the lock as each waits idly for its turn to come." Avoiding this problem is even less straightforward than you might think, but Herb has some good advice.