[RFC] Shared Policy Cleanup, Fixes and Mapped File Policy At the Linux Plumber's conference, Andi Kleen encouraged me again to resubmit my automatic page migration patches because he thinks they will be useful for virtualization. Later, in the Virtualization mini-conf, the subject came up during a presentation about adding NUMA awareness to qemu/kvm. After the presentation, I discussed these series with Andrea Arcangeli and he also encouraged me to post them. My position within HP has changed such that I'm not sure how much time I'll have to spend on this area nor whether I'll have access to the larger NUMA platforms on which to test the patches thoroughly. However, here is the first of 4 series that comprise my shared policy enhancements and lazy/auto-migration enhancement. I have rebased the patches against a recent mmotm tree. This rebase built cleanly, booted and passed a few ad hoc tests on x86_64. I've made a pass over the patch descriptions to update them. If there is sufficient interest in merging this, I'll do what I can to assist in the completion and testing of the series. To follow: 2) Migrate-on-fault a.k.a Lazy Migration facility 3) Auto [as in "self"] migration facility 4) a Migration Cache -- originally written by Marcello Tosatti I'll announce this series and the automatic/lazy migration series to follow on lkml, linux-mm, ... However, I'll limit the actual posting to linux-numa to avoid spamming the other lists. I'm posting this shared policy series before the lazy and automatic migration series because the latter series are based atop this one in my tree. I want to send out a buildable, runnable set of patches and don't have the time to rebase the later series right now. And, although the later series do not functionally depend on this series, I think it provides some reasonable cleanup and finishes some, IMO, missing shared policy capabilities. But, ultimately it's not required for the auto/lazy-migration feature. --- This series: 1) cleans up some shared policy variable naming, 2) reworks the shared policy internal interfaces to moved it from a "vma,address" orientation to an "policy, offset" one, where the offset is used for selected the node for an interleaved policy. This rework allows us to remove the last usage of a "pseudo-vma" to lookup or set mempolicy on a shared memory object. 3) reworks vma policy handling so that vmas are not split for shared memory policy because the shared policy infrastructure handles subrange mempolicies for the object. Thus there is no need to split vmas for different mempolicy on different ranges of the shared object. 4) Fixes a long standing issue with /proc/<pid>/numa_maps where one can see different mempolicies on shared memory objects depending on which task applied the policies. This occurs because Linux only split the vmas for the task applying the shared policy. Essentially, now numa_maps now looks into a shared object mapped by a single vma and reports any mempolicy on subranges of the object. 5) Hooks up the hugetlbfs back shmem regions [SHM_HUGE] to the shared mempolicy mechanism. The hugetlbfs inode has contained the shared policy structure for quite some time, but the vm ops were never hooked up. Optional behavior; default is current behavior -- no shared policy on SHM_HUGE regions. 6) Enhances shared, mmap()'ed regular files to support shared policy on the resulting memory object as long as it remains mmap()'ed. Optional behavior; default is current behavior -- no shared policy on shared, mmap()ed files [except tmpfs]. 7) Builds cleanly [my .config, anyway] and passes ad hoc memtoy tests on x86_64. Has been built/tested on ia64 in the past but not recently. --- Lee Schermerhorn -- To unsubscribe from this list: send the line "unsubscribe linux-numa" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html