Rik van Riel writes:
[...]
>
> Duh, I forgot all about the rotate_reclaimable_page() stuff.
> That may well fix all problems 2.6 would have otherwise had
> in this area.
>
> I really hope we won't need anything like the O(1) VM stuff
> in 2.6, since that would leave me more time to work on other
> cool stuff (like resource management ;)).
Page-out from end of the inactive list is not efficient, because pages
are submitted for IO in more or less random order and this results in
a lot of seeks. Test-case: replace ->writepage() with
int foofs_writepage(struct page *page)
{
SetPageDirty(page);
unlock_page(page);
return 0;
}
and run
$ time cp /tmpfs/huge-data-set /foofs
File systems (and anonymous memory) want clustered write-out and VM
designs with separate write-out queue (like O(1) VM) are better suited
for this.
Nikita.