1 /* 2 * Interface for controlling IO bandwidth on a request queue 3 * 4 * Copyright (C) 2010 Vivek Goyal <vgoyal@redhat.com> 5 */ 6 7 #include <linux/module.h> 8 #include <linux/slab.h> 9 #include <linux/blkdev.h> 10 #include <linux/bio.h> 11 #include <linux/blktrace_api.h> 12 #include <linux/blk-cgroup.h> 13 #include "blk.h" 14 15 /* Max dispatch from a group in 1 round */ 16 static int throtl_grp_quantum = 8; 17 18 /* Total max dispatch from all groups in one round */ 19 static int throtl_quantum = 32; 20 21 /* Throttling is performed over 100ms slice and after that slice is renewed */ 22 static unsigned long throtl_slice = HZ/10; /* 100 ms */ 23 24 static struct blkcg_policy blkcg_policy_throtl; 25 26 /* A workqueue to queue throttle related work */ 27 static struct workqueue_struct *kthrotld_workqueue; 28 29 /* 30 * To implement hierarchical throttling, throtl_grps form a tree and bios 31 * are dispatched upwards level by level until they reach the top and get 32 * issued. When dispatching bios from the children and local group at each 33 * level, if the bios are dispatched into a single bio_list, there's a risk 34 * of a local or child group which can queue many bios at once filling up 35 * the list starving others. 36 * 37 * To avoid such starvation, dispatched bios are queued separately 38 * according to where they came from. When they are again dispatched to 39 * the parent, they're popped in round-robin order so that no single source 40 * hogs the dispatch window. 41 * 42 * throtl_qnode is used to keep the queued bios separated by their sources. 43 * Bios are queued to throtl_qnode which in turn is queued to 44 * throtl_service_queue and then dispatched in round-robin order. 45 * 46 * It's also used to track the reference counts on blkg's. A qnode always 47 * belongs to a throtl_grp and gets queued on itself or the parent, so 48 * incrementing the reference of the associated throtl_grp when a qnode is 49 * queued and decrementing when dequeued is enough to keep the whole blkg 50 * tree pinned while bios are in flight. 51 */ 52 struct throtl_qnode { 53 struct list_head node; /* service_queue->queued[] */ 54 struct bio_list bios; /* queued bios */ 55 struct throtl_grp *tg; /* tg this qnode belongs to */ 56 }; 57 58 struct throtl_service_queue { 59 struct throtl_service_queue *parent_sq; /* the parent service_queue */ 60 61 /* 62 * Bios queued directly to this service_queue or dispatched from 63 * children throtl_grp's. 64 */ 65 struct list_head queued[2]; /* throtl_qnode [READ/WRITE] */ 66 unsigned int nr_queued[2]; /* number of queued bios */ 67 68 /* 69 * RB tree of active children throtl_grp's, which are sorted by 70 * their ->disptime. 71 */ 72 struct rb_root pending_tree; /* RB tree of active tgs */ 73 struct rb_node *first_pending; /* first node in the tree */ 74 unsigned int nr_pending; /* # queued in the tree */ 75 unsigned long first_pending_disptime; /* disptime of the first tg */ 76 struct timer_list pending_timer; /* fires on first_pending_disptime */ 77 }; 78 79 enum tg_state_flags { 80 THROTL_TG_PENDING = 1 << 0, /* on parent's pending tree */ 81 THROTL_TG_WAS_EMPTY = 1 << 1, /* bio_lists[] became non-empty */ 82 }; 83 84 #define rb_entry_tg(node) rb_entry((node), struct throtl_grp, rb_node) 85 86 struct throtl_grp { 87 /* must be the first member */ 88 struct blkg_policy_data pd; 89 90 /* active throtl group service_queue member */ 91 struct rb_node rb_node; 92 93 /* throtl_data this group belongs to */ 94 struct throtl_data *td; 95 96 /* this group's service queue */ 97 struct throtl_service_queue service_queue; 98 99 /* 100 * qnode_on_self is used when bios are directly queued to this 101 * throtl_grp so that local bios compete fairly with bios 102 * dispatched from children. qnode_on_parent is used when bios are 103 * dispatched from this throtl_grp into its parent and will compete 104 * with the sibling qnode_on_parents and the parent's 105 * qnode_on_self. 106 */ 107 struct throtl_qnode qnode_on_self[2]; 108 struct throtl_qnode qnode_on_parent[2]; 109 110 /* 111 * Dispatch time in jiffies. This is the estimated time when group 112 * will unthrottle and is ready to dispatch more bio. It is used as 113 * key to sort active groups in service tree. 114 */ 115 unsigned long disptime; 116 117 unsigned int flags; 118 119 /* are there any throtl rules between this group and td? */ 120 bool has_rules[2]; 121 122 /* bytes per second rate limits */ 123 uint64_t bps[2]; 124 125 /* IOPS limits */ 126 unsigned int iops[2]; 127 128 /* Number of bytes disptached in current slice */ 129 uint64_t bytes_disp[2]; 130 /* Number of bio's dispatched in current slice */ 131 unsigned int io_disp[2]; 132 133 /* When did we start a new slice */ 134 unsigned long slice_start[2]; 135 unsigned long slice_end[2]; 136 }; 137 138 struct throtl_data 139 { 140 /* service tree for active throtl groups */ 141 struct throtl_service_queue service_queue; 142 143 struct request_queue *queue; 144 145 /* Total Number of queued bios on READ and WRITE lists */ 146 unsigned int nr_queued[2]; 147 148 /* Work for dispatching throttled bios */ 149 struct work_struct dispatch_work; 150 }; 151 152 static void throtl_pending_timer_fn(unsigned long arg); 153 154 static inline struct throtl_grp *pd_to_tg(struct blkg_policy_data *pd) 155 { 156 return pd ? container_of(pd, struct throtl_grp, pd) : NULL; 157 } 158 159 static inline struct throtl_grp *blkg_to_tg(struct blkcg_gq *blkg) 160 { 161 return pd_to_tg(blkg_to_pd(blkg, &blkcg_policy_throtl)); 162 } 163 164 static inline struct blkcg_gq *tg_to_blkg(struct throtl_grp *tg) 165 { 166 return pd_to_blkg(&tg->pd); 167 } 168 169 /** 170 * sq_to_tg - return the throl_grp the specified service queue belongs to 171 * @sq: the throtl_service_queue of interest 172 * 173 * Return the throtl_grp @sq belongs to. If @sq is the top-level one 174 * embedded in throtl_data, %NULL is returned. 175 */ 176 static struct throtl_grp *sq_to_tg(struct throtl_service_queue *sq) 177 { 178 if (sq && sq->parent_sq) 179 return container_of(sq, struct throtl_grp, service_queue); 180 else 181 return NULL; 182 } 183 184 /** 185 * sq_to_td - return throtl_data the specified service queue belongs to 186 * @sq: the throtl_service_queue of interest 187 * 188 * A service_queue can be embedded in either a throtl_grp or throtl_data. 189 * Determine the associated throtl_data accordingly and return it. 190 */ 191 static struct throtl_data *sq_to_td(struct throtl_service_queue *sq) 192 { 193 struct throtl_grp *tg = sq_to_tg(sq); 194 195 if (tg) 196 return tg->td; 197 else 198 return container_of(sq, struct throtl_data, service_queue); 199 } 200 201 /** 202 * throtl_log - log debug message via blktrace 203 * @sq: the service_queue being reported 204 * @fmt: printf format string 205 * @args: printf args 206 * 207 * The messages are prefixed with "throtl BLKG_NAME" if @sq belongs to a 208 * throtl_grp; otherwise, just "throtl". 209 */ 210 #define throtl_log(sq, fmt, args...) do { \ 211 struct throtl_grp *__tg = sq_to_tg((sq)); \ 212 struct throtl_data *__td = sq_to_td((sq)); \ 213 \ 214 (void)__td; \ 215 if (likely(!blk_trace_note_message_enabled(__td->queue))) \ 216 break; \ 217 if ((__tg)) { \ 218 char __pbuf[128]; \ 219 \ 220 blkg_path(tg_to_blkg(__tg), __pbuf, sizeof(__pbuf)); \ 221 blk_add_trace_msg(__td->queue, "throtl %s " fmt, __pbuf, ##args); \ 222 } else { \ 223 blk_add_trace_msg(__td->queue, "throtl " fmt, ##args); \ 224 } \ 225 } while (0) 226 227 static void throtl_qnode_init(struct throtl_qnode *qn, struct throtl_grp *tg) 228 { 229 INIT_LIST_HEAD(&qn->node); 230 bio_list_init(&qn->bios); 231 qn->tg = tg; 232 } 233 234 /** 235 * throtl_qnode_add_bio - add a bio to a throtl_qnode and activate it 236 * @bio: bio being added 237 * @qn: qnode to add bio to 238 * @queued: the service_queue->queued[] list @qn belongs to 239 * 240 * Add @bio to @qn and put @qn on @queued if it's not already on. 241 * @qn->tg's reference count is bumped when @qn is activated. See the 242 * comment on top of throtl_qnode definition for details. 243 */ 244 static void throtl_qnode_add_bio(struct bio *bio, struct throtl_qnode *qn, 245 struct list_head *queued) 246 { 247 bio_list_add(&qn->bios, bio); 248 if (list_empty(&qn->node)) { 249 list_add_tail(&qn->node, queued); 250 blkg_get(tg_to_blkg(qn->tg)); 251 } 252 } 253 254 /** 255 * throtl_peek_queued - peek the first bio on a qnode list 256 * @queued: the qnode list to peek 257 */ 258 static struct bio *throtl_peek_queued(struct list_head *queued) 259 { 260 struct throtl_qnode *qn = list_first_entry(queued, struct throtl_qnode, node); 261 struct bio *bio; 262 263 if (list_empty(queued)) 264 return NULL; 265 266 bio = bio_list_peek(&qn->bios); 267 WARN_ON_ONCE(!bio); 268 return bio; 269 } 270 271 /** 272 * throtl_pop_queued - pop the first bio form a qnode list 273 * @queued: the qnode list to pop a bio from 274 * @tg_to_put: optional out argument for throtl_grp to put 275 * 276 * Pop the first bio from the qnode list @queued. After popping, the first 277 * qnode is removed from @queued if empty or moved to the end of @queued so 278 * that the popping order is round-robin. 279 * 280 * When the first qnode is removed, its associated throtl_grp should be put 281 * too. If @tg_to_put is NULL, this function automatically puts it; 282 * otherwise, *@tg_to_put is set to the throtl_grp to put and the caller is 283 * responsible for putting it. 284 */ 285 static struct bio *throtl_pop_queued(struct list_head *queued, 286 struct throtl_grp **tg_to_put) 287 { 288 struct throtl_qnode *qn = list_first_entry(queued, struct throtl_qnode, node); 289 struct bio *bio; 290 291 if (list_empty(queued)) 292 return NULL; 293 294 bio = bio_list_pop(&qn->bios); 295 WARN_ON_ONCE(!bio); 296 297 if (bio_list_empty(&qn->bios)) { 298 list_del_init(&qn->node); 299 if (tg_to_put) 300 *tg_to_put = qn->tg; 301 else 302 blkg_put(tg_to_blkg(qn->tg)); 303 } else { 304 list_move_tail(&qn->node, queued); 305 } 306 307 return bio; 308 } 309 310 /* init a service_queue, assumes the caller zeroed it */ 311 static void throtl_service_queue_init(struct throtl_service_queue *sq) 312 { 313 INIT_LIST_HEAD(&sq->queued[0]); 314 INIT_LIST_HEAD(&sq->queued[1]); 315 sq->pending_tree = RB_ROOT; 316 setup_timer(&sq->pending_timer, throtl_pending_timer_fn, 317 (unsigned long)sq); 318 } 319 320 static struct blkg_policy_data *throtl_pd_alloc(gfp_t gfp, int node) 321 { 322 struct throtl_grp *tg; 323 int rw; 324 325 tg = kzalloc_node(sizeof(*tg), gfp, node); 326 if (!tg) 327 return NULL; 328 329 throtl_service_queue_init(&tg->service_queue); 330 331 for (rw = READ; rw <= WRITE; rw++) { 332 throtl_qnode_init(&tg->qnode_on_self[rw], tg); 333 throtl_qnode_init(&tg->qnode_on_parent[rw], tg); 334 } 335 336 RB_CLEAR_NODE(&tg->rb_node); 337 tg->bps[READ] = -1; 338 tg->bps[WRITE] = -1; 339 tg->iops[READ] = -1; 340 tg->iops[WRITE] = -1; 341 342 return &tg->pd; 343 } 344 345 static void throtl_pd_init(struct blkg_policy_data *pd) 346 { 347 struct throtl_grp *tg = pd_to_tg(pd); 348 struct blkcg_gq *blkg = tg_to_blkg(tg); 349 struct throtl_data *td = blkg->q->td; 350 struct throtl_service_queue *sq = &tg->service_queue; 351 352 /* 353 * If on the default hierarchy, we switch to properly hierarchical 354 * behavior where limits on a given throtl_grp are applied to the 355 * whole subtree rather than just the group itself. e.g. If 16M 356 * read_bps limit is set on the root group, the whole system can't 357 * exceed 16M for the device. 358 * 359 * If not on the default hierarchy, the broken flat hierarchy 360 * behavior is retained where all throtl_grps are treated as if 361 * they're all separate root groups right below throtl_data. 362 * Limits of a group don't interact with limits of other groups 363 * regardless of the position of the group in the hierarchy. 364 */ 365 sq->parent_sq = &td->service_queue; 366 if (cgroup_subsys_on_dfl(io_cgrp_subsys) && blkg->parent) 367 sq->parent_sq = &blkg_to_tg(blkg->parent)->service_queue; 368 tg->td = td; 369 } 370 371 /* 372 * Set has_rules[] if @tg or any of its parents have limits configured. 373 * This doesn't require walking up to the top of the hierarchy as the 374 * parent's has_rules[] is guaranteed to be correct. 375 */ 376 static void tg_update_has_rules(struct throtl_grp *tg) 377 { 378 struct throtl_grp *parent_tg = sq_to_tg(tg->service_queue.parent_sq); 379 int rw; 380 381 for (rw = READ; rw <= WRITE; rw++) 382 tg->has_rules[rw] = (parent_tg && parent_tg->has_rules[rw]) || 383 (tg->bps[rw] != -1 || tg->iops[rw] != -1); 384 } 385 386 static void throtl_pd_online(struct blkg_policy_data *pd) 387 { 388 /* 389 * We don't want new groups to escape the limits of its ancestors. 390 * Update has_rules[] after a new group is brought online. 391 */ 392 tg_update_has_rules(pd_to_tg(pd)); 393 } 394 395 static void throtl_pd_free(struct blkg_policy_data *pd) 396 { 397 struct throtl_grp *tg = pd_to_tg(pd); 398 399 del_timer_sync(&tg->service_queue.pending_timer); 400 kfree(tg); 401 } 402 403 static struct throtl_grp * 404 throtl_rb_first(struct throtl_service_queue *parent_sq) 405 { 406 /* Service tree is empty */ 407 if (!parent_sq->nr_pending) 408 return NULL; 409 410 if (!parent_sq->first_pending) 411 parent_sq->first_pending = rb_first(&parent_sq->pending_tree); 412 413 if (parent_sq->first_pending) 414 return rb_entry_tg(parent_sq->first_pending); 415 416 return NULL; 417 } 418 419 static void rb_erase_init(struct rb_node *n, struct rb_root *root) 420 { 421 rb_erase(n, root); 422 RB_CLEAR_NODE(n); 423 } 424 425 static void throtl_rb_erase(struct rb_node *n, 426 struct throtl_service_queue *parent_sq) 427 { 428 if (parent_sq->first_pending == n) 429 parent_sq->first_pending = NULL; 430 rb_erase_init(n, &parent_sq->pending_tree); 431 --parent_sq->nr_pending; 432 } 433 434 static void update_min_dispatch_time(struct throtl_service_queue *parent_sq) 435 { 436 struct throtl_grp *tg; 437 438 tg = throtl_rb_first(parent_sq); 439 if (!tg) 440 return; 441 442 parent_sq->first_pending_disptime = tg->disptime; 443 } 444 445 static void tg_service_queue_add(struct throtl_grp *tg) 446 { 447 struct throtl_service_queue *parent_sq = tg->service_queue.parent_sq; 448 struct rb_node **node = &parent_sq->pending_tree.rb_node; 449 struct rb_node *parent = NULL; 450 struct throtl_grp *__tg; 451 unsigned long key = tg->disptime; 452 int left = 1; 453 454 while (*node != NULL) { 455 parent = *node; 456 __tg = rb_entry_tg(parent); 457 458 if (time_before(key, __tg->disptime)) 459 node = &parent->rb_left; 460 else { 461 node = &parent->rb_right; 462 left = 0; 463 } 464 } 465 466 if (left) 467 parent_sq->first_pending = &tg->rb_node; 468 469 rb_link_node(&tg->rb_node, parent, node); 470 rb_insert_color(&tg->rb_node, &parent_sq->pending_tree); 471 } 472 473 static void __throtl_enqueue_tg(struct throtl_grp *tg) 474 { 475 tg_service_queue_add(tg); 476 tg->flags |= THROTL_TG_PENDING; 477 tg->service_queue.parent_sq->nr_pending++; 478 } 479 480 static void throtl_enqueue_tg(struct throtl_grp *tg) 481 { 482 if (!(tg->flags & THROTL_TG_PENDING)) 483 __throtl_enqueue_tg(tg); 484 } 485 486 static void __throtl_dequeue_tg(struct throtl_grp *tg) 487 { 488 throtl_rb_erase(&tg->rb_node, tg->service_queue.parent_sq); 489 tg->flags &= ~THROTL_TG_PENDING; 490 } 491 492 static void throtl_dequeue_tg(struct throtl_grp *tg) 493 { 494 if (tg->flags & THROTL_TG_PENDING) 495 __throtl_dequeue_tg(tg); 496 } 497 498 /* Call with queue lock held */ 499 static void throtl_schedule_pending_timer(struct throtl_service_queue *sq, 500 unsigned long expires) 501 { 502 mod_timer(&sq->pending_timer, expires); 503 throtl_log(sq, "schedule timer. delay=%lu jiffies=%lu", 504 expires - jiffies, jiffies); 505 } 506 507 /** 508 * throtl_schedule_next_dispatch - schedule the next dispatch cycle 509 * @sq: the service_queue to schedule dispatch for 510 * @force: force scheduling 511 * 512 * Arm @sq->pending_timer so that the next dispatch cycle starts on the 513 * dispatch time of the first pending child. Returns %true if either timer 514 * is armed or there's no pending child left. %false if the current 515 * dispatch window is still open and the caller should continue 516 * dispatching. 517 * 518 * If @force is %true, the dispatch timer is always scheduled and this 519 * function is guaranteed to return %true. This is to be used when the 520 * caller can't dispatch itself and needs to invoke pending_timer 521 * unconditionally. Note that forced scheduling is likely to induce short 522 * delay before dispatch starts even if @sq->first_pending_disptime is not 523 * in the future and thus shouldn't be used in hot paths. 524 */ 525 static bool throtl_schedule_next_dispatch(struct throtl_service_queue *sq, 526 bool force) 527 { 528 /* any pending children left? */ 529 if (!sq->nr_pending) 530 return true; 531 532 update_min_dispatch_time(sq); 533 534 /* is the next dispatch time in the future? */ 535 if (force || time_after(sq->first_pending_disptime, jiffies)) { 536 throtl_schedule_pending_timer(sq, sq->first_pending_disptime); 537 return true; 538 } 539 540 /* tell the caller to continue dispatching */ 541 return false; 542 } 543 544 static inline void throtl_start_new_slice_with_credit(struct throtl_grp *tg, 545 bool rw, unsigned long start) 546 { 547 tg->bytes_disp[rw] = 0; 548 tg->io_disp[rw] = 0; 549 550 /* 551 * Previous slice has expired. We must have trimmed it after last 552 * bio dispatch. That means since start of last slice, we never used 553 * that bandwidth. Do try to make use of that bandwidth while giving 554 * credit. 555 */ 556 if (time_after_eq(start, tg->slice_start[rw])) 557 tg->slice_start[rw] = start; 558 559 tg->slice_end[rw] = jiffies + throtl_slice; 560 throtl_log(&tg->service_queue, 561 "[%c] new slice with credit start=%lu end=%lu jiffies=%lu", 562 rw == READ ? 'R' : 'W', tg->slice_start[rw], 563 tg->slice_end[rw], jiffies); 564 } 565 566 static inline void throtl_start_new_slice(struct throtl_grp *tg, bool rw) 567 { 568 tg->bytes_disp[rw] = 0; 569 tg->io_disp[rw] = 0; 570 tg->slice_start[rw] = jiffies; 571 tg->slice_end[rw] = jiffies + throtl_slice; 572 throtl_log(&tg->service_queue, 573 "[%c] new slice start=%lu end=%lu jiffies=%lu", 574 rw == READ ? 'R' : 'W', tg->slice_start[rw], 575 tg->slice_end[rw], jiffies); 576 } 577 578 static inline void throtl_set_slice_end(struct throtl_grp *tg, bool rw, 579 unsigned long jiffy_end) 580 { 581 tg->slice_end[rw] = roundup(jiffy_end, throtl_slice); 582 } 583 584 static inline void throtl_extend_slice(struct throtl_grp *tg, bool rw, 585 unsigned long jiffy_end) 586 { 587 tg->slice_end[rw] = roundup(jiffy_end, throtl_slice); 588 throtl_log(&tg->service_queue, 589 "[%c] extend slice start=%lu end=%lu jiffies=%lu", 590 rw == READ ? 'R' : 'W', tg->slice_start[rw], 591 tg->slice_end[rw], jiffies); 592 } 593 594 /* Determine if previously allocated or extended slice is complete or not */ 595 static bool throtl_slice_used(struct throtl_grp *tg, bool rw) 596 { 597 if (time_in_range(jiffies, tg->slice_start[rw], tg->slice_end[rw])) 598 return false; 599 600 return 1; 601 } 602 603 /* Trim the used slices and adjust slice start accordingly */ 604 static inline void throtl_trim_slice(struct throtl_grp *tg, bool rw) 605 { 606 unsigned long nr_slices, time_elapsed, io_trim; 607 u64 bytes_trim, tmp; 608 609 BUG_ON(time_before(tg->slice_end[rw], tg->slice_start[rw])); 610 611 /* 612 * If bps are unlimited (-1), then time slice don't get 613 * renewed. Don't try to trim the slice if slice is used. A new 614 * slice will start when appropriate. 615 */ 616 if (throtl_slice_used(tg, rw)) 617 return; 618 619 /* 620 * A bio has been dispatched. Also adjust slice_end. It might happen 621 * that initially cgroup limit was very low resulting in high 622 * slice_end, but later limit was bumped up and bio was dispached 623 * sooner, then we need to reduce slice_end. A high bogus slice_end 624 * is bad because it does not allow new slice to start. 625 */ 626 627 throtl_set_slice_end(tg, rw, jiffies + throtl_slice); 628 629 time_elapsed = jiffies - tg->slice_start[rw]; 630 631 nr_slices = time_elapsed / throtl_slice; 632 633 if (!nr_slices) 634 return; 635 tmp = tg->bps[rw] * throtl_slice * nr_slices; 636 do_div(tmp, HZ); 637 bytes_trim = tmp; 638 639 io_trim = (tg->iops[rw] * throtl_slice * nr_slices)/HZ; 640 641 if (!bytes_trim && !io_trim) 642 return; 643 644 if (tg->bytes_disp[rw] >= bytes_trim) 645 tg->bytes_disp[rw] -= bytes_trim; 646 else 647 tg->bytes_disp[rw] = 0; 648 649 if (tg->io_disp[rw] >= io_trim) 650 tg->io_disp[rw] -= io_trim; 651 else 652 tg->io_disp[rw] = 0; 653 654 tg->slice_start[rw] += nr_slices * throtl_slice; 655 656 throtl_log(&tg->service_queue, 657 "[%c] trim slice nr=%lu bytes=%llu io=%lu start=%lu end=%lu jiffies=%lu", 658 rw == READ ? 'R' : 'W', nr_slices, bytes_trim, io_trim, 659 tg->slice_start[rw], tg->slice_end[rw], jiffies); 660 } 661 662 static bool tg_with_in_iops_limit(struct throtl_grp *tg, struct bio *bio, 663 unsigned long *wait) 664 { 665 bool rw = bio_data_dir(bio); 666 unsigned int io_allowed; 667 unsigned long jiffy_elapsed, jiffy_wait, jiffy_elapsed_rnd; 668 u64 tmp; 669 670 jiffy_elapsed = jiffy_elapsed_rnd = jiffies - tg->slice_start[rw]; 671 672 /* Slice has just started. Consider one slice interval */ 673 if (!jiffy_elapsed) 674 jiffy_elapsed_rnd = throtl_slice; 675 676 jiffy_elapsed_rnd = roundup(jiffy_elapsed_rnd, throtl_slice); 677 678 /* 679 * jiffy_elapsed_rnd should not be a big value as minimum iops can be 680 * 1 then at max jiffy elapsed should be equivalent of 1 second as we 681 * will allow dispatch after 1 second and after that slice should 682 * have been trimmed. 683 */ 684 685 tmp = (u64)tg->iops[rw] * jiffy_elapsed_rnd; 686 do_div(tmp, HZ); 687 688 if (tmp > UINT_MAX) 689 io_allowed = UINT_MAX; 690 else 691 io_allowed = tmp; 692 693 if (tg->io_disp[rw] + 1 <= io_allowed) { 694 if (wait) 695 *wait = 0; 696 return true; 697 } 698 699 /* Calc approx time to dispatch */ 700 jiffy_wait = ((tg->io_disp[rw] + 1) * HZ)/tg->iops[rw] + 1; 701 702 if (jiffy_wait > jiffy_elapsed) 703 jiffy_wait = jiffy_wait - jiffy_elapsed; 704 else 705 jiffy_wait = 1; 706 707 if (wait) 708 *wait = jiffy_wait; 709 return 0; 710 } 711 712 static bool tg_with_in_bps_limit(struct throtl_grp *tg, struct bio *bio, 713 unsigned long *wait) 714 { 715 bool rw = bio_data_dir(bio); 716 u64 bytes_allowed, extra_bytes, tmp; 717 unsigned long jiffy_elapsed, jiffy_wait, jiffy_elapsed_rnd; 718 719 jiffy_elapsed = jiffy_elapsed_rnd = jiffies - tg->slice_start[rw]; 720 721 /* Slice has just started. Consider one slice interval */ 722 if (!jiffy_elapsed) 723 jiffy_elapsed_rnd = throtl_slice; 724 725 jiffy_elapsed_rnd = roundup(jiffy_elapsed_rnd, throtl_slice); 726 727 tmp = tg->bps[rw] * jiffy_elapsed_rnd; 728 do_div(tmp, HZ); 729 bytes_allowed = tmp; 730 731 if (tg->bytes_disp[rw] + bio->bi_iter.bi_size <= bytes_allowed) { 732 if (wait) 733 *wait = 0; 734 return true; 735 } 736 737 /* Calc approx time to dispatch */ 738 extra_bytes = tg->bytes_disp[rw] + bio->bi_iter.bi_size - bytes_allowed; 739 jiffy_wait = div64_u64(extra_bytes * HZ, tg->bps[rw]); 740 741 if (!jiffy_wait) 742 jiffy_wait = 1; 743 744 /* 745 * This wait time is without taking into consideration the rounding 746 * up we did. Add that time also. 747 */ 748 jiffy_wait = jiffy_wait + (jiffy_elapsed_rnd - jiffy_elapsed); 749 if (wait) 750 *wait = jiffy_wait; 751 return 0; 752 } 753 754 /* 755 * Returns whether one can dispatch a bio or not. Also returns approx number 756 * of jiffies to wait before this bio is with-in IO rate and can be dispatched 757 */ 758 static bool tg_may_dispatch(struct throtl_grp *tg, struct bio *bio, 759 unsigned long *wait) 760 { 761 bool rw = bio_data_dir(bio); 762 unsigned long bps_wait = 0, iops_wait = 0, max_wait = 0; 763 764 /* 765 * Currently whole state machine of group depends on first bio 766 * queued in the group bio list. So one should not be calling 767 * this function with a different bio if there are other bios 768 * queued. 769 */ 770 BUG_ON(tg->service_queue.nr_queued[rw] && 771 bio != throtl_peek_queued(&tg->service_queue.queued[rw])); 772 773 /* If tg->bps = -1, then BW is unlimited */ 774 if (tg->bps[rw] == -1 && tg->iops[rw] == -1) { 775 if (wait) 776 *wait = 0; 777 return true; 778 } 779 780 /* 781 * If previous slice expired, start a new one otherwise renew/extend 782 * existing slice to make sure it is at least throtl_slice interval 783 * long since now. New slice is started only for empty throttle group. 784 * If there is queued bio, that means there should be an active 785 * slice and it should be extended instead. 786 */ 787 if (throtl_slice_used(tg, rw) && !(tg->service_queue.nr_queued[rw])) 788 throtl_start_new_slice(tg, rw); 789 else { 790 if (time_before(tg->slice_end[rw], jiffies + throtl_slice)) 791 throtl_extend_slice(tg, rw, jiffies + throtl_slice); 792 } 793 794 if (tg_with_in_bps_limit(tg, bio, &bps_wait) && 795 tg_with_in_iops_limit(tg, bio, &iops_wait)) { 796 if (wait) 797 *wait = 0; 798 return 1; 799 } 800 801 max_wait = max(bps_wait, iops_wait); 802 803 if (wait) 804 *wait = max_wait; 805 806 if (time_before(tg->slice_end[rw], jiffies + max_wait)) 807 throtl_extend_slice(tg, rw, jiffies + max_wait); 808 809 return 0; 810 } 811 812 static void throtl_charge_bio(struct throtl_grp *tg, struct bio *bio) 813 { 814 bool rw = bio_data_dir(bio); 815 816 /* Charge the bio to the group */ 817 tg->bytes_disp[rw] += bio->bi_iter.bi_size; 818 tg->io_disp[rw]++; 819 820 /* 821 * BIO_THROTTLED is used to prevent the same bio to be throttled 822 * more than once as a throttled bio will go through blk-throtl the 823 * second time when it eventually gets issued. Set it when a bio 824 * is being charged to a tg. 825 */ 826 if (!bio_flagged(bio, BIO_THROTTLED)) 827 bio_set_flag(bio, BIO_THROTTLED); 828 } 829 830 /** 831 * throtl_add_bio_tg - add a bio to the specified throtl_grp 832 * @bio: bio to add 833 * @qn: qnode to use 834 * @tg: the target throtl_grp 835 * 836 * Add @bio to @tg's service_queue using @qn. If @qn is not specified, 837 * tg->qnode_on_self[] is used. 838 */ 839 static void throtl_add_bio_tg(struct bio *bio, struct throtl_qnode *qn, 840 struct throtl_grp *tg) 841 { 842 struct throtl_service_queue *sq = &tg->service_queue; 843 bool rw = bio_data_dir(bio); 844 845 if (!qn) 846 qn = &tg->qnode_on_self[rw]; 847 848 /* 849 * If @tg doesn't currently have any bios queued in the same 850 * direction, queueing @bio can change when @tg should be 851 * dispatched. Mark that @tg was empty. This is automatically 852 * cleaered on the next tg_update_disptime(). 853 */ 854 if (!sq->nr_queued[rw]) 855 tg->flags |= THROTL_TG_WAS_EMPTY; 856 857 throtl_qnode_add_bio(bio, qn, &sq->queued[rw]); 858 859 sq->nr_queued[rw]++; 860 throtl_enqueue_tg(tg); 861 } 862 863 static void tg_update_disptime(struct throtl_grp *tg) 864 { 865 struct throtl_service_queue *sq = &tg->service_queue; 866 unsigned long read_wait = -1, write_wait = -1, min_wait = -1, disptime; 867 struct bio *bio; 868 869 bio = throtl_peek_queued(&sq->queued[READ]); 870 if (bio) 871 tg_may_dispatch(tg, bio, &read_wait); 872 873 bio = throtl_peek_queued(&sq->queued[WRITE]); 874 if (bio) 875 tg_may_dispatch(tg, bio, &write_wait); 876 877 min_wait = min(read_wait, write_wait); 878 disptime = jiffies + min_wait; 879 880 /* Update dispatch time */ 881 throtl_dequeue_tg(tg); 882 tg->disptime = disptime; 883 throtl_enqueue_tg(tg); 884 885 /* see throtl_add_bio_tg() */ 886 tg->flags &= ~THROTL_TG_WAS_EMPTY; 887 } 888 889 static void start_parent_slice_with_credit(struct throtl_grp *child_tg, 890 struct throtl_grp *parent_tg, bool rw) 891 { 892 if (throtl_slice_used(parent_tg, rw)) { 893 throtl_start_new_slice_with_credit(parent_tg, rw, 894 child_tg->slice_start[rw]); 895 } 896 897 } 898 899 static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw) 900 { 901 struct throtl_service_queue *sq = &tg->service_queue; 902 struct throtl_service_queue *parent_sq = sq->parent_sq; 903 struct throtl_grp *parent_tg = sq_to_tg(parent_sq); 904 struct throtl_grp *tg_to_put = NULL; 905 struct bio *bio; 906 907 /* 908 * @bio is being transferred from @tg to @parent_sq. Popping a bio 909 * from @tg may put its reference and @parent_sq might end up 910 * getting released prematurely. Remember the tg to put and put it 911 * after @bio is transferred to @parent_sq. 912 */ 913 bio = throtl_pop_queued(&sq->queued[rw], &tg_to_put); 914 sq->nr_queued[rw]--; 915 916 throtl_charge_bio(tg, bio); 917 918 /* 919 * If our parent is another tg, we just need to transfer @bio to 920 * the parent using throtl_add_bio_tg(). If our parent is 921 * @td->service_queue, @bio is ready to be issued. Put it on its 922 * bio_lists[] and decrease total number queued. The caller is 923 * responsible for issuing these bios. 924 */ 925 if (parent_tg) { 926 throtl_add_bio_tg(bio, &tg->qnode_on_parent[rw], parent_tg); 927 start_parent_slice_with_credit(tg, parent_tg, rw); 928 } else { 929 throtl_qnode_add_bio(bio, &tg->qnode_on_parent[rw], 930 &parent_sq->queued[rw]); 931 BUG_ON(tg->td->nr_queued[rw] <= 0); 932 tg->td->nr_queued[rw]--; 933 } 934 935 throtl_trim_slice(tg, rw); 936 937 if (tg_to_put) 938 blkg_put(tg_to_blkg(tg_to_put)); 939 } 940 941 static int throtl_dispatch_tg(struct throtl_grp *tg) 942 { 943 struct throtl_service_queue *sq = &tg->service_queue; 944 unsigned int nr_reads = 0, nr_writes = 0; 945 unsigned int max_nr_reads = throtl_grp_quantum*3/4; 946 unsigned int max_nr_writes = throtl_grp_quantum - max_nr_reads; 947 struct bio *bio; 948 949 /* Try to dispatch 75% READS and 25% WRITES */ 950 951 while ((bio = throtl_peek_queued(&sq->queued[READ])) && 952 tg_may_dispatch(tg, bio, NULL)) { 953 954 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 955 nr_reads++; 956 957 if (nr_reads >= max_nr_reads) 958 break; 959 } 960 961 while ((bio = throtl_peek_queued(&sq->queued[WRITE])) && 962 tg_may_dispatch(tg, bio, NULL)) { 963 964 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 965 nr_writes++; 966 967 if (nr_writes >= max_nr_writes) 968 break; 969 } 970 971 return nr_reads + nr_writes; 972 } 973 974 static int throtl_select_dispatch(struct throtl_service_queue *parent_sq) 975 { 976 unsigned int nr_disp = 0; 977 978 while (1) { 979 struct throtl_grp *tg = throtl_rb_first(parent_sq); 980 struct throtl_service_queue *sq = &tg->service_queue; 981 982 if (!tg) 983 break; 984 985 if (time_before(jiffies, tg->disptime)) 986 break; 987 988 throtl_dequeue_tg(tg); 989 990 nr_disp += throtl_dispatch_tg(tg); 991 992 if (sq->nr_queued[0] || sq->nr_queued[1]) 993 tg_update_disptime(tg); 994 995 if (nr_disp >= throtl_quantum) 996 break; 997 } 998 999 return nr_disp; 1000 } 1001 1002 /** 1003 * throtl_pending_timer_fn - timer function for service_queue->pending_timer 1004 * @arg: the throtl_service_queue being serviced 1005 * 1006 * This timer is armed when a child throtl_grp with active bio's become 1007 * pending and queued on the service_queue's pending_tree and expires when 1008 * the first child throtl_grp should be dispatched. This function 1009 * dispatches bio's from the children throtl_grps to the parent 1010 * service_queue. 1011 * 1012 * If the parent's parent is another throtl_grp, dispatching is propagated 1013 * by either arming its pending_timer or repeating dispatch directly. If 1014 * the top-level service_tree is reached, throtl_data->dispatch_work is 1015 * kicked so that the ready bio's are issued. 1016 */ 1017 static void throtl_pending_timer_fn(unsigned long arg) 1018 { 1019 struct throtl_service_queue *sq = (void *)arg; 1020 struct throtl_grp *tg = sq_to_tg(sq); 1021 struct throtl_data *td = sq_to_td(sq); 1022 struct request_queue *q = td->queue; 1023 struct throtl_service_queue *parent_sq; 1024 bool dispatched; 1025 int ret; 1026 1027 spin_lock_irq(q->queue_lock); 1028 again: 1029 parent_sq = sq->parent_sq; 1030 dispatched = false; 1031 1032 while (true) { 1033 throtl_log(sq, "dispatch nr_queued=%u read=%u write=%u", 1034 sq->nr_queued[READ] + sq->nr_queued[WRITE], 1035 sq->nr_queued[READ], sq->nr_queued[WRITE]); 1036 1037 ret = throtl_select_dispatch(sq); 1038 if (ret) { 1039 throtl_log(sq, "bios disp=%u", ret); 1040 dispatched = true; 1041 } 1042 1043 if (throtl_schedule_next_dispatch(sq, false)) 1044 break; 1045 1046 /* this dispatch windows is still open, relax and repeat */ 1047 spin_unlock_irq(q->queue_lock); 1048 cpu_relax(); 1049 spin_lock_irq(q->queue_lock); 1050 } 1051 1052 if (!dispatched) 1053 goto out_unlock; 1054 1055 if (parent_sq) { 1056 /* @parent_sq is another throl_grp, propagate dispatch */ 1057 if (tg->flags & THROTL_TG_WAS_EMPTY) { 1058 tg_update_disptime(tg); 1059 if (!throtl_schedule_next_dispatch(parent_sq, false)) { 1060 /* window is already open, repeat dispatching */ 1061 sq = parent_sq; 1062 tg = sq_to_tg(sq); 1063 goto again; 1064 } 1065 } 1066 } else { 1067 /* reached the top-level, queue issueing */ 1068 queue_work(kthrotld_workqueue, &td->dispatch_work); 1069 } 1070 out_unlock: 1071 spin_unlock_irq(q->queue_lock); 1072 } 1073 1074 /** 1075 * blk_throtl_dispatch_work_fn - work function for throtl_data->dispatch_work 1076 * @work: work item being executed 1077 * 1078 * This function is queued for execution when bio's reach the bio_lists[] 1079 * of throtl_data->service_queue. Those bio's are ready and issued by this 1080 * function. 1081 */ 1082 static void blk_throtl_dispatch_work_fn(struct work_struct *work) 1083 { 1084 struct throtl_data *td = container_of(work, struct throtl_data, 1085 dispatch_work); 1086 struct throtl_service_queue *td_sq = &td->service_queue; 1087 struct request_queue *q = td->queue; 1088 struct bio_list bio_list_on_stack; 1089 struct bio *bio; 1090 struct blk_plug plug; 1091 int rw; 1092 1093 bio_list_init(&bio_list_on_stack); 1094 1095 spin_lock_irq(q->queue_lock); 1096 for (rw = READ; rw <= WRITE; rw++) 1097 while ((bio = throtl_pop_queued(&td_sq->queued[rw], NULL))) 1098 bio_list_add(&bio_list_on_stack, bio); 1099 spin_unlock_irq(q->queue_lock); 1100 1101 if (!bio_list_empty(&bio_list_on_stack)) { 1102 blk_start_plug(&plug); 1103 while((bio = bio_list_pop(&bio_list_on_stack))) 1104 generic_make_request(bio); 1105 blk_finish_plug(&plug); 1106 } 1107 } 1108 1109 static u64 tg_prfill_conf_u64(struct seq_file *sf, struct blkg_policy_data *pd, 1110 int off) 1111 { 1112 struct throtl_grp *tg = pd_to_tg(pd); 1113 u64 v = *(u64 *)((void *)tg + off); 1114 1115 if (v == -1) 1116 return 0; 1117 return __blkg_prfill_u64(sf, pd, v); 1118 } 1119 1120 static u64 tg_prfill_conf_uint(struct seq_file *sf, struct blkg_policy_data *pd, 1121 int off) 1122 { 1123 struct throtl_grp *tg = pd_to_tg(pd); 1124 unsigned int v = *(unsigned int *)((void *)tg + off); 1125 1126 if (v == -1) 1127 return 0; 1128 return __blkg_prfill_u64(sf, pd, v); 1129 } 1130 1131 static int tg_print_conf_u64(struct seq_file *sf, void *v) 1132 { 1133 blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_conf_u64, 1134 &blkcg_policy_throtl, seq_cft(sf)->private, false); 1135 return 0; 1136 } 1137 1138 static int tg_print_conf_uint(struct seq_file *sf, void *v) 1139 { 1140 blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_conf_uint, 1141 &blkcg_policy_throtl, seq_cft(sf)->private, false); 1142 return 0; 1143 } 1144 1145 static void tg_conf_updated(struct throtl_grp *tg) 1146 { 1147 struct throtl_service_queue *sq = &tg->service_queue; 1148 struct cgroup_subsys_state *pos_css; 1149 struct blkcg_gq *blkg; 1150 1151 throtl_log(&tg->service_queue, 1152 "limit change rbps=%llu wbps=%llu riops=%u wiops=%u", 1153 tg->bps[READ], tg->bps[WRITE], 1154 tg->iops[READ], tg->iops[WRITE]); 1155 1156 /* 1157 * Update has_rules[] flags for the updated tg's subtree. A tg is 1158 * considered to have rules if either the tg itself or any of its 1159 * ancestors has rules. This identifies groups without any 1160 * restrictions in the whole hierarchy and allows them to bypass 1161 * blk-throttle. 1162 */ 1163 blkg_for_each_descendant_pre(blkg, pos_css, tg_to_blkg(tg)) 1164 tg_update_has_rules(blkg_to_tg(blkg)); 1165 1166 /* 1167 * We're already holding queue_lock and know @tg is valid. Let's 1168 * apply the new config directly. 1169 * 1170 * Restart the slices for both READ and WRITES. It might happen 1171 * that a group's limit are dropped suddenly and we don't want to 1172 * account recently dispatched IO with new low rate. 1173 */ 1174 throtl_start_new_slice(tg, 0); 1175 throtl_start_new_slice(tg, 1); 1176 1177 if (tg->flags & THROTL_TG_PENDING) { 1178 tg_update_disptime(tg); 1179 throtl_schedule_next_dispatch(sq->parent_sq, true); 1180 } 1181 } 1182 1183 static ssize_t tg_set_conf(struct kernfs_open_file *of, 1184 char *buf, size_t nbytes, loff_t off, bool is_u64) 1185 { 1186 struct blkcg *blkcg = css_to_blkcg(of_css(of)); 1187 struct blkg_conf_ctx ctx; 1188 struct throtl_grp *tg; 1189 int ret; 1190 u64 v; 1191 1192 ret = blkg_conf_prep(blkcg, &blkcg_policy_throtl, buf, &ctx); 1193 if (ret) 1194 return ret; 1195 1196 ret = -EINVAL; 1197 if (sscanf(ctx.body, "%llu", &v) != 1) 1198 goto out_finish; 1199 if (!v) 1200 v = -1; 1201 1202 tg = blkg_to_tg(ctx.blkg); 1203 1204 if (is_u64) 1205 *(u64 *)((void *)tg + of_cft(of)->private) = v; 1206 else 1207 *(unsigned int *)((void *)tg + of_cft(of)->private) = v; 1208 1209 tg_conf_updated(tg); 1210 ret = 0; 1211 out_finish: 1212 blkg_conf_finish(&ctx); 1213 return ret ?: nbytes; 1214 } 1215 1216 static ssize_t tg_set_conf_u64(struct kernfs_open_file *of, 1217 char *buf, size_t nbytes, loff_t off) 1218 { 1219 return tg_set_conf(of, buf, nbytes, off, true); 1220 } 1221 1222 static ssize_t tg_set_conf_uint(struct kernfs_open_file *of, 1223 char *buf, size_t nbytes, loff_t off) 1224 { 1225 return tg_set_conf(of, buf, nbytes, off, false); 1226 } 1227 1228 static struct cftype throtl_legacy_files[] = { 1229 { 1230 .name = "throttle.read_bps_device", 1231 .private = offsetof(struct throtl_grp, bps[READ]), 1232 .seq_show = tg_print_conf_u64, 1233 .write = tg_set_conf_u64, 1234 }, 1235 { 1236 .name = "throttle.write_bps_device", 1237 .private = offsetof(struct throtl_grp, bps[WRITE]), 1238 .seq_show = tg_print_conf_u64, 1239 .write = tg_set_conf_u64, 1240 }, 1241 { 1242 .name = "throttle.read_iops_device", 1243 .private = offsetof(struct throtl_grp, iops[READ]), 1244 .seq_show = tg_print_conf_uint, 1245 .write = tg_set_conf_uint, 1246 }, 1247 { 1248 .name = "throttle.write_iops_device", 1249 .private = offsetof(struct throtl_grp, iops[WRITE]), 1250 .seq_show = tg_print_conf_uint, 1251 .write = tg_set_conf_uint, 1252 }, 1253 { 1254 .name = "throttle.io_service_bytes", 1255 .private = (unsigned long)&blkcg_policy_throtl, 1256 .seq_show = blkg_print_stat_bytes, 1257 }, 1258 { 1259 .name = "throttle.io_serviced", 1260 .private = (unsigned long)&blkcg_policy_throtl, 1261 .seq_show = blkg_print_stat_ios, 1262 }, 1263 { } /* terminate */ 1264 }; 1265 1266 static u64 tg_prfill_max(struct seq_file *sf, struct blkg_policy_data *pd, 1267 int off) 1268 { 1269 struct throtl_grp *tg = pd_to_tg(pd); 1270 const char *dname = blkg_dev_name(pd->blkg); 1271 char bufs[4][21] = { "max", "max", "max", "max" }; 1272 1273 if (!dname) 1274 return 0; 1275 if (tg->bps[READ] == -1 && tg->bps[WRITE] == -1 && 1276 tg->iops[READ] == -1 && tg->iops[WRITE] == -1) 1277 return 0; 1278 1279 if (tg->bps[READ] != -1) 1280 snprintf(bufs[0], sizeof(bufs[0]), "%llu", tg->bps[READ]); 1281 if (tg->bps[WRITE] != -1) 1282 snprintf(bufs[1], sizeof(bufs[1]), "%llu", tg->bps[WRITE]); 1283 if (tg->iops[READ] != -1) 1284 snprintf(bufs[2], sizeof(bufs[2]), "%u", tg->iops[READ]); 1285 if (tg->iops[WRITE] != -1) 1286 snprintf(bufs[3], sizeof(bufs[3]), "%u", tg->iops[WRITE]); 1287 1288 seq_printf(sf, "%s rbps=%s wbps=%s riops=%s wiops=%s\n", 1289 dname, bufs[0], bufs[1], bufs[2], bufs[3]); 1290 return 0; 1291 } 1292 1293 static int tg_print_max(struct seq_file *sf, void *v) 1294 { 1295 blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_max, 1296 &blkcg_policy_throtl, seq_cft(sf)->private, false); 1297 return 0; 1298 } 1299 1300 static ssize_t tg_set_max(struct kernfs_open_file *of, 1301 char *buf, size_t nbytes, loff_t off) 1302 { 1303 struct blkcg *blkcg = css_to_blkcg(of_css(of)); 1304 struct blkg_conf_ctx ctx; 1305 struct throtl_grp *tg; 1306 u64 v[4]; 1307 int ret; 1308 1309 ret = blkg_conf_prep(blkcg, &blkcg_policy_throtl, buf, &ctx); 1310 if (ret) 1311 return ret; 1312 1313 tg = blkg_to_tg(ctx.blkg); 1314 1315 v[0] = tg->bps[READ]; 1316 v[1] = tg->bps[WRITE]; 1317 v[2] = tg->iops[READ]; 1318 v[3] = tg->iops[WRITE]; 1319 1320 while (true) { 1321 char tok[27]; /* wiops=18446744073709551616 */ 1322 char *p; 1323 u64 val = -1; 1324 int len; 1325 1326 if (sscanf(ctx.body, "%26s%n", tok, &len) != 1) 1327 break; 1328 if (tok[0] == '\0') 1329 break; 1330 ctx.body += len; 1331 1332 ret = -EINVAL; 1333 p = tok; 1334 strsep(&p, "="); 1335 if (!p || (sscanf(p, "%llu", &val) != 1 && strcmp(p, "max"))) 1336 goto out_finish; 1337 1338 ret = -ERANGE; 1339 if (!val) 1340 goto out_finish; 1341 1342 ret = -EINVAL; 1343 if (!strcmp(tok, "rbps")) 1344 v[0] = val; 1345 else if (!strcmp(tok, "wbps")) 1346 v[1] = val; 1347 else if (!strcmp(tok, "riops")) 1348 v[2] = min_t(u64, val, UINT_MAX); 1349 else if (!strcmp(tok, "wiops")) 1350 v[3] = min_t(u64, val, UINT_MAX); 1351 else 1352 goto out_finish; 1353 } 1354 1355 tg->bps[READ] = v[0]; 1356 tg->bps[WRITE] = v[1]; 1357 tg->iops[READ] = v[2]; 1358 tg->iops[WRITE] = v[3]; 1359 1360 tg_conf_updated(tg); 1361 ret = 0; 1362 out_finish: 1363 blkg_conf_finish(&ctx); 1364 return ret ?: nbytes; 1365 } 1366 1367 static struct cftype throtl_files[] = { 1368 { 1369 .name = "max", 1370 .flags = CFTYPE_NOT_ON_ROOT, 1371 .seq_show = tg_print_max, 1372 .write = tg_set_max, 1373 }, 1374 { } /* terminate */ 1375 }; 1376 1377 static void throtl_shutdown_wq(struct request_queue *q) 1378 { 1379 struct throtl_data *td = q->td; 1380 1381 cancel_work_sync(&td->dispatch_work); 1382 } 1383 1384 static struct blkcg_policy blkcg_policy_throtl = { 1385 .dfl_cftypes = throtl_files, 1386 .legacy_cftypes = throtl_legacy_files, 1387 1388 .pd_alloc_fn = throtl_pd_alloc, 1389 .pd_init_fn = throtl_pd_init, 1390 .pd_online_fn = throtl_pd_online, 1391 .pd_free_fn = throtl_pd_free, 1392 }; 1393 1394 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg, 1395 struct bio *bio) 1396 { 1397 struct throtl_qnode *qn = NULL; 1398 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg); 1399 struct throtl_service_queue *sq; 1400 bool rw = bio_data_dir(bio); 1401 bool throttled = false; 1402 1403 WARN_ON_ONCE(!rcu_read_lock_held()); 1404 1405 /* see throtl_charge_bio() */ 1406 if (bio_flagged(bio, BIO_THROTTLED) || !tg->has_rules[rw]) 1407 goto out; 1408 1409 spin_lock_irq(q->queue_lock); 1410 1411 if (unlikely(blk_queue_bypass(q))) 1412 goto out_unlock; 1413 1414 sq = &tg->service_queue; 1415 1416 while (true) { 1417 /* throtl is FIFO - if bios are already queued, should queue */ 1418 if (sq->nr_queued[rw]) 1419 break; 1420 1421 /* if above limits, break to queue */ 1422 if (!tg_may_dispatch(tg, bio, NULL)) 1423 break; 1424 1425 /* within limits, let's charge and dispatch directly */ 1426 throtl_charge_bio(tg, bio); 1427 1428 /* 1429 * We need to trim slice even when bios are not being queued 1430 * otherwise it might happen that a bio is not queued for 1431 * a long time and slice keeps on extending and trim is not 1432 * called for a long time. Now if limits are reduced suddenly 1433 * we take into account all the IO dispatched so far at new 1434 * low rate and * newly queued IO gets a really long dispatch 1435 * time. 1436 * 1437 * So keep on trimming slice even if bio is not queued. 1438 */ 1439 throtl_trim_slice(tg, rw); 1440 1441 /* 1442 * @bio passed through this layer without being throttled. 1443 * Climb up the ladder. If we''re already at the top, it 1444 * can be executed directly. 1445 */ 1446 qn = &tg->qnode_on_parent[rw]; 1447 sq = sq->parent_sq; 1448 tg = sq_to_tg(sq); 1449 if (!tg) 1450 goto out_unlock; 1451 } 1452 1453 /* out-of-limit, queue to @tg */ 1454 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d", 1455 rw == READ ? 'R' : 'W', 1456 tg->bytes_disp[rw], bio->bi_iter.bi_size, tg->bps[rw], 1457 tg->io_disp[rw], tg->iops[rw], 1458 sq->nr_queued[READ], sq->nr_queued[WRITE]); 1459 1460 bio_associate_current(bio); 1461 tg->td->nr_queued[rw]++; 1462 throtl_add_bio_tg(bio, qn, tg); 1463 throttled = true; 1464 1465 /* 1466 * Update @tg's dispatch time and force schedule dispatch if @tg 1467 * was empty before @bio. The forced scheduling isn't likely to 1468 * cause undue delay as @bio is likely to be dispatched directly if 1469 * its @tg's disptime is not in the future. 1470 */ 1471 if (tg->flags & THROTL_TG_WAS_EMPTY) { 1472 tg_update_disptime(tg); 1473 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true); 1474 } 1475 1476 out_unlock: 1477 spin_unlock_irq(q->queue_lock); 1478 out: 1479 /* 1480 * As multiple blk-throtls may stack in the same issue path, we 1481 * don't want bios to leave with the flag set. Clear the flag if 1482 * being issued. 1483 */ 1484 if (!throttled) 1485 bio_clear_flag(bio, BIO_THROTTLED); 1486 return throttled; 1487 } 1488 1489 /* 1490 * Dispatch all bios from all children tg's queued on @parent_sq. On 1491 * return, @parent_sq is guaranteed to not have any active children tg's 1492 * and all bios from previously active tg's are on @parent_sq->bio_lists[]. 1493 */ 1494 static void tg_drain_bios(struct throtl_service_queue *parent_sq) 1495 { 1496 struct throtl_grp *tg; 1497 1498 while ((tg = throtl_rb_first(parent_sq))) { 1499 struct throtl_service_queue *sq = &tg->service_queue; 1500 struct bio *bio; 1501 1502 throtl_dequeue_tg(tg); 1503 1504 while ((bio = throtl_peek_queued(&sq->queued[READ]))) 1505 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 1506 while ((bio = throtl_peek_queued(&sq->queued[WRITE]))) 1507 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 1508 } 1509 } 1510 1511 /** 1512 * blk_throtl_drain - drain throttled bios 1513 * @q: request_queue to drain throttled bios for 1514 * 1515 * Dispatch all currently throttled bios on @q through ->make_request_fn(). 1516 */ 1517 void blk_throtl_drain(struct request_queue *q) 1518 __releases(q->queue_lock) __acquires(q->queue_lock) 1519 { 1520 struct throtl_data *td = q->td; 1521 struct blkcg_gq *blkg; 1522 struct cgroup_subsys_state *pos_css; 1523 struct bio *bio; 1524 int rw; 1525 1526 queue_lockdep_assert_held(q); 1527 rcu_read_lock(); 1528 1529 /* 1530 * Drain each tg while doing post-order walk on the blkg tree, so 1531 * that all bios are propagated to td->service_queue. It'd be 1532 * better to walk service_queue tree directly but blkg walk is 1533 * easier. 1534 */ 1535 blkg_for_each_descendant_post(blkg, pos_css, td->queue->root_blkg) 1536 tg_drain_bios(&blkg_to_tg(blkg)->service_queue); 1537 1538 /* finally, transfer bios from top-level tg's into the td */ 1539 tg_drain_bios(&td->service_queue); 1540 1541 rcu_read_unlock(); 1542 spin_unlock_irq(q->queue_lock); 1543 1544 /* all bios now should be in td->service_queue, issue them */ 1545 for (rw = READ; rw <= WRITE; rw++) 1546 while ((bio = throtl_pop_queued(&td->service_queue.queued[rw], 1547 NULL))) 1548 generic_make_request(bio); 1549 1550 spin_lock_irq(q->queue_lock); 1551 } 1552 1553 int blk_throtl_init(struct request_queue *q) 1554 { 1555 struct throtl_data *td; 1556 int ret; 1557 1558 td = kzalloc_node(sizeof(*td), GFP_KERNEL, q->node); 1559 if (!td) 1560 return -ENOMEM; 1561 1562 INIT_WORK(&td->dispatch_work, blk_throtl_dispatch_work_fn); 1563 throtl_service_queue_init(&td->service_queue); 1564 1565 q->td = td; 1566 td->queue = q; 1567 1568 /* activate policy */ 1569 ret = blkcg_activate_policy(q, &blkcg_policy_throtl); 1570 if (ret) 1571 kfree(td); 1572 return ret; 1573 } 1574 1575 void blk_throtl_exit(struct request_queue *q) 1576 { 1577 BUG_ON(!q->td); 1578 throtl_shutdown_wq(q); 1579 blkcg_deactivate_policy(q, &blkcg_policy_throtl); 1580 kfree(q->td); 1581 } 1582 1583 static int __init throtl_init(void) 1584 { 1585 kthrotld_workqueue = alloc_workqueue("kthrotld", WQ_MEM_RECLAIM, 0); 1586 if (!kthrotld_workqueue) 1587 panic("Failed to create kthrotld\n"); 1588 1589 return blkcg_policy_register(&blkcg_policy_throtl); 1590 } 1591 1592 module_init(throtl_init); 1593