27 Jul, 2016

1 commit

  • Page owner will be changed to store more deep stacktrace so current
    temporary buffer size isn't enough. Increase it.

    Link: http://lkml.kernel.org/r/1464230275-25791-5-git-send-email-iamjoonsoo.kim@lge.com
    Signed-off-by: Joonsoo Kim
    Acked-by: Vlastimil Babka
    Cc: Mel Gorman
    Cc: Minchan Kim
    Cc: Alexander Potapenko
    Cc: Hugh Dickins
    Cc: Michal Hocko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joonsoo Kim
     

23 Jul, 2016

1 commit

  • The curly braces are missing here so we print stuff unintentionally.

    Fixes: 9da4714a2d44 ('slub: slabinfo update for cmpxchg handling')
    Link: http://lkml.kernel.org/r/20160715211243.GE19522@mwanda
    Signed-off-by: Dan Carpenter
    Acked-by: Christoph Lameter
    Cc: Sergey Senozhatsky
    Cc: Colin Ian King
    Cc: Laura Abbott
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     

25 Jun, 2016

1 commit


18 Mar, 2016

3 commits

  • I found that page-types is very slow and my testing shows many timeout
    errors. Here's an example with a simple program allocating 1000 thps.

    $ time ./page-types -p $(pgrep -f test_alloc)
    ...
    real 0m17.201s
    user 0m16.889s
    sys 0m0.312s

    Most of time is spent in memset(). Currently memset() clears over whole
    buffer for every walk_pfn() call, which is inefficient when walk_pfn()
    is called from walk_vma(), because in that case walk_pfn() is called for
    each pfn. So this patch limits the zero initialization only for the
    first element.

    $ time ./page-types.patched -p $(pgrep -f test_alloc)
    ...
    real 0m0.182s
    user 0m0.046s
    sys 0m0.135s

    Fixes: 954e95584579 ("tools/vm/page-types.c: add memory cgroup dumping and filtering")
    Signed-off-by: Naoya Horiguchi
    Suggested-by: Konstantin Khlebnikov
    Cc: Vladimir Davydov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Naoya Horiguchi
     
  • This adds two command line keys:

    -c|--cgroup path|@inode Walk only pages owned by this memory cgroup
    -C|--list-cgroup Show memory cgroup inodes

    [vdavydov@virtuozzo.com: opt_cgroup should be uint64_t. Fix conflicts with "tools/vm/page-types.c: support swap entry"]
    Signed-off-by: Konstantin Khlebnikov
    Cc: Naoya Horiguchi
    Reviewed-by: Vladimir Davydov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     
  • /proc/pid/pagemap (pte_to_pagemap_entry() internally) already reports
    about swap entry, so let's make the in-kernel utility aware of it.

    Signed-off-by: Naoya Horiguchi
    Cc: Vladimir Davydov
    Cc: Konstantin Khlebnikov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Naoya Horiguchi
     

16 Mar, 2016

1 commit

  • SLAB_DEBUG_FREE allows expensive consistency checks at free to be turned
    on or off. Expand its use to be able to turn off all consistency
    checks. This gives a nice speed up if you only want features such as
    poisoning or tracing.

    Credit to Mathias Krause for the original work which inspired this
    series

    Signed-off-by: Laura Abbott
    Acked-by: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Cc: Kees Cook
    Cc: Mathias Krause
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Laura Abbott
     

21 Nov, 2015

1 commit


06 Nov, 2015

