Hello, Richard's patch for the VM cache policy has the potential to speed up Hurd systems a lot by allowing for more VM objects to be cached. Previously there was a fixed limit (4000), whereas with this patch almost the entire memory can be used as cache.
He mentions three problems preventing the patch to be merged as-is: a) thread storms in filesystem pagers, b) linear scans through the objects when trying to evict pages, and c) chance of swapping deadlocks. We dealt with a) by using a userspace queue and a fixed number of threads in libpager. b) is adressed in this patch series by introducing a list of clean pages and evicting those first. I cannot comment on c). * [PATCH gnumach 1/3] VM cache policy change This is Richard's patch, unchanged. * [PATCH gnumach 2/3] vm: keep track of clean pages Hat tip to coccinelle for writing most of this patch for me :) * [PATCH gnumach 3/3] vm: evict clean pages first This is a (maybe somewhat naive) modification to the pageout daemon to make it evict (all) clean pages first. If a clean page is still deemed unsuitable for eviction, it is moved to the end of the queue. This seems to work very well on my development machine. Please comment :) Justus