国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

Linux調度器的演變

Linux閱碼場 ? 來源:Linuxer ? 2020-04-30 15:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

2014年Linux內核峰會(Linux Kernel Summit 2014)上舉辦了為期一天的EAS主題研討會。來自Arm的Morten Rasmussen做會議主持,來自Linaro的Daniel Lezcano和Mike Turquette介紹了最近發布的EAS相關工具,從此EAS開始快速發展并被人所知,智能設備的廠商們爭先恐后地學著應用此技術。

節約能源的觀念我們并不陌生,可是讓內核學會自己節約能源卻是一件新鮮的事情,谷歌在2017年發布的Google Pixel 2就具備這一技術。EAS不僅讓Google Pixel 2功耗降低,還可以更快?快來看看這是怎么回事。

注:

1.“core” 一詞在CPU相關文章中經常翻譯為“內核”,但是在本文中翻譯為“核”,以區別軟件的內核“kernel”。

2. big.LITTLE是由ARM公司于2011年提出的基于異構計算的CPU架構。在這個架構中,分為相對較耗電但運算能力強的核所組成的大核“big”,和相對耗電低但運算能力弱的核組成的小核“LITTLE”,這些核共享存儲器區段, 因此可以在大核和小核之間即時交換工作負載。采用big.LITTLE架構的CPU,可以同時擁有強大計算能力和節能的特點, 一般運用在移動設備上。

3. OnePlus 3是一加手機第三代旗艦機,搭配高通驍龍820 處理器;2016.06.15 上市。OnePlus 3T搭配高通驍龍821處理器;OnePlus 6搭配高通驍龍845 處理器, 2018.05.18上市。本文發表于2018.6.30,主要對比分析了當時一加的最新產品OnePlus 6和Google最新產品Pixel 2 對EAS技術的應用情況。

這對您的下一款智能手機意味著什么

當Linux還只是Linus Torvalds頭腦中的一個想法時,那個年代只有單核CPU,這些CPU的功耗很小。第一個商用處理器Intel 4004在單核上以740kHz的頻率運行。那時還不需要使用負載調度器(load scheduler)。負載調度器的出現是為數十年之后出現的IBM Power 4等雙核“龐然大物”準備的。它們運行在驚人的1.1GHz到1.9GHz之間,并且需要程序和系統的支持才能正確運行多核。我們如何讓這些機器硬件(即多核CPU)使用多核的軟件算法?您可能以前在我們的論壇上聽說過功耗感知調度(EAS)。這是Google Pixel智能手機表現如此出色的部分原因。EAS到底是有什么了不起,以及我們如何應用它?在解釋之前,我們需要討論Linux調度器。

Linux調度器的演變

輪轉調度

輪轉(round robin)是一個容易解釋也容易理解的概念,而且也不難理解其缺點。輪轉使用時間片為每個進程分配時間。假設我們的計算機上正在運行四個進程。

進程A

進程B

進程C

進程D

現在,讓我們描述輪轉調度器的工作。在繼續進行下一步之前,我們將為每個進程分配100毫秒(時間片)。這意味著進程A先執行100毫秒,然后輪到進程B執行,依此類推。如果應用程序的工作需要250毫秒才能完成,則僅需完成3次此過程即可完成工作!現在,將以上方法擴展到多核,以便將進程A和進程B分配給核1,將進程C和進程D分配給核2。這種方法被O(n)調度取代(O(n)調度類似于輪轉調度,但是新增了 epoch ,并允許動態分配時間),然后產生了O(1)調度(O(1)調度讓開銷最小化,且支持無限制的進程),最后產生了完全公平調度器(CFS)。CFS于2007年10月合并到Linux內核版本2.6.23中。

完全公平調度器

完全公平調度器自誕生以來就用在Android中,并且在非big.LITTLE設備上使用。它使用一種智能算法來確定處理順序,時間分配等。這是經過精心研究被稱為“加權公平排隊”調度算法的應用實例。CFS主要為機器上運行的系統進程和其他高優先級的進程提供優先權。如果要在big.LITTLE設備上運行,則所有核將被視為平等。這很不好,因為低功耗核可能被迫運行密集的應用程序,或者更糟的是發生相反的情況(譯者注:即一段時間內高功耗核運行的應用程序非常少,對高功耗核是一種浪費)。例如,聽音樂的解碼過程也許會在大核上執行,這就造成了不必要的功耗增加。這就是我們需要為big.LITTLE設備使用新調度器的原因,新調度器才能夠以節能方式識別和利用核差異。這就是異構多處理(HMP)的出現,它是大多數Android手機現在正在運行的標準調度器。

異構多處理

