• Greg Thelen's avatar
    mm: consider the entire user address space during node migration · 6ec3a127
    Greg Thelen authored
    Use mm->task_size instead of TASK_SIZE to ensure that the entire user
    address space is migrated.  mm->task_size is independent of the calling
    task context.  TASK SIZE may be dependant on the address space size of the
    calling process.  Usage of TASK_SIZE can lead to partial address space
    migration if the calling process was 32 bit and the migrating process was
    64 bit.
    
    Here is the test script used on 64 system with a 32 bit echo process:
    
      mount -t cgroup none /cgroup -o cpuset
      cd /cgroup
    
      mkdir 0
      echo 1 > 0/cpuset.cpus
      echo 0 > 0/cpuset.mems
      echo 1 > 0/cpuset.memory_migrate
    
      mkdir 1
      echo 1 > 1/cpuset.cpus
      echo 1 > 1/cpuset.mems
      echo 1 > 1/cpuset.memory_migrate
    
      echo $$ > 0/tasks
      64_bit_process &
      pid=$!
    
      echo $pid > 1/tasks   # This does not migrate all process pages without
                            # this patch.  If 64 bit echo is used or this patch is
                            # applied, then the full address space of $pid is
                            # migrated.
    
    To check memory migration, I watched:
      grep MemUsed /sys/devices/system/node/node*/meminfo
    Signed-off-by: default avatarGreg Thelen <gthelen@google.com>
    Acked-by: default avatarChristoph Lameter <cl@linux-foundation.org>
    Reviewed-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Cc: Balbir Singh <balbir@in.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6ec3a127
mempolicy.c 65.9 KB