To determine the performance impact of disk I/O, we must
estimate the average response time RS from storage.
We model each storage server as a simple queuing center,
parameterized for k disks;
to simplify the presentation, we assume that the storage servers
in the utility are physically homogeneous.
Given a stable request mix,
we estimate the utilization of a storage server
at a given IOPS request load
as
,
where
is its saturation throughput in IOPS for
that service's file set and workload profile.
We determine
empirically for a given request mix.
A well-known response time formula then predicts the average storage
response time as:
![]() |
(3) |
![]() |
This model does not reflect variations in cache behavior within the
storage server, e.g., from changes to M or .
Given the heavy-tailed nature of Zipf distributions,
Web server
miss streams tend to show poor locality
when the Web server cache (M) is reasonably
provisioned [14].
Figure 4 shows that this model closely approximates storage server behavior at typical utilization levels and under low-locality synthetic file access loads (random reads) with three different fileset sizes (T). We used the FreeBSD Concatenated Disk Driver (CCD) to stripe the filesets across k=4 disks, and the fstress tool [2] to generate the workloads and measure RS.
Since storage servers may be shared,
we extend the model to
predict RS when the
service receives an allotment
of storage server resources,
representing the maximum storage throughput in IOPS
available to the service within its share.
![]() |
(4) |
This formula assumes that some scheduler enforces
proportional shares
for storage.
Our prototype uses Request Windows [18] to approximate
proportional sharing. Other approaches to differentiated
scheduling for storage [23,33] are also applicable.