Definition · Read timeFor a read of B bytes issued as s separate accesses on a device with seek time t_seek and sequential bandwidth bw, the read time is s × t_seek + B/bw. A sequential read is the case s = 1. A random read in chunks of c bytes is the case s = ⌈B/c⌉.
There are not two formulas here. What changes between the two rows of any comparison is s, and s is a property of the access pattern rather than of the data or of the device.
The habit worth building is to write the two terms down separately and look at them before adding. 10.00 ms + 10.00 s and 41.7 min + 10.00 s are the same gigabyte off the same disk. The second term is identical in both, to the digit. Every one of those forty-two minutes is first-term.
1 GB = 10⁹ B t_seek = 10 ms bw = 100 MB/s
sequential s = 1
1 × 10 ms + 10⁹/10⁸ s = 0.01 s + 10 s = 10.01 s
random c = 4 kB, s = 10⁹/4 000 = 250 000
250 000 × 10 ms + 10⁹/10⁸ s = 2 500.00 s + 10 s = 2 510 s
ratio 2 510 / 10.01 = 250.75
Example · The same gigabyte on solid stateHold the gigabyte and the 4 kB chunk and change the device: 100 µs of seek and 500 MB/s of bandwidth. The sequential read is 2.0001 s, the random read is 27 s, and the ratio falls from 250.75 to 13.50. The access pattern still costs more than an order of magnitude. What changed is that it costs thirteen times rather than two hundred and fifty.
Where the two terms are equal
Ask for the chunk size at which one seek costs exactly what one chunk of transfer costs. t_seek = c/bw rearranges to c = t_seek × bw, and the reason the answer is easy to carry around is that it is a multiplication of the two numbers a device is sold on. The disk above gives 10 ms × 100 MB/s = 1 MB; the solid-state device gives 100 µs × 500 MB/s = 50 kB.
Call that chunk c*. Then the whole comparison collapses to one division, because the random time over the sequential time is about 1 + c*/c whenever the sequential read is dominated by its bytes term. On the disk: 1 + 10⁶/4 000 = 251, against the 250.75 the lab computes exactly. At c = c* the ratio is 2; at 64 kB it is 16.61; at 4 MB it is 1.25. One number, c*, generates the entire table.
Example · Faster hardware does not always narrow the gapThe NVMe preset is 20 µs of seek and 3000 MB/s of bandwidth. Its crossover chunk is 60 kB — larger than the SATA device's 50 kB — and its 4 kB ratio is 16.00, slightly worse than the SATA device's 13.50. Bandwidth grew by six and the seek fell by five, and since c* = t_seek × bw the crossover went up. The penalty for a bad access pattern is not a fact about how old the device is.
Bytes on this course are decimal: 1 kB = 1000 B and 1 GB = 10⁹ B. That is not pedantry here, because it moves the headline. The same gigabyte in 4 kB random reads is 250.75 times the sequential time in decimal units and 262.9 times it in binary ones, so a reader checking the figure against their own arithmetic has to know which two hundred and fifty is being quoted. The lab says so on its face.
What the formula does not carry is a queue, a read-ahead, or a second request in flight. A device serving many concurrent random reads overlaps some of the waiting, so the honest form of the claim is that the seek term is work the device must do rather than necessarily time one request must wait. Queues and Utilisation is where waiting under concurrency gets its own arithmetic. The subject here is the work.