lkml.org 
[lkml]   [2024]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v10 6/7] mm,page_owner: Filter out stacks by a threshold
    Date
    We want to be able to filter out the stacks based on a threshold we can
    can tune.
    By writing to 'count_threshold' file, we can adjust the threshold value.

    Signed-off-by: Oscar Salvador <osalvador@suse.de>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    ---
    mm/page_owner.c | 23 ++++++++++++++++++++++-
    1 file changed, 22 insertions(+), 1 deletion(-)

    diff --git a/mm/page_owner.c b/mm/page_owner.c
    index e99fbf822dd6..e56c1e92eccf 100644
    --- a/mm/page_owner.c
    +++ b/mm/page_owner.c
    @@ -846,6 +846,8 @@ static void *stack_next(struct seq_file *m, void *v, loff_t *ppos)
    return stack;
    }

    +static unsigned long page_owner_stack_threshold;
    +
    static int stack_print(struct seq_file *m, void *v)
    {
    int i, stack_count;
    @@ -858,7 +860,8 @@ static int stack_print(struct seq_file *m, void *v)
    entries = stack_record->entries;
    stack_count = refcount_read(&stack_record->count) - 1;

    - if (!nr_entries || nr_entries < 0 || stack_count < 1)
    + if (!nr_entries || nr_entries < 0 || stack_count < 1 ||
    + stack_count < page_owner_stack_threshold)
    return 0;

    for (i = 0; i < nr_entries; i++)
    @@ -891,6 +894,22 @@ static const struct file_operations page_owner_stack_operations = {
    .release = seq_release,
    };

    +static int page_owner_threshold_get(void *data, u64 *val)
    +{
    + *val = READ_ONCE(page_owner_stack_threshold);
    + return 0;
    +}
    +
    +static int page_owner_threshold_set(void *data, u64 val)
    +{
    + WRITE_ONCE(page_owner_stack_threshold, val);
    + return 0;
    +}
    +
    +DEFINE_SIMPLE_ATTRIBUTE(proc_page_owner_threshold, &page_owner_threshold_get,
    + &page_owner_threshold_set, "%llu");
    +
    +
    static int __init pageowner_init(void)
    {
    struct dentry *dir;
    @@ -905,6 +924,8 @@ static int __init pageowner_init(void)
    dir = debugfs_create_dir("page_owner_stacks", NULL);
    debugfs_create_file("show_stacks", 0400, dir, NULL,
    &page_owner_stack_operations);
    + debugfs_create_file("count_threshold", 0600, dir, NULL,
    + &proc_page_owner_threshold);

    return 0;
    }
    --
    2.43.0

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