On Mon, Feb 28, 2022 at 10:46 AM Michal Koutný mkoutny@suse.com wrote:
On Fri, Feb 25, 2022 at 05:42:57PM -0800, Shakeel Butt shakeelb@google.com wrote:
Yes, the right fix would be to optimize the flushing code (but that would require more work/time). However I still think letting performance critical code paths to skip the sync flush would be good in general. So, if the current patch is not to your liking we can remove mem_cgroup_flush_stats() from workingset_refault().
What about flushing just the subtree of the memcg where the refault happens? It doesn't reduce the overall work and there's still full-tree cgroup_rstat_lock but it should make the chunks of work smaller durations more regular.
We can try that and I will send a patch to Ivan and Daniel to try on their workload to see the real impact of targeted memcg flushing. However I am not very optimistic about it.