]> git.baikalelectronics.ru Git - kernel.git/commit
fs-writeback: unplug before cond_resched in writeback_sb_inodes
authorChris Mason <clm@fb.com>
Fri, 18 Sep 2015 17:35:08 +0000 (13:35 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Sep 2015 01:50:19 +0000 (18:50 -0700)
commite19a164353684f0212f0ecfe8143fa1b1776a5c2
tree9bd3b4a9de42fb0547fce6fb1f336af3d89e86d8
parent7324b9619413b2aded4098dae8e0349fe098186f
fs-writeback: unplug before cond_resched in writeback_sb_inodes

Commit 60d25f1aa25b ("writeback: plug writeback in wb_writeback() and
writeback_inodes_wb()") has us holding a plug during writeback_sb_inodes,
which increases the merge rate when relatively contiguous small files
are written by the filesystem.  It helps both on flash and spindles.

For an fs_mark workload creating 4K files in parallel across 8 drives,
this commit improves performance ~9% more by unplugging before calling
cond_resched().  cond_resched() doesn't trigger an implicit unplug, so
explicitly getting the IO down to the device before scheduling reduces
latencies for anyone waiting on clean pages.

It also cuts down on how often we use kblockd to unplug, which means
less work bouncing from one workqueue to another.

Many more details about how we got here:

  https://lkml.org/lkml/2015/9/11/570

Signed-off-by: Chris Mason <clm@fb.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/fs-writeback.c