Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1339970 > unrolled thread
| Started by | Shaohua Li <shli@fb.com> |
|---|---|
| First post | 2016-02-22 23:10 +0100 |
| Last post | 2016-02-22 23:10 +0100 |
| Articles | 1 — 1 participant |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH V2 12/13] blk-throttle: restore shrinked cgroup share Shaohua Li <shli@fb.com> - 2016-02-22 23:10 +0100
| From | Shaohua Li <shli@fb.com> |
|---|---|
| Date | 2016-02-22 23:10 +0100 |
| Subject | [PATCH V2 12/13] blk-throttle: restore shrinked cgroup share |
| Message-ID | <r56Q2-3YI-33@gated-at.bofh.it> |
If a cgroup share gets shrinked but the cgroup hits its limit, the
shrink isn't optimal, we restore its original share.
Signed-off-by: Shaohua Li <shli@fb.com>
---
block/blk-throttle.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/block/blk-throttle.c b/block/blk-throttle.c
index 2271c7e..7db7d8e 100644
--- a/block/blk-throttle.c
+++ b/block/blk-throttle.c
@@ -2229,6 +2229,7 @@ bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
sq = &tg->service_queue;
+again:
tg_check_new_weight(tg);
detect_inactive_cg(tg);
while (true) {
@@ -2238,8 +2239,18 @@ bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg,
tg_update_perf(tg);
/* if above limits, break to queue */
- if (!tg_may_dispatch(tg, bio, NULL))
+ if (!tg_may_dispatch(tg, bio, NULL)) {
+ /*
+ * If the cg hits limit but its share is shrinked, the
+ * shrink isn't optimal
+ */
+ if (sq->acting_weight < sq->weight) {
+ /* pretend we are changing weight */
+ sq->new_weight = sq->weight;
+ goto again;
+ }
break;
+ }
/* within limits, let's charge and dispatch directly */
throtl_charge_bio(tg, bio);
--
2.6.5
Back to top | Article view | linux.kernel
csiph-web