* [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
* [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
* 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
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