LWN:一个全新的完全不省电的cpuidle driver!

CPU C-state & cpuidle driver 1. 什么是C-states、C-mode? 为了在CPU空闲时节约能源,可以命令CPU进入低功耗模式。C-state是intel CPU处于空闲时的一种状态,CPU有几种电源模式,它们统称为“c状态”或“c模式” 低功耗模式最初是在486DX4处理器中引入的。到目前为止,已经引入了更多的功耗模式,并且对每种模式进行了增强,以使CPU在这些低功耗模式下消耗更少的功率。 CPU的每个状态都使用不同的电量,并且对应用程序性能的影响也不同。 每当CPU内核处于空闲状态时,内置的节能逻辑就会启动,并尝试将内核从当前 阅读详情

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

The pseudo cpuidle driver

By Jonathan Corbet

May 21, 2020

OSPM

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

主译:DeepL

cpuidle governor是用来决定CPU在没有事情需要做的时候应该进入哪个idle state,决定好了之后,cpuidle driver会将CPU实际变动到这个idle state。但是,在2020年的Linux内核峰会(OSPM)上,Abhishek Goel展示了一个新的cpuidle driver,它其实根本不会改变处理器的power state。这样的driver显然不会省电,但作为评估和调试cpuidle policy的工具,会很有价值。

Goel首先介绍说,他做这项工作,主要是跟high-latency idle state有关的一个性能问题。也就是说,更深的CPU sleep state会需要更多时间才能退出,从而让CPU恢复工作状态。一个GPU工作密集型的workload会产生许多许多中断,这些中断之间的时间间隔刚好会让cpuidle governor来选择了一些更深的idle state。随着workload的继续进行,这里导致的latency也会随着时间的推移而增加。有一个临时的解决方法,就是将这些idle state的target latency(预期会睡眠的时长)增加三到五倍,这样governor在选择是就会偏向于较浅的idle状态。这个方法可以解决这个问题,但 "并不优雅"。其他一些人会发现他们的workload行为不太正常了。

Rafael Wysocki插话说,建议使用pm_qos机制来代替,pm_qos就是为了解决这种延迟问题,他很想知道为什么它不够用。很明显,有一个问题是pm_qos会完全禁用掉那些较深的idle state,而实际上当出现很长的空闲时间时,还是应该允许进入这些较深的idle state的。Parth Shah 补充说,在 Power体系架构上,这一点更加重要,因为如果不进入这些更深的空闲状态,则几乎不会节省功耗。

Goel试图给cpuidle的核心代码提供一个debugfs接口,允许在runtime可以调整各种空闲状态的residency属性(即进出耗时等属性——译者注)。这样对于验证idle state很有用,但要把这些变化也能跟内核内部状态同步好,这是很麻烦的。改变这些属性也会导致CPU的idle history变化(distortion),从而导致各种奇怪的行为。他希望有一个更好的解决方案。

于是就引出了pseudo cpuidle driver(伪cpuidle驱动)。这是一个loadable module,允许用户创建自定义的空闲状态,并随心所欲地调整属性。这样做就避免了同步问题和history-distortion问题。该模块加载了一组参数,描述了idle state的数量,以及每个状态的target residency和exit latency参数。实际的 "idle states "实现其实是将CPU放入一个busy-wait loop,一直等到下一个唤醒事件发生,然后governor会再busy wait一小段时间来模拟exit latency消耗时间。

这种行为显然对于省电没有帮助,但它对评估特定策略对系统性能的影响很有用。可以用来调试governor行为,或者比较两个完全不同的governor的效果。他说,事实证明对CPU设计也很有用,设计者可以尝试各种idle state,看看它们的表现如何。

他总结说,未来可能还会像模拟基本的CPU状态一样来模拟core和chip级别的idle状态。他还计划在driver中加入一些tracing机制。

Wysocki指出了一个潜在问题。在真实的系统中,对硬件中断的响应会受处理器idle状态的exit latency而延迟。模拟这种延迟的唯一方法是在中断被禁用的情况下进行忙等待,但这样一来,中断(通常会唤醒系统)就会被完全错过。这种特定的硬件行为似乎无法用这种方式来模拟。话虽如此,但他同意这个driver看起来对研究cpuidle governor很有用,值得拥有。

在会议的最后,Juri Lelli问道,是否有什么性能跑分来比较这个driver与真实硬件的性能区别,Goel回答说目前还没有。

全文完

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

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

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

Python异步协程爬虫优化:解决aiohttp中ServerDisconnectedError的高效策略 本文深入探讨了在Python异步协程爬虫中使用aiohttp时,如何高效解决常见的ServerDisconnectedError问题。核心策略包括全局复用ClientSession、精细配置TCPConnector连接池、实施请求重试与速率限制,从而构建稳定、高效的异步爬虫架构,有效避免服务器断开连接错误。 阅读详情

相关推荐

高效静音黑科技 —— 单相直流无刷电机驱动器

