summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorShaohua Li <shli@fb.com>2017-03-27 20:51:34 +0300
committerJens Axboe <axboe@fb.com>2017-03-28 17:02:20 +0300
commitc79892c5576163b3c7403b9d75cbe8dcae65e428 (patch)
tree09dd9d4d38045a8daf7d0a06aa25bce03611973d /include/linux
parentb22c417c885ea973149ecf56286aabec060153e2 (diff)
downloadlinux-c79892c5576163b3c7403b9d75cbe8dcae65e428.tar.xz
blk-throttle: add upgrade logic for LIMIT_LOW state
When queue is in LIMIT_LOW state and all cgroups with low limit cross the bps/iops limitation, we will upgrade queue's state to LIMIT_MAX. To determine if a cgroup exceeds its limitation, we check if the cgroup has pending request. Since cgroup is throttled according to the limit, pending request means the cgroup reaches the limit. If a cgroup has limit set for both read and write, we consider the combination of them for upgrade. The reason is read IO and write IO can interfere with each other. If we do the upgrade based in one direction IO, the other direction IO could be severly harmed. For a cgroup hierarchy, there are two cases. Children has lower low limit than parent. Parent's low limit is meaningless. If children's bps/iops cross low limit, we can upgrade queue state. The other case is children has higher low limit than parent. Children's low limit is meaningless. As long as parent's bps/iops (which is a sum of childrens bps/iops) cross low limit, we can upgrade queue state. Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions