Message ID | 20230405021342.606264-1-qiang1.zhang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | rcu/kvfree: Delay the execution of drain_page_cache() | expand |
On Wed, Apr 05, 2023 at 10:13:42AM +0800, Zqiang wrote: > Currently, in kfree_rcu_shrink_scan(), the drain_page_cache() is > executed before kfree_rcu_monitor() to drain page cache, if the > bnode structure's->gp_snap has done, the kvfree_rcu_bulk() will > fill the page cache again in kfree_rcu_monitor(), this commit > therefore move drain_page_cache() after kfree_rcu_monitor() to > drain page cache. > > Signed-off-by: Zqiang <qiang1.zhang@intel.com> > --- > kernel/rcu/tree.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > index 35be35f8236b..3461fc2640b9 100644 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -3424,8 +3424,8 @@ kfree_rcu_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) > struct kfree_rcu_cpu *krcp = per_cpu_ptr(&krc, cpu); > > count = krc_count(krcp); > - count += drain_page_cache(krcp); > kfree_rcu_monitor(&krcp->monitor_work.work); > + count += drain_page_cache(krcp); > > sc->nr_to_scan -= count; > freed += count; > -- > 2.32.0 One question. Maybe we can update the put_cached_bnode() with checking if backoff_page_cache_fill was set to prevent cache growing? Thanks! -- Uladzislau Rezki
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 35be35f8236b..3461fc2640b9 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3424,8 +3424,8 @@ kfree_rcu_shrink_scan(struct shrinker *shrink, struct shrink_control *sc) struct kfree_rcu_cpu *krcp = per_cpu_ptr(&krc, cpu); count = krc_count(krcp); - count += drain_page_cache(krcp); kfree_rcu_monitor(&krcp->monitor_work.work); + count += drain_page_cache(krcp); sc->nr_to_scan -= count; freed += count;
Currently, in kfree_rcu_shrink_scan(), the drain_page_cache() is executed before kfree_rcu_monitor() to drain page cache, if the bnode structure's->gp_snap has done, the kvfree_rcu_bulk() will fill the page cache again in kfree_rcu_monitor(), this commit therefore move drain_page_cache() after kfree_rcu_monitor() to drain page cache. Signed-off-by: Zqiang <qiang1.zhang@intel.com> --- kernel/rcu/tree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)