lkml.org 
[lkml]   [2024]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH -next v6 0/2] Make memory reclamation measurable
    From
    ping~

    在 2024/1/5 9:36, Bixuan Cui 写道:
    > When the system memory is low, kswapd reclaims the memory. The key steps
    > of memory reclamation include
    > 1.shrink_lruvec
    > * shrink_active_list, moves folios from the active LRU to the inactive LRU
    > * shrink_inactive_list, shrink lru from inactive LRU list
    > 2.shrink_slab
    > * shrinker->count_objects(), calculates the freeable memory
    > * shrinker->scan_objects(), reclaims the slab memory
    >
    > The existing tracers in the vmscan are as follows:
    >
    > --do_try_to_free_pages
    > --shrink_zones
    > --trace_mm_vmscan_node_reclaim_begin (tracer)
    > --shrink_node
    > --shrink_node_memcgs
    > --trace_mm_vmscan_memcg_shrink_begin (tracer)
    > --shrink_lruvec
    > --shrink_list
    > --shrink_active_list
    > --trace_mm_vmscan_lru_shrink_active (tracer)
    > --shrink_inactive_list
    > --trace_mm_vmscan_lru_shrink_inactive (tracer)
    > --shrink_active_list
    > --shrink_slab
    > --do_shrink_slab
    > --shrinker->count_objects()
    > --trace_mm_shrink_slab_start (tracer)
    > --shrinker->scan_objects()
    > --trace_mm_shrink_slab_end (tracer)
    > --trace_mm_vmscan_memcg_shrink_end (tracer)
    > --trace_mm_vmscan_node_reclaim_end (tracer)
    >
    > If we get the duration and quantity of shrink lru and slab,
    > then we can measure the memory recycling, as follows
    >
    > Measuring memory reclamation with bpf:
    > LRU FILE:
    > CPU COMM ShrinkActive(us) ShrinkInactive(us) Reclaim(page)
    > 7 kswapd0 26 51 32
    > 7 kswapd0 52 47 13
    > SLAB:
    > CPU COMM OBJ_NAME Count_Dur(us) Freeable(page) Scan_Dur(us) Reclaim(page)
    > 1 kswapd0 super_cache_scan.cfi_jt 2 341 3225 128
    > 7 kswapd0 super_cache_scan.cfi_jt 0 2247 8524 1024
    > 7 kswapd0 super_cache_scan.cfi_jt 2367 0 0 0
    >
    > For this, add the new tracer to shrink_active_list/shrink_inactive_list
    > and shrinker->count_objects().
    >
    > Changes:
    > v6: * Add Reviewed-by from Steven Rostedt.
    > v5: * Use 'DECLARE_EVENT_CLASS(mm_vmscan_lru_shrink_start_template' to
    > replace 'RACE_EVENT(mm_vmscan_lru_shrink_inactive/active_start'
    > * Add the explanation for adding new shrink lru events into 'mm: vmscan: add new event to trace shrink lru'
    > v4: Add Reviewed-by and Changlog to every patch.
    > v3: Swap the positions of 'nid' and 'freeable' to prevent the hole in the trace event.
    > v2: Modify trace_mm_vmscan_lru_shrink_inactive() in evict_folios() at the same time to fix build error.
    >
    > cuibixuan (2):
    > mm: shrinker: add new event to trace shrink count
    > mm: vmscan: add new event to trace shrink lru
    >
    > include/trace/events/vmscan.h | 80 ++++++++++++++++++++++++++++++++++-
    > mm/shrinker.c | 4 ++
    > mm/vmscan.c | 11 +++--
    > 3 files changed, 90 insertions(+), 5 deletions(-)
    >

    \
     
     \ /
      Last update: 2024-05-27 14:31    [W:2.931 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site