吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

linux cpu dvfs介紹

sakobpqhz6 ? 來源:黑客與攝影師 ? 2023-03-07 11:36 ? 次閱讀

介紹

CPU dvfs(dynamic voltage frequency scaling)子系統負責cpu運行時,對其頻率及電壓進行調整,以求性能滿足的前提下,cpu的功耗盡可能低。

芯片的CMOS電路的功耗有個計算公式,比較復雜,簡單來說功耗跟電壓平方成正比,跟頻率成正比,因此CPU dvfs在涉及到電壓調整的時候,功耗受益還是很明顯的。但是僅調頻的話,收益是比較小的,因為頻率對應著算力,當頻率減少,對應的算力也減弱,這樣執行時間也會變長。

CPU dvfs framework(也常被稱為cpufreq framework)和其他的linux framework類似。主要解決兩個問題:什么時候調頻調壓,怎么調頻調壓。cpufreq driver提供調頻調壓的機制,cpufreq governor提供不同的策略,cpufreq core對通用的調頻邏輯做抽象,為上層提供功能、接口封裝,對下層調用抽象封裝的硬件控制接口。此外,還借助頻率電壓對opp(operating performance points)功能,clk driver、regulator driver對頻率及電壓做硬件時鐘及電壓的調整。

2.框架

f855a21e-bc22-11ed-bfe3-dac502259ad0.png

cpufreq core:是cpufreq framework的核心模塊,和kernel其它framework類似,主要實現三類功能

抽象調頻調壓的公共邏輯和接口,主要圍繞struct cpufreq_driver、struct cpufreq_policy和struct cpufreq_governor三個數據結構進行

以sysfs的形式向用戶空間提供統一的接口,以notifier的形式向其它driver提供頻率變化的通知。

提供CPU頻率和電壓控制的驅動框架,方便底層driver的開發;同時,提供governor框架,用于實現不同的頻率調整機制。

cpufreq governor:負責調頻調壓的各種策略,每種governor計算頻率的方式不同,根據提供的頻率范圍和參數(閾值等),計算合適的頻率。

userspace:用戶通過操作scaling_setspeed文件節點操作頻率及電壓的調整。

ondemand:根據CPU當前的使用率,動態調整cpu的頻率及電壓。Sched通過調用ondemand注冊進來的回調函數來觸發負載的估算,它以一定時間間隔對系統負載進行采樣,按需調整cpu的頻率及電壓,若當前cpu的利用率超過設定的閾值,就會立即調整到最大的頻率。調頻速度快,但是不夠精確。

conservative:類似ondemand,在調頻調節時會平滑一下,以防最大、最小頻率之間來回跳變。調整的時候會以一定步長調整,而不是直接調整到目標值。同時會周期的計算系統負載,用以決定調到什么頻率。

schedutil:通過將自己的調頻策略注冊到hook,在負載發生變化的時候,會調用該hook,此時就可以進行調頻決策或執行調頻動作。前面的調頻策略都是周期采樣計算cpu負載有滯后性,精度也有限,而schedutil可以使用PELT(per entity load tracking)或者WALT(window assist load tracking)準確的計算task的負載。如果支持fast_switch的功能,可以在中斷上下文直接進行調頻。

cpufreq driver:負責平臺相關的調頻調壓機制的實現,基于cpu subsystem driver、OPP、clock driver、regulator driver等模塊,提供對CPU頻率和電壓的控制。

cpufreq stats:負責調頻信息和各頻點運行時間等統計,提供每個cpu的cpufreq有關的統計信息。

3.數據結構

struct cpufreq_policy:linux使用cpufreq policy來抽象cpu設備的調頻調壓功能,用于描述不同的policy,包含頻率表、cpuinfo等各種信息,并且每個policy都會對應某個具體的governor。

struct cpufreq_governor:不同policy的管理策略,根據使用場景的不同,會有不同的調頻調壓策略。

struct cpufreq_driver:用于描述cpufreq的驅動,是驅動工程師最關注的結構。

f87a849e-bc22-11ed-bfe3-dac502259ad0.png

4.初始化及工作流程

4.1初始化流程

