[PATCH/RFC 0/14] Shared Policy Overview

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[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


[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]     [Devices]

  Powered by Linux