bfq_bfqq_expire(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… bfq_bfqq_expire(9) πŸ’…

okay so this page is from the Kernel API Manual, and the main character is literally bfq_bfqq_expire(9) ✨ no cap, we're about to expire a queue and understand the whole vibe.


🌸 NAME 🌸

bfq_bfqq_expire - expire a queue. periodt πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

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

πŸŽ€ ARGUMENTS πŸŽ€

  • bfqd β€” the device that owns the queue. like, whose queue is this? this guy knows πŸ‘‘
  • bfqq β€” the queue we're expiring. bye bestie, your turn is up πŸ’…
  • compensate β€” if true, compensate for the time spent idling. yes, the idle time gets its little compensation moment ✨
  • reason β€” the reason causing the expiration. the whole "why are we doing this" of it all πŸ™ˆ

🧚 DESCRIPTION 🧚

Okay so here's the tea β˜•: if the process associated with bfqq does slow I/O β€” e.g., because it issues random requests β€” we charge bfqq with the time it has been in service instead of the service it has received (see bfq_bfqq_charge_time for details on how this goal is achieved). 🫢

As a consequence, bfqq will typically get higher timestamps upon reactivation, and hence it will be rescheduled as if it had received more service than what it has actually received. In the end, bfqq receives less service in proportion to how slowly its associated process consumes its budgets (and hence how seriously it tends to lower the throughput). Also, this time-charging strategy guarantees time fairness among slow processes. In contrast, if the process associated with bfqq is not slow, we charge bfqq exactly with the service it has received. periodt πŸ’–

Charging time to the first type of queues and the exact service to the other has the effect of using the WF2Q+ policy to schedule the former on a timeslice basis, without violating service domain guarantees among the latter. that's the whole vibe check, and it ate πŸ”₯


🌈 SEE ALSO 🌈


and that's the page, bestie 🫢 source/version is ./block, date is October 2026, and the page is literally bfq_bfqq_expire(9) β€” slay πŸ’…βœ¨

πŸ“¦ where this page comes from