bfq如何优先服务新产生的优先级高的task

编程入门 行业动态 更新时间:2024-10-08 00:29:34

bfq如何优先服务新产生的<a href=https://www.elefans.com/category/jswz/34/1769954.html style=优先级高的task"/>

bfq如何优先服务新产生的优先级高的task

1. st->active对task的组织
(1). __bfq_activate_entity计算entity→start:
min_vstart = st→vtime;
entity->start = min_vstart;
(2). 随后调用bfq_update_fin_time_enqueue计算entity→finish:
entity->finish = entity->start +
bfq_delta(service, entity→weight);
这里可以看到权重高的task对应的entity->finish会比较小。
(3).调用bfq_active_insert把当前task加到st:
bfq_insert(&st->active, entity);
这里st→active tree以entity->finish为key进行组织,entity->finish小的挂到树左边。
所以权重高的task会挂到st→active tree的左边,进而可以被优先服务。

2. sd->next_in_service成员的更新
当新task开始运行的时候,bfq会调用bfq_update_next_in_service对当前group的next_in_service成员进行更新,其中有一个条件是: bfq_gt(next_in_service->finish,new_entity->finish),也就是说新task的finish成员越小,越有机会抢占别的task拿到IO资源,而finish成员的计算公式正是保证了这一点:
entity->finish = entity->start +
bfq_delta(service, entity→weight);

更多推荐

bfq如何优先服务新产生的优先级高的task

本文发布于:2024-03-23 19:45:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742082.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:优先级   bfq   task

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!