Re: [Jfs-discussion] benchmark results

tytso
2009-12-25T16:33:41Z

On Fri, Dec 25, 2009 at 08:22:38AM -0800, Larry McVoy wrote:
>
> Dudes, sync() doesn't flush the fs cache, you have to unmount for that.
> Once upon a time Linux had an ioctl() to flush the fs buffers, I used
> it in lmbench.
>
> ioctl(fd, BLKFLSBUF, 0);
>
> No idea if that is still supported, but sync() is a joke for benchmarking.

Depends on what you are trying to do (flush has multiple meanings, so
using can be ambiguous). BLKFLSBUF will write out any dirty buffers,
*and* empty the buffer cache. I use it when benchmarking e2fsck
optimization. It doesn't do anything for the page cache. If you are
measuring the time to write a file, using fsync() or sync() will
include the time to actually write the data to disk. It won't empty
caches, though; if you are going to measure read as well as writes,
then you'll probably want to do something like "echo 3 >
/proc/sys/vm/drop-caches".

- Ted