8 commits

  • GNUplot `slabinfo -X' stats, collected, for example, using the
    following command:
    while [ 1 ]; do slabinfo -X >> stats; sleep 1; done

    `slabinfo-gnuplot.sh stats' pre-processes collected records
    and generate graphs (totals, slabs sorted by size, slabs
    sorted by size).

    Graphs can be [individually] regenerate with different samples
    range and graph width-heigh (-r %d,%d and -s %d,%d options).

    To visually compare N `totals' graphs:
    slabinfo-gnuplot.sh -t FILE1-totals FILE2-totals ... FILEN-totals

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • checkpatch.pl complains about globals being explicitly zeroed
    out: "ERROR: do not initialise globals to 0 or NULL".

    New globals, introduced in this patch set, have no explicit 0
    initialization; clean up the old ones to make it less hairy.

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • Introduce "-B|--Bytes" opt to disable store_size() dynamic
    size scaling and report size in bytes instead.

    This `expands' the interface a bit, it's impossible to use
    printf("%6s") anymore to output sizes.

    Example:

    slabinfo -X -N 2
    Slabcache Totals
    ----------------
    Slabcaches : 91 Aliases : 119->69 Active: 63
    Memory used: 199798784 # Loss : 10689376 MRatio: 5%
    # Objects : 324301 # PartObj: 18151 ORatio: 5%

    Per Cache Average Min Max Total
    ----------------------------------------------------------------------------
    #Objects 5147 1 89068 324301
    #Slabs 199 1 3886 12537
    #PartSlab 12 0 240 778
    %PartSlab 32% 0% 100% 6%
    PartObjs 5 0 4569 18151
    % PartObj 26% 0% 100% 5%
    Memory 3171409 8192 127336448 199798784
    Used 3001736 160 121429728 189109408
    Loss 169672 0 5906720 10689376

    Per Object Average Min Max
    -----------------------------------------------------------
    Memory 585 8 8192
    User 583 8 8192
    Loss 2 0 64

    Slabs sorted by size
    --------------------
    Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg
    ext4_inode_cache 69948 1736 127336448 3871/0/15 18 3 0 95 a
    dentry 89068 288 26058752 3164/0/17 28 1 0 98 a

    Slabs sorted by loss
    --------------------
    Name Objects Objsize Loss Slabs/Part/Cpu O/S O %Fr %Ef Flg
    ext4_inode_cache 69948 1736 5906720 3871/0/15 18 3 0 95 a
    inode_cache 11628 864 537472 642/0/4 18 2 0 94 a

    Besides, store_size() does not use powers of two for G/M/K

    if (value > 1000000000UL) {
    divisor = 100000000UL;
    trailer = 'G';
    } else if (value > 1000000UL) {
    divisor = 100000UL;
    trailer = 'M';
    } else if (value > 1000UL) {
    divisor = 100;
    trailer = 'K';
    }

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • Add "-X|--Xtotals" opt to output extended totals summary,
    which includes:
    -- totals summary
    -- slabs sorted by size
    -- slabs sorted by loss (waste)

    Example:
    =======

    slabinfo --X -N 1
    Slabcache Totals
    ----------------
    Slabcaches : 91 Aliases : 120->69 Active: 65
    Memory used: 568.3M # Loss : 30.4M MRatio: 5%
    # Objects : 920.1K # PartObj: 161.2K ORatio: 17%

    Per Cache Average Min Max Total
    ---------------------------------------------------------
    #Objects 14.1K 1 227.8K 920.1K
    #Slabs 533 1 11.7K 34.7K
    #PartSlab 86 0 4.3K 5.6K
    %PartSlab 24% 0% 100% 16%
    PartObjs 17 0 129.3K 161.2K
    % PartObj 17% 0% 100% 17%
    Memory 8.7M 8.1K 384.7M 568.3M
    Used 8.2M 160 366.5M 537.9M
    Loss 468.8K 0 18.2M 30.4M

    Per Object Average Min Max
    ---------------------------------------------
    Memory 587 8 8.1K
    User 584 8 8.1K
    Loss 2 0 64

    Slabs sorted by size
    ----------------------
    Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg
    ext4_inode_cache 211142 1736 384.7M 11732/40/10 18 3 0 95 a

    Slabs sorted by loss
    ----------------------
    Name Objects Objsize Loss Slabs/Part/Cpu O/S O %Fr %Ef Flg
    ext4_inode_cache 211142 1736 18.2M 11732/40/10 18 3 0 95 a

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • Fix mismatches between usage() output and real opts[] options. Add
    missing alternative opt names, e.g., '-S' had no '--Size' opts[] entry,
    etc.

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • Introduce opt "-L|--sort-loss" to sort and output slabs by
    loss (waste) in slabcache().

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • Introduce opt "-N|--lines=K" to limit the number of slabs
    being reported in output_slabs().

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     
  • This patchset adds 'extended' slabinfo mode that provides additional
    information:

    -- totals summary
    -- slabs sorted by size
    -- slabs sorted by loss (waste)

    The patches also introduces several new slabinfo options to limit the
    number of slabs reported, sort slabs by loss (waste); and some fixes.

    Extended output example (slabinfo -X -N 2):

    Slabcache Totals
    ----------------
    Slabcaches : 91 Aliases : 119->69 Active: 63
    Memory used: 199798784 # Loss : 10689376 MRatio: 5%
    # Objects : 324301 # PartObj: 18151 ORatio: 5%

    Per Cache Average Min Max Total
    ----------------------------------------------------------------------------
    #Objects 5147 1 89068 324301
    #Slabs 199 1 3886 12537
    #PartSlab 12 0 240 778
    %PartSlab 32% 0% 100% 6%
    PartObjs 5 0 4569 18151
    % PartObj 26% 0% 100% 5%
    Memory 3171409 8192 127336448 199798784
    Used 3001736 160 121429728 189109408
    Loss 169672 0 5906720 10689376

    Per Object Average Min Max
    -----------------------------------------------------------
    Memory 585 8 8192
    User 583 8 8192
    Loss 2 0 64

    Slabs sorted by size
    --------------------
    Name Objects Objsize Space Slabs/Part/Cpu O/S O %Fr %Ef Flg
    ext4_inode_cache 69948 1736 127336448 3871/0/15 18 3 0 95 a
    dentry 89068 288 26058752 3164/0/17 28 1 0 98 a

    Slabs sorted by loss
    --------------------
    Name Objects Objsize Loss Slabs/Part/Cpu O/S O %Fr %Ef Flg
    ext4_inode_cache 69948 1736 5906720 3871/0/15 18 3 0 95 a
    inode_cache 11628 864 537472 642/0/4 18 2 0 94 a

    The last patch in the series addresses Linus' comment from
    http://marc.info/?l=linux-mm&m=144148518703321&w=2

    (well, it's been some time. sorry.)

    gnuplot script takes the slabinfo records file, where every record is a `slabinfo -X'
    output. So the basic workflow is, for example, as follows:

    while [ 1 ]; do slabinfo -X -N 2 >> stats; sleep 1; done
    ^C
    slabinfo-gnuplot.sh stats

    The last command will produce 3 png files (and 3 stats files)
    -- graph of slabinfo totals
    -- graph of slabs by size
    -- graph of slabs by loss

    It's also possible to select a range of records for plotting (a range of collected
    slabinfo outputs) via `-r 10,100` (for example); and compare totals from several
    measurements (to visially compare slabs behaviour (10,50 range)) using
    pre-parsed totals files:
    slabinfo-gnuplot.sh -r 10,50 -t stats-totals1 .. stats-totals2

    This also, technically, supports ktest. Upload new slabinfo to target,
    collect the stats and give the resulting stats file to slabinfo-gnuplot

    This patch (of 8):

    Use getopt constants in `struct option' ->has_arg instead of numerical
    representations.

    Signed-off-by: Sergey Senozhatsky
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sergey Senozhatsky
     

23 Sep, 2015

1 commit

  • There were some changes in how this debugfs mounting helper is
    implemented/exported and we forgot to check if there were other users
    besides perf, fix it.

    Need to do a make -C tools/ everytime we do changes to
    tools/{lib,include} and other places where we're moving things from
    tools/perf/ to be used by other tools/ living code.

    Fixed:

    $ make -C tools/vm
    make: Entering directory '/home/git/linux/tools/vm'
    make -C ../lib/api
    make[1]: Entering directory '/home/git/linux/tools/lib/api'
    CC fd/array.o
    LD fd/libapi-in.o
    CC fs/fs.o
    CC fs/tracing_path.o
    LD fs/libapi-in.o
    CC cpu.o
    LD libapi-in.o
    AR libapi.a
    make[1]: Leaving directory '/home/git/linux/tools/lib/api'
    gcc -Wall -Wextra -I../lib/ -o page-types page-types.c ../lib/api/libapi.a
    make: Leaving directory '/home/git/linux/tools/vm'
    $

    Reported-by: Vinson Lee
    Tested-by: Vinson Lee
    Cc: Steven Rostedt
    Cc: Jiri Olsa
    Cc: Matt Fleming
    Cc: Raphael Beamonte
    Cc: H. Peter Anvin
    Cc: Peter Zijlstra
    Cc: David Ahern
    Cc: Thomas Gleixner
    Cc: Namhyung Kim
    Fixes: 60a1133a5b39 ("tools lib api fs: Remove debugfs, tracefs and findfs objects")
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

09 Sep, 2015

2 commits

  • This patch sets bit 56 in pagemap if this page is mapped only once. It
    allows to detect exclusively used pages without exposing PFN:

    present file exclusive state
    0 0 0 non-present
    1 1 0 file page mapped somewhere else
    1 1 1 file page mapped only here
    1 0 0 anon non-CoWed page (shared with parent/child)
    1 0 1 anon CoWed page (or never forked)

    CoWed pages in (MAP_FILE | MAP_PRIVATE) areas are anon in this context.

    MMap-exclusive bit doesn't reflect potential page-sharing via swapcache:
    page could be mapped once but has several swap-ptes which point to it.
    Application could detect that by swap bit in pagemap entry and touch that
    pte via /proc/pid/mem to get real information.

    See http://lkml.kernel.org/r/CAEVpBa+_RyACkhODZrRvQLs80iy0sqpdrd0AaP_-tgnX3Y9yNQ@mail.gmail.com

    Requested by Mark Williamson.

    [akpm@linux-foundation.org: fix spello]
    Signed-off-by: Konstantin Khlebnikov
    Reviewed-by: Mark Williamson
    Tested-by: Mark Williamson
    Reviewed-by: Naoya Horiguchi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     
  • This patch removes page-shift bits (scheduled to remove since 3.11) and
    completes migration to the new bit layout. Also it cleans messy macro.

    Signed-off-by: Konstantin Khlebnikov
    Reviewed-by: Naoya Horiguchi
    Cc: Mark Williamson
    Tested-by: Mark Williamson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     

15 May, 2015

1 commit


12 Feb, 2015

1 commit

  • Add KPF_ZERO_PAGE flag for zero_page, so that userspace processes can
    detect zero_page in /proc/kpageflags, and then do memory analysis more
    accurately.

    Signed-off-by: Yalin Wang
    Acked-by: Kirill A. Shutemov
    Cc: Konstantin Khlebnikov
    Cc: Naoya Horiguchi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wang, Yalin
     

14 Dec, 2014

1 commit

  • This is the page owner tracking code which is introduced so far ago. It
    is resident on Andrew's tree, though, nobody tried to upstream so it
    remain as is. Our company uses this feature actively to debug memory leak
    or to find a memory hogger so I decide to upstream this feature.

    This functionality help us to know who allocates the page. When
    allocating a page, we store some information about allocation in extra
    memory. Later, if we need to know status of all pages, we can get and
    analyze it from this stored information.

    In previous version of this feature, extra memory is statically defined in
    struct page, but, in this version, extra memory is allocated outside of
    struct page. It enables us to turn on/off this feature at boottime
    without considerable memory waste.

    Although we already have tracepoint for tracing page allocation/free,
    using it to analyze page owner is rather complex. We need to enlarge the
    trace buffer for preventing overlapping until userspace program launched.
    And, launched program continually dump out the trace buffer for later
    analysis and it would change system behaviour with more possibility rather
    than just keeping it in memory, so bad for debug.

    Moreover, we can use page_owner feature further for various purposes. For
    example, we can use it for fragmentation statistics implemented in this
    patch. And, I also plan to implement some CMA failure debugging feature
    using this interface.

    I'd like to give the credit for all developers contributed this feature,
    but, it's not easy because I don't know exact history. Sorry about that.
    Below is people who has "Signed-off-by" in the patches in Andrew's tree.

    Contributor:
    Alexander Nyberg
    Mel Gorman
    Dave Hansen
    Minchan Kim
    Michal Nazarewicz
    Andrew Morton
    Jungsoo Son

    Signed-off-by: Joonsoo Kim
    Cc: Mel Gorman
    Cc: Johannes Weiner
    Cc: Minchan Kim
    Cc: Dave Hansen
    Cc: Michal Nazarewicz
    Cc: Jungsoo Son
    Cc: Ingo Molnar
    Cc: Joonsoo Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joonsoo Kim
     

10 Oct, 2014

1 commit

  • Always mark pages with PageBalloon even if balloon compaction is disabled
    and expose this mark in /proc/kpageflags as KPF_BALLOON.

    Also this patch adds three counters into /proc/vmstat: "balloon_inflate",
    "balloon_deflate" and "balloon_migrate". They accumulate balloon
    activity. Current size of balloon is (balloon_inflate - balloon_deflate)
    pages.

    All generic balloon code now gathered under option CONFIG_MEMORY_BALLOON.
    It should be selected by ballooning driver which wants use this feature.
    Currently virtio-balloon is the only user.

    Signed-off-by: Konstantin Khlebnikov
    Cc: Rafael Aquini
    Cc: Andrey Ryabinin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     

05 Jun, 2014

1 commit

  • Recently added page-cache dumping is known to be a little bit racy.
    But after race with truncate it just dies due to unhandled SIGBUS
    when it tries to poke pages beyond the new end of file.
    This patch adds handler for SIGBUS which skips the rest of the file.

    Signed-off-by: Konstantin Khlebnikov
    Cc: Naoya Horiguchi
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     

08 Apr, 2014

1 commit

  • After this patch 'page-types' can walk over a file's mappings and
    analyze populated page cache pages mostly without disturbing its state.

    It maps chunk of file, marks VMA as MADV_RANDOM to turn off readahead,
    pokes VMA via mincore() to determine cached pages, triggers page-fault
    only for them, and finally gathers information via pagemap/kpageflags.
    Before unmap it marks VMA as MADV_SEQUENTIAL for ignoring reference
    bits.

    usage: page-types -f

    If is directory it will analyse all files in all subdirectories.

    Symlinks are not followed as well as mount points. Hardlinks aren't
    handled, they'll be dumped as many times as they are found. Recursive
    walk brings all dentries into dcache and populates page cache of
    block-devices aka 'Buffers'.

    Probably it's worth to add ioctl for dumping file page cache as array of
    PFNs as a replacement for this hackish juggling with
    mmap/madvise/mincore/pagemap. Also recursive walk could be replaced
    with dumping cached inodes via some ioctl or debugfs interface followed
    by openning them via open_by_handle_at, this would fix hardlinks
    handling and unneeded population of dcache and buffers. This interface
    might be used as data source for constructing readahead plans and for
    background optimizations of actively used files.

    collateral changes:
    + fix 64-bit LFS: define _FILE_OFFSET_BITS instead of _LARGEFILE64_SOURCE
    + replace lseek + read with single pread
    + make show_page_range() reusable after flush

    usage example:

    ~/src/linux/tools/vm$ sudo ./page-types -L -f page-types
    foffset offset flags
    page-types Inode: 2229277 Size: 89065 (22 pages)
    Modify: Tue Feb 25 12:00:59 2014 (162 seconds ago)
    Access: Tue Feb 25 12:01:00 2014 (161 seconds ago)
    0 3cbf3b __RU_lA____M________________________
    1 38946a __RU_lA____M________________________
    2 1a3cec __RU_lA____M________________________
    3 1a8321 __RU_lA____M________________________
    4 3af7cc __RU_lA____M________________________
    5 1ed532 __RU_lA_____________________________
    6 2e436a __RU_lA_____________________________
    7 29a35e ___U_lA_____________________________
    8 2de86e ___U_lA_____________________________
    9 3bdfb4 ___U_lA_____________________________
    10 3cd8a3 ___U_lA_____________________________
    11 2afa50 ___U_lA_____________________________
    12 2534c2 ___U_lA_____________________________
    13 1b7a40 ___U_lA_____________________________
    14 17b0be ___U_lA_____________________________
    15 392b0c ___U_lA_____________________________
    16 3ba46a __RU_lA_____________________________
    17 397dc8 ___U_lA_____________________________
    18 1f2a36 ___U_lA_____________________________
    19 21fd30 __RU_lA_____________________________
    20 2c35ba __RU_l______________________________
    21 20f181 __RU_l______________________________

    flags page-count MB symbolic-flags long-symbolic-flags
    0x000000000000002c 2 0 __RU_l______________________________ referenced,uptodate,lru
    0x0000000000000068 11 0 ___U_lA_____________________________ uptodate,lru,active
    0x000000000000006c 4 0 __RU_lA_____________________________ referenced,uptodate,lru,active
    0x000000000000086c 5 0 __RU_lA____M________________________ referenced,uptodate,lru,active,mmap
    total 22 0

    ~/src/linux/tools/vm$ sudo ./page-types -f /
    flags page-count MB symbolic-flags long-symbolic-flags
    0x0000000000000028 21761 85 ___U_l______________________________ uptodate,lru
    0x000000000000002c 127279 497 __RU_l______________________________ referenced,uptodate,lru
    0x0000000000000068 74160 289 ___U_lA_____________________________ uptodate,lru,active
    0x000000000000006c 84469 329 __RU_lA_____________________________ referenced,uptodate,lru,active
    0x000000000000007c 1 0 __RUDlA_____________________________ referenced,uptodate,dirty,lru,active
    0x0000000000000228 370 1 ___U_l___I__________________________ uptodate,lru,reclaim
    0x0000000000000828 49 0 ___U_l_____M________________________ uptodate,lru,mmap
    0x000000000000082c 126 0 __RU_l_____M________________________ referenced,uptodate,lru,mmap
    0x0000000000000868 137 0 ___U_lA____M________________________ uptodate,lru,active,mmap
    0x000000000000086c 12890 50 __RU_lA____M________________________ referenced,uptodate,lru,active,mmap
    total 321242 1254

    Signed-off-by: Konstantin Khlebnikov
    Cc: Arnaldo Carvalho de Melo
    Cc: Fengguang Wu
    Cc: Borislav Petkov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     

17 Dec, 2013

1 commit

  • Move debugfs.* to api/fs/. We have a common tools/lib/api/ place where
    the Makefile lives and then we place the headers in subdirs.

    For example, all the fs-related stuff goes to tools/lib/api/fs/ from
    which we get libapikfs.a (acme got almost the naming he wanted :-)) and
    we link it into the tools which need it - in this case perf and
    tools/vm/page-types.

    acme:

    "Looking at the implementation, I think some tools can even link
    directly to the .o files, avoiding the .a file altogether.

    But that is just an optimization/finer granularity tools/lib/
    cherrypicking that toolers can make use of."

    Fixup documentation cleaning target while at it.

    Signed-off-by: Borislav Petkov
    Acked-by: Ingo Molnar
    Cc: Adrian Hunter
    Cc: Andi Kleen
    Cc: Arjan van de Ven
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Mike Galbraith
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Pekka Enberg
    Cc: Peter Zijlstra
    Cc: Robert Richter
    Cc: Stanislav Fomichev
    Cc: Stephane Eranian
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/r/1386605664-24041-2-git-send-email-bp@alien8.de
    Signed-off-by: Arnaldo Carvalho de Melo

    Borislav Petkov
     

