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 _______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"