cpufreq_register_driver函數為cpufreqdriver注冊的入口,驅動程序通過調用該函數進行初始化,并傳入相關的struct cpufreq_driver,cpufreq_register_driver會調用subsys_interface_register,最終執行回調函數cpufreq_add_dev。

系統中可以同時存在多個governor,policy通過cpufreq_policy->governor指針和某個governor相關聯。要想一個governor能夠被使用,首先要把該governor注冊到cpufreq framework中。

cpufreq core定義了一個全局鏈表變量:cpufreq_governor_list,注冊函數首先根據governor的名稱,通過__find_governor()函數查找該governor是否已經被注冊過,如果沒有被注冊過,則把代表該governor的結構體添加到cpufreq_governor_list鏈表中。

fa3469a8-bc22-11ed-bfe3-dac502259ad0.png

4.2工作流程

不同的governor的觸發調頻調壓流程不一樣,這里以scheduutil governor為例。

CFS負載變化的時候或者RT、DL任務狀態更新的時候,就會啟動調頻這幾個scheduler類會調用cpufreq_update_util函數(前面注冊進來的hook函數)觸發schedutil工作。每個cpu最終會回調到sugov_upate_shared或者sugov_upate_single函數中的一個。

由于是從scheduler里直接調用下來的,最終執行調頻切換時,無論是快速路徑觸發的簡單寫寄存器,還是慢速路徑觸發的kthread都不會占用過多時間或者調度開銷。

具體的觸發時機如下:

fae67cd8-bc22-11ed-bfe3-dac502259ad0.png





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121155
  • CMOS電路
    +關注

    關注

    0

    文章

    49

    瀏覽量

    11589
  • LINUX內核
    +關注

    關注

    1

    文章

    316

    瀏覽量

    21742
  • CFS
    CFS
    +關注

    關注

    0

    文章

    7

    瀏覽量

    9062

原文標題:一文搞懂linux cpu dvfs

