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.
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.
pgpsWIastHVGc.pgp
Description: PGP signature