• Huang Ying's avatar
    /proc/PID/smaps: Add PMD migration entry parsing · c94b6923
    Huang Ying authored
    Now, when reading /proc/PID/smaps, the PMD migration entry in page table
    is simply ignored.  To improve the accuracy of /proc/PID/smaps, its
    parsing and processing is added.
    
    To test the patch, we run pmbench to eat 400 MB memory in background,
    then run /usr/bin/migratepages and `cat /proc/PID/smaps` every second.
    The issue as follows can be reproduced within 60 seconds.
    
    Before the patch, for the fully populated 400 MB anonymous VMA, some THP
    pages under migration may be lost as below.
    
      7f3f6a7e5000-7f3f837e5000 rw-p 00000000 00:00 0
      Size:             409600 kB
      KernelPageSize:        4 kB
      MMUPageSize:           4 kB
      Rss:              407552 kB
      Pss:              407552 kB
      Shared_Clean:          0 kB
      Shared_Dirty:          0 kB
      Private_Clean:         0 kB
      Private_Dirty:    407552 kB
      Referenced:       301056 kB
      Anonymous:        407552 kB
      LazyFree:              0 kB
      AnonHugePages:    405504 kB
      ShmemPmdMapped:        0 kB
      FilePmdMapped:        0 kB
      Shared_Hugetlb:        0 kB
      Private_Hugetlb:       0 kB
      Swap:                  0 kB
      SwapPss:               0 kB
      Locked:                0 kB
      THPeligible:		1
      VmFlags: rd wr mr mw me ac
    
    After the patch, it will be always,
    
      7f3f6a7e5000-7f3f837e5000 rw-p 00000000 00:00 0
      Size:             409600 kB
      KernelPageSize:        4 kB
      MMUPageSize:           4 kB
      Rss:              409600 kB
      Pss:              409600 kB
      Shared_Clean:          0 kB
      Shared_Dirty:          0 kB
      Private_Clean:         0 kB
      Private_Dirty:    409600 kB
      Referenced:       294912 kB
      Anonymous:        409600 kB
      LazyFree:              0 kB
      AnonHugePages:    407552 kB
      ShmemPmdMapped:        0 kB
      FilePmdMapped:        0 kB
      Shared_Hugetlb:        0 kB
      Private_Hugetlb:       0 kB
      Swap:                  0 kB
      SwapPss:               0 kB
      Locked:                0 kB
      THPeligible:		1
      VmFlags: rd wr mr mw me ac
    Signed-off-by: default avatar"Huang, Ying" <ying.huang@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Reviewed-by: default avatarZi Yan <ziy@nvidia.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Acked-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: "Jérôme Glisse" <jglisse@redhat.com>
    Cc: Yang Shi <yang.shi@linux.alibaba.com>
    Link: http://lkml.kernel.org/r/20200403123059.1846960-1-ying.huang@intel.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c94b6923
task_mmu.c 45.3 KB