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 embeded 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. 784 */ 785 if (throtl_slice_used(tg, rw)) 786 throtl_start_new_slice(tg, rw); 787 else { 788 if (time_before(tg->slice_end[rw], jiffies + throtl_slice)) 789 throtl_extend_slice(tg, rw, jiffies + throtl_slice); 790 } 791 792 if (tg_with_in_bps_limit(tg, bio, &bps_wait) && 793 tg_with_in_iops_limit(tg, bio, &iops_wait)) { 794 if (wait) 795 *wait = 0; 796 return 1; 797 } 798 799 max_wait = max(bps_wait, iops_wait); 800 801 if (wait) 802 *wait = max_wait; 803 804 if (time_before(tg->slice_end[rw], jiffies + max_wait)) 805 throtl_extend_slice(tg, rw, jiffies + max_wait); 806 807 return 0; 808 } 809 810 static void throtl_charge_bio(struct throtl_grp *tg, struct bio *bio) 811 { 812 bool rw = bio_data_dir(bio); 813 814 /* Charge the bio to the group */ 815 tg->bytes_disp[rw] += bio->bi_iter.bi_size; 816 tg->io_disp[rw]++; 817 818 /* 819 * REQ_THROTTLED is used to prevent the same bio to be throttled 820 * more than once as a throttled bio will go through blk-throtl the 821 * second time when it eventually gets issued. Set it when a bio 822 * is being charged to a tg. 823 */ 824 if (!(bio->bi_opf & REQ_THROTTLED)) 825 bio->bi_opf |= REQ_THROTTLED; 826 } 827 828 /** 829 * throtl_add_bio_tg - add a bio to the specified throtl_grp 830 * @bio: bio to add 831 * @qn: qnode to use 832 * @tg: the target throtl_grp 833 * 834 * Add @bio to @tg's service_queue using @qn. If @qn is not specified, 835 * tg->qnode_on_self[] is used. 836 */ 837 static void throtl_add_bio_tg(struct bio *bio, struct throtl_qnode *qn, 838 struct throtl_grp *tg) 839 { 840 struct throtl_service_queue *sq = &tg->service_queue; 841 bool rw = bio_data_dir(bio); 842 843 if (!qn) 844 qn = &tg->qnode_on_self[rw]; 845 846 /* 847 * If @tg doesn't currently have any bios queued in the same 848 * direction, queueing @bio can change when @tg should be 849 * dispatched. Mark that @tg was empty. This is automatically 850 * cleaered on the next tg_update_disptime(). 851 */ 852 if (!sq->nr_queued[rw]) 853 tg->flags |= THROTL_TG_WAS_EMPTY; 854 855 throtl_qnode_add_bio(bio, qn, &sq->queued[rw]); 856 857 sq->nr_queued[rw]++; 858 throtl_enqueue_tg(tg); 859 } 860 861 static void tg_update_disptime(struct throtl_grp *tg) 862 { 863 struct throtl_service_queue *sq = &tg->service_queue; 864 unsigned long read_wait = -1, write_wait = -1, min_wait = -1, disptime; 865 struct bio *bio; 866 867 if ((bio = throtl_peek_queued(&sq->queued[READ]))) 868 tg_may_dispatch(tg, bio, &read_wait); 869 870 if ((bio = throtl_peek_queued(&sq->queued[WRITE]))) 871 tg_may_dispatch(tg, bio, &write_wait); 872 873 min_wait = min(read_wait, write_wait); 874 disptime = jiffies + min_wait; 875 876 /* Update dispatch time */ 877 throtl_dequeue_tg(tg); 878 tg->disptime = disptime; 879 throtl_enqueue_tg(tg); 880 881 /* see throtl_add_bio_tg() */ 882 tg->flags &= ~THROTL_TG_WAS_EMPTY; 883 } 884 885 static void start_parent_slice_with_credit(struct throtl_grp *child_tg, 886 struct throtl_grp *parent_tg, bool rw) 887 { 888 if (throtl_slice_used(parent_tg, rw)) { 889 throtl_start_new_slice_with_credit(parent_tg, rw, 890 child_tg->slice_start[rw]); 891 } 892 893 } 894 895 static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw) 896 { 897 struct throtl_service_queue *sq = &tg->service_queue; 898 struct throtl_service_queue *parent_sq = sq->parent_sq; 899 struct throtl_grp *parent_tg = sq_to_tg(parent_sq); 900 struct throtl_grp *tg_to_put = NULL; 901 struct bio *bio; 902 903 /* 904 * @bio is being transferred from @tg to @parent_sq. Popping a bio 905 * from @tg may put its reference and @parent_sq might end up 906 * getting released prematurely. Remember the tg to put and put it 907 * after @bio is transferred to @parent_sq. 908 */ 909 bio = throtl_pop_queued(&sq->queued[rw], &tg_to_put); 910 sq->nr_queued[rw]--; 911 912 throtl_charge_bio(tg, bio); 913 914 /* 915 * If our parent is another tg, we just need to transfer @bio to 916 * the parent using throtl_add_bio_tg(). If our parent is 917 * @td->service_queue, @bio is ready to be issued. Put it on its 918 * bio_lists[] and decrease total number queued. The caller is 919 * responsible for issuing these bios. 920 */ 921 if (parent_tg) { 922 throtl_add_bio_tg(bio, &tg->qnode_on_parent[rw], parent_tg); 923 start_parent_slice_with_credit(tg, parent_tg, rw); 924 } else { 925 throtl_qnode_add_bio(bio, &tg->qnode_on_parent[rw], 926 &parent_sq->queued[rw]); 927 BUG_ON(tg->td->nr_queued[rw] <= 0); 928 tg->td->nr_queued[rw]--; 929 } 930 931 throtl_trim_slice(tg, rw); 932 933 if (tg_to_put) 934 blkg_put(tg_to_blkg(tg_to_put)); 935 } 936 937 static int throtl_dispatch_tg(struct throtl_grp *tg) 938 { 939 struct throtl_service_queue *sq = &tg->service_queue; 940 unsigned int nr_reads = 0, nr_writes = 0; 941 unsigned int max_nr_reads = throtl_grp_quantum*3/4; 942 unsigned int max_nr_writes = throtl_grp_quantum - max_nr_reads; 943 struct bio *bio; 944 945 /* Try to dispatch 75% READS and 25% WRITES */ 946 947 while ((bio = throtl_peek_queued(&sq->queued[READ])) && 948 tg_may_dispatch(tg, bio, NULL)) { 949 950 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 951 nr_reads++; 952 953 if (nr_reads >= max_nr_reads) 954 break; 955 } 956 957 while ((bio = throtl_peek_queued(&sq->queued[WRITE])) && 958 tg_may_dispatch(tg, bio, NULL)) { 959 960 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 961 nr_writes++; 962 963 if (nr_writes >= max_nr_writes) 964 break; 965 } 966 967 return nr_reads + nr_writes; 968 } 969 970 static int throtl_select_dispatch(struct throtl_service_queue *parent_sq) 971 { 972 unsigned int nr_disp = 0; 973 974 while (1) { 975 struct throtl_grp *tg = throtl_rb_first(parent_sq); 976 struct throtl_service_queue *sq = &tg->service_queue; 977 978 if (!tg) 979 break; 980 981 if (time_before(jiffies, tg->disptime)) 982 break; 983 984 throtl_dequeue_tg(tg); 985 986 nr_disp += throtl_dispatch_tg(tg); 987 988 if (sq->nr_queued[0] || sq->nr_queued[1]) 989 tg_update_disptime(tg); 990 991 if (nr_disp >= throtl_quantum) 992 break; 993 } 994 995 return nr_disp; 996 } 997 998 /** 999 * throtl_pending_timer_fn - timer function for service_queue->pending_timer 1000 * @arg: the throtl_service_queue being serviced 1001 * 1002 * This timer is armed when a child throtl_grp with active bio's become 1003 * pending and queued on the service_queue's pending_tree and expires when 1004 * the first child throtl_grp should be dispatched. This function 1005 * dispatches bio's from the children throtl_grps to the parent 1006 * service_queue. 1007 * 1008 * If the parent's parent is another throtl_grp, dispatching is propagated 1009 * by either arming its pending_timer or repeating dispatch directly. If 1010 * the top-level service_tree is reached, throtl_data->dispatch_work is 1011 * kicked so that the ready bio's are issued. 1012 */ 1013 static void throtl_pending_timer_fn(unsigned long arg) 1014 { 1015 struct throtl_service_queue *sq = (void *)arg; 1016 struct throtl_grp *tg = sq_to_tg(sq); 1017 struct throtl_data *td = sq_to_td(sq); 1018 struct request_queue *q = td->queue; 1019 struct throtl_service_queue *parent_sq; 1020 bool dispatched; 1021 int ret; 1022 1023 spin_lock_irq(q->queue_lock); 1024 again: 1025 parent_sq = sq->parent_sq; 1026 dispatched = false; 1027 1028 while (true) { 1029 throtl_log(sq, "dispatch nr_queued=%u read=%u write=%u", 1030 sq->nr_queued[READ] + sq->nr_queued[WRITE], 1031 sq->nr_queued[READ], sq->nr_queued[WRITE]); 1032 1033 ret = throtl_select_dispatch(sq); 1034 if (ret) { 1035 throtl_log(sq, "bios disp=%u", ret); 1036 dispatched = true; 1037 } 1038 1039 if (throtl_schedule_next_dispatch(sq, false)) 1040 break; 1041 1042 /* this dispatch windows is still open, relax and repeat */ 1043 spin_unlock_irq(q->queue_lock); 1044 cpu_relax(); 1045 spin_lock_irq(q->queue_lock); 1046 } 1047 1048 if (!dispatched) 1049 goto out_unlock; 1050 1051 if (parent_sq) { 1052 /* @parent_sq is another throl_grp, propagate dispatch */ 1053 if (tg->flags & THROTL_TG_WAS_EMPTY) { 1054 tg_update_disptime(tg); 1055 if (!throtl_schedule_next_dispatch(parent_sq, false)) { 1056 /* window is already open, repeat dispatching */ 1057 sq = parent_sq; 1058 tg = sq_to_tg(sq); 1059 goto again; 1060 } 1061 } 1062 } else { 1063 /* reached the top-level, queue issueing */ 1064 queue_work(kthrotld_workqueue, &td->dispatch_work); 1065 } 1066 out_unlock: 1067 spin_unlock_irq(q->queue_lock); 1068 } 1069 1070 /** 1071 * blk_throtl_dispatch_work_fn - work function for throtl_data->dispatch_work 1072 * @work: work item being executed 1073 * 1074 * This function is queued for execution when bio's reach the bio_lists[] 1075 * of throtl_data->service_queue. Those bio's are ready and issued by this 1076 * function. 1077 */ 1078 static void blk_throtl_dispatch_work_fn(struct work_struct *work) 1079 { 1080 struct throtl_data *td = container_of(work, struct throtl_data, 1081 dispatch_work); 1082 struct throtl_service_queue *td_sq = &td->service_queue; 1083 struct request_queue *q = td->queue; 1084 struct bio_list bio_list_on_stack; 1085 struct bio *bio; 1086 struct blk_plug plug; 1087 int rw; 1088 1089 bio_list_init(&bio_list_on_stack); 1090 1091 spin_lock_irq(q->queue_lock); 1092 for (rw = READ; rw <= WRITE; rw++) 1093 while ((bio = throtl_pop_queued(&td_sq->queued[rw], NULL))) 1094 bio_list_add(&bio_list_on_stack, bio); 1095 spin_unlock_irq(q->queue_lock); 1096 1097 if (!bio_list_empty(&bio_list_on_stack)) { 1098 blk_start_plug(&plug); 1099 while((bio = bio_list_pop(&bio_list_on_stack))) 1100 generic_make_request(bio); 1101 blk_finish_plug(&plug); 1102 } 1103 } 1104 1105 static u64 tg_prfill_conf_u64(struct seq_file *sf, struct blkg_policy_data *pd, 1106 int off) 1107 { 1108 struct throtl_grp *tg = pd_to_tg(pd); 1109 u64 v = *(u64 *)((void *)tg + off); 1110 1111 if (v == -1) 1112 return 0; 1113 return __blkg_prfill_u64(sf, pd, v); 1114 } 1115 1116 static u64 tg_prfill_conf_uint(struct seq_file *sf, struct blkg_policy_data *pd, 1117 int off) 1118 { 1119 struct throtl_grp *tg = pd_to_tg(pd); 1120 unsigned int v = *(unsigned int *)((void *)tg + off); 1121 1122 if (v == -1) 1123 return 0; 1124 return __blkg_prfill_u64(sf, pd, v); 1125 } 1126 1127 static int tg_print_conf_u64(struct seq_file *sf, void *v) 1128 { 1129 blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_conf_u64, 1130 &blkcg_policy_throtl, seq_cft(sf)->private, false); 1131 return 0; 1132 } 1133 1134 static int tg_print_conf_uint(struct seq_file *sf, void *v) 1135 { 1136 blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_conf_uint, 1137 &blkcg_policy_throtl, seq_cft(sf)->private, false); 1138 return 0; 1139 } 1140 1141 static void tg_conf_updated(struct throtl_grp *tg) 1142 { 1143 struct throtl_service_queue *sq = &tg->service_queue; 1144 struct cgroup_subsys_state *pos_css; 1145 struct blkcg_gq *blkg; 1146 1147 throtl_log(&tg->service_queue, 1148 "limit change rbps=%llu wbps=%llu riops=%u wiops=%u", 1149 tg->bps[READ], tg->bps[WRITE], 1150 tg->iops[READ], tg->iops[WRITE]); 1151 1152 /* 1153 * Update has_rules[] flags for the updated tg's subtree. A tg is 1154 * considered to have rules if either the tg itself or any of its 1155 * ancestors has rules. This identifies groups without any 1156 * restrictions in the whole hierarchy and allows them to bypass 1157 * blk-throttle. 1158 */ 1159 blkg_for_each_descendant_pre(blkg, pos_css, tg_to_blkg(tg)) 1160 tg_update_has_rules(blkg_to_tg(blkg)); 1161 1162 /* 1163 * We're already holding queue_lock and know @tg is valid. Let's 1164 * apply the new config directly. 1165 * 1166 * Restart the slices for both READ and WRITES. It might happen 1167 * that a group's limit are dropped suddenly and we don't want to 1168 * account recently dispatched IO with new low rate. 1169 */ 1170 throtl_start_new_slice(tg, 0); 1171 throtl_start_new_slice(tg, 1); 1172 1173 if (tg->flags & THROTL_TG_PENDING) { 1174 tg_update_disptime(tg); 1175 throtl_schedule_next_dispatch(sq->parent_sq, true); 1176 } 1177 } 1178 1179 static ssize_t tg_set_conf(struct kernfs_open_file *of, 1180 char *buf, size_t nbytes, loff_t off, bool is_u64) 1181 { 1182 struct blkcg *blkcg = css_to_blkcg(of_css(of)); 1183 struct blkg_conf_ctx ctx; 1184 struct throtl_grp *tg; 1185 int ret; 1186 u64 v; 1187 1188 ret = blkg_conf_prep(blkcg, &blkcg_policy_throtl, buf, &ctx); 1189 if (ret) 1190 return ret; 1191 1192 ret = -EINVAL; 1193 if (sscanf(ctx.body, "%llu", &v) != 1) 1194 goto out_finish; 1195 if (!v) 1196 v = -1; 1197 1198 tg = blkg_to_tg(ctx.blkg); 1199 1200 if (is_u64) 1201 *(u64 *)((void *)tg + of_cft(of)->private) = v; 1202 else 1203 *(unsigned int *)((void *)tg + of_cft(of)->private) = v; 1204 1205 tg_conf_updated(tg); 1206 ret = 0; 1207 out_finish: 1208 blkg_conf_finish(&ctx); 1209 return ret ?: nbytes; 1210 } 1211 1212 static ssize_t tg_set_conf_u64(struct kernfs_open_file *of, 1213 char *buf, size_t nbytes, loff_t off) 1214 { 1215 return tg_set_conf(of, buf, nbytes, off, true); 1216 } 1217 1218 static ssize_t tg_set_conf_uint(struct kernfs_open_file *of, 1219 char *buf, size_t nbytes, loff_t off) 1220 { 1221 return tg_set_conf(of, buf, nbytes, off, false); 1222 } 1223 1224 static struct cftype throtl_legacy_files[] = { 1225 { 1226 .name = "throttle.read_bps_device", 1227 .private = offsetof(struct throtl_grp, bps[READ]), 1228 .seq_show = tg_print_conf_u64, 1229 .write = tg_set_conf_u64, 1230 }, 1231 { 1232 .name = "throttle.write_bps_device", 1233 .private = offsetof(struct throtl_grp, bps[WRITE]), 1234 .seq_show = tg_print_conf_u64, 1235 .write = tg_set_conf_u64, 1236 }, 1237 { 1238 .name = "throttle.read_iops_device", 1239 .private = offsetof(struct throtl_grp, iops[READ]), 1240 .seq_show = tg_print_conf_uint, 1241 .write = tg_set_conf_uint, 1242 }, 1243 { 1244 .name = "throttle.write_iops_device", 1245 .private = offsetof(struct throtl_grp, iops[WRITE]), 1246 .seq_show = tg_print_conf_uint, 1247 .write = tg_set_conf_uint, 1248 }, 1249 { 1250 .name = "throttle.io_service_bytes", 1251 .private = (unsigned long)&blkcg_policy_throtl, 1252 .seq_show = blkg_print_stat_bytes, 1253 }, 1254 { 1255 .name = "throttle.io_serviced", 1256 .private = (unsigned long)&blkcg_policy_throtl, 1257 .seq_show = blkg_print_stat_ios, 1258 }, 1259 { } /* terminate */ 1260 }; 1261 1262 static u64 tg_prfill_max(struct seq_file *sf, struct blkg_policy_data *pd, 1263 int off) 1264 { 1265 struct throtl_grp *tg = pd_to_tg(pd); 1266 const char *dname = blkg_dev_name(pd->blkg); 1267 char bufs[4][21] = { "max", "max", "max", "max" }; 1268 1269 if (!dname) 1270 return 0; 1271 if (tg->bps[READ] == -1 && tg->bps[WRITE] == -1 && 1272 tg->iops[READ] == -1 && tg->iops[WRITE] == -1) 1273 return 0; 1274 1275 if (tg->bps[READ] != -1) 1276 snprintf(bufs[0], sizeof(bufs[0]), "%llu", tg->bps[READ]); 1277 if (tg->bps[WRITE] != -1) 1278 snprintf(bufs[1], sizeof(bufs[1]), "%llu", tg->bps[WRITE]); 1279 if (tg->iops[READ] != -1) 1280 snprintf(bufs[2], sizeof(bufs[2]), "%u", tg->iops[READ]); 1281 if (tg->iops[WRITE] != -1) 1282 snprintf(bufs[3], sizeof(bufs[3]), "%u", tg->iops[WRITE]); 1283 1284 seq_printf(sf, "%s rbps=%s wbps=%s riops=%s wiops=%s\n", 1285 dname, bufs[0], bufs[1], bufs[2], bufs[3]); 1286 return 0; 1287 } 1288 1289 static int tg_print_max(struct seq_file *sf, void *v) 1290 { 1291 blkcg_print_blkgs(sf, css_to_blkcg(seq_css(sf)), tg_prfill_max, 1292 &blkcg_policy_throtl, seq_cft(sf)->private, false); 1293 return 0; 1294 } 1295 1296 static ssize_t tg_set_max(struct kernfs_open_file *of, 1297 char *buf, size_t nbytes, loff_t off) 1298 { 1299 struct blkcg *blkcg = css_to_blkcg(of_css(of)); 1300 struct blkg_conf_ctx ctx; 1301 struct throtl_grp *tg; 1302 u64 v[4]; 1303 int ret; 1304 1305 ret = blkg_conf_prep(blkcg, &blkcg_policy_throtl, buf, &ctx); 1306 if (ret) 1307 return ret; 1308 1309 tg = blkg_to_tg(ctx.blkg); 1310 1311 v[0] = tg->bps[READ]; 1312 v[1] = tg->bps[WRITE]; 1313 v[2] = tg->iops[READ]; 1314 v[3] = tg->iops[WRITE]; 1315 1316 while (true) { 1317 char tok[27]; /* wiops=18446744073709551616 */ 1318 char *p; 1319 u64 val = -1; 1320 int len; 1321 1322 if (sscanf(ctx.body, "%26s%n", tok, &len) != 1) 1323 break; 1324 if (tok[0] == '\0') 1325 break; 1326 ctx.body += len; 1327 1328 ret = -EINVAL; 1329 p = tok; 1330 strsep(&p, "="); 1331 if (!p || (sscanf(p, "%llu", &val) != 1 && strcmp(p, "max"))) 1332 goto out_finish; 1333 1334 ret = -ERANGE; 1335 if (!val) 1336 goto out_finish; 1337 1338 ret = -EINVAL; 1339 if (!strcmp(tok, "rbps")) 1340 v[0] = val; 1341 else if (!strcmp(tok, "wbps")) 1342 v[1] = val; 1343 else if (!strcmp(tok, "riops")) 1344 v[2] = min_t(u64, val, UINT_MAX); 1345 else if (!strcmp(tok, "wiops")) 1346 v[3] = min_t(u64, val, UINT_MAX); 1347 else 1348 goto out_finish; 1349 } 1350 1351 tg->bps[READ] = v[0]; 1352 tg->bps[WRITE] = v[1]; 1353 tg->iops[READ] = v[2]; 1354 tg->iops[WRITE] = v[3]; 1355 1356 tg_conf_updated(tg); 1357 ret = 0; 1358 out_finish: 1359 blkg_conf_finish(&ctx); 1360 return ret ?: nbytes; 1361 } 1362 1363 static struct cftype throtl_files[] = { 1364 { 1365 .name = "max", 1366 .flags = CFTYPE_NOT_ON_ROOT, 1367 .seq_show = tg_print_max, 1368 .write = tg_set_max, 1369 }, 1370 { } /* terminate */ 1371 }; 1372 1373 static void throtl_shutdown_wq(struct request_queue *q) 1374 { 1375 struct throtl_data *td = q->td; 1376 1377 cancel_work_sync(&td->dispatch_work); 1378 } 1379 1380 static struct blkcg_policy blkcg_policy_throtl = { 1381 .dfl_cftypes = throtl_files, 1382 .legacy_cftypes = throtl_legacy_files, 1383 1384 .pd_alloc_fn = throtl_pd_alloc, 1385 .pd_init_fn = throtl_pd_init, 1386 .pd_online_fn = throtl_pd_online, 1387 .pd_free_fn = throtl_pd_free, 1388 }; 1389 1390 bool blk_throtl_bio(struct request_queue *q, struct blkcg_gq *blkg, 1391 struct bio *bio) 1392 { 1393 struct throtl_qnode *qn = NULL; 1394 struct throtl_grp *tg = blkg_to_tg(blkg ?: q->root_blkg); 1395 struct throtl_service_queue *sq; 1396 bool rw = bio_data_dir(bio); 1397 bool throttled = false; 1398 1399 WARN_ON_ONCE(!rcu_read_lock_held()); 1400 1401 /* see throtl_charge_bio() */ 1402 if ((bio->bi_opf & REQ_THROTTLED) || !tg->has_rules[rw]) 1403 goto out; 1404 1405 spin_lock_irq(q->queue_lock); 1406 1407 if (unlikely(blk_queue_bypass(q))) 1408 goto out_unlock; 1409 1410 sq = &tg->service_queue; 1411 1412 while (true) { 1413 /* throtl is FIFO - if bios are already queued, should queue */ 1414 if (sq->nr_queued[rw]) 1415 break; 1416 1417 /* if above limits, break to queue */ 1418 if (!tg_may_dispatch(tg, bio, NULL)) 1419 break; 1420 1421 /* within limits, let's charge and dispatch directly */ 1422 throtl_charge_bio(tg, bio); 1423 1424 /* 1425 * We need to trim slice even when bios are not being queued 1426 * otherwise it might happen that a bio is not queued for 1427 * a long time and slice keeps on extending and trim is not 1428 * called for a long time. Now if limits are reduced suddenly 1429 * we take into account all the IO dispatched so far at new 1430 * low rate and * newly queued IO gets a really long dispatch 1431 * time. 1432 * 1433 * So keep on trimming slice even if bio is not queued. 1434 */ 1435 throtl_trim_slice(tg, rw); 1436 1437 /* 1438 * @bio passed through this layer without being throttled. 1439 * Climb up the ladder. If we''re already at the top, it 1440 * can be executed directly. 1441 */ 1442 qn = &tg->qnode_on_parent[rw]; 1443 sq = sq->parent_sq; 1444 tg = sq_to_tg(sq); 1445 if (!tg) 1446 goto out_unlock; 1447 } 1448 1449 /* out-of-limit, queue to @tg */ 1450 throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d", 1451 rw == READ ? 'R' : 'W', 1452 tg->bytes_disp[rw], bio->bi_iter.bi_size, tg->bps[rw], 1453 tg->io_disp[rw], tg->iops[rw], 1454 sq->nr_queued[READ], sq->nr_queued[WRITE]); 1455 1456 bio_associate_current(bio); 1457 tg->td->nr_queued[rw]++; 1458 throtl_add_bio_tg(bio, qn, tg); 1459 throttled = true; 1460 1461 /* 1462 * Update @tg's dispatch time and force schedule dispatch if @tg 1463 * was empty before @bio. The forced scheduling isn't likely to 1464 * cause undue delay as @bio is likely to be dispatched directly if 1465 * its @tg's disptime is not in the future. 1466 */ 1467 if (tg->flags & THROTL_TG_WAS_EMPTY) { 1468 tg_update_disptime(tg); 1469 throtl_schedule_next_dispatch(tg->service_queue.parent_sq, true); 1470 } 1471 1472 out_unlock: 1473 spin_unlock_irq(q->queue_lock); 1474 out: 1475 /* 1476 * As multiple blk-throtls may stack in the same issue path, we 1477 * don't want bios to leave with the flag set. Clear the flag if 1478 * being issued. 1479 */ 1480 if (!throttled) 1481 bio->bi_opf &= ~REQ_THROTTLED; 1482 return throttled; 1483 } 1484 1485 /* 1486 * Dispatch all bios from all children tg's queued on @parent_sq. On 1487 * return, @parent_sq is guaranteed to not have any active children tg's 1488 * and all bios from previously active tg's are on @parent_sq->bio_lists[]. 1489 */ 1490 static void tg_drain_bios(struct throtl_service_queue *parent_sq) 1491 { 1492 struct throtl_grp *tg; 1493 1494 while ((tg = throtl_rb_first(parent_sq))) { 1495 struct throtl_service_queue *sq = &tg->service_queue; 1496 struct bio *bio; 1497 1498 throtl_dequeue_tg(tg); 1499 1500 while ((bio = throtl_peek_queued(&sq->queued[READ]))) 1501 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 1502 while ((bio = throtl_peek_queued(&sq->queued[WRITE]))) 1503 tg_dispatch_one_bio(tg, bio_data_dir(bio)); 1504 } 1505 } 1506 1507 /** 1508 * blk_throtl_drain - drain throttled bios 1509 * @q: request_queue to drain throttled bios for 1510 * 1511 * Dispatch all currently throttled bios on @q through ->make_request_fn(). 1512 */ 1513 void blk_throtl_drain(struct request_queue *q) 1514 __releases(q->queue_lock) __acquires(q->queue_lock) 1515 { 1516 struct throtl_data *td = q->td; 1517 struct blkcg_gq *blkg; 1518 struct cgroup_subsys_state *pos_css; 1519 struct bio *bio; 1520 int rw; 1521 1522 queue_lockdep_assert_held(q); 1523 rcu_read_lock(); 1524 1525 /* 1526 * Drain each tg while doing post-order walk on the blkg tree, so 1527 * that all bios are propagated to td->service_queue. It'd be 1528 * better to walk service_queue tree directly but blkg walk is 1529 * easier. 1530 */ 1531 blkg_for_each_descendant_post(blkg, pos_css, td->queue->root_blkg) 1532 tg_drain_bios(&blkg_to_tg(blkg)->service_queue); 1533 1534 /* finally, transfer bios from top-level tg's into the td */ 1535 tg_drain_bios(&td->service_queue); 1536 1537 rcu_read_unlock(); 1538 spin_unlock_irq(q->queue_lock); 1539 1540 /* all bios now should be in td->service_queue, issue them */ 1541 for (rw = READ; rw <= WRITE; rw++) 1542 while ((bio = throtl_pop_queued(&td->service_queue.queued[rw], 1543 NULL))) 1544 generic_make_request(bio); 1545 1546 spin_lock_irq(q->queue_lock); 1547 } 1548 1549 int blk_throtl_init(struct request_queue *q) 1550 { 1551 struct throtl_data *td; 1552 int ret; 1553 1554 td = kzalloc_node(sizeof(*td), GFP_KERNEL, q->node); 1555 if (!td) 1556 return -ENOMEM; 1557 1558 INIT_WORK(&td->dispatch_work, blk_throtl_dispatch_work_fn); 1559 throtl_service_queue_init(&td->service_queue); 1560 1561 q->td = td; 1562 td->queue = q; 1563 1564 /* activate policy */ 1565 ret = blkcg_activate_policy(q, &blkcg_policy_throtl); 1566 if (ret) 1567 kfree(td); 1568 return ret; 1569 } 1570 1571 void blk_throtl_exit(struct request_queue *q) 1572 { 1573 BUG_ON(!q->td); 1574 throtl_shutdown_wq(q); 1575 blkcg_deactivate_policy(q, &blkcg_policy_throtl); 1576 kfree(q->td); 1577 } 1578 1579 static int __init throtl_init(void) 1580 { 1581 kthrotld_workqueue = alloc_workqueue("kthrotld", WQ_MEM_RECLAIM, 0); 1582 if (!kthrotld_workqueue) 1583 panic("Failed to create kthrotld\n"); 1584 1585 return blkcg_policy_register(&blkcg_policy_throtl); 1586 } 1587 1588 module_init(throtl_init); 1589