這是近年來發布的任何big.LITTLE設備(Google Pixel除外)的標準調度器。HMP利用big.LITTLE架構,將低優先級且不那么繁重的工作委派給消耗更少功率的小核。HMP是“安全的”,即不會犯錯誤的,它知道哪些任務應該去大核,哪些應該去小核。它確實可以工作,并且相比EAS在開發方面所需的精力更少。(EAS會在下文詳細介紹。) HMP只是CFS的擴展,以使其具有功耗意識。

HMP不會猜測,即不會預測未來的進程。這沒毛病但這就是為什么HMP設備不能像運行EAS的設備那么流暢的原因,也是為什么它會更耗電的原因。最后,HMP的不足使我們迎來了功耗感知調度(EAS),我堅信未來隨著更多OEM的采用,EAS將應用于ROM和內核開發。

功耗感知調度

功耗感知調度(EAS)是我們論壇用戶談論的下一件大事。如果您正在使用OnePlus 3(或Google Pixel),您肯定在論壇上聽說過OnePlus。最新的OnePlus 6搭配高通驍龍 845進入主流發布,因此,如果您擁有這些設備之一,那么您已經擁有支持EAS的智能手機。諸如RenderZenith之類的內核形式的EAS 和諸如VertexOS和PureFusion之類的ROM 席卷了OnePlus 3論壇。當然,Google Pixel也附帶EAS。承諾延長電池壽命并提高性能,還有什么貓膩呢?

功耗感知調度并非如此簡單,并不是CFS或HMP之類的每種設備都通用的。EAS要求我們基于功耗模型理解正在運行的處理器。這些功耗模型是由工程師團隊不斷測試并努力提供最佳性能而建立的。由于驍龍820和821基本相同,因此OnePlus 3上定制的內核使用Google Pixel功耗模型。配備驍龍845的設備可以使用EAS,因此OnePlus 6可以在某種程度上使用EAS 。雖然它不像Google Pixel設備在調整參數方面做的那么好,但它也完成了這項工作。這是一個示例,盡管OnePlus 6在EAS方面擁有更好的處理器,但Pixel 2 XL在平滑度上仍勝過OnePlus 6。這兩個圖像均來自我們OnePlus 6以速度為導向的測試。

如果您看不懂這張圖片,可以試著看綠色指示線以下的圖像。超過綠線的任何內容均表示丟幀,在最壞的情況下,會出現明顯的卡頓。

EAS在OnePlus 6上的實現很有趣,因為OnePlus 6不像具有相同SoC的Google Pixel一樣熟練的使用EAS。調度器參數調整地不太合理,因此這可能解釋了為什么它的性能效率不如您預期的那樣。它在功耗方面非常保守,系統會在大多數工作中優先考慮低功耗核。

可調參數只是傳遞給CPU governor的一組參數,這些參數會改變governor在頻率方面對某些情況的反應。然后,調度器決定將任務分配在不同處理器上。OnePlus 6的可調參數能在低功耗核上設置任務的優先級,可是這并不起什么作用。而 Google Pixel 2具有巨大的輸入提升能力,所有8個核始終保持在線狀態。Google還使用了一個中斷負載均衡,它有助于消除丟幀并提高性能。

那么EAS如何工作?為什么僅在特定條件下如此有效?

功耗感知調度(EAS)需要使用功耗模型,就像上面提到的,EAS需要大量測試工作才能使其完美。EAS試圖統一內核的三個不同核心部分,它們各自獨立發揮作用,而功耗模型則有助于統一它們。

Linux調度程序(CFS,如上所述)

Linux cpuidle

Linux cpufreq

將調度器下的三個部分統一并且一起計算可以降低功耗,因為一起計算可以使它們盡可能高效。CPUIdle嘗試確定CPU何時應進入空閑模式,而CPUFreq嘗試確定何時升高或降低CPU頻率。這兩個模塊的主要目標都是節能。不僅如此,它還將進程分為四個cgroup,即top-app,system-background,foreground和background。將要處理的任務放入這些類別之一,然后為該類別分配CPU資源,并在不同的CPU核上委派工作。top-app要求最優先地被完成,其次是foreground,background,然后是system-background。從技術上講,background與system-background具有相同的優先級,但是system-background通常也可以訪問更多的小核。實際上,EAS正在將Linux內核的核心部分整合到一個進程中。

