lkml.org 
[lkml]   [2016]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[PATCH 0/3] Add names of shrinkers and have tracepoints display them
    Hello,

    I'm an Outreachy intern working under Rik van Riel. My project is about
    latency tracing during memory allocation. The idea is to use
    tracepoints, both existing and new, to derive higher level information
    on memory allocation and identify where time was spent.
    This patchset which

    1, adds a new field to struct shrinker to hold names of shrinkers,
    2, updates the newly added field in instances of the struct,
    3, changes tracepoint definitions to have the field displayed,

    would be useful when one wants to observe which shrinkers
    contributed to excessive latencies.

    A post processing script like the one here-

    https://github.com/Jananiravichandran/Analyzing-tracepoints/blob/master/shrink_slab_latencies.py ,

    can use the new information this patchset adds to see which shrinkers
    were invoked and how long each of them took.

    Sample output:

    i915_gem_shrinker : 0.166 ms
    ext4_es_shrinker : 0.954 ms
    workingset_shadow_shrinker : 1.091 ms
    deferred_split_shrinker : 6.043 ms
    super_cache_shrinker : 84.218 ms

    total time spent in shrinkers = 92.472 ms

    This shows the various shrinkers called and the times spent.

    Janani Ravichandran (3):
    Add a new field to struct shrinker
    Update name field for all shrinker instances
    Add name fields in shrinker tracepoint definitions

    arch/x86/kvm/mmu.c | 1 +
    drivers/gpu/drm/i915/i915_gem_shrinker.c | 1 +
    drivers/gpu/drm/ttm/ttm_page_alloc.c | 1 +
    drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 1 +
    drivers/md/bcache/btree.c | 1 +
    drivers/md/dm-bufio.c | 1 +
    drivers/md/raid5.c | 1 +
    drivers/staging/android/ashmem.c | 1 +
    drivers/staging/android/ion/ion_heap.c | 1 +
    drivers/staging/android/lowmemorykiller.c | 1 +
    drivers/staging/lustre/lustre/ldlm/ldlm_pool.c | 1 +
    drivers/staging/lustre/lustre/obdclass/lu_object.c | 1 +
    drivers/staging/lustre/lustre/ptlrpc/sec_bulk.c | 1 +
    fs/ext4/extents_status.c | 1 +
    fs/f2fs/super.c | 1 +
    fs/gfs2/glock.c | 1 +
    fs/gfs2/quota.c | 1 +
    fs/mbcache.c | 1 +
    fs/nfs/super.c | 1 +
    fs/nfsd/nfscache.c | 1 +
    fs/quota/dquot.c | 1 +
    fs/super.c | 1 +
    fs/ubifs/super.c | 1 +
    fs/xfs/xfs_buf.c | 1 +
    fs/xfs/xfs_qm.c | 1 +
    include/linux/shrinker.h | 1 +
    include/trace/events/vmscan.h | 10 ++++++++--
    mm/huge_memory.c | 2 ++
    mm/workingset.c | 1 +
    mm/zsmalloc.c | 1 +
    net/sunrpc/auth.c | 1 +
    31 files changed, 39 insertions(+), 2 deletions(-)

    --
    2.7.0

    \
     
     \ /
      Last update: 2016-07-09 11:21    [W:3.002 / U:0.256 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site