* [PATCH v6 15/45] rcu: dynamically allocate the rcu-lazy shrinker [not found] <20230911094444.68966-1-zhengqi.arch@bytedance.com> @ 2023-09-11 9:44 ` Qi Zheng 2023-09-18 7:27 ` Muchun Song 2023-09-11 9:44 ` [PATCH v6 16/45] rcu: dynamically allocate the rcu-kfree shrinker Qi Zheng 1 sibling, 1 reply; 4+ messages in thread From: Qi Zheng @ 2023-09-11 9:44 UTC (permalink / raw) To: akpm, david, tkhai, vbabka, roman.gushchin, djwong, brauner, paulmck, tytso, steven.price, cel, senozhatsky, yujie.liu, gregkh, muchun.song Cc: linux-kernel, linux-mm, linux-fsdevel, Qi Zheng, Joel Fernandes, rcu Use new APIs to dynamically allocate the rcu-lazy shrinker. Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> CC: rcu@vger.kernel.org --- kernel/rcu/tree_nocb.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h index 5598212d1f27..4efbf7333d4e 100644 --- a/kernel/rcu/tree_nocb.h +++ b/kernel/rcu/tree_nocb.h @@ -1396,13 +1396,6 @@ lazy_rcu_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) return count ? count : SHRINK_STOP; } - -static struct shrinker lazy_rcu_shrinker = { - .count_objects = lazy_rcu_shrink_count, - .scan_objects = lazy_rcu_shrink_scan, - .batch = 0, - .seeks = DEFAULT_SEEKS, -}; #endif // #ifdef CONFIG_RCU_LAZY void __init rcu_init_nohz(void) @@ -1410,6 +1403,7 @@ void __init rcu_init_nohz(void) int cpu; struct rcu_data *rdp; const struct cpumask *cpumask = NULL; + struct shrinker * __maybe_unused lazy_rcu_shrinker; #if defined(CONFIG_NO_HZ_FULL) if (tick_nohz_full_running && !cpumask_empty(tick_nohz_full_mask)) @@ -1436,8 +1430,15 @@ void __init rcu_init_nohz(void) return; #ifdef CONFIG_RCU_LAZY - if (register_shrinker(&lazy_rcu_shrinker, "rcu-lazy")) - pr_err("Failed to register lazy_rcu shrinker!\n"); + lazy_rcu_shrinker = shrinker_alloc(0, "rcu-lazy"); + if (!lazy_rcu_shrinker) { + pr_err("Failed to allocate lazy_rcu shrinker!\n"); + } else { + lazy_rcu_shrinker->count_objects = lazy_rcu_shrink_count; + lazy_rcu_shrinker->scan_objects = lazy_rcu_shrink_scan; + + shrinker_register(lazy_rcu_shrinker); + } #endif // #ifdef CONFIG_RCU_LAZY if (!cpumask_subset(rcu_nocb_mask, cpu_possible_mask)) { -- 2.30.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v6 15/45] rcu: dynamically allocate the rcu-lazy shrinker 2023-09-11 9:44 ` [PATCH v6 15/45] rcu: dynamically allocate the rcu-lazy shrinker Qi Zheng @ 2023-09-18 7:27 ` Muchun Song 0 siblings, 0 replies; 4+ messages in thread From: Muchun Song @ 2023-09-18 7:27 UTC (permalink / raw) To: Qi Zheng Cc: Andrew Morton, david, tkhai, Vlastimil Babka, Roman Gushchin, djwong, Christian Brauner, Paul E. McKenney, tytso, steven.price, cel, Sergey Senozhatsky, yujie.liu, Greg KH, LKML, Linux-MM, linux-fsdevel, Joel Fernandes, rcu > On Sep 11, 2023, at 17:44, Qi Zheng <zhengqi.arch@bytedance.com> wrote: > > Use new APIs to dynamically allocate the rcu-lazy shrinker. > > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> Acked-by: Muchun Song <songmuchun@bytedance.com> Thanks. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v6 16/45] rcu: dynamically allocate the rcu-kfree shrinker [not found] <20230911094444.68966-1-zhengqi.arch@bytedance.com> 2023-09-11 9:44 ` [PATCH v6 15/45] rcu: dynamically allocate the rcu-lazy shrinker Qi Zheng @ 2023-09-11 9:44 ` Qi Zheng 2023-09-12 7:30 ` Uladzislau Rezki 1 sibling, 1 reply; 4+ messages in thread From: Qi Zheng @ 2023-09-11 9:44 UTC (permalink / raw) To: akpm, david, tkhai, vbabka, roman.gushchin, djwong, brauner, paulmck, tytso, steven.price, cel, senozhatsky, yujie.liu, gregkh, muchun.song Cc: linux-kernel, linux-mm, linux-fsdevel, Qi Zheng, Joel Fernandes, Muchun Song, rcu Use new APIs to dynamically allocate the rcu-kfree shrinker. Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Reviewed-by: Muchun Song <songmuchun@bytedance.com> CC: rcu@vger.kernel.org --- kernel/rcu/tree.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index cb1caefa8bd0..06e2ed495c02 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3449,13 +3449,6 @@ kfree_rcu_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) return freed == 0 ? SHRINK_STOP : freed; } -static struct shrinker kfree_rcu_shrinker = { - .count_objects = kfree_rcu_shrink_count, - .scan_objects = kfree_rcu_shrink_scan, - .batch = 0, - .seeks = DEFAULT_SEEKS, -}; - void __init kfree_rcu_scheduler_running(void) { int cpu; @@ -4931,6 +4924,7 @@ static void __init kfree_rcu_batch_init(void) { int cpu; int i, j; + struct shrinker *kfree_rcu_shrinker; /* Clamp it to [0:100] seconds interval. */ if (rcu_delay_page_cache_fill_msec < 0 || @@ -4962,8 +4956,17 @@ static void __init kfree_rcu_batch_init(void) INIT_DELAYED_WORK(&krcp->page_cache_work, fill_page_cache_func); krcp->initialized = true; } - if (register_shrinker(&kfree_rcu_shrinker, "rcu-kfree")) - pr_err("Failed to register kfree_rcu() shrinker!\n"); + + kfree_rcu_shrinker = shrinker_alloc(0, "rcu-kfree"); + if (!kfree_rcu_shrinker) { + pr_err("Failed to allocate kfree_rcu() shrinker!\n"); + return; + } + + kfree_rcu_shrinker->count_objects = kfree_rcu_shrink_count; + kfree_rcu_shrinker->scan_objects = kfree_rcu_shrink_scan; + + shrinker_register(kfree_rcu_shrinker); } void __init rcu_init(void) -- 2.30.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v6 16/45] rcu: dynamically allocate the rcu-kfree shrinker 2023-09-11 9:44 ` [PATCH v6 16/45] rcu: dynamically allocate the rcu-kfree shrinker Qi Zheng @ 2023-09-12 7:30 ` Uladzislau Rezki 0 siblings, 0 replies; 4+ messages in thread From: Uladzislau Rezki @ 2023-09-12 7:30 UTC (permalink / raw) To: Qi Zheng Cc: akpm, david, tkhai, vbabka, roman.gushchin, djwong, brauner, paulmck, tytso, steven.price, cel, senozhatsky, yujie.liu, gregkh, muchun.song, linux-kernel, linux-mm, linux-fsdevel, Joel Fernandes, Muchun Song, rcu On Mon, Sep 11, 2023 at 05:44:15PM +0800, Qi Zheng wrote: > Use new APIs to dynamically allocate the rcu-kfree shrinker. > > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> > Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> > Reviewed-by: Muchun Song <songmuchun@bytedance.com> > CC: rcu@vger.kernel.org > --- > kernel/rcu/tree.c | 21 ++++++++++++--------- > 1 file changed, 12 insertions(+), 9 deletions(-) > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > index cb1caefa8bd0..06e2ed495c02 100644 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -3449,13 +3449,6 @@ kfree_rcu_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) > return freed == 0 ? SHRINK_STOP : freed; > } > > -static struct shrinker kfree_rcu_shrinker = { > - .count_objects = kfree_rcu_shrink_count, > - .scan_objects = kfree_rcu_shrink_scan, > - .batch = 0, > - .seeks = DEFAULT_SEEKS, > -}; > - > void __init kfree_rcu_scheduler_running(void) > { > int cpu; > @@ -4931,6 +4924,7 @@ static void __init kfree_rcu_batch_init(void) > { > int cpu; > int i, j; > + struct shrinker *kfree_rcu_shrinker; > > /* Clamp it to [0:100] seconds interval. */ > if (rcu_delay_page_cache_fill_msec < 0 || > @@ -4962,8 +4956,17 @@ static void __init kfree_rcu_batch_init(void) > INIT_DELAYED_WORK(&krcp->page_cache_work, fill_page_cache_func); > krcp->initialized = true; > } > - if (register_shrinker(&kfree_rcu_shrinker, "rcu-kfree")) > - pr_err("Failed to register kfree_rcu() shrinker!\n"); > + > + kfree_rcu_shrinker = shrinker_alloc(0, "rcu-kfree"); > + if (!kfree_rcu_shrinker) { > + pr_err("Failed to allocate kfree_rcu() shrinker!\n"); > + return; > + } > + > + kfree_rcu_shrinker->count_objects = kfree_rcu_shrink_count; > + kfree_rcu_shrinker->scan_objects = kfree_rcu_shrink_scan; > + > + shrinker_register(kfree_rcu_shrinker); > } > > void __init rcu_init(void) > -- > 2.30.2 > Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com> Makes sense to me. Thank you for improving it. -- Uladzislau Rezki ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-09-18 7:30 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20230911094444.68966-1-zhengqi.arch@bytedance.com>
2023-09-11 9:44 ` [PATCH v6 15/45] rcu: dynamically allocate the rcu-lazy shrinker Qi Zheng
2023-09-18 7:27 ` Muchun Song
2023-09-11 9:44 ` [PATCH v6 16/45] rcu: dynamically allocate the rcu-kfree shrinker Qi Zheng
2023-09-12 7:30 ` Uladzislau Rezki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox