On Tue, Jan 25, 2022 at 04:59:17PM +0300, Kirill A. Shutemov wrote: > On Tue, Jan 25, 2022 at 01:23:21PM +0000, Matthew Wilcox wrote: > > On Tue, Jan 25, 2022 at 02:42:12PM +0300, Kirill A. Shutemov wrote: > > > I wounder if we can get away with zero-API here: we can transparently > > > create/use shared page tables for any inode on mmap(MAP_SHARED) as long as > > > size and alignment is sutiable. Page tables will be linked to the inode > > > and will be freed when the last of such mapping will go away. I don't see > > > a need in new syscalls of flags to existing one. > > > > That's how HugeTLBfs works today, right? Would you want that mechanism > > hoisted into the real MM? Because my plan was the opposite -- remove it > > from the shadow MM once mshare() is established. > > I hate HugeTLBfs because it is a special place with own rules. mshare() as > it proposed creates a new special place. I don't like this. No new special place. I suppose the only thing it creates that's "new" is an MM without any threads of its own. And from the MM point of view, that's not a new thing at all because the MM simply doesn't care how many threads share an MM. > It's better to find a way to integrate the feature natively into core-mm > and make as much users as possible to benefit from it. That's what mshare is trying to do! > I think zero-API approach (plus madvise() hints to tweak it) is worth > considering. I think the zero-API approach actually misses out on a lot of possibilities that the mshare() approach offers. For example, mshare() allows you to mmap() many small files in the shared region -- you can't do that with zeroAPI.