进程调度
文章平均质量分 90
R-Linux
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux Deadline调度器介绍
deadline调度器主要使用三个参数:runtime(运行时间)、period(周期)和deadline(截止时间)。算法确保任务可以在period内获得runtime的运行时间,且可以在deadline之前执行完毕。每次任务唤醒时,先计算一个deadline,然后调度器会选择具有最早deadline的任务去运行。第一个很好理解,当前的运行时间已经大于deadline了,自然要更新下一次deadline了。原创 2025-02-16 19:35:26 · 716 阅读 · 0 评论 -
EEVDF代码详解(一)
EEVDF是由Peter Zijlstra提出并在kernel-6.6中合入主线的调度算法,已经替代CFS成为Linux kernel中普通进程的默认调度器。基本介绍可参考,本文针对EEVDF中的一些关键代码进行讲解。原创 2025-02-15 18:57:20 · 2277 阅读 · 0 评论 -
CFS的完美进化版 -- EEVDF调度器简介
EEVDF(Earliest Eligible Virtual Deadline First),翻译为最早合格的虚拟截止日期优先。CFS调度算法根据其原理也可以解释为“最小虚拟时间优先”,因为其核心调度逻辑就是挑选vruntime最小的进程。而EEVDF现在将最小虚拟时间改为了最早虚拟截止日期,相同点就是都是用虚拟时间判断的,可以推断还是通过weight来对物理时间进行加权;不同之处就是用截至日期代替了之前的运行时间,截至日期从字面意思就可以判断其更强调调度延迟。原创 2025-02-14 22:32:05 · 1105 阅读 · 0 评论 -
详解CFS调度(四)—— PELT
PELT(Per-entity load tracking),实现了对每个调度实体(也就是每个task或task group)进行负载追踪。在此之前,是通过跟踪每个cfs_rq来进行负载的计算以及进行评估系统loading、进程调度、负载均衡等一系列决策的。如何定义负载呢?我们知道如果cpu有一半时间在运行程序,另一半时间空闲,那cpu利用率就是50%,如果一直在运行,那利用率就是100%,这种情况下cpu刚好处于满载状态运行。如果cpu满载的情况下,仍有一些程序无法运行,处于runnable状态呢?原创 2025-02-13 22:22:59 · 1032 阅读 · 0 评论 -
详解CFS(三)—— 组调度
那如果A用户启动了9个task,而B用户只启动了一个task,那A用户将占用cpu 90%的资源,这与我们预期相去甚远。cfs_rq是他的runqueue,保存他所掌管的所有task,在多核系统中,一个group的多个task可能运行在不同的cpu中,所以task group在每个cpu上都会有一个se和cfs_rq。task group在当前cpu上的ge的权重是由当前cpu上group runqueue中所有task的总权重占该task group在所有cpu上task总权重的百分比决定的,即。原创 2025-02-11 21:53:37 · 1237 阅读 · 0 评论 -
详解CFS调度(一)
CFS(Completely Fair Scheduler)即完全公平调度算法,旨在实现理想状态下的多任务cpu原创 2025-02-08 20:53:49 · 803 阅读 · 0 评论 -
详解CFS调度(二)
上篇概述了CFS的原理,本篇结合代码看一下CFS的具体实现。1. 内核中有哪些类型的进程?进程优先级如何表示?2. vruntime如何更新?3. vruntime什么时候更新?4. 调度器如何挑选下一个要执行的任务?原创 2025-02-09 21:14:13 · 896 阅读 · 0 评论
分享