When we have multiple streams, their think times will in general be different. Also, in general, each client will have different number of accesses to each track before moving onto the next track. Fortunately, these differences do not enter our analysis below.
Let us suppose that there are streams. The parameter
will
not appear anywhere in our algorithm. Let
,
, denote the rate of sequential misses of stream
for
synchronous+asynchronous prefetching. Observe that these
individual numbers are generally not easily observable. However,
their sum
Let denote the length of the list SEQ in number of
K
pages. To compute the marginal utility of SEQ, we examine
how the overall rate of sequential misses changes, namely,
, in response to a small change
in
. By the stack
property of SEQ, as
increases (respectively, decreases)
decreases (respectively, increases). Hence,
is always negative. The marginal utility is measured by the
magnitude of this quantity. We shall lower bound this negative
quantity, and, in turn, upper bound the marginal utility.
Let ,
, denote the times at which various
streams attain zero misses (see Figure 3).
Mathematically, the above chain of inequalities is valid at all
points in
except at
,
,
since at
,
/
is not defined. However,
our choice of the approximating curve
is such that it
cleverly distributes the magnitude of the drop in
at
evenly throughout the interval
, and, hence, in
practice, the inequalities are applicable. This approximation
smoothes out the changes in
in relation to
at the discontinuities and paves the way for designing a locally
adaptive algorithm such as ours.
We now have the following bounds