Message ID | c95c25c6fb3931498b8d83b8ae1130208cda5af8.1456178093.git.shli@fb.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/block/blk-throttle.c b/block/blk-throttle.c index 68e2598..f78d470 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -281,6 +281,8 @@ static inline uint64_t queue_bandwidth(struct throtl_data *td) /* can't estimate bandwidth, can't do proporation control */ if (bw == 0) bw = -1; + else + bw += bw >> 3; return bw; } @@ -292,6 +294,8 @@ static inline uint64_t queue_iops(struct throtl_data *td) /* can't estimate iops, can't do proporation control */ if (iops == 0) iops = -1; + else + iops += iops >> 3; return iops; }
If we don't dispatch enough requests, disk can't reach the max bandwidth. As we don't know the max bandwidth, we over estimate the bandwidth and dispatch more requests. This way the disk can reach the max bandwidth slowly. The downside is this can introduce fairness issue, but since we only over estimate 1/8 extra bandwidth, the fairness issue isn't big. But again, this could cause fairness issue for specific workloads. Signed-off-by: Shaohua Li <shli@fb.com> --- block/blk-throttle.c | 4 ++++ 1 file changed, 4 insertions(+)