Go backward to Conclusion and Future Research Directions
Go up to Top
Go forward to References

Admission Control with GSS

This appendix details the implementation of the Scheduler's admission policy with GSS. A building component is a function, termed seek(#cyl), that estimates the disk seek time. Its input is the number of cylinders traversed by the seek operation. Its output is an estimate of the time required to perform the seek operation using the models of [GSZ95]. Assuming CYL cylinders for the disk and n displays assigned to a group Gi, we assume that the n blocks are (CYL)/(n) cylinders apart.

The Scheduler maintains the amount of idle time left for each group Gi. With a new request for object X, the scheduler retrieves from the catalog the record corresponding to X to determine its media type, MX. Next, it retrieves from the catalog the record corresponding to media type MX to determine B(MX). Starting with the current group Gi, the Scheduler compares the idle time of Gi with the disk service time to retrieve a block of size B(MX). The disk service time with Gi is:

Sdisk(Gi)=(B(MX))/(RD) + max rotational latency + seek(CYL)
It assumes the maximum seek time (i.e., seek(CYL)) because the blocks to be retrieved during Gi have already been scheduled and the new request cannot benefit from the scan policy. Assuming that Gi is servicing n-1 requests and its idle time can accommodate Sdisk(Gi), its idle time is reduced by Sdisk(Gi). Prior to initiating the retrieval of blocks that belong to group Gi+1, the scheduler adjusts the idle time of group Gi to reflect that the active active requests can benefit from the scan policy. Thus, the idle time of Gi is adjusted as follows:
idle(Gi) = idle(Gi) - [seek(CYL)+(n-1) ×seek((CYL)/(n-1))]+[n ×seek((CYL)/(n))]
The subtracted portion reflects the maximum seek time of the request that was just scheduled and the seek time of n-1 other active requests. The added portion reflects the n seeks incurred during the next time period by this group with each (CYL)/(n) cylinders apart.

If current group Gi has insufficient idle time, the Scheduler proceeds to check the idle time of other groups Gj where j=(i+1) mod g, 0 < j < g and j !=i. Assuming that Gj is servicing n-1 active requests, the disk service time with Gj is:

Sdisk(Gj)=(B(MX))/(RD) + max rotational latency + [n ×seek((CYL)/(n))] - [(n-1) ×seek((CYL)/(n-1))]
If the idle time of Gj is greater than Sdisk(Gj), then the new request is assigned to Gj and its idle time is subtracted by Sdisk(Gj).

#



Prev Up Next