Hi. On Tue, May 14, 2019 at 12:12:16PM +0300, Kirill Tkhai wrote: > > Immediate question: what should be actually done on this? I see 2 > > options: > > > > 1) mark all VMAs as mergeable + set some flag for mmap() to mark all > > further allocations as mergeable as well; > > 2) just mark all the VMAs as mergeable; userspace can call this > > periodically to mark new VMAs. > > > > My prediction is that 2) is less destructive, and the decision is > > preserved predominantly to userspace, thus it would be a desired option. > > Let's see, how we use KSM now. It's good for virtual machines: people > install the same distribution in several VMs, and they have the same > packages and the same files. When you read a file inside VM, its pages > are file cache for the VM, but they are anonymous pages for host kernel. > > Hypervisor marks VM memory as mergeable, and host KSM merges the same > anonymous pages together. Many of file cache inside VM is constant > content, so we have good KSM compression on such the file pages. > The result we have is explainable and expected. Yup, correct. > But we don't know anything about pages, you have merged on your laptop. > We can't make any assumptions before analysis of applications, which > produce such the pages. Let's check what happens before we try to implement > some specific design (if we really need something to implement). > > The rest is just technical details. We may implement everything we need > on top of this (even implement a polling of /proc/[pid]/maps and write > a task and address of vma to force_madvise or similar file). I'm not sure that reviewing all the applications falls under the scope of this and/or similar submission. Personally I do not feel comfortable reviewing Firefox code, for example. But I do run 2 instances of FF, one for work stuff, one for personal stuff, so merging its memory would be definitely beneficial for me. I believe I'm not the only one doing this, and things are not limited to Firefox only, of course. Please consider checking a v2 submission I've just posted. It implements your suggestion on "force_madvise" knob, and I find your feedback very relevant and useful. Thanks. -- Best regards, Oleksandr Natalenko (post-factum) Senior Software Maintenance Engineer