Why are disk writes so slow?
Eric Anderson
anderson at centtech.com
Wed Sep 27 09:49:30 PDT 2006
On 09/26/06 10:46, Mark Bucciarelli wrote:
> I am reading Richard Stevens' "Advanced Programming in the UNIX
> Environment," a most excellent book.
>
> Out of curiosity, I tried his I/O efficiency program on my IBM
> A30 Thinkpad, running 6.0-RELEASE with default tuning parameters.
> The test program reads file on stdin and writes to stdout, and
> you modify bufsize to watch how time changes.
>
> As in his example (with a bufsize of 8192),
>
> time ./a.out < 1.5M-testfile > /dev/null
>
> runs five times faster than (clock time)
>
> time ./a.out < 1.5M-testfile > /a.out.out
>
> Can someone explain to me why writing is five times as slow as
> writing? What's going on in the computer?
>
> The file is not O_SYNC, so it can't be validating the data on the
> disk.
>
> Later in the same chapter, he shows the impact of O_SYNC flag. I
> re-ran this experiment too, and while everything is two orders of
> magnitude faster than his times in the book, the relative speed
> of writing with O_SYNC is three times slower.
>
> 1993 2006
> ----- ----
> normal write 2.3s .023s
> O_SYNC 13.4s .364s
> slowdow factor 5.8 15.8
>
> Is this all b/c disks are so much larger?
It's probably because of caching on the disk. The normal write goes
in/out of the on-disk cache, the O_SYNC may be forced to go to the platters.
Also, if you didn't already, you should run the test many times,
umounting/mounting the filesystem in question in between each test.
Also, I recommend using a block device, instead of a file on a
filesystem, since the filesystem could allocate blocks for the file
differently each time, causing varying results.
Eric
--
------------------------------------------------------------------------
Eric Anderson Sr. Systems Administrator Centaur Technology
Anything that works is better than anything that doesn't.
------------------------------------------------------------------------
More information about the freebsd-performance
mailing list