函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\bfq-iosched.c Create Date:2022-07-27 19:32:04
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称: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

函数原型:void bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq, bool compensate, enum bfqq_expiration reason)

返回类型:void

参数:

类型参数名称
struct bfq_data *bfqd
struct bfq_queue *bfqq
boolcompensate
enum bfqq_expirationreason
3915  delta等于0
3916  entity等于ity representing this queue in the scheduler
3921  slow等于Return true if the process associated with bfqq is "slow". The slow* flag is used, in addition to the budget timeout, to reduce the* amount of service provided to seeky processes, and thus reduce* their chances to lower the throughput
3938  如果actor by which the weight of this queue is multiplied 恒等于1且slowreason恒等于udget took too long to be used bfq_bfqq_budget_left(bfqq)大于等于 budget, used also to calculate F_i: F_i = S_i + @budget / @weight 除3的值则bfq_bfqq_charge_time(bfqd, bfqq, delta)
3944  如果reason恒等于queue has been idling for* too long amount of service received during the last service slot 小于等于2乘 budget, used also to calculate F_i: F_i = S_i + @budget / @weight 除10则bfq_clear_bfqq_IO_bound(bfqq)
3948  如果 if set to true, low-latency heuristics are enabled actor by which the weight of this queue is multiplied 恒等于1则Start time of the current weight-raising period if* the @bfq-queue is being weight-raised, otherwise* finish time of the last weight-raising period.等于jiffies
3951  如果 if set to true, low-latency heuristics are enabled Max service-rate for a soft real-time queue, in sectors/sec 大于0且RB_EMPTY_ROOT( & sorted list of pending requests )则
3979  如果umber of requests on the dispatch list or inside driver 恒等于0且actor by which the weight of this queue is multiplied 不等于* Maximum factor by which the weight of a weight-raised queue * is multiplied.Minimum time instant such that, only if a new request is* enqueued after this time instant in an idle @bfq_queue with* no outstanding requests, then the task associated with the* queue it is deemed as soft real-time (see the comments on* the function 等于To be deemed as soft real-time, an application must meet two* requirements
3992  bfq_log_bfqq(bfqd, bfqq, "expire (%d, slow %d, num_disp %d, short_ttime %d)", reason, slow, umber of requests on the dispatch list or inside driver , bfq_bfqq_has_short_ttime(bfqq))
4001  * True if some request has been injected during the last service hole. = * Flag set to activate the sampling of the total service time * of a just-arrived first I/O request (see * bfq_update_inject_limit()). This will cause the setting of * waited_rq when the request is finally dispatched. = false
4002  * If set, then bfq_update_inject_limit() is invoked when * waited_rq is eventually completed. = NULL
4008  __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.
4009  如果__bfq_bfqq_expire(bfqd, bfqq, reason)则返回
4014  如果非bfq_bfqq_busy(bfqq)且reason不等于udget took too long to be used reason不等于udget consumed
4017  bfq_mark_bfqq_non_blocking_wait_rq(bfqq)
4023  否则 amount of service received during the last service slot 等于0
4043  entity等于 parent entity, for hierarchical scheduling
4044  Next two macros are fake loops when cgroups support is not* enabled. I fact, in such a case, there is only one level to go up* (to reach the root group).(entity)
4045  amount of service received during the last service slot 等于0
调用者
名称描述
bfq_bfqq_handle_idle_busy_switch
bfq_select_queueSelect a queue for service. If we have a current queue in service,* check whether to continue servicing it, or retrieve and set a new one.
bfq_dispatch_rq_from_bfqqDispatch next request from bfqq.
bfq_rq_enqueuedCalled when a new fs request (rq) is added to bfqq. Check if there's* something we should do about it.
bfq_completed_request
bfq_idle_slice_timer_body