LWN:在deadline调度器中支持CPU capacity!

【Bluetooth蓝牙开发】十一、一文秒懂 | 超详细的Bluez交叉编译 1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总 阅读详情

关注了就能看到更多这么棒的文章哦~

Capacity awareness for the deadline scheduler

May 29, 2020

This article was contributed by Marta Rybczyńska 

原文来自:https:/lwn.net/Articles/821578

译者:LinuxEverything

Linux deadline调度器支持实时系统(指在这些系统中应用程序需要确保在特定时间内完成工作)。它为deadline task分配CPU时间的时候需要确保每个task的时间限制都要得到满足。然而,目前的实现在非对称(asymmetric)CPU环境下工作的不是很好,比如Arm的big.LITTLE这种情况。Dietmar Eggemann最近发布了一组补丁,通过在deadline scheduler中加入CPU capacity的概念来解决这个问题。

在实时系统中,任务需要满足一定的时效性。Linux内核包括两个realtime scheduling class来满足这些需求,分别是:POSIX realtime(通常只简称为 realtime)和deadline。

POSIX realtime scheduler使用任务优先级作为决策的基础,优先级最高的任务将首先运行。而deadline调度器则不使用优先级,而是使用三个参数来描述任务:运行时长(run time)、周期(period)和截止时间(deadline)。运行时长是指任务完成眼前工作所需要的CPU时间,周期定义了任务两次激活之间的时间,而截止时间是指任务必须确保能够得到CPU使用权的时间。有兴趣的读者可以在前面的文章(https://lwn.net/Articles/743740/ )中找到更多关于Linux实时调度器背后的理论解释以及它们之间的区别。

The deadline scheduler and asymmetric CPU configuration

deadline scheduler包括一个接纳(admission)算法,当任务请求参与deadline scheduling时,该算法就会运行,并确保系统能够满足任务的需求。如果不能满足实时性要求,系统中的任何任务都会错过其deadline,那么任务将被拒绝进入deadline class。但是,该算法并不能保证deadline总是被满足,它只保证deadline task占有时间有限制,已经非deadline task不会被饿死。这是因为一般情况下能否满足deadline取决于系统中已经存在的任务,此文有详细的解释(https://lwn.net/Articles/743946/ )。

在非对称CPU系统中如big.LITTLE或DynamIQ中,deadline调度器的工作会更加复杂。这类系统包括不同类型的CPU,性能有高有低。同样的任务在性能较高("big")的CPU上运行时,会比在性能较低("little")的CPU上运行时耗时更短。当前内核中的deadline调度器并没有考虑到这种差异,它可能会在性能较低的CPU上分配过多CPU时间。Deadline任务可能最终会落在一个小CPU上,使得调度后无法在截止时间前完成,本来放在一个高性能的CPU上其实是可以完成的。在这样的系统中,admission算法假定所有CPU的性能都达到big CPU,所以会使系统接纳过多的deadline task,使系统表现不佳。

deadline scheduler中缺少CPU capacity信息(指在给定时间内可以执行的指令数量)。更多关于它的计算方法的细节可以在这里(https://lwn.net/Articles/639543/ )找到。CPU capacity已经在负载均衡和其他情况下使用起来了,比如当因为过热而改变CPU频率时就会用。最近它被添加到realtime scheduler中了。Eggemann的工作在deadline scheduler的admission control和任务放置算法中考虑到了CPU capacity。修改后,deadline scheduler在对称和非对称CPU配置下,以可用容量足以让任务满足其deadline的原则来决定任务的执行位置。

The changes

admission-control算法的决策依据是系统提供的CPU总容量。在对称系统中,所有的CPU都具有相同的capacity,总和就是简单的CPU数量乘以一个常数。当前的内核即使在非对称系统中也是这样计算总容量的:所有的CPU都被假定为拥有最大的CPU的容量了。新代码改变了非对称情况下的这一指标,让它来仔细计算所有active CPU的实际capacity之和。

deadline scheduler的任务放置决策代码还必须更好地了解系统的CPU拓扑结构。在将一个任务迁移到一个新的CPU之前,调度器需要确保新的CPU能够处理该任务。在非对称系统中,需要增加一种检查条件,以判断CPU的能力是否足以在deadline前完成一个给定任务的工作。这种检查使用以下公式进行:

(CPU capacity) / 1024 >= (task runtime) / (task deadline)

默认的CPU capacity是1024,低性能的CPU的capacity低于这个数字。因此,这个公式的左边会产生一个分数,表示有关CPU的相对容量。例如,假设一个小CPU的容量是462,那么这个分数就是462/1024,即0.45。该公式将只允许运行时间(相对于大CPU而言)与截止时间之比小于或等于0.45的task。一个运行时间为13,000µs而截止时间为16,000µs的任务将不会被接纳,因为13,000/16,000是0.81,超过标准了。

在唤醒deadline task,或者将deadline任务移到不同的CPU上、将任务从即将offline的CPU中迁移出来时,都会用到这个检查条件。Eggemann在讨论早期版本的patchset中提供了一些计算capacity的例子。

如果一个任务得到的CPU时间不能满足它的deadline需求,它就会错过这个截止时间。这种情况在 deadline scheduler中总是会发生的。比如说,任务被成功接纳之后,其中一个 CPU 下线,系统的整体capacity就会减少。在patch set中引入了相应的改动,在非对称配置中处理这种情况时,scheduler会选择可用容量最大的CPU。如果有几个CPU的话,它会尽可能选择当前的CPU,以尽可能利用cache里面的内容。

Limitations and further work

deadline scheduler中对非对称CPU支持所需的工作并非到此为止。目前的patch set要求至少有一个CPU没有任何deadline task,否则task placement可能仍然不合理。而更重负载的情况也需要以后再解决。

在讨论过程中,Juri Lelli指出了一个可能的问题:如果一组小的deadline任务先开始,它们将被放置在大的CPU上。如果再接纳一个更大的任务,它可能找不到足够大的CPU来运行。Luca Abeni(这组补丁的共同作者)回应说,他们确实有一个新patch,其中调度器会将任务放在能完成工作的最小CPU上。这个patch将在稍后提交。

这组patch set得到了积极的评价,可以预期这个修复很快会成为主线内核的一部分。我们也可以期待看到更多这方面的patch,因为有更多的工作要做。随着更多非对称CPU架构的出现,用户可能需要在自己的workload中更好地支持这种情况。

全文完

LWN文章遵循CC BY-SA 4.0许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注LWN深度文章以及开源社区的各种新近言论~

“反激电源”是AC/DC隔离电源还是DC/DC隔离电源? 所以在一些场景,我们的输入电压是一个DC,但是我们仍然需要隔离电源的需求,我们就会只采用图9.2的右半部分。在这个场景下“反激电源”是DC/DC。所以此AC/DC的本质是将AC变成高压的DC之后,用带隔离变压器的反激式开关电源产生一个隔离的、稳定的直流电压。一般在讲述各种电源的拓扑的文章和书籍都是在讲述AC/DC的电源拓扑分类的时候,讲述Flyback。反激式开关电源是指使用反激高频变压器隔离输入输出回路的开关电源,反激式隔离变压器开关电源重点表述的是开关电源包含变压器的拓扑结构。 阅读详情

相关推荐

AI工程化之生成式UI & A2UI(一)

本文系统介绍了生成式UI和Google A2UI技术。生成式UI通过AI直接生成前端代码(完全生成式)或DSL(混合式),实现千人千面的动态界面和研发提效。Google A2UI提出组件级和消息级协议,采用JSON规范实现渲染框架解耦,支持多端渲染。文章详细阐述了A2UI的架构设计,包括协议生成、服务端处理和渲染器实现,并对比了与传统前端框架的差异,指出A2UI本质是UI=F(AI(UI)+AI(state))的创新模式。最后通过playground项目展示了A2UI的实践应用。

qq_34306228的博客 588

【内核调度、负载均衡】【update_group_capacity】

MC层级的group_capacity的更新 这里需要区分是MC层级还是DIE。他们的区别是sd->child是否为NULL。MC层级为NULL 具体可以看update_cpu_capacity这个函数 void update_group_capacity(struct sched_domain *sd, int cpu) { struct sched_domain *child = sd->child; struct sched_group *group, *sdg = sd-&g

勿于浮沙筑高台 1193

智能驾驶域控(ADCU)方案介绍

本文主要对智能驾驶域控(ADCU)方案相关知识进行总结,以加深理解,及方便后续查漏补缺。

liuxu324的博客 1572

linux CPU算力_调度域

CPU算力 cpu_capacity   我们引入CPU算力(capacity)的概念来测量每个CPU能达到的性能,它的值相对系统中性能最强的CPU做过归一化处理。异构系统也被称为非对称CPU算力系统,因为它们由不同算力的CPU组成。   1.1 用法 使用完成需要三个主要部分: ‘struct completion’ 同步对象的初始化 通过调用wait_for_completion()的一个变体来实现等待部分。 通过调用complete()或complete_all()实现发信端。   # cpu_

tan1666的博客 1974

LCD工程师必看:Pixelclock、Mipi Clk计算全解析(附实用公式)

本文为LCD工程师详细解析了像素时钟(Pixelclock)与MIPI时钟(Mipi Clk)的核心计算方法。文章从时序参数构成入手,通过实战公式推导,系统阐述了从屏幕分辨率、刷新率到最终MIPI速率的高效计算链路,并提供了实用的调试思路与排查清单,帮助工程师快速解决画面撕裂、闪烁等常见问题。

weixin_29266679的博客 387

学习Ultralytics (下载)

Ultralytics由创立,最初是为了简化目标检测模型的开发和应用,专注于构建高效、易用、性能卓越的深度学习框架。其主要产品之一是 YOLO 系列模型,尤其是最新的YOLOv5和YOLOv8,因其在精度、速度和可扩展性方面的出色表现而广受欢迎。

2301_76846375的博客 2864

deadline调度器

内核调度器-deadline

chensong_2000的博客 1999

携程旅行网景区,评论数据爬虫项目数据库保存附源码

这是一个专门用于爬取某旅行网景区评论数据的Python爬虫项目。项目采用模块化设计,支持MySQL数据库存储,具备完整的异常处理机制和反爬虫策略。

ymqzhy的博客 2568

what is CPU capacity-什么是CPU容量

原文链接:https://www.techwalla.com/articles/what-is-cpu-capacity 翻译: 一个计算机的CPU,是中心处理单元,是让你的计算机成为一个计算机的关键。若没有它,你在使用的计算机将是一堆塑料和金属部件的结合。使用计算机时不知道CPU的所有细节不重要,那并不妨碍你大致了解它是什么以及它是如何运作的,这样你或许可以得到更好的用户体验。

coding乐园 4789

大一Python之循环解决实际问题

pythin之循环解决实际问题

weixin_66263546的博客 2287

OpenClaw分布式高可用部署实战:Docker+K8s集群化,支撑万级并发生产业务

OpenClaw从单节点到分布式高可用集群,是企业AI从试点到规模化落地的必经之路。基于Docker+K8s的部署方案,不仅解决了高并发、高可用、弹性伸缩的生产痛点,更让运维成本大幅降低,业务稳定性提升到99.99%。对于电商、制造、政务等对稳定性有极致要求的行业,这套方案是OpenClaw生产上线的标准形态——功能拉满的同时,守住安全、稳定、可控的底线。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 271

[IO系统]17 IO调度器-DEADLINE

Deadline 这种调度器对读写 request 进行了分类管理,并且在调度处理的过程中读请求具有较高优先级。这主要是因为读请求往往是同步操作,对延迟时间比较敏感,而写操作往往是异步操作,可以尽可能的将相邻访问地址的请求进行合并,但是,合并的效率越高,延迟时间会越长。因此,为了区别对待读写请求类型, deadline 采用两条链表对读写请求进行分类管理。但是,引入分类管理之后,在读优先的情况下,写请求如果长时间得到不到调度,会出现饿死的情况,因此, deadline 算法考虑了写饿死的情况,从而保证在读优

渡江客涂鸦板 2918

大数据利器Hadoop:从基础到实战,一篇文章掌握大数据处理精髓!

在当今大数据时代,数据量的爆炸式增长对企业和技术提出了前所未有的挑战。如何高效地存储、处理和分析这些庞大的数据集,成为了亟待解决的问题。Hadoop作为一种分布式计算框架,应运而生,为大数据处理提供了有效的解决方案。Hadoop是一个由Apache软件基金会维护的开源项目,它基于Google的分布式文件系统(Google File System,GFS)和MapReduce计算模型设计。Hadoop的主要目标是处理大规模数据集,它可以在普通硬件集群上运行,从而降低了大数据处理的成本。

邓邓子的博客 8276

Linux schedule 3、负载计算

3、负载计算schedule里面这个负载(load average)的概念常常被理解成cpu占用率,这个有比较大的偏差。schedule不使用cpu占用率来评估负载,而是使用平均时间runnable的数量来评估负载。shedule也分了几个层级来计算负载: 1、entity级负载计算:update_load_avg() 2、cpu级负载计算:update_cpu_load_active() 3、系统

pwl999的博客 9112

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Capacity Aware Scheduling

性能唤醒调度

weixin_49382066的博客 387

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

负载均衡 - 进程与线程(二十五)

linux进程管理—负载均衡 前面主要是学习进程的调度管理,默认都是在单CPU上的调度策略,在O(1)调度后,为了减小CPU之间的干扰,就会为每个CPU上分配一个任务队列,运行的时候可能会出现有的CPU很忙,有的CPU很闲,为了避免这个问题的出现,甚至最极端的情况是,一个 CPU 的可运行进程队列拥有非常多的进程,而其他 CPU 的可运行进程队列为空,这就是著名的 一核有难,多核围观,Linux 内核实现了 CPU 可运行进程队列之间的负载均衡。 1 什么是CPU负载 提到负载,我们首先会想到命令upti

生活需要深度 2061

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Linux I/O Scheduler--Deadline

一、原理             Deadline调度器对一个请求的多方面特性进行权衡来进行调度,以期即能满足块设备扇区的顺寻访问又兼顾到一个请求不会在队列中等待太久导致饿死。试想当应用程序频繁访问文件的一部分而此时如果有另一个远端的请求,那么这个请求将会在很长一段时间内得不到响应,这显然是不合理的。Deadline调度器为了兼顾这两个方面,引入了四个队列,这四个队列可分为两类,每一类都由读和

vanbreaker的专栏 1万+

Linux CPU物理拓扑&CPU capacity

Linux支持非常多的硬件,这些硬件有各种各样的CPU搭配,大到多个NUMA节点组成的大型机,小到只有一个处理器的小型嵌入式设备。内核会在开机时根据硬件配置建立一组数据结构来描述系统的CPU物理拓扑。CPU物理拓扑的一个典型使用者就是调度域。CPU物理拓扑相关的概念也可以见的介绍。此外,一个系统中的CPU架构可以有多种,典型的如ARM的big-LITTLE架构,这些CPU的能力是不一样的,这种设计可以较好的兼顾性能和功耗。Linux内核也需要建立一组数据结构来描述各cpu的能力。

九天小哥的专栏 1403

mq-deadline调度器原理及源码分析

mq-deadline适合于对实时性敏感的程序,它能保证IO在规定的时间内能下发下去,如果下层设备不出问题那么就能保证IO能够在期限内做出响应。

大隐隐于野 1652

Linux Deadline 调度器 - 第一部分:简介与理论背景

本文来自“内核月谈”公众号原文链接:https://lwn.net/Articles/743740/ 导语:实时系统是一类必须在精确的时间限制内作出响应事件的系统,在这样...

Linux阅码场 1531

deadline调度器简要分析

dl队列结构体 struct dl_rq { /* runqueue is an rbtree, ordered by deadline */ struct rb_root_cached root; unsigned long dl_nr_running; #ifdef CONFIG_SMP struct { u64 curr; //当前running的任务的deadline值 u64 next; //next任务的deadline值 } earliest_dl; unsig

大吉 1116

LWN:the deadline scheduler and CPU idle states

关注了就能看到更多这么棒的文章哦~The deadline scheduler and CPU idle statesBy Jonathan CorbetMay 22, 2020OSPM...

Linux News搬运工 397

Linux deadline io 调度算法

deadline算法的核心就是在传统的电梯算法中加入了请求超时的机制,该机制主要体现在两点: 1、请求超时时,对超时请求的选择。 2、没有请求超时时,当扫描完电梯最后一个request后,准备返回时,对第一个request的选择。基于以上两点,平衡了系统i/o吞吐量和响应时间。 此外,该算法还考虑到了读操作对写操作造成的饥饿。 定义了elevator_deadline调度器类型:

hshopeful 8679

进程线程(四) Deadline调度、实时性和多核负载均衡

Linux Deadline调度器(全新内容) Linux为什么不是硬实时的 preempt-rt对Linux实时性的改造 多核下负载均衡 中断负载均衡、RPS软中断负载均衡

只有自己觉到悟到的,才是自己的。 2912

CFS调度器(原理->源码->总结)

从Linux 2.6.23开始,Linux引入scheduling class的概念,目的是将调度器模块化。这样提高了扩展性,添加一个新的调度器也变得简单起来。一个系统中还可以共存多个调度器。在Linux中,将调度器公共的部分抽象,使用struct sched_class结构体描述一个具体的调度类。系统核心调度代码会通过struct sched_class结构体的成员调用具体调度类的核心算法。先简单的介绍下struct sched_class部分成员作用。

Android系统优化 4220

Deadline调度器

对于单核系统,只要所有任务的利用率总和小于1,就可以保证所有任务都能满足其deadline的要求。扩展到多核系统上如何呢?参照单核系统的公式,在M核系统上是否利用率总和小于M就可以呢?直观上看似乎可以满足需求,有一个核心运行大任务,其余任务在其他核心上运行即可,时间非常充裕。

2503_90541313的博客 1104
上一篇: LWN:可信树Merkle tere在build系统中的应用!
下一篇: LWN:显卡驱动以外的驱动也需要配有符合自由软件协议的用户空间程序吗?
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值