Hmm ... this would explain why the read preformance goes down.
Dave? Is there a simple solution around? Something like switching back
to GFP_ATOMIC for buffer heads, using GFP_BUFFER in refill_freelist
say upto `nr_free_pages > 10' and after this mark use GFP_ATOMIC
for grow_buffers() ? Clearly without loosing the win of swaping
on buffer request :-)
... a compromise is needed.
>
> Previously, refill_freelist() wouldn't grow buffers if there was not
> enough free-memory available, and if the GFP_ATOMIC failed 'bdflush' would
> be run.
>
> Trying running 'top' to find out the highwater of buffers with and without
> the patch.
>
> This is just I guess. I haven't been able to try the patch out.
What's about age_page() in shrink_mmap() mm/filemap.c ... any suggestions
or hints. Is there a fast way to get the age of the pte's?
Werner