Check out the new USENIX Web site.

IO Size.

Typical storage IO sizes range from 512 bytes to 256 KB, or even 1 MB for more recent devices. The estimator needs to be aware of changing IO size in the workload. This can be done by computing latency per 8 KB instead of latency per IO using a linear model with certain fixed costs. Size variance is less of an issue in networks since most packets are broken into MTU-size chunks (typically 1500 bytes) before transmission.

All of these issues essentially boil down to the problem of estimating highly-variable latency and using it as an indicator of array overload. We may need to distinguish between latency changes caused by workload versus those due to the overload at the array. Some of the variation in IO latency can be absorbed by long-term averaging, and by considering latency per fixed IO size instead of per IO request. Also, a sufficiently high baseline latency (the desired operating point for the control algorithm, $ \cal {L}$ ) will be insensitive to workload-based variations in under-utilized cases.

Ajay Gulati 2009-01-14