How is the average seek time of disk calculated if a function
f(x) is given as an estimate of time to move head of disk to n tracks?
migrated from dba.stackexchange.com Oct 31 '11 at 12:27
This question came from our site for database professionals who wish to improve their database skills and learn from others in the community.
It can be fully enumerated by calculating the seek time from all tracks to all other tracks and averaging the value. There are mathematical formulas which can be used to simplify the calculation. The provided value is a theoretical value based on truly random access.
In practice, average seek time for a particular disk in use may be significantly different. This value will fall in between the seek time for a single track move, and the seek time between tracks at either end of the disk. Settle time can be a significant factor for small moves.
Placing heavily accessed files and partitions close together can improve access times. This increases the effect of settle time on disk accesses.
To make matters worse new disks have a different actual geometry than is described by the legacy HCS specification. The average seek time is more complicated in this case.
One disk access optimization is to sift sectors between tracks so that sector 1 is located where it is the first sector read after a single track forward seek from the last sector on the previous track completes.
EDIT: Using successive approximation, 1/3 of the max seek time is a good estimate. The limits of the average seek time will be between the limits; 0.5 max seek time (worst case, from edge of the disk) and 0.25 max seek time (best case, from center of the disk). For the two edges and the center, this averages 0.417. Average seek time from 1/4 of the way across the disk is ( 1/4 * 0.125 + 3/4 * 0.375 = 0.315 ). The average of these five samples is 0.376 which is closer to 1/3. The more samples you use the closer to 1/3 you will find the results.