Dave Chinner
c76febef57
xfs: only run xfs_error_test if error injection is active
...
Recent tests writing lots of small files showed the flusher thread
being CPU bound and taking a long time to do allocations on a debug
kernel. perf showed this as the prime reason:
samples pcnt function DSO
_______ _____ ___________________________ _________________
224648.00 36.8% xfs_error_test [kernel.kallsyms]
86045.00 14.1% xfs_btree_check_sblock [kernel.kallsyms]
39778.00 6.5% prandom32 [kernel.kallsyms]
37436.00 6.1% xfs_btree_increment [kernel.kallsyms]
29278.00 4.8% xfs_btree_get_rec [kernel.kallsyms]
27717.00 4.5% random32 [kernel.kallsyms]
Walking btree blocks during allocation checking them requires each
block (a cache hit, so no I/O) call xfs_error_test(), which then
does a random32() call as the first operation. IOWs, ~50% of the
CPU is being consumed just testing whether we need to inject an
error, even though error injection is not active.
Kill this overhead when error injection is not active by adding a
global counter of active error traps and only calling into
xfs_error_test when fault injection is active.
Signed-off-by: Dave Chinner <[email protected] >
Reviewed-by: Christoph Hellwig <[email protected] >
2010-12-01 07:40:20 -06:00
..
linux-2.6
xfs: push stale, pinned buffers on trylock failures
2010-12-01 07:40:20 -06:00
quota
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
support
xfs: drop dmapi hooks
2010-07-26 13:16:33 -05:00
Kconfig
quota: Make QUOTACTL config be selected by its users
2010-10-05 12:16:37 +02:00
Makefile
xfs: simplify log item descriptor tracking
2010-07-26 13:16:34 -05:00
xfs.h
xfs_acl.h
xfs: constify xattr_handler
2010-05-21 18:31:19 -04:00
xfs_ag.h
xfs: convert buffer cache hash to rbtree
2010-10-18 15:07:56 -05:00
xfs_alloc.c
xfs: eliminate some newly-reported gcc warnings
2010-10-18 15:07:39 -05:00
xfs_alloc.h
xfs: do not use emums for flags used in tracing
2010-07-26 13:16:43 -05:00
xfs_alloc_btree.c
xfs: remove the ->kill_root btree operation
2010-10-18 15:07:38 -05:00
xfs_alloc_btree.h
xfs_arch.h
xfs_attr.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_attr.h
xfs: convert attr to use unsigned names
2010-01-20 10:47:48 +11:00
xfs_attr_leaf.c
xfs: remove unused delta tracking code in xfs_bmapi
2010-07-26 13:16:39 -05:00
xfs_attr_leaf.h
xfs_attr_sf.h
xfs: convert attr to use unsigned names
2010-01-20 10:47:48 +11:00
xfs_bit.c
xfs_bit.h
xfs_bmap.c
xfs: delayed alloc blocks beyond EOF are valid after writeback
2010-12-01 07:40:20 -06:00
xfs_bmap.h
xfs: fix failed write truncation handling.
2010-12-01 07:40:19 -06:00
xfs_bmap_btree.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_bmap_btree.h
xfs: make several more functions static
2010-01-15 15:31:38 -06:00
xfs_btree.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_btree.h
xfs: remove the ->kill_root btree operation
2010-10-18 15:07:38 -05:00
xfs_btree_trace.c
xfs_btree_trace.h
xfs_buf_item.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_buf_item.h
xfs: give li_cb callbacks the correct prototype
2010-07-26 13:16:35 -05:00
xfs_da_btree.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_da_btree.h
xfs: convert dirnameops to unsigned char names
2010-01-20 10:47:17 +11:00
xfs_dfrag.c
xfs: delayed alloc blocks beyond EOF are valid after writeback
2010-12-01 07:40:20 -06:00
xfs_dfrag.h
xfs: clean up inconsistent variable naming in xfs_swap_extent
2010-01-15 15:31:23 -06:00
xfs_dinode.h
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_dir2.c
xfs: split xfs_itrace_entry
2010-07-26 13:16:44 -05:00
xfs_dir2.h
xfs: make xfs_dir_cilookup_result use unsigned char
2010-01-20 10:47:25 +11:00
xfs_dir2_block.c
xfs: fix gcc 4.6 set but not read and unused statement warnings
2010-07-26 13:16:51 -05:00
xfs_dir2_block.h
xfs_dir2_data.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_dir2_data.h
xfs_dir2_leaf.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_dir2_leaf.h
xfs_dir2_node.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_dir2_node.h
xfs: make several more functions static
2010-01-15 15:31:38 -06:00
xfs_dir2_sf.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_dir2_sf.h
xfs_error.c
xfs: only run xfs_error_test if error injection is active
2010-12-01 07:40:20 -06:00
xfs_error.h
xfs: only run xfs_error_test if error injection is active
2010-12-01 07:40:20 -06:00
xfs_extfree_item.c
xfs: fix the xfs_log_iovec i_addr type
2010-07-26 13:16:36 -05:00
xfs_extfree_item.h
xfs_filestream.c
xfs: tell lockdep about parent iolock usage in filestreams
2010-11-10 12:00:48 -06:00
xfs_filestream.h
xfs: clean up filestreams helpers
2010-07-26 13:16:51 -05:00
xfs_fs.h
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_fsops.c
xfs: do not use xfs_mod_incore_sb for per-cpu counters
2010-10-18 15:07:59 -05:00
xfs_fsops.h
xfs: dummy transactions should not dirty VFS state
2010-08-24 11:46:31 +10:00
xfs_ialloc.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_ialloc.h
xfs_ialloc_btree.c
xfs: remove the ->kill_root btree operation
2010-10-18 15:07:38 -05:00
xfs_ialloc_btree.h
xfs_iget.c
xfs: fix bogus m_maxagi check in xfs_iget
2010-10-18 15:08:01 -05:00
xfs_inode.c
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_inode.h
new helper: ihold()
2010-10-25 21:26:11 -04:00
xfs_inode_item.c
xfs: avoid moving stale inodes in the AIL
2010-12-01 07:40:20 -06:00
xfs_inode_item.h
xfs: simplify inode to transaction joining
2010-07-26 13:16:36 -05:00
xfs_inum.h
xfs_iomap.c
xfs: small cleanups for xfs_iomap / __xfs_get_blocks
2010-07-26 13:16:42 -05:00
xfs_iomap.h
xfs: do not use emums for flags used in tracing
2010-07-26 13:16:43 -05:00
xfs_itable.c
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_itable.h
xfs: remove block number from inode lookup code
2010-06-24 11:35:17 +10:00
xfs_log.c
Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
2010-10-22 17:32:27 -07:00
xfs_log.h
xfs: remove the unused XFS_LOG_SLEEP and XFS_LOG_NOSLEEP flags
2010-07-26 13:16:38 -05:00
xfs_log_cil.c
xfs: reduce the number of CIL lock round trips during commit
2010-10-18 15:07:42 -05:00
xfs_log_priv.h
xfs: force background CIL push under sustained load
2010-09-29 07:51:03 -05:00
xfs_log_recover.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_log_recover.h
xfs: Clean up XFS_BLI_* flag namespace
2010-05-24 10:33:39 -05:00
xfs_mount.c
xfs: fix per-ag reference counting in inode reclaim tree walking
2010-11-10 12:00:48 -06:00
xfs_mount.h
xfs: remove xfs_cred.h
2010-10-18 15:08:06 -05:00
xfs_mru_cache.c
xfs: Kill filestreams cache flush
2010-01-15 15:34:22 -06:00
xfs_mru_cache.h
xfs: Kill filestreams cache flush
2010-01-15 15:34:22 -06:00
xfs_quota.h
xfs: fix a few compiler warnings with CONFIG_XFS_QUOTA=n
2010-11-10 12:00:48 -06:00
xfs_rename.c
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_rtalloc.c
xfs: use unhashed buffers for size checks
2010-10-18 15:07:50 -05:00
xfs_rtalloc.h
xfs: be more explicit if RT mount fails due to config
2010-05-28 14:58:24 -05:00
xfs_rw.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_rw.h
xfs: only clear the suid bit once in xfs_write
2010-02-12 13:43:57 -06:00
xfs_sb.h
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_trans.c
xfs: fix the xfs_trans_committed
2010-10-18 15:08:02 -05:00
xfs_trans.h
xfs: remove unused t_callback field in struct xfs_trans
2010-10-18 15:08:01 -05:00
xfs_trans_ail.c
xfs: drop dmapi hooks
2010-07-26 13:16:33 -05:00
xfs_trans_buf.c
xfs: remove xfs_buf wrappers
2010-10-18 15:08:07 -05:00
xfs_trans_extfree.c
xfs: simplify log item descriptor tracking
2010-07-26 13:16:34 -05:00
xfs_trans_inode.c
xfs: don't use vfs writeback for pure metadata modifications
2010-10-18 15:07:45 -05:00
xfs_trans_priv.h
xfs: unlock items before allowing the CIL to commit
2010-08-24 11:42:52 +10:00
xfs_trans_space.h
xfs_types.h
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_utils.c
xfs: remove xfs_cred.h
2010-10-18 15:08:06 -05:00
xfs_utils.h
xfs: remove xfs_cred.h
2010-10-18 15:08:06 -05:00
xfs_vnodeops.c
xfs: Extend project quotas to support 32bit project ids
2010-10-18 15:08:08 -05:00
xfs_vnodeops.h
xfs: remove xfs_cred.h
2010-10-18 15:08:06 -05:00