喚醒設備時,EAS將選擇處于最淺的空閑狀態的核,從而將喚醒設備所需的功耗降至最低。這有助于減少使用設備時所需的功率,因為如果不需要,它不會喚醒大簇(big cluster)【big cluster的概念見下圖】。負載跟蹤也是EAS極其重要的一部分,有兩種選擇。“每實體負載跟蹤”(Per-Entity Load Tracking PELT)通常用于負載跟蹤,然后該信息用于確定頻率以及如何在CPU上委派任務。也可以使用“窗口輔助的負載跟蹤”(Window-Assisted Load Tracking WALT),它是Google Pixel上使用的。我們論壇上的許多EAS ROM(例如VertexOS)都選擇使用WALT。許多ROM會發行WALT和PELT兩個版本的內核,因此由用戶決定。WALT更具突發性,CPU頻率峰值很高,而PELT試圖讓頻率保持連貫性。負載跟蹤器實際上并不影響CPU頻率,它只是告訴系統CPU使用率是多少。較高的CPU使用率需要較高的頻率,因此PELT的連貫性意味著它將緩慢地調高或調低CPU頻率。PELT確實會趨向于更高的CPU負載報告,因此它可能會以更高的耗s電來提供更高的性能。但是,由于兩種負載跟蹤方法都在不斷地修補和完善,因此目前尚無法真正說出哪種負載跟蹤系統更好。

很明顯,無論使用哪種負載跟蹤方法,效率都會提高。使用跟蹤方法不是僅僅在任何處理器上處理任務,而是可以分析任務并估算運行該任務所需的功耗。這種巧妙的任務分配方式意味著任務可以更加高效的完成,同時還可以使整個系統更快。EAS旨在以最小的功耗獲得最流暢的UI。負載跟蹤需要其他外部組件(例如schedtune)的參與。

Schedtune在每個cgroup中由兩個可調參數定義,以確保對要完成的任務進行更好的控制。它不僅可以在多核CPU上分散任務,而且為了確保更快地完成時間敏感型任務,來決定是否增加感知的負載。這樣,用戶使用的前臺應用程序和服務不會減慢速度,也不會引起不必要的性能問題。

雖然EAS是今后的一件大事,但也可以說它已經存了好一段兒時間。隨著越來越多的設備采用EAS而進軍主流市場,移動設備處理效率的新時代即將到來。

輪轉,CFS,HMP和EAS的優缺點

雖然我的畫圖技術略差,但我努力拼湊了一張圖片,其中應該總結出了每種調度器的優缺點。

(譯者翻畫的圖片,紅字為缺點,白字為優點)

我要特別感謝XDA公認的貢獻者Mostafa Wael, 他對EAS各個方面的解釋極大地幫助了本文的實現。我還要感謝XDA注冊開發人員joshuous,XDA注冊開發人員RenderBroken 和Mostafa Wael有關EAS的文章。那些對EAS相關內容感興趣的人,Linaro有很多關于EAS的文檔,您可以閱讀。

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

    關注

    5

    文章

    1159

    瀏覽量

    53437
  • 高通驍龍
    +關注

    關注

    7

    文章

    1228

    瀏覽量

    45559

