]> asedeno.scripts.mit.edu Git - linux.git/commit
buffer: Avoid setting buffer bits that are already set
authorKemi Wang <kemi.wang@intel.com>
Tue, 24 Oct 2017 01:16:42 +0000 (09:16 +0800)
committerJens Axboe <axboe@kernel.dk>
Fri, 2 Feb 2018 14:56:30 +0000 (07:56 -0700)
commit60f91826ca62bcf85d6d5fc90941337282787671
tree99c751953bbeb84e3afb40338db1d3df30b90be6
parentbea99a500773fdfdb16b7dbfbaa00af7a6f0dc3b
buffer: Avoid setting buffer bits that are already set

It's expensive to set buffer flags that are already set, because that
causes a costly cache line transition.

A common case is setting the "verified" flag during ext4 writes.
This patch checks for the flag being set first.

With the AIM7/creat-clo benchmark testing on a 48G ramdisk based-on ext4
file system, we see 3.3%(15431->15936) improvement of aim7.jobs-per-min on
a 2-sockets broadwell platform.

What the benchmark does is: it forks 3000 processes, and each  process do
the following:
a) open a new file
b) close the file
c) delete the file
until loop=100*1000 times.

The original patch is contributed by Andi Kleen.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Tested-by: Kemi Wang <kemi.wang@intel.com>
Signed-off-by: Kemi Wang <kemi.wang@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/buffer_head.h