然而,传统的BLDC电机驱动通常依赖于三相架构,电路复杂,成本高昂,且在低功率应用中显得有些“大材小用”。单相直流无刷电机驱动器作为一项高效、静音、经济的技术,正逐渐改变着各个领域的电机驱动方式。其精巧的控制策略、显著的优势以及广阔的应用前景,都预示着这项技术将在未来扮演越来越重要的角色。它相较于传统的三相驱动,显著简化了电路结构,降低了成本,尤其适用于低功率、对静音要求极高的应用场景。通过这些模块的协同工作,单相直流无刷电机驱动器能够实现对电机速度、扭矩的精确控制,并最大程度地降低噪声和振动。

wen8789的博客 1763

AirPods Pro 连接Win11的 无声延迟 问题

AirPods Pro 蓝牙连接 Windows电脑时,当播放视频暂停后,大概经过1分钟左右不到回来继续播放改视频,会出现很严重的声音延迟现象,画面、字幕正常播放,但是就是没有声音。2、在暂停播放大概在1分钟左右,再点击播放时又会出现1中的延迟情况,但短时间暂停(例如3秒)则正常播放。1、点击音乐播放器、视频播放器等软件时会有2-3秒的无声音延迟(此时播放器正常播放),随后正常播放。,暂停播放闲置一会之后会休眠,继续播放会唤醒,唤醒时间过长导致延迟。删除 AirPods Pro 蓝牙耳机设备。

少年一贯快马扬帆,道阻且长不转弯; 要盛大,要绚烂,要哗然; 要用理想的泰坦尼克,去撞现实的冰川; 要当烧赤壁的风,而非借鉴草船; 要为了一片海,就肯翻万山。 9903

PCIe Gen4 Switch芯片PM40028调试踩坑实录:从boot引脚设置到串口无输出的诡异问题

本文记录了PCIe Gen4 Switch芯片PM40028的实战调试过程,重点剖析了从boot引脚配置错误导致串口无输出,到使用逻辑分析仪定位并解决启动问题的完整排障思路。文章深入探讨了芯片启动流程、硬件信号测量方法,并总结了高速硬件调试的核心经验与系统性排查清单,为工程师解决类似PCIe Gen4设备调试难题提供实用指南。

i8j9k0l1的博客 250

笔记本 windows10使用耳机看视频 刚开始会有几秒的无声

我在其他地方找到的 设置完之后记得重启 声音延迟是因为声卡驱动有一个省电管理,导致每一次暂停都会重启。 声音延迟2s的具体原因是Realtek的省电管理出现问题,为了节省电量Realtek在不工作时会自动关闭,导致每次启动Realtek时都需要重新加载,所以说会出现声音延迟1~2s的问题。解决思路是关闭Realtk的省电管理功能。具体解决方法是: 使用windows+R键调出运行窗口,输入regedit打开注册表编辑器 按照路径寻找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentCon

ChitinLoveJAVA的博客 2253

Android应用加固脱壳实战:从爱加密原理到Frida内存Dump与修复

在移动应用安全领域,代码加固与动态加载是保护核心逻辑的关键技术。其原理在于通过修改应用启动流程,将原始DEX加密隐藏,并注入包含解密逻辑的壳DEX,实现运行时动态加载。这项技术的核心价值在于防止应用被逆向分析、二次打包或恶意篡改,广泛应用于金融、游戏等高安全要求场景。对于安全研究、漏洞挖掘或历史版本审计,掌握脱壳技能至关重要。本文聚焦于**爱加密**等主流加固方案,深入探讨如何利用**Frida**框架在内存中精准捕获解密后的DEX数据,并解决脱壳后常见的签名校验等运行问题,提供一套从原理到实践的完整攻防思

weixin_28716443的博客 489

电源工程师必看:平均电流模式BUCK双环控制详解(从传递函数到Psim仿真)

本文详细解析了平均电流模式BUCK变换器的双环控制策略,从传递函数推导到Psim仿真实现。针对电源工程师关注的环路设计和稳定性问题,深入比较了电压模式、峰值电流模式和平均电流模式的优缺点,并提供了12V/3A BUCK变换器的完整设计案例,帮助工程师掌握平均电流控制这一中高功率应用的首选方案。

weixin_42696271的博客 394

CPU--电源管理

现代CPU有几种称为C-state(C状态)的省电模式,也称为idle-state,比如C0,C1,C3,C7。当处在C0时,CPU使用运行状态(也就是active状态),其他非0状态都是睡眠状态,数字越大睡眠深度越深,唤醒时所消耗的时间也越久,而性能也会变差。 在C0状态下,又存在几种称为P-state的状态,P-state主要控制频率和电源消耗,P-state数字越...

weixin_34321977的博客 1644

【机械视觉】C#+VisionPro实战:位深图(CogImage8Grey)与Bitmap互转技巧及工业检测应用

本文详细介绍了在工业检测中如何使用C#和VisionPro实现位深图(CogImage8Grey)与Bitmap的高效互转技巧。通过实战代码示例和工业应用案例,帮助开发者解决图像处理中的常见问题,提升检测精度和系统性能,适用于半导体、汽车零部件等高精度检测场景。

