![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WALT 代码详解
文章平均质量分 95
Cyrusandy
这个作者很懒,什么都没留下…
展开
-
【WALT】频率计算(未更新完)
代码版本:Linux4.9 android-msm-crosshatch-4.9-android12。原创 2024-01-02 19:38:33 · 1060 阅读 · 0 评论 -
【WALT】update_cpu_busy_time() 代码详解 & busytime 路径负载计算
在归一化后,会根据任务是否是新任务、是否是 idle 任务或是否要出队来将 delta 累加进 curr_runnable_sum、nt_curr_runnable_sum、curr_window 和 curr_window_cpu[cpu] 中。主要是更新任务的 prev_window 和 curr_window,并更新 CPU 的 prev_window_cpu 和 curr_window_cpu。如果任务还在旧窗口中,不会进行翻滚(rollover)操作,只进行执行时间的累加操作。原创 2024-01-02 11:27:53 · 909 阅读 · 0 评论 -
【WALT】调度与负载计算(未更新完)
入队任务入队的时候,无论哪一种调度类,最终都会执行,进行 rq->walt_stats.cumulative_runnable_avg += demand 和 rq->walt_stats.pred_demands_sum += pred_demand。同时,任务对应调度实体及其父节点入队时也都会进行一次cfs_rq->walt_stats.cumulative_runnable_avg += demand 和cfs_rq除此之外,会根据以下条件之一是否满足执行。原创 2023-12-31 23:29:31 · 1550 阅读 · 2 评论 -
【WALT】predict_and_update_buckets() 与 update_task_pred_demand() 代码详解
时会先判断上一个窗口中当前任务所执行的时间(归一化后)处于的等级 bidx,根据 bidx 和数组 busy_buckets 来预测 pred_demand,然后对数组 busy_buckets 中下标非 bidx 的权重进行衰减,对下标为 bidx 的权重进行加强。得到上下界 dmin 和 dmax 之后,遍历数组 sum_history,看看保存的历史窗口的时间中是否有处于该上下界之间的,如果有就将 ret 设置为该时间,没有的话 ret 的值仍为 runtime。其中,runtime 是在。原创 2023-08-29 14:40:16 · 165 阅读 · 0 评论 -
【WALT】update_history() 代码详解
ridx 是更新之后的最旧窗口的下标。“设定中”的意思是,如果 sched_ravg_hist_size 不等于 RAVG_HIST_SIZE_MAX,那么 sum_history[widx] 指向的就是我们调整窗口数量之后的最旧的窗口。如果记录的是上一个窗口的,或者是 n 个窗口前的某个窗口的,samples = 1;p->ravg.sum_history 是一个长度为 RAVG_HIST_SIZE_MAX 的数组,存放的是过去 RAVG_HIST_SIZE_MAX 个窗口中的任务的执行时间。原创 2023-08-27 11:56:04 · 210 阅读 · 1 评论 -
【WALT】scale_exec_time() 代码详解
EAS 主要针对异构 CPU 架构,如 Arm big.LITTLE,因为这种架构有不同性能和功耗的 CPU 核心,不同 CPU 的最大算力、最大频率等都不同。这个值在设备树中给定,在运行该版本内核的 pixel 3xl 中,小核簇和大核簇的 max_possible_efficiency 分别是 1024 和 1740。freq 是当前 CPU 的频率,由 ⑴ 计算而得:freq = rq->cc.cycles / rq->cc.time。运行任务的 CPU 的每周期指令数 (IPC)。原创 2023-07-06 20:27:53 · 194 阅读 · 1 评论 -
【WALT】update_task_demand() 代码详解
根据开头的分析,我们知道进入新窗口分为两种情况,无论是哪种情况,都需要累加 ws_tmp - ms 和 wc - ws 两部分。时一共累加的任务 runnable 和 running 时间,也就是上一次 WALT 算法开始到这一次 WALT 算法开始过程中,该任务的 runnable 和 running 时间。如果任务经过的时间不是 runnable 或 running 时间,且正好进入新窗口,就不累加任务时间,直接通过。累加任务时间,因为任务在这些完整窗口中的时间都是从窗口开始到窗口结束。原创 2023-07-05 21:39:02 · 240 阅读 · 1 评论 -
【WALT】update_window_start() 代码详解
代码版本:Linux4.9 android-msm-crosshatch-4.9-android12。原创 2023-07-01 23:23:17 · 119 阅读 · 0 评论 -
【WALT】WALT入口 update_task_ravg()
WALT 算法根据历史窗口中的值计算任务的 demand,根据桶算法计算任务的 pred_demand,并将 demand 与 pred_demand 统计进任务所在 CPU 的 rq(runqueue)中。在任务满足条件后,在不同情况下根据任务的开始时间、窗口的开始时间以及当前时间来计算任务在当前及。在任务满足条件后,在不同情况下根据任务的开始时间、窗口的开始时间以及当前时间来计算任务在当前及。在窗口翻滚的时候更新任务的 window 值 以及 rq 的 runnable_sum 的值。原创 2023-07-01 23:09:40 · 218 阅读 · 0 评论