lkml.org 
[lkml]   [2023]   [Jan]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH 33/41] mm: introduce per-VMA lock statistics
    From
    Add a new CONFIG_PER_VMA_LOCK_STATS config option to dump extra
    statistics about handling page fault under VMA lock.

    Signed-off-by: Suren Baghdasaryan <surenb@google.com>
    ---
    include/linux/vm_event_item.h | 6 ++++++
    include/linux/vmstat.h | 6 ++++++
    mm/Kconfig.debug | 8 ++++++++
    mm/vmstat.c | 6 ++++++
    4 files changed, 26 insertions(+)

    diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h
    index 7f5d1caf5890..8abfa1240040 100644
    --- a/include/linux/vm_event_item.h
    +++ b/include/linux/vm_event_item.h
    @@ -149,6 +149,12 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
    #ifdef CONFIG_X86
    DIRECT_MAP_LEVEL2_SPLIT,
    DIRECT_MAP_LEVEL3_SPLIT,
    +#endif
    +#ifdef CONFIG_PER_VMA_LOCK_STATS
    + VMA_LOCK_SUCCESS,
    + VMA_LOCK_ABORT,
    + VMA_LOCK_RETRY,
    + VMA_LOCK_MISS,
    #endif
    NR_VM_EVENT_ITEMS
    };
    diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
    index 19cf5b6892ce..fed855bae6d8 100644
    --- a/include/linux/vmstat.h
    +++ b/include/linux/vmstat.h
    @@ -125,6 +125,12 @@ static inline void vm_events_fold_cpu(int cpu)
    #define count_vm_tlb_events(x, y) do { (void)(y); } while (0)
    #endif

    +#ifdef CONFIG_PER_VMA_LOCK_STATS
    +#define count_vm_vma_lock_event(x) count_vm_event(x)
    +#else
    +#define count_vm_vma_lock_event(x) do {} while (0)
    +#endif
    +
    #define __count_zid_vm_events(item, zid, delta) \
    __count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)

    diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug
    index fca699ad1fb0..32a93b064590 100644
    --- a/mm/Kconfig.debug
    +++ b/mm/Kconfig.debug
    @@ -207,3 +207,11 @@ config PTDUMP_DEBUGFS
    kernel.

    If in doubt, say N.
    +
    +
    +config PER_VMA_LOCK_STATS
    + bool "Statistics for per-vma locks"
    + depends on PER_VMA_LOCK
    + default y
    + help
    + Statistics for per-vma locks.
    diff --git a/mm/vmstat.c b/mm/vmstat.c
    index 1ea6a5ce1c41..4f1089a1860e 100644
    --- a/mm/vmstat.c
    +++ b/mm/vmstat.c
    @@ -1399,6 +1399,12 @@ const char * const vmstat_text[] = {
    "direct_map_level2_splits",
    "direct_map_level3_splits",
    #endif
    +#ifdef CONFIG_PER_VMA_LOCK_STATS
    + "vma_lock_success",
    + "vma_lock_abort",
    + "vma_lock_retry",
    + "vma_lock_miss",
    +#endif
    #endif /* CONFIG_VM_EVENT_COUNTERS || CONFIG_MEMCG */
    };
    #endif /* CONFIG_PROC_FS || CONFIG_SYSFS || CONFIG_NUMA || CONFIG_MEMCG */
    --
    2.39.0
    \
     
     \ /
      Last update: 2023-03-26 23:33    [W:4.034 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site