【WALT】WALT入口 update_task_ravg() 代码详解 每日消息
done结束部分:【WALT】WALT入口 update_task_ravg() 代码详解代码版本:Linux4.9 android-msm-crosshatch-4.9-android12
【资料图】
void update_task_ravg(struct task_struct *p, struct rq *rq, int event,u64 wallclock, u64 irqtime){u64 old_window_start;// ⑴ 判断是否进入 WALT 算法if (!rq->window_start || sched_disable_window_stats || p->ravg.mark_start == wallclock)return;lockdep_assert_held(&rq->lock);// ⑵ 获取 WALT 算法中上一个窗口的开始时间old_window_start = update_window_start(rq, wallclock, event);// ⑶ 如果任务刚初始化结束,不进入 WALT 算法,进入 `done`if (!p->ravg.mark_start) {update_task_cpu_cycles(p, cpu_of(rq), wallclock);goto done;}// ⑷ 更新任务及 CPU 的 cyclesupdate_task_rq_cpu_cycles(p, rq, event, wallclock, irqtime);// ⑸ 更新任务及 CPU 的 demand 及 pred_demandupdate_task_demand(p, rq, event, wallclock);// ⑹ 更新 CPU 的 busy timeupdate_cpu_busy_time(p, rq, event, wallclock, irqtime);// ⑺ 更新任务的 pred_demandupdate_task_pred_demand(rq, p, event);// ⑻ 如果任务正在退出,进入 `done`if (exiting_task(p))goto done;// 两个系统自带的 tracepointtrace_sched_update_task_ravg(p, rq, event, wallclock, irqtime,rq->cc.cycles, rq->cc.time, &rq->grp_time);trace_sched_update_task_ravg_mini(p, rq, event, wallclock, irqtime,rq->cc.cycles, rq->cc.time, &rq->grp_time);done:p->ravg.mark_start = wallclock;run_walt_irq_work(old_window_start, rq);}代码逻辑WALT 算法以任务为主,当任务被唤醒、任务开始执行、任务停止执行、任务退出、窗口滚动、频率变化、任务迁移、经过一个调度tick、在中断结束时会调用update_task_ravg()。
其中,窗口是 WALT 算法中的一个特殊的设定,将在 update_task_demand()与 update_cpu_busy_time()中详细解释。
在进入 WALT 算法后首先会判断当前任务所在的运行队列(runqueue)是否进行初始化,以及是否禁用 CPU 的窗口统计:if(!rq->window_start || sched_disable_window_stats...)。如果没有初始化,就不会记录窗口的开始时间,任务负载就无法进行计算。有几点需要注意:
然后会判断窗口开始时间是否更新:if(...p->ravg.mark_start == wallclock)。如果运行队列没有初始化,或禁用了 CPU 的窗口统计,或窗口开始时间没有更新,就会直接结束 WALT 算法。
然后通过函数update_window_start()获取上一个窗口的开始时间,存在变量old_window_start中。
点击此处查看 update_window_start() 代码详解。
⑶ 如果任务刚初始化结束如果任务刚初始化结束:if(!p->ravg.mark_start),还没有标记过任务的开始时间,就先通过函数 update_task_cpu_cycles()更新一下该任务的 cycles 值(p->cpu_cycles),然后进入 done。
点击此处查看 update_task_cpu_cycles() 代码详解。
⑷更新任务及 CPU 的 cycles和 update_task_cpu_cycles()相似,但比其多更新了 CPU 的 cycles 值(rq->cc.cycles)。
点击此处查看 update_task_rq_cpu_cycles() 代码详解。
⑸更新任务及 CPU 的 demand 及 pred_demand在任务满足条件后,在不同情况下根据任务的开始时间、窗口的开始时间以及当前时间来计算任务在当前及之前M个窗口中的运行时间。在窗口结束时将运行时间进行归一化,并统计进任务的历史窗口中(sum_history[RAVG_HIST_SIZE])。
WALT 算法根据历史窗口中的值计算任务的 demand,根据桶算法计算任务的 pred_demand,并将 demand 与 pred_demand 统计进任务所在 CPU 的 rq(runqueue)中。
注意:以上说的 demand 与 pred_demand 都是预测值。
点击此处查看 update_task_demand() 代码详解。
⑹更新 CPU 的 busy time在任务满足条件后,在不同情况下根据任务的开始时间、窗口的开始时间以及当前时间来计算任务在当前及上一个窗口中的运行时间,将不同窗口内的运行时间进行归一化,并根据任务的状态统计进任务的 curr_window和 prev_window中,以及任务所在 rq 的 curr_runnable_sum和 prev_runnable_sum中。
在窗口翻滚的时候更新任务的 window 值 以及 rq 的 runnable_sum 的值。
注意:以上说的 window 以及 runnable_sum 都是真实值。
点击此处查看 update_cpu_busy_time() 代码详解。
⑺更新任务的 pred_demand如果符合条件的任务在当前窗口中预测出来的 demand 值小于 curr_window,则再次使用桶算法计算 pred_demand。
点击此处查看 update_task_pred_demand() 代码详解。
⑻如果任务正在退出#define EXITING_TASK_MARKER0xdeaddeadstatic inline int exiting_task(struct task_struct *p){return (p->ravg.sum_history[0] == EXITING_TASK_MARKER);}当任务最近一个窗口的值为 0xdeaddead 时,意味着任务正在退出,进入 done。
done结束部分:更新一下任务的开始时间:p->ravg.mark_start = wallclock。通过函数 irq_work_queue()处理没有 tick 的情况,循环调用 update_task_ravg()。 标签:
-
02
2023-07大咖论道中非经贸|中国建设银行南非约翰内斯堡分行副总经理李斌:银行搭台、企业唱戏、多方共赢_全球快讯
00:49“我们把南非库哈开发区‘引荐’到中非博览会来参会布展,也把国 -
02
2023-07日语解读安倍晋三 日本要统一罗马字母姓名格式
hello大家好,我是大学网网小航来为大家解答以上问题,日语解读安倍晋 -
01
2023-07pc logo PC logo清华版12颜色
pclogoPCLogo是一种由思科公司(CiscoSystems)开发的专门用于学术研究 -
01
2023-07合肥狂风篮球俱乐部揭牌 征战NBL新赛季 新要闻
来源:人民网-安徽频道人民网庐江7月1日电(记者汪瑞华)NBL新赛季开赛 -
01
2023-07永安养老退休金领多少?2023永安养老金会上调吗养老金如何计算?_天天实时
截止目前,时间已经来到了7月1日,2023年下半年来了,福建等地区公布了 -
01
2023-07亚冠4强全部产生!全北上演神剧本,连追3球+补时获点仍被淘汰
在比赛上半场刚开场11分钟,全北现代就由阿德里亚诺取得一粒进球,帮助 -
01
2023-07常年喝咖啡容易加速衰老吗 浙江105岁奶奶喝了100年咖啡 环球快报
hello大家好,我是城乡经济网小晟来为大家解答以上问题,常年喝咖啡容 -
01
2023-07顾客吃肯德基发现鸡腿冒血水,门店回应:暑假工未按流程制作 每日动态
00:266月30日,广东深圳一名顾客称在肯德基就餐,鸡腿里有血水冒出。对 -
01
2023-07女子被骗22万拒绝民警为其止付:“最后赌一把,被骗我认!”
“现在是争分夺秒,多耽搁一分钟,钱就永远回来不了!”民警不停劝 -
01
2023-07章泽天首次回应拒绝张艺谋,自认嫁给刘强东才是自己想要的选择 环球今头条
近日,章泽天和各路豪门参加论坛,一时间也是吸引不少人的围观和热议, -
01
2023-07湖人计划为里夫斯提供一份4年5200万美元的合同 每日关注
北京时间7月1日,根据记者DaveMcMenamin的报道,消息人士透露,湖人计 -
01
2023-07戒(烟)瘾
危害:胃,肺癌,慢阻肺,心脑血管(破)疾病,勃取软,尼古丁直接
苹果考虑将iPhone系列进一步延伸 2024年上市?
卷出一块好曲屏 真我10系列新品发布会举行
英国猴痘病例数预计将大幅上升
上海:视情适当延长毕业生在校生身份时间
国家电网确定新型电力系统科技攻关十大重点项目
比亚迪发布CTB电池车身一体化技术
商务部:坚定致力于实现全面、高水平的亚太自贸区
中办国办印发《意见》 推进实施国家文化数字化战略
初夏看市场:“菜篮子”产品生产供应充足 蔬菜在田面积达9877.2万亩
上海浦东重点生产企业复工复产超1100家
-
1
Intel最新处理器Arrow-S曝光 最高可达24核
-
2
配置拉满的电竞神机 雷神ZERO2023大黄蜂发布
-
3
真我10Pro系列发布 首发量产2160Hz超高频调光技术
-
4
阿富汗塔利班组建正规军
-
5
萨赫勒地区反恐形势面临新变数
-
6
北约北扩加剧欧洲安全风险
-
7
贵州毕节七星关区百所学校创办百个“红军班”
-
8
湖北省孝感军分区组织军地联合应急救援研究性演练
-
9
青藏高原等区域将新设一批国家公园
-
10
河北省承德军分区退役军人担纲教练主力