[Devel] [PATCH RHEL7 COMMIT] ms/block: add REQ_BACKGROUND
Konstantin Khorenko
khorenko at virtuozzo.com
Fri Oct 25 13:17:22 MSK 2019
The commit is pushed to "branch-rh7-3.10.0-1062.1.2.vz7.114.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-1062.1.2.vz7.114.9
------>
commit 4fef686179897b6c5bfaacbe19a8a231b4e214d4
Author: Jens Axboe <axboe at fb.com>
Date: Fri Oct 25 13:17:20 2019 +0300
ms/block: add REQ_BACKGROUND
This adds a new request flag, REQ_BACKGROUND, that callers can use to
tell the block layer that this is background (non-urgent) IO.
Signed-off-by: Jens Axboe <axboe at fb.com>
Reviewed-by: Christoph Hellwig <hch at lst.de>
https://jira.sw.ru/browse/PSBM-96243
(cherry picked from commit 1d796d6a9641fbfcd90fcfaf6fb4894a13d0304f)
Signed-off-by: Andrey Ryabinin <aryabinin at virtuozzo.com>
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
=====================
Patchset description:
block: backport writeback throttling
We have a problem that if we run heavy write load on one cpu
simultaneousely with short direct reads on other cpu, the latter will
hang significantly. Writeback throttling looks like a sollution for
these reads, as it will decrease the priority of long running writeback.
Running simple dd experiment we see that reads latency decreased after
wbt patches applied:
https://docs.google.com/spreadsheets/d/1HLtepwFL_N5zm0JcTqMtJoYnf-b6Slwld8DDgL0gNDI
We've ran vconsolidate on custom kernel with these patches, though it
does not show any performance improvement (likely because this test does
not produce high rate of writeback), it does not crash or fail the test.
https://jira.sw.ru/browse/PSBM-96243
Jens Axboe (6):
block: add REQ_BACKGROUND
writeback: add wbc_to_write_flags()
writeback: mark background writeback as such
writeback: track if we're sleeping on progress in
balance_dirty_pages()
blk-wbt: add general throttling mechanism
block: hook up writeback throttling
Omar Sandoval (1):
block: get rid of struct blk_issue_stat
Pavel Tikhomirov (2):
x86/asm: remove the unused get_limit() method
block: enable CONFIG_BLK_WBT*
blk-wbt: increase maximum queue depth to increase performance of writes
---
include/linux/blk_types.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
index c0e1caa89985..aecb3b0e21a6 100644
--- a/include/linux/blk_types.h
+++ b/include/linux/blk_types.h
@@ -189,6 +189,7 @@ enum rq_flag_bits {
/* bio only flags */
__REQ_RAHEAD, /* read ahead, can fail anytime */
+ __REQ_BACKGROUND, /* background IO */
__REQ_THROTTLED, /* This bio has already been subjected to
* throttling rules. Don't do it again. */
@@ -231,6 +232,7 @@ enum rq_flag_bits {
#define REQ_DISCARD (1ULL << __REQ_DISCARD)
#define REQ_WRITE_SAME (1ULL << __REQ_WRITE_SAME)
#define REQ_NOIDLE (1ULL << __REQ_NOIDLE)
+#define REQ_BACKGROUND (1ULL << __REQ_BACKGROUND)
#define REQ_FAILFAST_MASK \
(REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER)
More information about the Devel
mailing list