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