Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Oct 2010 18:22:54 +0300
From:      Andriy Gapon <avg@icyb.net.ua>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        freebsd-stable@freebsd.org, Alexander Zagrebin <alexz@visp.ru>
Subject:   Re: 8.1-STABLE: zfs and sendfile: problem still exists
Message-ID:  <4CCAE6CE.9020509@icyb.net.ua>
In-Reply-To: <20101029151727.GY2392@deviant.kiev.zoral.com.ua>
References:  <4CCACDC0.7050802@icyb.net.ua> <1BDB4D1B02274CC8AA2DD5E68190CB5D@vosz.local> <20101029145349.GX2392@deviant.kiev.zoral.com.ua> <4CCAE2B6.1050906@icyb.net.ua> <20101029151727.GY2392@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
on 29/10/2010 18:17 Kostik Belousov said the following:
> On Fri, Oct 29, 2010 at 06:05:26PM +0300, Andriy Gapon wrote:
>> on 29/10/2010 17:53 Kostik Belousov said the following:
>>> Could it be the priming of the vm object pages content ?
>>
>> Sorry, not familiar with this term.
>> Do you mean prepopulation of vm object with valid pages?
>>
>>> Due to double-buffering, and (possibly false) optimization to only
>>
>> What optimization?
> On zfs vnode read, the page from the corresponding vm object is only
> populated with the vnode data if the page already exists in the
> object.

Do you mean a specific type of read?
For "normal" reads it's the other way around - if the page already exists and is
valid, then we read from the page, not from ARC.

> Not doing the optimization would be to allocate the page uncoditionally
> on the read if not already present, and copy the data from ARC to the page.
>>
>>> perform double-buffering when vm object already has some data cached,
>>> reads can prime vm object page list before file is mmapped or
>>> sendfile-ed.
>>>
>>
>> No double-buffering is done to optimize anything. Double-buffering
>> is a consequence of having page cache and ARC. The special
>> "double-buffering code" is to just handle that fact - e.g. making
>> sure that VOP_READ reads data from page cache instead of ARC if it's
>> possible that the data in them differs (i.e. page cache has more
>> recent data).
>>
>> So, if I understood the term 'priming' correctly, no priming should
>> ever occur.
> The priming is done on the first call to VOP_READ() with the right
> offset after the page is allocated.

Again, what is priming?

-- 
Andriy Gapon



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