On Mon, 30 Mar 2015, Michal Hocko wrote:
Why cannot we do something like refresh_cpu_vm_stats from the IRQ context? Especially the first zone stat part. The per-cpu pagesets is more costly and it would need a special treatment, alright. A simple way would be to splice the lists from the per-cpu context and then free those pages from the kthread context.
That would work.
I am still wondering why those two things were squashed into a single place. Why kswapd is not doing the pcp cleanup?
They were squashed together by me for conveniences sake. They could be separated. AFAICT the pcp cleanup could be done only on demand and we already have logic for that when flushihng via IPI.