Skip to content

Commit

Permalink
xfs: __percpu_counter_compare() inode count debug too expensive
Browse files Browse the repository at this point in the history
- 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>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
  • Loading branch information
Dave Chinner authored and Darrick J. Wong committed Mar 25, 2021
1 parent 1fea323 commit 5825bea
Showing 1 changed file with 2 additions and 9 deletions.
11 changes: 2 additions & 9 deletions fs/xfs/xfs_trans.c
Original file line number Diff line number Diff line change
Expand Up @@ -618,19 +618,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;
Expand Down

0 comments on commit 5825bea

Please sign in to comment.