Another issue that might be affecting the ability to free up pages is
that the current read-ahead algorithm doesn't seem to be sensitive to
the system memory levels. Reading a file will cause the read-ahead to
vacuum up any free pages, and even though they're only loosely bound as
inode cache, it may take a couple of sweeps of shrink_mmap to free them
again.
Has anyone experimented with shutting off read-ahead when the available
memory drops below some threshold?
-Bill