summaryrefslogtreecommitdiff
path: root/CREDITS
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2021-11-25 16:36:38 +0300
committerJens Axboe <axboe@kernel.dk>2021-11-29 16:38:51 +0300
commit1f18b7005b49b96782cd984babd59c286973b526 (patch)
tree4c37967730c54298fcfba5c0c8b3650ced491166 /CREDITS
parent76f1df88bbc2f984eb0418cc90de0a8384e63604 (diff)
downloadlinux-1f18b7005b49b96782cd984babd59c286973b526.tar.xz
bfq: Limit waker detection in time
Currently, when process A starts issuing requests shortly after process B has completed some IO three times in a row, we decide that B is a "waker" of A meaning that completing IO of B is needed for A to make progress and generally stop separating A's and B's IO much. This logic is useful to avoid unnecessary idling and thus throughput loss for cases where workload needs to switch e.g. between the process and the journaling thread doing IO. However the detection heuristic tends to frequently give false positives when A and B are fighting IO bandwidth and other processes aren't doing much IO as we are basically deemed to eventually accumulate three occurences of a situation where one process starts issuing requests after the other has completed some IO. To reduce these false positives, cancel the waker detection also if we didn't accumulate three detected wakeups within given timeout. The rationale is that if wakeups are really rare, the pointless idling doesn't hurt throughput that much anyway. This significantly reduces false waker detection for workload like: [global] directory=/mnt/repro/ rw=write size=8g time_based runtime=30 ramp_time=10 blocksize=1m direct=0 ioengine=sync [slowwriter] numjobs=1 fsync=200 [fastwriter] numjobs=1 fsync=200 Acked-by: Paolo Valente <paolo.valente@linaro.org> Signed-off-by: Jan Kara <jack@suse.cz> Link: https://lore.kernel.org/r/20211125133645.27483-5-jack@suse.cz Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'CREDITS')
0 files changed, 0 insertions, 0 deletions