原文標題:能感知功耗的Linux調度器(EAS)

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Kubernetes Pod調度策略原理與落地指南

    Pod調度是Kubernetes的核心機制之一,決定了Pod最終運行在哪個節點上。默認調度kube-scheduler通過一系列預選(Filtering)和優選(Scoring)算法完成調度
    的頭像 發表于 02-27 11:08 ?155次閱讀

    Linux內核的“心跳”:jiffies如何為系統計時?

    Linux 內核的世界里,有一個默默工作的 "計時"——jiffies。它不像我們手機上的時鐘那樣顯示年月日,卻掌控著內核中絕大多數時間相關的操作:從進程調度到設備驅動的定時檢查,都離不開它的身影。
    的頭像 發表于 02-04 16:27 ?826次閱讀
    <b class='flag-5'>Linux</b>內核的“心跳”:jiffies如何為系統計時?

    深入Linux內核:進程調度的核心邏輯與實現細節

    Linux系統中,進程調度就像一位精明的“CPU管理員”——它決定著哪個進程能優先使用CPU,多久切換一次進程,如何平衡系統響應速度與資源利用率。小到桌面應用的流暢點擊,大到服務的多任務并發
    的頭像 發表于 12-24 07:05 ?4314次閱讀
    深入<b class='flag-5'>Linux</b>內核:進程<b class='flag-5'>調度</b>的核心邏輯與實現細節

    嵌入式基礎知識-系統調度

    系統調度是操作系統重要功能,在嵌入式開發,也要了解系統調度的基本原理。對于嵌入式Linux開發,一般使用多線程和多進程開發,對于運行RTOS的嵌入式系統,一般使用多任務開發。這些線程、進程、任務
    發表于 12-16 08:15

    Linux-RT特點及簡單應用

    Linux-RT支持優先級繼承(Priority Inheritance),避免了優先級反轉問題,提高了實時任務的響應性能。 標準Linux內核的調度(也稱為CFS
    發表于 12-05 07:37

    RK3588核心板/開發板RT-Linux系統實時性及硬件中斷延遲測試

    延遲檢測工具測試Linux系統實時性。Cyclictest是一款專門用于測試和評估系統實時性(Real-Time)的工具,主要用于測量Linux系統中線程調度的延遲
    的頭像 發表于 11-28 18:57 ?685次閱讀
    RK3588核心板/開發板RT-<b class='flag-5'>Linux</b>系統實時性及硬件中斷延遲測試

    freertos關閉任務調度的方法

    disable_task_scheduling() { vTaskSuspendAll();// 關閉調度 /* 在這里執行需要原子操作的代碼,例如修改全局變量 */ /* 重新啟用調度
    發表于 11-17 06:47

    【產品介紹】Altair PBS Professional HPC工作負載管理和作業調度管理系統

    AltairPBSProfessional行業領先的HPC工作負載管理和作業調度管理系統PBSProfessional是一款快速、強大的工作負載管理和作業調度管理系統,旨在提高生產
    的頭像 發表于 09-19 17:03 ?630次閱讀
    【產品介紹】Altair PBS Professional HPC工作負載管理<b class='flag-5'>器</b>和作業<b class='flag-5'>調度</b>管理系統

    SSH 遠程連接內網 Linux 服務

    利用 ZeroNews,您可對用內網的 Linux 服務進行統一的 SSH 遠程連接管理,當用戶外出時,可通過 ZeroNews 分配的公網域名地址,快速訪問企業內部、家庭的 Linux
    的頭像 發表于 09-17 19:52 ?463次閱讀
    SSH 遠程連接內網 <b class='flag-5'>Linux</b> 服務<b class='flag-5'>器</b>

    deepin社區開發者聯合打造CPU頻率調度

    你是否遇到過 Linux 系統在高負載下突然卡死、發熱嚴重,甚至直接關機的情況?尤其是在一些老舊設備上,默認的性能調度策略往往過于“激進”,只要稍有負載,CPU 立刻飆到最高頻率——電耗得飛快,機器燙得嚇人,系統穩定性也大打折扣。
    的頭像 發表于 09-12 10:54 ?1062次閱讀
    deepin社區開發者聯合打造CPU頻率<b class='flag-5'>調度</b><b class='flag-5'>器</b>

    御控縣級供水調度系統:數字化整合,構建全流程智能調度體系

    御控縣級供水調度系統的建設以數據整合和智能決策為核心,通過物聯網、大數據等技術,實現從水源地到用戶終端的全流程監控與優化調度,提升供水安全性和經濟性。
    的頭像 發表于 07-17 15:41 ?463次閱讀
    御控縣級供水<b class='flag-5'>調度</b>系統:數字化整合,構建全流程智能<b class='flag-5'>調度</b>體系

    一文讀懂:嵌入式Linux實時性進階

    能夠在限定的時間內對外部時間做出相應的特性。 Linux可以通過任務調度與相應時間,中斷延遲與搶占延遲,內核可搶占性與實時補丁,實時調度策略,硬件支持來提高其實時性,但它本身并不是一個硬實時操作系統
    發表于 07-10 15:26

    晶體管架構的演變過程

    芯片制程從微米級進入2納米時代,晶體管架構經歷了從 Planar FET 到 MBCFET的四次關鍵演變。這不僅僅是形狀的變化,更是一次次對物理極限的挑戰。從平面晶體管到MBCFET,每一次架構演進到底解決了哪些物理瓶頸呢?
    的頭像 發表于 07-08 16:28 ?2312次閱讀
    晶體管架構的<b class='flag-5'>演變</b>過程

    深度剖析 RT-Thread 線程調度流程

    RT-Thread調度第一個線程的主要流程分如下:rtthread_startup:RTT的啟動函數,主要負責板級驅動,調度,系統線程初始化,啟動調度的工作
    的頭像 發表于 06-25 18:24 ?1775次閱讀
    深度剖析 RT-Thread 線程<b class='flag-5'>調度</b>流程

    安全生產調度管理系統的核心功能模塊

    調度、決策支持的全鏈條安全管理體系。 一、系統基本架構 安全生產調度 管理系統采用"云-邊-端"協同的三層技術架構。感知層由部署在生產現場的各類監測設備組成,包括氣體傳感、振動探頭、視頻監控等,形成立體化監測網絡。
    的頭像 發表于 05-16 15:25 ?594次閱讀