Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 02 Oct 1996 16:57:24 +0200
From:      Poul-Henning Kamp <phk@critter.tfs.com>
To:        dyson@freebsd.org
Cc:        heo@cslsun10.sogang.ac.kr (Heo Sung-Gwan), freebsd-hackers@freebsd.org, freebsd-fs@freebsd.org
Subject:   Re: vnode and cluster read-ahead 
Message-ID:  <3531.844268244@critter.tfs.com>
In-Reply-To: Your message of "Wed, 02 Oct 1996 09:39:42 CDT." <199610021439.JAA00980@dyson.iquest.net> 

next in thread | previous in thread | raw e-mail | index | archive | help
In message <199610021439.JAA00980@dyson.iquest.net>, John Dyson writes:

>> As a process A reads a file F *sequentially* the fields(v_maxra, v_ralen, et
>c) of the vnode of F increases. As a result read-ahead of next cluster happens
>.
>> But when a process B opens F and reads it the values of the fields are 
>> changed. So the process A's read-ahead is disturbed whenever process B is 
>> rescheduled.
>> 
>> I think the fields for read-ahead must be in struct file rather than vnode.
>> There exists one vnode for a file but a file may be open serveral times. 
>> 
>That is closer to correct.  I am not sure that the struct file is correct
>either, but I think that you are on the right track.

No, I don't agree.  Process B will most likely find all it needs in the
buffercache, and thus will not need read-ahead at all.

How to implement this is not clear to me, but I think the best way would
be to calculate the parameters and only if the extend the current read-ahead
(v_maxra...) will they be employed.  This would gracefully handle the
case where process B overtakes process A in reading the file.

--
Poul-Henning Kamp           | phk@FreeBSD.ORG       FreeBSD Core-team.
http://www.freebsd.org/~phk | phk@login.dknet.dk    Private mailbox.
whois: [PHK]                | phk@ref.tfs.com       TRW Financial Systems, Inc.
Future will arrive by its own means, progress not so.



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