Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\bfq-iosched.c Create Date:2022-07-28 17:56:21
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name: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

Proto:void bfq_bfqq_expire(struct bfq_data *bfqd, struct bfq_queue *bfqq, bool compensate, enum bfqq_expiration reason)

Type:void

Parameter:

TypeParameterName
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  If actor by which the weight of this queue is multiplied == 1 && (slow || reason == 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 ) Then bfq_bfqq_charge_time(bfqd, bfqq, delta)
3944  If 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 Then bfq_clear_bfqq_IO_bound(bfqq)
3948  If if set to true, low-latency heuristics are enabled && actor by which the weight of this queue is multiplied == 1 Then 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 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 ) Then
3979  If 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. Then 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  If __bfq_bfqq_expire(bfqd, bfqq, reason) Then Return
4014  If Not bfq_bfqq_busy(bfqq) && reason != udget took too long to be used && reason != udget consumed Then
4017  bfq_mark_bfqq_non_blocking_wait_rq(bfqq)
4023  Else 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
Caller
NameDescribe
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