weixin_29250573的博客 186

【WinCE】SD card技术了解并WINCE下SDHC驱动开发(updated)

 SD Card Driver on ADS Summary了解SD card. 1WinCE 5.0下SD Stack. 6Bus Driver 7Host Controller Driver 8Client Driver 10SD on MX31 ADS. 14Secure Digital Host Controller 14LP1070 S

enginetanmary的专栏 1387

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

算法大师! 983

手把手教你学Simulink——基于Simulink的CLLC谐振变换器双向对称控制

本文介绍了一种基于Simulink的CLLC谐振变换器双向对称控制方法。针对CLLC拓扑的多阶谐振特性,采用固定频率、50%占空比、仅调节相位差的对称控制策略,实现了宽电压范围调节和全负载ZVS软开关。详细阐述了Simulink建模步骤,包括功率级搭建、相位差生成逻辑和双向切换实现,并通过仿真验证了稳态性能和双向无缝切换能力。该方法解决了传统PFM控制的不足,具有控制简单、效率高、易于工程实现的优势,适用于车载充电和储能系统等双向功率应用场景。

MHD0815的博客 302

Windows 硬件分担(Hardware-Offloaded) 音频处理

"Windows音频驱动"翻译系列总目录:https://blog.youkuaiyun.com/danteLiujie/article/details/102530417 翻译自: https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/hardware-offloaded-audio-processing 201704/20 版本...

danteLiujie的专栏 3057

使用R语言实战:构建Logistic回归模型

Logistic回归是一种基于概率的分类算法,它用于预测离散的结果变量(也称为响应变量或因变量)。与线性回归不同,Logistic回归的输出是一个概率值,通常在0和1之间。这使得它非常适合处理二分类问题。市场营销:预测客户是否会购买某个产品。医学研究:预测疾病的发生与否。信用风险评估:预测个人申请贷款的违约风险。社会科学:预测个人对某个政策的态度。

2301_79331230的博客 1139

Linux电源管理(三),CPUIdle 和 ARM的PSCI

cpuidle, PSCI, ACPI

u010936265的博客 1883

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

[power]一 Idle management

讲解ARM当前idle management的来龙去脉。

悟空明镜 1929

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

processor core不停地进出C4 idle state问题的解决

processor core不停地进出C4 idle state问题的解决 问题背景描述 package中有4个core,在core0/2/3上执行dead loop程序,控制它们不会idle,core1上不做任何操作。这样core1发现没有事情做的时候,就会进入到idle state,但是由于package 中的其他core一直busy,因此,core1只会进入到core-level idle ...

dachai的博客 1789

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...

CPUIDLE

cpuidle

relax33的博客 2593

网页暂停一段时间后声音延迟出现解决办法

具体原因是Realtk的省电管理出现问题,为了节省电量Realtk在不工作时会自动关闭,导致每次启动Realtk时都需要重新加载,所以说会出现声音延迟1~2s的问题。 解决思路是关闭Realtk的省电管理功能。 具体解决方法是: 1、使用windows+R键调出运行窗口,输入regedit打开注册表编辑器 2、按照路径寻找 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e96c-e325-11ce-bfc1-08002be103

qq_41058410的博客 1238

Linux服务器更改cpu模式

一般服务器的CPU都支持自动睿频,而服务器的CPU一般默认运行于ondemand模式,会有中断开销,睿频的时候提升下降也是有额外的开销,特别是对于一些低端cpu比如C2350,C2338,N2800这些低价独服的CPU,影响更大。查看CPU现在运行模式# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor。ondemand 按需快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,空闲时间增加就降低频率。

m0_57303102的博客 792

Linux Cpuidle介绍

一、引入背景先来看一个抖音场景下面的功耗表现,这个是功耗分解板拆解出来的某一款手机cpu的核压和功率,会发现它们它们的数值不是一直保持在高位,有些时间会下降到很低。这个时候有人会说下降是因为cpu上面没有任务在执行了,所以cpu就不需要工作造成功耗损失,那么就引出来一件事情,当cpu上面没有任务执行的时候,系统是如何进行cpu管理的,如果在没有任务的时候只是单纯的关闭cp...

内核工匠 7034

intel CPU ICELAKE_D 基于5.4内核适配intel_idle驱动

intel_idle驱动

哈哈哈哈哈哈哈哈哈 1121

CPU进入IDLE都做了啥?

cpuidle framework每一个 CPU 核心都会有一个 idle 进程,idle 进程是当系统没有调度 CPU 资源的时候,会进入 idle 进程,而 idle 进程的作用就是不...

1192

Linux电源管理——CPUidle Framework

本文主要就是针对 cpuidle framework 中相关的数据结构和函数进行分析,为后面分析 suspend to idle 打下基础

学习记录,交流学习 2115
上一篇: LWN:手机SoC提供商为什么要改动内核scheduler?
下一篇: LWN:疫情时代LWN的状况如何?
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值