13 Nov, 2013

1 commit

  • Soft dirty bit allows us to track which pages are written since the last
    clear_ref (by "echo 4 > /proc/pid/clear_refs".) This is useful for
    userspace applications to know their memory footprints.

    Note that the kernel exposes this flag via bit[55] of /proc/pid/pagemap,
    and the semantics is not a default one (scheduled to be the default in the
    near future.) However, it shifts to the new semantics at the first
    clear_ref, and the users of soft dirty bit always do it before utilizing
    the bit, so that's not a big deal. Users must avoid relying on the bit in
    page-types before the first clear_ref.

    Signed-off-by: Naoya Horiguchi
    Cc: Wu Fengguang
    Cc: Pavel Emelyanov
    Cc: Cyrill Gorcunov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Naoya Horiguchi
     

16 Mar, 2013

1 commit

  • page-flags.c had some older version of debugfs_mount copied from perf so
    convert it to using the version in the tools library.

    Signed-off-by: Borislav Petkov
    Cc: Ingo Molnar
    Cc: Steven Rostedt
    Cc: Wu Fengguang
    Link: http://lkml.kernel.org/r/1361374353-30385-8-git-send-email-bp@alien8.de
    Signed-off-by: Arnaldo Carvalho de Melo

    Borislav Petkov
     

