LWN:hybrid scheduling更加复杂了!

华为OD机试真题 2026.11.4. 新系统 【河流水系流量评估】 华为OD机试真题 新系统【河流水系流量评估】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【河流水系流量评估】多语言题解。 阅读详情

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

Hybrid scheduling gets more complicated

By Jonathan Corbet
September 30, 2022
LPC
DeepL assisted translation
https://lwn.net/Articles/909611/

10 多年前新出现的 Arm big.LITTLE 架构给内核的 CPU 调度器(scheduler)带来了挑战:如果 CPU 各自的能力不同,应该如何决定将进程分配给哪个 CPU?在那之后,情况还在继续变得复杂;新的系统不断带来新的怪癖,必须牢记这些怪癖才能实现最佳的调度策略。在 2022 年的 Linux Plumbers Conference 上,Len Brown 和 Ricardo Neri 谈到了英特尔的 hybrid 系统以及他们正在进行的工作,以便在这些系统上正确地进行调度。

05c9fef15692a8c5e4bb0c17e91becef.png

Brown 布朗首先介绍了英特尔的 hybrid CPU,他说,这些 CPU 是 "Pcores "和 "Ecores "的组合。Pcores 具有更高的性能,也支持同步多线程(SMT,simultaneous multi-threading)。Ecore 则相反,更注重功耗效率而不是性能;Ecore 曾被称为 "Atom" CPU。这两种类型的 CPU 都实现了相同的指令集,因此一个进程可以在这两种 CPU 之间自由迁移。

直到 4.9 版本的内核,都是将系统上的所有 CPU 视为平等的;这意味着指定的进程将会表现出不同的性能,仅仅取决于调度器将其放在系统中哪个 CPU 上执行。从 4.10 开始,英特尔的 ITMT(Intel Turbo Boost Max Technology 的缩写)就使得调度程序在其他条件相同的情况下更倾向于 Pcores 而不是 Ecores。这样一来,效果就是尽可能地将进程放在更快的 CPU 上,但它也会只在系统中 SMT 的 CPU 都忙起来之后才会使用 Ecores,这就导致整体性能下降。从 5.16 版本开始,这个问题已经得到了解决;现在 Ecore 会比一个繁忙的 CPU 的 SMT 兄弟 CPU 更优先。

Pcores 更快;它们运行的时钟频率更高,但也能在每个时钟周期完成更多的工作。因此,仅靠时钟频率不足以比较一个系统中两个 CPU 的能力。为了解决这个问题,硬件给每个 CPU 提供了性能和效率的打分;如果条件发生变化了的话,可以在运行时来改变这些分数,布朗说。

不过,情况实际上要比这更复杂。CPU 类型之间的性能差异取决于在那个时刻正在执行哪些指令。在 Pcore 上运行使用了 VNNI 指令的程序(用来加速机器学习的应用),比起运行其他普通程序更有优势。存在四种不同性能的等级,主要取决于指令的类型,Pcore 和 Ecore 的性能表现的差异在每一种类型中都是不同的。

为了能最佳地在这样一个系统中进行调度,内核应该使用 Pcore 来运行那些能够受益最多的进程。不能指望应用程序开发人员了解这四种性能等级中哪一种是最适合他们的代码的,而且可能会随着程序的执行而改变这个类型,但是 CPU 肯定知道在某个特定的时间内正在执行哪些类型的指令。因此,每个 CPU 都会公开一个寄存器,来表明哪个性能等级最能描述当前运行的进程。这使得内核能够分配一个 class ID,并在调度决策中使用。

e9bc8ab29ba8da50343435ad946d715b.png

Neri 接手,介绍做了哪些工作来利用这个信息。每个进程的 classID 被存储在其 task_struct 结构中。这个信息的首先用在了 idle load balancer 中,在某个 CPU 已经没有任务可执行时,就会调用这个 idle load balancer,并查看是否应该从系统中其他负载更重的 CPU 中提取任务迁移过来。这部分代码可以查看每个候选 task 的 class ID,从而找到移动哪个 task 可以获得最大好处(或损失最小)。这种检查在两端都要做;如果一个 task 在大量使用非常适合当前 CPU 运行的指令,那么尽可能不要把它迁移到别的 CPU。

有一位听众问,是否可以从用户空间来调整某一个正在运行的进程的 class ID。Brown 回答说,这个功能可以用于调试,但是没有人想过把它作为一个最终支持的正式 feature。

