diff mbox series

[42/45] xfs: __percpu_counter_compare() inode count debug too expensive

Message ID 20210305051143.182133-43-david@fromorbit.com (mailing list archive)
State Superseded
Headers show
Series xfs: consolidated log and optimisation changes | expand

Commit Message

Dave Chinner March 5, 2021, 5:11 a.m. UTC
From: Dave Chinner <dchinner@redhat.com>

 - 21.92% __xfs_trans_commit
     - 21.62% xfs_log_commit_cil
	- 11.69% xfs_trans_unreserve_and_mod_sb
	   - 11.58% __percpu_counter_compare
	      - 11.45% __percpu_counter_sum
		 - 10.29% _raw_spin_lock_irqsave
		    - 10.28% do_raw_spin_lock
			 __pv_queued_spin_lock_slowpath

We debated just getting rid of it last time this came up and
there was no real objection to removing it. Now it's the biggest
scalability limitation for debug kernels even on smallish machines,
so let's just get rid of it.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
 fs/xfs/xfs_trans.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

Comments

Darrick J. Wong March 11, 2021, 1:36 a.m. UTC | #1
On Fri, Mar 05, 2021 at 04:11:40PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
> 
>  - 21.92% __xfs_trans_commit
>      - 21.62% xfs_log_commit_cil
> 	- 11.69% xfs_trans_unreserve_and_mod_sb
> 	   - 11.58% __percpu_counter_compare
> 	      - 11.45% __percpu_counter_sum
> 		 - 10.29% _raw_spin_lock_irqsave
> 		    - 10.28% do_raw_spin_lock
> 			 __pv_queued_spin_lock_slowpath
> 
> We debated just getting rid of it last time this came up and
> there was no real objection to removing it. Now it's the biggest
> scalability limitation for debug kernels even on smallish machines,
> so let's just get rid of it.
> 
> Signed-off-by: Dave Chinner <dchinner@redhat.com>

Reviewed-by: Darrick J. Wong <djwong@kernel.org>

...unless you want a CONFIG_XFS_DEBUG_SLOW to hide these things behind?

--D

> ---
>  fs/xfs/xfs_trans.c | 11 ++---------
>  1 file changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c
> index b20e68279808..637d084c8aa8 100644
> --- a/fs/xfs/xfs_trans.c
> +++ b/fs/xfs/xfs_trans.c
> @@ -616,19 +616,12 @@ xfs_trans_unreserve_and_mod_sb(
>  		ASSERT(!error);
>  	}
>  
> -	if (idelta) {
> +	if (idelta)
>  		percpu_counter_add_batch(&mp->m_icount, idelta,
>  					 XFS_ICOUNT_BATCH);
> -		if (idelta < 0)
> -			ASSERT(__percpu_counter_compare(&mp->m_icount, 0,
> -							XFS_ICOUNT_BATCH) >= 0);
> -	}
>  
> -	if (ifreedelta) {
> +	if (ifreedelta)
>  		percpu_counter_add(&mp->m_ifree, ifreedelta);
> -		if (ifreedelta < 0)
> -			ASSERT(percpu_counter_compare(&mp->m_ifree, 0) >= 0);
> -	}
>  
>  	if (rtxdelta == 0 && !(tp->t_flags & XFS_TRANS_SB_DIRTY))
>  		return;
> -- 
> 2.28.0
>
diff mbox series

Patch

diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c
index b20e68279808..637d084c8aa8 100644
--- a/fs/xfs/xfs_trans.c
+++ b/fs/xfs/xfs_trans.c
@@ -616,19 +616,12 @@  xfs_trans_unreserve_and_mod_sb(
 		ASSERT(!error);
 	}
 
-	if (idelta) {
+	if (idelta)
 		percpu_counter_add_batch(&mp->m_icount, idelta,
 					 XFS_ICOUNT_BATCH);
-		if (idelta < 0)
-			ASSERT(__percpu_counter_compare(&mp->m_icount, 0,
-							XFS_ICOUNT_BATCH) >= 0);
-	}
 
-	if (ifreedelta) {
+	if (ifreedelta)
 		percpu_counter_add(&mp->m_ifree, ifreedelta);
-		if (ifreedelta < 0)
-			ASSERT(percpu_counter_compare(&mp->m_ifree, 0) >= 0);
-	}
 
 	if (rtxdelta == 0 && !(tp->t_flags & XFS_TRANS_SB_DIRTY))
 		return;