Saturday, April 10, 2010

Jerk: Scalability and Higher Order Derivatives

I've long thought of scalability as the first derivative in the relationship between resources and operations per unit of time. With no resources, we usually achieve no operations, regardless of how long. With a single resource, we might achieve Om operations over a time span of T. By adding a second resource, we might achieve On operations over the same time span. We would say that the marginal scalabity between Rm (1) and Rn (2) was (On - Om) / (Rn - Rm). Looking at Operations vs. Resources on a line chart, this marginal scalability would be the slope of the line connectiong ORm and ORn. Knowing your application's scalability between m and n is a starting point, but the probability of ideal linear scalability in a real world application is 1/infinity. We need to know what happens when you add a third resource. This (second derivative) will tell us the rate at which the scalability changes as more resources are applied, and can be a much more useful figure. It may take a little more time until I can clarify what jerk might meaningfully contribute to discussion of scalability, but essentially it's the change in acceleration. :-)

No comments: