Jens Axboe <axboe@xxxxxx> writes: > Hi, > > In some testing I ran today, we end up spending 40% of the time in > filemap_check_errors(). That smells fishy. Looking further, this is > basically what happens: > > blkdev_aio_read() > generic_file_aio_read() > filemap_write_and_wait_range() > if (!mapping->nr_pages) > filemap_check_errors() > > and filemap_check_errors() always attempts two test_and_clear_bit() on > the mapping flags, thus dirtying it for every single invocation. The > patch below tests each of these bits before clearing them, avoiding this > issue. In my test case (4-socket box), performance went from 1.7M IOPS > to 4.0M IOPS. It might help to use the word cacheline somewhere in here. ;-) Out of curiosity, what workload were you running? Acked-by: Jeff Moyer <jmoyer@xxxxxxxxxx> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>