Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Sep 2006 11:39:30 -0500
From:      Eric Anderson <anderson@centtech.com>
To:        freebsd-performance@freebsd.org
Subject:   Re: Why are disk writes so slow?
Message-ID:  <451957C2.90701@centtech.com>
In-Reply-To: <20060926154643.GA3064@rabbit>
References:  <20060926154643.GA3064@rabbit>

next in thread | previous in thread | raw e-mail | index | archive | help
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.
------------------------------------------------------------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?451957C2.90701>