Jump to content

Scale up or scale out?

by Patrick Leonard, VP Product Strategy

Last week I was on a panel discussion at Sun / AMD CommunityOne East in NYC about multi-core and parallelism. Representatives from Sun, AMD, Cilk Arts and Allinea were on the panel with me.

Listening to the questions, from the audience and conversations after, one thing was clear - this is a complex challenge that even smart, experienced people struggle to do well.  When moving toward developing software in a parallel environment, there are a lot of things to consider, a lot of questions come up.

How do I train my developers? 
Can I reuse what I have or do I have to rewrite?
What tools should I use? 

There are a lot of ways to dissect this problem, but one thing we all agreed on is that people should make sure that they understand the basic nature of the parallelism they are trying to achieve and why. The simplest starting point for this is determining if you are trying to “scale up” or “scale out”.  This can have implications for the architectural approach you take and other aspects of your project.

With the advent of multi-core systems, “scale up” and “scale out” don’t have the clear distinction that they used to have, but it’s still a useful starting point. Some quick definitions:

  • Scale up: doing more on a single server, using a single server more efficiently
  • Scale out: distributed computing, using multiple servers to increase the throughput of a system

The reason that the advent of multi-core systems has blurred the lines between “scale up” and “scale out” is that now a single server can have 4, 8, 16 or more CPU cores, so it looks more like a distributed system in itself, and that is going to more the case in the future. Still, doing parallelism on the scale of a thread pool or multi-core server is different than going parallelism across a network (or rack) of servers. There are different design considerations and different techniques.

“Scale up or scale out” is a seemingly simple question to ask yourself, but it can lead to some illuminating discussions with your engineering team.

Del.icio.us   |   Technorati   |   Digg   |   Slashdot

Leave a Reply