Our Latest Posts: -
Passive Income Smooths the Flow -
Hitting the Google Sweet Spot -
Vista Boomers - Microsoft's Power Failure -
Book Review: Programming in Objective-C 2.0 (Second Edition) Translators wanted!
Best of the Newsgroups: linux raw io
What is this stuff?
Main Index
From: General Schvantzkoph <schvantzk...@yahoo.com>
Subject: Re: Is there a way to flush the file cache?
Date: 29 Dec 2006 13:29:38 GMT
Message-ID: <4vkji2F1b4vglU22@mid.individual.net>
References: <4vig1lF1b4vglU18@mid.individual.net>
On Fri, 29 Dec 2006 12:35:51 +0000, Jean-David Beyer wrote:
> General Schvantzkoph wrote:
>> On Thu, 28 Dec 2006 13:29:24 -0800, Tony Lawrence wrote:
>>
>>> General Schvantzkoph wrote:
>>>> I'm writing a system exerciser that checks memory and disk I/O. Is there a
>>>> C call that flushes the file cache so that I can be assured that my freads
>>>> are coming from the disk and not the RAM. I'm using a sync() but I don't
>>>> think that does the whole job, it guarantees that the disk writes happen
>>>> but I don't think it clears out the file cache.
>>>
>>> Well, of course it can't guarantee that some random app hasn't written
>>> data, if that's what you mean..
>>>
>>
>> What I want to do is the following,
>>
>> 1) Create a file and write it to the disk.
>> 2) Read that file off of the disk and then check it.
>>
>> I'm trying to check the SATA interfaces so it's important that the file go
>> to and from the disks. The file cache interferes with this because if the
>> file is present in the cache the program will get the cached copy not the
>> copy that is on the disk. The sync() call forces the disk writes to happen
>> immediately which is half of the battle. The other half is to purge the
>> file cache so that all subsequent file reads come from the disk. Is there
>> a way to do this?
>
> Does your version of the kernel permit "raw IO"? The 2.4 kernels do. In that
> case, you can open a raw partition and reads and writes will bypass the file
> system and use just the device drivers. I believe the 2.6 kernels do not
> unless you have some computability library or something.
>
I've just gotten the answer on the Fedora forums. The open() call has a
O_DIRECT flag which causes file I/O to use user buffers instead of the
cache. Raw IO isn't supported in the 2.6 kernels.
Add your comments