关于“空转”的本质 和 调频策略与线程调度的“契合性”
关于“空转”的本质 和 调频策略与线程调度的“契合性”。合计不过几小时的粗浅研究,欢迎指正
关于空转的本质:
首先明确:
性能与频率的关系:性能由频率提供,性能≠频率
空转:一种[SOC因以超过当前性能需求的频率工作而造成额外功耗]的现象(即“多余频率”造成的功耗浪费)。
空转的本质:超出当前性能需求的频率(下文简称“多余频率”)
空转的严重性:指SOC因多余频率产生额外功耗的多少,多余频率产生的额外功耗越多则空转越严重,反之亦然
结论1.空转随负载升高而严重
现代CPU/GPU采用DVFS机制根据负载[动态地]调节电压,而不直接根据频率表[死板地]将电压固定为对应的上限(而CPU/GPU电压表里每个频率对应的电压是该频率的电压上限)
所以只要频率超过当前性能需求就会产生空转现象,且负载越高则实际施加的电压越高,空转就越严重
(所以在负载极低的场景如静置桌面,几乎无法通过功耗察觉出空转,而在高负载场景如游戏中,拉高频率功耗会显著增加)
结论2.还有多种情况会导致CPU空转
CPU并非"铁板一块",内部分多个单元协同工作,有的单元还需同步工作(协同≠同步)。
一些单元会因某些同步工作的单元的[缓存命中率低]、[分支预测失败]、[线程等待同步]等原因不得不等待同步,而这个等待过程极短以至于CPU仍然保持高频且被施加着电压,就产生了超出当前性能需求的频率,即产生了空转现象
补充:如何减少空转
对于非专业人士,有这俩方向:
1.提高CPU缓存利用率——使用第三方线程调度(如Scene核心分配或AsoulOpt或自定义线程放置模块),减少高负载线程(个人认为负载超过50%可视为高负载线程)抢占L2缓存导致缓存失效的情况(即缓存命中率降低)
核心思想——把高负载线程分到不同的L2缓存中,减少竞争,以提高缓存利用率
2.减少多余频率——使用FAS-RS/SceneFAS/FEAS等辅助调速器,减少超出性能需求的频率
关于调频策略与线程调度的“契合性”:
前置:
调频策略:指像[SceneLP/HP/EP FAS-RS ywx这类主要用于控制CPU频率]的调度
线程调度:指像[Asoulopt Scene核心分配 自定义线程放置模块这类用于设定某些应用的某些进程内的某些线程的可用CPU核心]的调度
(是什么让你发现:理解这件事需要那么一个共同纲领?没有共同纲领,各自的调节就无意义,所以两者更无契合性一说因为其根基没有意义,讨论就毫无意义,但又的确跟距现象发现有某种契合性)
观点:都[以提升某个应用的能效]为目的的前提下,调频策略和线程调度存在契合性
原因:线程调度会根据负载决定线程使用何等能效的核心,调频策略会控制每个核心的频率
调频策略和线程调度的契合性的本质:两者之搭配是否能让应用的能效提升。
调频策略和线程调度的契合度:两者搭配起来能提升越多能效,两者就越契合。但契合度有上限,因为存在最佳的契合情况。案例如下:
1.假设调频策略把高能效大核7的频率调得比低能效小核1234的频率要高一些
1.1.如果把高负载和低负载线程分别放在高能效7和低能效1234上,功耗低且流畅
1.2.如果把高负载和低负载线程分别放在低能效1234和高能效7上,功耗更高且非常卡顿
2.假设线程调度把高负载线程放在高能效大核7上,中负载线程放在中能效中核456上
2.1.如果调频策略把各核心频率调得过高,则空转严重功耗很高
2.2.如果调频策略把各核心频率调得过低,则画面卡顿
2.3.如果调频策略把各核心频率调得恰到好处,则画面流畅且低功耗
2025-03-21
浏览6025
灌水区
登录后评论
5
3