Re: clearing filesystem cache for I/O benchmarks

From: Benjamin Rutt
Date: Tue Jul 27 2004 - 12:28:13 EST


Andrew Morton <akpm@xxxxxxxx> writes:

> (Please don't remove people from the email recipient list when doing kernel
> work.)

Sorry, I'm reading via gmane and my newsreader doesn't make it
straightforward to do so. But I'll do it manually for you.

> However... If you write any amount of data to a file with O_DIRECT, that
> will, as a side-effect, remove _all_ of that file's pagecache. In 2.4 as
> well as 2.6. So you could scrub the pagecache by reading the first 4k then
> writing it back with O_DIRECT.

Thanks, that does work for ext3, very well. It's obvious that it
clears kernel page cache and not controller/disk cache.

>> A related question...if no posix_fadvise() advice has been given, does
>> reading sequentially every byte of an 8GB file on a machine with <=
>> 8GB of RAM guarantee that any page cache data that existed on the
>> machine prior to the start of the 8GB read is now gone?
>
> It's not guaranteed that this will work - if the pages which you're trying
> to evict were accessed multiple times then it may take more page
> replacement to reliably shoot them down. But writing a 2xmemory file and
> then deleting it will be a reasonably effective way of evicting most of
> the other pagecache.

OK thanks, I'll take on good faith that this is the best scheme in
general. I was actually doing a somewhat different approach, reading
through a 2x memory "dummy" file before accessing the real file, but
based on your advice, I'll instead just create a 2x "dummy" file,
fsync it, and then delete it.

Thanks for the tips,
--
Benjamin Rutt

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/