Neri 继续说到,内核的 NUMA balance 代码也可以查看 class ID,并在 node 之间交换 task,如果能获得更好的系统性能的话。类似的工作也可以在 busy load balancing (用于在繁忙的系统中平衡负载)做。这个想法让一些开发者感到紧张,因为它很容易破坏负载平衡,造成性能下降,而要到很久以后才被发现。Neri 强调说,只有在现有的启发式判断下来两个选项打成平手的情况下,才会在负载平衡决策中考虑 class ID。

会议的最后时刻专门讨论了英特尔 Alder Lake CPU(今年早些时候开始出货)上的调度问题。具体来说,内核的 energy-ware scheduling 启发式方法在这些 CPU 上并不好用。某些特性使 energy 状况变得复杂;这些特性包括 SMT、英特尔的 "turbo boost" 模式,以及 CPU 内部的电源管理机制。对于许多 workload 来说,在表面上更耗电的 Pcore 上运行可能比使用 Ecore 更 efficient。不过,讨论这个问题的时间不足,会议也就此告一段落了。

[感谢 LWN 订阅者对编者参加这次活动的支持。]

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

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

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

format,png

用python将dycom .dcm格式图像转换为nifti .nii 因为发现目前搜索到的多数中文教程并不能正确将FMRI图像正确转换,例如很多用simpleITk的seriesreader的,所以写了一下自己正确转换的方法。因为FMRI是一个4D数据,有时间轴,所以用seriesreader读写出来的图像把时间轴维度给降维了。当然你用SPM12工具的dycom import也是能正确转换的,但是我还是喜欢python这样的,代码直接简单。 阅读详情

相关推荐

构造地貌研究入门:手把手教你用ArcGIS插件CalHypso分析流域地貌形态

本文详细介绍了如何使用ArcGIS插件CalHypso进行流域地貌形态分析,包括工具安装、数据预处理、HI曲线生成及结果解读等关键步骤。通过实战操作,帮助读者掌握面积高程积分(HI)曲线的应用技巧,为构造地貌研究提供量化工具。

weixin_33704234的博客 104

CPU的Core和Uncore? P Core & E core ?

好啦,本文的分享到这里就基本结束啦。x86架构CPU的发展脉络CPU的Core和Uncore架构CPU的大小核机制后面,笔者也会针对Uncore的部分组件,如Cache等进行专门的介绍,欢迎大家及时查看~好,相信通过本文的分享,大家应该对CPU有了更深的了解了吧。以后当同事问你知不知道CPU的Core和Uncore,大小核时,你应该不至于一脸懵逼了吧哈哈。你知道如何关闭电脑的小核吗?Win10有大小核调度机制吗?Win11呢?如果大家觉得本文有帮助话,还请。

知识应该被分享。 4175

AI 赋能测试全生命周期:多 Agent 协同的自动化提效方案

本文提出了一种基于Coze平台的多Agent协同测试解决方案,旨在解决软件测试中PRD解析不清晰、测试点覆盖不全、用例编写效率低、代码生成耗时等痛点。通过PRD优化、测试点生成、测试用例生成和单元测试框架生成四个Agent的协同工作,结合Cursor工具实现从需求到代码的全链路自动化。以电商平台登录模块为例,展示了从模糊PRD到标准化测试用例和可执行Java单元测试代码的完整转化流程。该方案通过AI赋能显著提升测试效率,减少人工干预,实现测试覆盖率≥95%,为快速迭代的软件研发提供了高效的测试自动化支持。

QINJIEEE的博客 1100

WIN10 WIN11 12代 13代 大小核;性能核;电源选项;P-core,E-core;

可以复制命令,在“Windows PowerShell (管理员)”界面上点击右键,即可粘贴命令。3:异类短运行线程调度策略,选择“首选高性能处理器”。“异类短运行线程调度策略”,这个类似于低功耗任务进程。2:异类线程调度策略,选择“首选高性能处理器”。执行后,电源选项-高级设置中就会出现三个选项。1:生效的异类策略,选择“使用异类策略 0”。“使用异类策略 0”,这个是使用CPU所有核心。“异类线程调度策略”,这个类似于高功耗任务进程。在电源选项中查看:异类短运行线程调度策略。

LiuV 1万+

告别手动翻页!用幻影联动+DLL调用,5分钟搞定通达信分时指标自动选股

本文详细介绍了如何利用幻影联动软件结合DLL调用技术,实现通达信分时指标的自动化选股。通过改造指标代码和配置幻影联动任务,用户可以在5分钟内完成从信号检测到自动报警的全流程,大幅提升短周期交易的效率和准确性。

weixin_42561040的博客 764

Android16 自定义HAL层适配一些VINTF和SELINUX问题修改

