Function report |
Source Code:block\bfq-iosched.c |
Create Date:2022-07-28 17:56:11 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:__bfq_bfqq_recalc_budget - try to adapt the budget to the @bfqq behavior.*@bfqd: device data.*@bfqq: queue to update.*@reason: reason for expiration.* Handle the feedback on @bfqq budget at queue expiration.* See the body for detailed comments.
Proto:static void __bfq_bfqq_recalc_budget(struct bfq_data *bfqd, struct bfq_queue *bfqq, enum bfqq_expiration reason)
Type:void
Parameter:
Type | Parameter | Name |
---|---|---|
struct bfq_data * | bfqd | |
struct bfq_queue * | bfqq | |
enum bfqq_expiration | reason |
3538 | min_budget = Return min budget, which is a fraction of the current or default* max budget (trying with 1/32) |
3540 | If actor by which the weight of this queue is multiplied == 1 Then budget = maximum budget allowed from the feedback mechanism |
3547 | Else budget = 2 * min_budget |
3550 | bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last budg %d, budg left %d", budget, used also to calculate F_i: F_i = S_i + @budget / @weight , bfq_bfqq_budget_left(bfqq)) |
3552 | bfq_log_bfqq(bfqd, bfqq, "recalc_budg: last max_budg %d, min budg %d", budget, Return min budget, which is a fraction of the current or default* max budget (trying with 1/32)) |
3554 | bfq_log_bfqq(bfqd, bfqq, "recalc_budg: sync %d, seeky %d", bfq_bfqq_sync(bfqq), BFQQ_SEEKY( bfq_queue in service )) |
3557 | If bfq_bfqq_sync(bfqq) && actor by which the weight of this queue is multiplied == 1 Then |
3563 | Case reason == queue has been idling for* too long |
3590 | Else |
3591 | If budget > 5 * min_budget Then budget -= 4 * min_budget |
3593 | Else budget = min_budget |
3596 | Break |
3597 | Case reason == udget took too long to be used |
3604 | budget = min - return minimum of two values of the same or compatible types*@x: first value*@y: second value(budget * 2, maximum budget allotted to a bfq_queue before rescheduling ) |
3605 | Break |
3606 | Case reason == udget consumed |
3616 | budget = min - return minimum of two values of the same or compatible types*@x: first value*@y: second value(budget * 4, maximum budget allotted to a bfq_queue before rescheduling ) |
3617 | Break |
3618 | Case reason == he queue has no more requests |
3652 | Break |
3653 | Default |
3654 | Return |
3656 | Else if Not bfq_bfqq_sync(bfqq) Then |
3687 | bfq_log_bfqq(bfqd, bfqq, "head sect: %u, new budget %d", next_rq ? blk_rq_sectors(next_rq) : 0, budget, used also to calculate F_i: F_i = S_i + @budget / @weight ) |
Name | Describe |
---|---|
bfq_bfqq_expire | q_bfqq_expire - expire a queue.*@bfqd: device owning the queue.*@bfqq: the queue to expire.*@compensate: if true, compensate for the time spent idling.*@reason: the reason causing the expiration.* If the process associated with bfqq does slow I/O (e |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |