Regarding IO to disk

Wojciech Puchar wojtek at wojtek.tensor.gdynia.pl
Wed Jul 8 15:54:39 UTC 2009


>
> Declared average latency for desktop hard drives (see 
> http://www.seagate.com/docs/pdf/datasheet/disc/ds_barracuda_7200_12.pdf) is

latency is average time to wait until data will be below head. it's by 
average half on single rotation. for 7200 rpm drive it's 120rps so half 
rotation takes 1/240 second=about 4ms.

But to perform I/O you have to

- send a request to disk (<1ms)
- move head - depends of distance, up to 20-30ms, 8-10ms average on most 
drives
- wait for latency - 4ms average.

you end in 13-15ms average.

in case of multiple parallel accesses - drive accept writes immediatelly, 
and can accept multiple reads if it can NCQ/TCQ, then it internally sort 
request queue to minimize required head moves and rotational waiting, so 
under high load you may go to 6-7ms/request which is about 150IOPS.

Of course i'm talking about random/pseudorandom reads, multiple reads of 
sequential addresses will be optimized by drive.

One more - i'm talking about raw I/O, FreeBSD of course optimizes 
filesystem acces internally by using lots of caching (as much as available 
memory) and planning requests.

small writes to file usually succeed immediatelly (to cache).


More information about the freebsd-hackers mailing list