在RK里面一般权限矩阵在/rockchip/common/manifests/目录,我这版Android16的代码比较特殊,这里重点修改/device/rockchip/rockchip_generic/manifests/frameworks_compatibility_matrix.xml这个文件,不同的版本注册方式不同,在。hal_ruip_default.te,hal_ruip.te,attributes文件。拓展策略的方式添加,但是在Android16里面发现用不了。发现HAL层服务注册成功了。

tzj1058756809的博客 242

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 223

Apollo Control——超详细入门教程(六):MPC二次规划问题转化

专栏文章列表 Apollo Control——超详细入门教程(一):基于道路误差的车辆动力学模型 Apollo Control——超详细入门教程(二):连续状态空间方程离散化与离散LQR公式推导 Apollo Control——超详细入门教程(三):基于Frenet坐标系及XY坐标系的多项式轨迹生成 Apollo Control——超详细入门教程(四):控制模块轨迹误差计算 Apollo Control——超详细入门教程(五):油门刹车标定表之双线性插值算法 ...

凉了鸭的博客 2233

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 149

【机器学习|评价指标8】混淆矩阵(Confusion Matrix)、Cohen‘s Kappa 系数、详解,平均交并比(mIoU)、列联表(Contingency Table)附代码。

【机器学习|评价指标8】混淆矩阵(Confusion Matrix)、Cohen's Kappa 系数、详解,平均交并比(mIoU)、列联表(Contingency Table)附代码。

2401_89898861的博客 1424

11、CUDA 内存优化:平铺矩阵乘法技术解析

本文深入解析了CUDA中的平铺矩阵乘法技术,重点介绍了如何利用共享内存和线程协作减少全局内存访问,提升计算效率。通过矩阵乘法实例,详细阐述了平铺算法的执行流程、内核代码实现及性能优化策略,包括平铺大小选择、线程同步机制和代码优化建议。文章还分析了该技术在深度学习、图像处理和科学计算等领域的应用价值,为CUDA程序的内存优化提供了系统性指导。

peace的博客 70

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 328

101、LLC谐振变换器的传递函数推导

文章摘要 LLC谐振变换器的传递函数推导是电源设计的关键环节。作者通过一次炸管事故案例,揭示了忽视传递函数计算的严重后果。LLC传递函数复杂的根源在于其三个谐振元件(Lr、Cr、Lm)的变频工作特性,导致增益曲线非单调变化。文章详细介绍了采用扩展描述函数法的建模思路,指出Lm对增益曲线的重要影响,并给出了传递函数的数学表达式及频率响应特性。通过实际调试案例,作者对比了错误补偿器设计(Type II)与优化方案(Type III)的效果差异,强调了实测验证的重要性。最后总结了5条实用经验,包括留足裕度、关注启

Jack010169的博客 152

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 115

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 194

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 104

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 397

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 626

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 376

java框架大全

java框架大全

qq_39326137的博客 183

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 349

SecureRandom做随机源,这个Java随机字符串工具类有3个方法

本文分享一款JDK17环境下的Java随机字符串工具类,内置3个开箱即用的方法,全部采用SecureRandom加密安全随机源,不存在弱随机、可预测、取模偏差等问题。工具类支持默认62字符集随机串、纯数字随机串、自定义字符集随机串三种生成模式,支持Unicode码点级别的字符集处理,兼容Emoji等增补字符,边界处理严格,异常信息明确,适合验证码、邀请码、盐值、随机口令、短链码等场景,源码可直接复制使用。

Java后端 | AI智能体应用实战派 | 电脑技能行家 294

Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

【代码】Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

m0_64476639的博客 319

ubuntu安装hadoop系统

本文详细介绍了基于VMware克隆虚拟机搭建三节点Hadoop分布式集群的全过程:使用同一Ubuntu镜像克隆出master、worker1、worker2三台虚拟机,依次配置主机名、固定IP(如192.168.82.10/11/12)、SSH服务及免密登录,确保节点间网络互通。随后安装Java,下载配置Hadoop并分发至各节点,最终初始化启动集群,验证其存储与计算功能,实现高效的大数据环境部署。

qq_43592674的博客 322

Agent 状态栏在上下文中的具体位置

Agent状态栏以user角色消息形式追加至上下文末尾,而非修改system消息,避免破坏KVCache。此举仅为API技术实现,内容由框架自动生成,非真实用户输入,通过<agent_status>标签标识,确保模型获取最新状态且不影响缓存。该设计遵循“动态信息追加、静态信息固定”原则,实现高效、低延迟的状态传递。

lj1109053360的专栏 71
上一篇: LWN:根据TCP源端口号选择来识别系统!
下一篇: LWN:初识6.1内核中的Rust!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值