1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          cpuidle概述

          來源:互聯網轉載 時間:2024-01-29 07:44:01

          cpuidle解決什么問題

          在計算機系統中,CPU的功能就是不斷地取指、譯碼、執行,那如果CPU沒有程序要執行,CPU不需要執行計算任務,也不需要響應外部中斷事件,CPU要怎么辦?在Linux kernel中,這種CPU的無所事事的狀態,被稱作idle狀態,而cpuidle framework,就是為了管理這種狀態。

          CPU在idle的時候可以利用一些芯片技術比如clock gating、retention,讓core進入睡眠省電模式,省電是又電子設備繞不開的話題。

          cpuidle基本流程

          任務調度、idle進程(何時進入idle)

          idle進程的存在,是為了解決“何時idle”的問題。
          在init進程(系統的第一個進程)完成初始化任務之后,將其轉變為idle進程,由于該進程的優先級是最低的,所以當idle進程被調度到時,則說明系統的其它進程不再運行了,也即CPU idle了。最終,由idle進程調用idle指令(這里為WFI),讓CPU進入idle狀態。

          WFI、WFE(如何idle)

          WFI/WFE用于解決“怎么idle”的問題。
          一般情況下,ARM CPU idle時,可以使用WFI指令,把CPU置為Wait for interrupt狀態。該狀態下,至少會把ARM core的clock關閉,以節省功耗(和具體ARM core的實現有關,可參考“ARM WFI和WFE指令”)。

          軟件流程

          在SMP系統中,CPU啟動的過程是:

          1)先啟動主CPU,啟動過程和傳統的單核系統類似:stext-->start_kernel-->rest_init-->cpu_startup_entry
          2)啟動其它CPU,可以有多種方式,例如CPU hotplug等,啟動過程為:secondary_startup-->__secondary_switched-->secondary_start_kernel-->cpu_startup_entry

          上面的代碼位于./arch/arm64/kernel/head.S、init/main.c等等,感興趣的讀者可以自行參考。最終都會殊途同歸,運行至cpu_startup_entry接口,該接口位于kernel/sched/idle.c中,負責處理CPU idle的事情。

          cpuidle框架

          cpuide framework的意義是什么?
          ARM CPU的設計越來越復雜,對省電的要求也越來越苛刻,因而很多CPU會從“退出時的延遲”和“idle狀態下的功耗”兩個方面考慮,設計多種idle級別。對延遲較敏感的場合,可以使用低延遲、高功耗的idle;對延遲不敏感的場合,可以使用高延遲、低功耗的idle。

          而軟件則需要根據應用場景,在恰當的時候,選擇一個合適的idle狀態。而選擇的策略是什么,就不是那么簡單了。這就是cpuidle framework的存在意義。

          kernel schedule模塊

          位于kernel\sched\idle.c中,負責實現idle線程的通用入口(cpuidle entry)邏輯,包括idle模式的選擇、idle的進入等等。

          core層

          cpuidle core的代碼主要包括:cpuidle.c、driver.c、governor.c、sysfs.c。

          cpuidle core負責實現cpuidle framework的整體框架,主要功能包括:

          1. 根據cpuidle的應用場景,抽象出cpuidle device、cpuidle driver、cpuidle governor三個實體;
          2. 以函數調用的形式,向上層sched模塊提供接口;
          3. 以sysfs的形式,向用戶空間提供接口;
          4. 向下層的cpuidle drivers模塊,提供統一的driver注冊和管理接口;
          5. 向下層的governors模塊,提供統一的governor注冊和管理接口。

          governor層

          前面講過,很多CPU提供了多種idle級別,這些idle級別的主要區別是“idle時的功耗”和“退出時延遲”。cpuidle driver(機制)負責定義這些idle狀態(每一個狀態的功耗和延遲分別是多少),并實現進入和退出相關的操作。最終,cpuidle driver會把這些信息告訴governor,由governor根據具體的應用場景,決定要選用哪種idle狀態(策略)。

          kernel中,cpuidle governor都位于governors/目錄下。

          driver層

          負責idle機制的實現,即:如何進入idle狀態,什么條件下會退出,等等。

          不同的architecture、不同的CPU core,會有不同的cpuidle driver,平臺驅動的開發者,可以在cpuidle core提供的框架之下,開發自己的cpuidle driver。代碼主要包括:cpuidle-xxx.c。

          cpuid參考

          • 概述
            http://www.wowotech.net/pm_subsystem/cpuidle_overview.html

          • core層
            http://www.wowotech.net/pm_subsystem/cpuidle_core.html

          • governor層
            http://www.wowotech.net/pm_subsystem/cpuidle_menu_governor.html

          • driver層
            http://www.wowotech.net/pm_subsystem/cpuidle_arm64.html

          cpuidle宏配置

          cpuidle的宏配置比較簡單,框架層和sysfs都默認編譯了,只需要配置對應的驅動宏。

          cpuidle調測命令

          #ls /sys/devices/system/cpu/cpuidle/cpuX/cpuidle/stateY  name,名稱;  desc,較為詳細的描述;  disable,cpuidle使能狀態的讀取和設置;  latency,退出該state所需的時間,單位為us;  power,該state下的功耗,單位為mW;  time,停留在改狀態的總時間,單位為us  usage,進入該狀態的次數。
          # 進出次數cat /sys/devices/system/cpu/cpu<x>/cpuidle/state<y>/usage# 總時間cat /sys/devices/system/cpu/cpu<x>/cpuidle/state<y>/time
          標簽:cpuidle-
          上一篇:異步調用
          下一篇:checklistbox用法

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          e3300cpu參數是幾代?差不多9代了,9代的實際性能可以強一點甚至,不如10代I3強。不過e3前三代確實是神U,很多年后被超越,但并沒有被徹底淘汰。英特爾賽揚E3300是英特爾賽揚系列的CPU。采用LGA775接口,主頻達到2.5G,1M二級緩存,外頻200MHz,倍頻12.5X支持MMX、SSE、SSE2、SSE3、SSE3多媒體指令集,擁有EM64T 64位運算指令集,EIST節能技術,...

          如何用office publisher編輯小冊子?Office publisher可用于制作小冊子或其他原創出版物。Publisher內置了許多模板,使得制作手冊更容易。首先,啟動軟件,打開宣傳冊模板,或在線下載適當的模板。在頁面中打開模板后,您將看到占位符的文本和圖像,第一個頁面包含占位符的業務信息,您將立即更新這些信息。把這些信息改成你需要的,把圖片改成適合你需要的。你可以保存指紋。Publi...

          psctrl z只能后退一步?是的在ps中快捷鍵ctrl z只能后退一步。還有一個組合快捷鍵ctrl alt z,可以多步后退。一次按一步,可以后退的最大步數相當于當前保存在歷史面板中的步數。但是在實際操作中,我們經常會發現這組快捷鍵是無效的。這是因為等其他應用占用了這組快捷鍵。要么關閉,要么重置快捷鍵,要么放棄這套快捷鍵,使用ps的歷史功能。pscc2017怎么后退一步?如果使用套索工具,請按d...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>