duppage() causes the freelist to be shuffled differently. without
stuffing cached pages at the freelist tail, the tail accumulates
a uncached "stopper" page which breaks the invariant of imagereclaim
which just scans from the tail backwards as long as the pages are
cached.

imagereclaim does not move the pages to the head after uncaching them!
so by default imagereclaim prevents the cached pages before the ones
it reclaimed from being reclaimed ever.

before image reclaim: H UUUUUUUUCCCCCCCCCC T
after image reclaim:  H UUUUUUUUCCCCUUUUUU T
                                    ^- as far was imagereclaim went

nwith duppage, theres always new cached pages added at the tail.

i suspect once you run out of images, imagereclaim will run constantly and
blow away the little usefull image cache you still have causing additional
reads to page them back in.

--
cinap

Reply via email to