“And SMP Stands for…” 

Wednesday’s CS764 lecture covered distributed database architectures. After the lecture I went upfront and asked Professor Patel a question about which architecture, the share-nothing, share-memory or share-disk, QuickStep is sitting on. And very quickly, he blasted through a four to five-sentence answer without a breathe – clearly he knows what he is researching on! My mind was trying to catch up with his answer and failed at a phrase ‘SMP.’ I immediately asked what SMP stands for. And he, again, blasted through an answer: Symmetric multiprocessing.

There we go. That’s how I ended up googling and wiki-ing and here is a summary of what I have briefly learned:

SMP, or symmetric multiprocessing, refers to the model of single operating system running on multiple processors and shared-memory. Interestingly enough, this model is a generalization of a multi-*core* system by treating each core in each processor in the SMP model effectively as a separate processor.

One advantage of this arrangement is that with proper OS support, in-memory workload can be effectively balanced by moving tasks between processors.

One challenge is how to make this happen in real programming environment. It is often the program’s job to figure out the memory locality given the meshed memory architecture.

Non-Uniform Memory Access (NUMA) is one good example. In NUMA, each processor is effectively associated with its own memory and less efficiently bound to non-local memory. Such non-local memories include (1) other process’ local memory, and  (2) memory shared between processors.