**The Pith of Performance**, and kindly contributed to R-bloggers)

I finally got around to completing item 5 on my 2011 list concerning electrical power consumed by a magnetic hard disk drive (HDD). The semi-empirical statement is:

_{platters}× Ω

^{2.8}× D

^{4.6}. . . (1)

where N_{platters} is the number of platters on the spindle, Ω is the rotational speed in revolutions per minute (RPM) and D the platter diameter in inches. The power consumed is then measured in Watts.

In principle, this makes (1) valuable for doing **green HDD storage** capacity planning. The bad news is, it is *not* in the form of an equation but a statement of proportionality, so it can’t be used to calculate anything as it stands. More on that shortly. The good news is that all of the quantities in (1) can be read off from the data sheet of the respective disk vendor^{†}. Note that the disk capacity, e.g., GB (the usual capacity planning metric) does *not* appear in (1).

The outstanding question is: where do those funny non-integral exponents come from?

**Theoretical Justification**

In simple terms, we can think of the (integral) exponents as arising from the following contributions:

- Factorize the exponential contributions as: (Ω
^{3}× D^{3}) × D^{2} - D
^{2}factor comes from the area of the disk platter - Ω × D/2 is the angular speed
*v*at any point on the platter - The reason it appears as
*v*^{3}comes from two more effects - A
*v*^{2}contribution from the Bernoulli pressure of the air on the rotating platter - That’s multiplied by another
*v*from converting the pressure (force per unit area) to power (force through distance moved per unit time)

So, the match between (1) and theory comes from rounding the exponents *up*, not down. I’ve published the theoretical details on arXiv. Now, let’s look at an example of how you might use this result to meet the **green** power requirements of your data center.

**Disk Sizing Example**

If we wanted to use (1) as written, then we would need to determine the *constant of proportionality* and that’s generally not a trivial undertaking. A much simpler approach is to recognize that we usually want to compare the *current* (“old”) disk model with a *new* disk model, possibly yet to be procured. In that case, we can apply (1) in **ratio form**:

_{new}= Pwr

_{old}× (N

_{new}/N

_{old}) × (Ω

_{new}/Ω

_{old})

^{2.8}× (D

_{new}/D

_{old})

^{4.6}. . . (2)

Basically, **new** HDD variables *divided* by **old** HDD variables. The other benefit of this approach comes from any disk specs that are the same between “old” and “new” devices. Written as ratios, they will cancel each other out and thereby just contribute a simple unit factor. In other words, you can ignore them if you’re calculating by hand.

The other approach is to write (2) as a simple computer program. Suppose you currently have Hitachi Deskstar P7K500 3.5 inch drives that spin at 7200 RPM and consume 10.9 Watts. You’d like to use (2) to determine the impact on your power budget of going to Western Digital Caviar GP 3.5 inch drives which have variable speed between 5400 and 7200 RPM; we’ll assume an average rotational speed of 6000 RPM. Both HDD models have N = 2 platters.

We can conveniently write (2) as an R function:

dkpwrnew <- function(dknew, dkold) {

nrat <- dknew[1]/dkold[1]

wrat <- dknew[2]/dkold[2]

drat <- dknew[3]/dkold[3]

return(dkold[4] * nrat * wrat^2.8 * drat^4.5)

}

and incorporate all the respective disk specs into two R vectors:

> dWDigital <- c(2, 6000, 3.5)

> dkHitachi <- c(2, 7200, 3.5, 10.9)

Passing these vectors to the above R function produces:

> dkpwrnew(dWDigital, dkHitachi)

[1] 6.542128

The published value is 6.4 Watts.

† Caveat lector. HDD specifications are not standardized. Vendors sometimes arbitrarily specify only upper limits, and sometimes typical values, and sometimes unrealistic values.

**leave a comment**for the author, please follow the link and comment on his blog:

**The Pith of Performance**.

R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...