05 Feb, 2013

1 commit


26 Oct, 2012

1 commit

  • Fix tools/vm/page-types.c to use the UAPI variant of linux/kernel-page-flags.h
    lest the following error appear:

    In file included from page-types.c:38:0:
    ../../include/linux/kernel-page-flags.h:4:42: fatal error:
    uapi/linux/kernel-page-flags.h: No such file or directory

    Reported-by: Daniel Hazelton
    Signed-off-by: David Howells
    Reviewed-by: Fengguang Wu
    Tested-by: Daniel Hazelton
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

13 Oct, 2012

1 commit


03 Jul, 2012

1 commit


30 May, 2012

2 commits

  • Compiling page-type.c with a recent compiler produces many warnings,
    mostly related to signed/unsigned comparisons. This patch cleans up most
    of them.

    One remaining warning is about an unused parameter. The file
    doesn't define a __unused macro (or the like) yet. This can be addressed
    later.

    Signed-off-by: Ulrich Drepper
    Acked-by: KOSAKI Motohiro
    Acked-by: Fengguang Wu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ulrich Drepper
     
  • Programs using /proc/kpageflags need to know about the various flags. The
    provides them and the comments in the file
    indicate that it is supposed to be used by user-level code. But the file
    is not installed.

    Install the headers and mark the unstable flags as out-of-bounds. The
    page-type tool is also adjusted to not duplicate the definitions

    Signed-off-by: Ulrich Drepper
    Acked-by: KOSAKI Motohiro
    Acked-by: Fengguang Wu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ulrich Drepper
     

29 Mar, 2012

2 commits

  • We have tools/vm/ folder for vm tools, so move slabinfo.c from tools/slub/
    to tools/vm/

    Signed-off-by: Dave Young
    Cc: Wu Fengguang
    Acked-by: Christoph Lameter
    Cc: Pekka Enberg
    Cc: Frederic Weisbecker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Young
     
  • tools/ is the better place for vm tools which are used by many people.
    Moving them to tools also make them open to more users instead of hide in
    Documentation folder.

    This patch moves page-types.c to tools/vm/page-types.c. Also add a
    Makefile in tools/vm and fix two coding style problems: a) change const
    arrary to 'const char * const', b) change a space to tab for indent.

    Signed-off-by: Dave Young
    Acked-by: Wu Fengguang
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: Frederic Weisbecker
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Young