文章出處:【微信號:IC學習,微信公眾號:IC學習】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式Linux系統CPU控制常見辦法測試

    01 測試環境 Xilinx ZCU106 單板 Xilinx VCU TRD2020.1 02 介紹 嵌入式Linux系統中,Linux直接管理所有CPU。默認情況下,系統的目標是提
    的頭像 發表于 11-26 14:17 ?5161次閱讀

    Linux驅動開發之IO模型介紹

    Linux驅動開發中,應用程序通過循環讀取或者中斷的方式都會使得CPU的占用率很高。本文介紹五種IO模型,可以用來優化文件讀寫方式,降低CPU的使用率。
    發表于 07-29 09:03 ?862次閱讀

    關于DVFS與AVS

    請問工程師,在SmartReflex中的DVFS與AVS兩種方式的區別是什么,謝謝
    發表于 06-21 03:32

    請問是否有其他文檔詳細的描述Omap-l132芯片的DVFS使用方法?

    正在使用Omap-l132芯片,想要使用DVFS做省電。文檔《spruh78.pdf》和《omap-l132,pdf》中相關內容較少且較概略,請問是否有其他文檔詳細的描述此芯片的DVFS使用方法?
    發表于 08-23 07:54

    RK3288 Android6.0 DVFS與DDR frequnecy的初始化

    Platform: RK3288OS: Android 6.0Kernel: 3.10.92DVFS即Dynamic Voltage and Frequency Scaling.有看到RK將DDR
    發表于 11-07 17:28

    ATMEL的CPU介紹

    ATMEL的CPU介紹ATMEL的CPU介紹ATMEL的CPU介紹ATMEL的
    發表于 10-30 18:08 ?5次下載

    Linux那些事兒linux的入門介紹

    電子發燒友網站提供《Linux那些事兒linux的入門介紹.pdf》資料免費下載
    發表于 05-02 08:00 ?4次下載

    DVFS對程序性能影響模型

    (dynamic voltage frequency scaling,簡稱DVFS)來提升單節點的能耗表現.但是,DVFS這一類機制同時影響到應用的能源消耗和性能,而這一問題尚未被深入探索.專注于 DVFS 機制對應用程序性能的
    發表于 12-30 14:56 ?1次下載

    Linux CPU的性能應該如何優化

    Linux系統中,由于成本的限制,往往會存在資源上的不足,例如 CPU、內存、網絡、IO 性能。本文,就對 Linux 進程和 CPU 的原理進行分析,總結出
    的頭像 發表于 01-18 08:52 ?3427次閱讀

    如何分析Linux CPU上下文切換問題

    在我的上一篇文章:《探討 Linux CPU 的上下文切換》中,我談到了 CPU 上下文切換的工作原理。快速回顧一下,CPU 上下文切換是保證 Li
    的頭像 發表于 05-05 20:11 ?2019次閱讀

    一文搞懂linux cpu dvfs

    CPU dvfs(dynamic voltage frequency scaling)子系統負責cpu運行時,對其頻率及電壓進行調整,以求性能滿足的前提下,cpu的功耗盡可能低。
    的頭像 發表于 03-07 11:35 ?2080次閱讀
    一文搞懂<b class='flag-5'>linux</b> <b class='flag-5'>cpu</b> <b class='flag-5'>dvfs</b>

    如何在Linux中對CPU進行壓力測試

    Linux環境中對CPU進行壓力測試,主要是為了測試系統的CPU負載能力和穩定性,可以使用多種工具和命令來進行測試。本文主要介紹兩種常用的CPU
    發表于 07-18 09:55 ?7419次閱讀

    Linux服務器CPU飆升的原因

    首先在Linux系統中檢查CPU使用率。可以通過在命令行中輸入top或htop命令來查看當前系統中各個進程的CPU使用率。如果CPU使用率大于80%,則可以考慮進行排查。
    發表于 02-28 11:00 ?1980次閱讀
    <b class='flag-5'>Linux</b>服務器<b class='flag-5'>CPU</b>飆升的原因

    淺析SoC芯片的DVFS技術

    DVFS(Dynamic Voltage and Frequency Scaling)即動態電壓頻率調節技術,是一種高效的低功耗技術,它通過動態調整工作電壓和時鐘頻率,以達到降低功耗的目的。
    的頭像 發表于 04-05 09:52 ?2810次閱讀
    淺析SoC芯片的<b class='flag-5'>DVFS</b>技術

    i.MX 8M Plus 系統級模塊 DVFS 支持 CPU 頻率控制

    作者: Tawfeeq Ahmad 動態電壓和頻率調節 (DVFS) 是一種復雜的電源管理技術,對于優化嵌入式系統的性能和能效至關重要。DVFS 可根據工作負載需求動態調整處理器的電壓和頻率,從而
    的頭像 發表于 01-26 17:59 ?137次閱讀
    i.MX 8M Plus 系統級模塊 <b class='flag-5'>DVFS</b> 支持 <b class='flag-5'>CPU</b> 頻率控制
    菲律宾太阳网| 百家乐透视牌靴哪里有| 瓮安县| 现金百家乐赌法| 澳门百家乐官网有限公司| 阿玛尼百家乐的玩法技巧和规则 | 大发888海立方| 百家乐官网管家| 惠州市| 百家乐秘籍下注法| 如何赢百家乐官网的玩法技巧和规则 | 百家乐单机破解版| 百家乐官网tt娱乐平台| 大发888站| 百家乐官网社区| 博彩通百家乐官网概率| 水果机遥控器价格| 做生意佩戴什么纳财| 百家乐官网视频百家乐官网| 大发888代理充值| 百家乐全讯网娱乐城| 百家乐官网桌德州扑克桌| 老k棋牌游戏大厅| 真人百家乐蓝盾娱乐网| 百家乐官网电子发牌盒| 纳雍县| 太阳城绿萱园| 百家乐一代龙虎机| 百家乐官网只打闲打法| 真钱赌博| 二八杠玩法| 百家乐平台开户哪里优惠多| 百家乐官网信誉博彩公司| 名门国际娱乐| 免费百家乐缩水工具| 澳门百家乐21点| 百家乐官网论坛博彩拉| 凯旋门娱乐| 太阳城娱乐小郭| 百家乐桌折叠| 免费百家乐官网计划工具|