Hi, We found that the super block cache line containing the extent cache hit/miss statistics counters is very hot in IO workloads. Besides the counter seems racy anyways and can lose updates because it's not atomic. Disabling the counter make a very measurable difference in some IO micro benchmarks on a 4S system. I just disabled it for now because it doesn't seem very useful due to its racy nature. An alternative would be to turn it into a per cpu counter, if someone really needs it. Simple patch to disable it appended. -Andi --- Disable statistics counter in ext4 This super bloc cache line is very hot and slows down high IO workloads. Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 74f23c2..7310b0e 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -2049,10 +2049,12 @@ static int ext4_ext_check_cache(struct inode *inode, ext4_lblk_t block, ret = 1; } errout: +#if 0 if (!ret) sbi->extent_cache_misses++; else sbi->extent_cache_hits++; +#endif trace_ext4_ext_in_cache(inode, block, ret); spin_unlock(&EXT4_I(inode)->i_block_reservation_lock); return ret; -- ak@xxxxxxxxxxxxxxx -- Speaking for myself only -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html