• Christoph Lameter's avatar
    [PATCH] numa_maps update · 397874df
    Christoph Lameter authored
    Change the format of numa_maps to be more compact and contain additional
    information that is useful for managing and troubleshooting memory on a
    NUMA system.  Numa_maps can now also support huge pages.
    
    Fixes:
    
    1. More compact format. Only display fields if they contain additional
    	information.
    
    2. Always display information for all vmas. The old numa_maps did not display
    	vma with no mapped entries. This was a bit confusing because page
    	migration removes ptes for file backed vmas. After page migration
    	a part of the vmas vanished.
    
    3. Rename maxref to maxmap. This is the maximum mapcount of all the pages
    	in a vma and may be used as an indicator as to how many processes
    	may be using a certain vma.
    
    4. Include the ability to scan over huge page vmas.
    
    New items shown:
    
    dirty
    	Number of pages in a vma that have either the dirty bit set in the
    	page_struct or in the pte.
    
    file=<filename>
    	The file backing the pages if any
    
    stack
    	Stack area
    
    heap
    	Heap area
    
    huge
    	Huge page area. The number of pages shows is the number of huge
    	pages not the regular sized pages.
    
    swapcache
    	Number of pages with swap references. Must be >0 in order to
    	be shown.
    
    active
    	Number of active pages. Only displayed if different from the number
    	of pages mapped.
    
    writeback
    	Number of pages under writeback. Only displayed if >0.
    
    Sample ouput of a process using huge pages:
    
    00000000 default
    2000000000000000 default file=/lib/ld-2.3.90.so mapped=13 mapmax=30 N0=13
    2000000000044000 default file=/lib/ld-2.3.90.so anon=2 dirty=2 swapcache=2 N2=2
    2000000000064000 default file=/lib/librt-2.3.90.so mapped=2 active=1 N1=1 N3=1
    2000000000074000 default file=/lib/librt-2.3.90.so
    2000000000080000 default file=/lib/librt-2.3.90.so anon=1 swapcache=1 N2=1
    2000000000084000 default
    2000000000088000 default file=/lib/libc-2.3.90.so mapped=52 mapmax=32 active=48 N0=52
    20000000002bc000 default file=/lib/libc-2.3.90.so
    20000000002c8000 default file=/lib/libc-2.3.90.so anon=3 dirty=2 swapcache=3 active=2 N1=1 N2=2
    20000000002d4000 default anon=1 swapcache=1 N1=1
    20000000002d8000 default file=/lib/libpthread-2.3.90.so mapped=8 mapmax=3 active=7 N2=2 N3=6
    20000000002fc000 default file=/lib/libpthread-2.3.90.so
    2000000000308000 default file=/lib/libpthread-2.3.90.so anon=1 dirty=1 swapcache=1 N1=1
    200000000030c000 default anon=1 dirty=1 swapcache=1 N1=1
    2000000000320000 default anon=1 dirty=1 N1=1
    200000000071c000 default
    2000000000720000 default anon=2 dirty=2 swapcache=1 N1=1 N2=1
    2000000000f1c000 default
    2000000000f20000 default anon=2 dirty=2 swapcache=1 active=1 N2=1 N3=1
    200000000171c000 default
    2000000001720000 default anon=1 dirty=1 swapcache=1 N1=1
    2000000001b20000 default
    2000000001b38000 default file=/lib/libgcc_s.so.1 mapped=2 N1=2
    2000000001b48000 default file=/lib/libgcc_s.so.1
    2000000001b54000 default file=/lib/libgcc_s.so.1 anon=1 dirty=1 active=0 N1=1
    2000000001b58000 default file=/lib/libunwind.so.7.0.0 mapped=2 active=1 N1=2
    2000000001b74000 default file=/lib/libunwind.so.7.0.0
    2000000001b80000 default file=/lib/libunwind.so.7.0.0
    2000000001b84000 default
    4000000000000000 default file=/media/huge/test9 mapped=1 N1=1
    6000000000000000 default file=/media/huge/test9 anon=1 dirty=1 active=0 N1=1
    6000000000004000 default heap
    607fffff7fffc000 default anon=1 dirty=1 swapcache=1 N2=1
    607fffffff06c000 default stack anon=1 dirty=1 active=0 N1=1
    8000000060000000 default file=/mnt/huge/test0 huge dirty=3 N1=3
    8000000090000000 default file=/mnt/huge/test1 huge dirty=3 N0=1 N2=2
    80000000c0000000 default file=/mnt/huge/test2 huge dirty=3 N1=1 N3=2
    Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
    Cc: Andi Kleen <ak@muc.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    397874df
mempolicy.c 46.6 KB