女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    文章

    1097

    瀏覽量

    51923
  • 高通驍龍
    +關注

    關注

    7

    文章

    1228

    瀏覽量

    44080

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    2025年常用實時Linux系統深度評測

    1、PREEMPT-RT - 特性: ?- 實時性:通過內核補丁實現搶占式調度,響應延遲處于毫秒級別,能夠滿足一般實時應用的需求。 ?- 兼容性:與標準Linux內核高度兼容,支持廣泛的硬件平臺
    的頭像 發表于 03-06 10:57 ?571次閱讀

    淺談光模塊的演變與創新

    對更高數據傳輸速率的需求呈指數級增長,是由數據中心、云計算的需求所驅動的。光模塊作為光通信系統的基礎構件,正處于這一演變的前沿。模塊速度和形態從400G到1.6T的演變,速度增強技術,以及實現高速光模塊的路徑。
    的頭像 發表于 02-21 09:15 ?588次閱讀
    淺談光模塊的<b class='flag-5'>演變</b>與創新

    電動汽車的SiC演變和GaN革命

    電子發燒友網站提供《電動汽車的SiC演變和GaN革命.pdf》資料免費下載
    發表于 01-24 14:03 ?1次下載
    電動汽車的SiC<b class='flag-5'>演變</b>和GaN革命

    簡單認識全調度以太網技術

    調度以太網技術(Global Scheduling Ethernet,GSE)——基于報文容器PKTC轉發和負載均衡,并實現全局調度
    的頭像 發表于 01-15 14:31 ?522次閱讀
    簡單認識全<b class='flag-5'>調度</b>以太網技術

    車隊運營調度管理系統

    車隊運營調度管理系統作為無人駕駛車隊的云端大腦,承擔了打通業務層和無人駕駛車隊的重任。經緯恒潤車隊運營調度管理系統包含業務對接、車輛調度、作業管理引擎、交通調度、一體化監控管理、運營數
    的頭像 發表于 01-09 10:25 ?813次閱讀
    車隊運營<b class='flag-5'>調度</b>管理系統

    電力系統中的電功率調度方法

    電力系統是現代社會的基礎設施,它為工業、商業和居民生活提供必需的電能。電功率調度作為電力系統運行管理的核心,其目的是在滿足電力需求的同時,確保電網的穩定性和經濟性。 1. 電功率調度的基本原理
    的頭像 發表于 12-09 11:02 ?1167次閱讀

    Linux之CPU調度策略和CPU親和性

    一、調度策略 調度進程 單個 CPU一次只能執行一個進程,雖然 Linux 系統通過使用多任務同時處理多個進程,但當多個進程同時運行在一個CPU 上時,它通過交錯執行這些進程。 內核使用進程調
    的頭像 發表于 12-05 16:38 ?1004次閱讀
    <b class='flag-5'>Linux</b>之CPU<b class='flag-5'>調度</b>策略和CPU親和性

    算力調度的基礎知識

    編者按 “算力調度”的概念,這幾年越來越多的被提及。剛聽到這個概念的時候,我腦海里一直拐不過彎。作為底層芯片出身的我,一直認為:算力是硬件的服務和集群,他在某個地方,就是固定的;根本就不存在算力
    的頭像 發表于 11-27 17:13 ?758次閱讀
    算力<b class='flag-5'>調度</b>的基礎知識

    企業微電網調度控制

    企業微電網協調控制:控制儲能設備、分布式能源、可調負荷設備的出力與電力需求,并能根據經濟效益模型在滿足調度的前提下,進行光儲置換,減少棄光。并與云端平臺進行交互,響應云端策略配置。
    的頭像 發表于 11-14 16:32 ?562次閱讀
    企業微電網<b class='flag-5'>調度</b>控制<b class='flag-5'>器</b>

    如何優化Linux服務的性能

    優化Linux服務的性能是一個綜合性的任務,涉及硬件、軟件、配置、監控等多個方面。以下是一個詳細的指南,旨在幫助系統管理員和運維人員提升Linux服務的性能和穩定性。
    的頭像 發表于 09-29 16:50 ?614次閱讀

    Linux服務性能查看方法

    Linux服務性能查看是系統管理員和開發人員在日常工作中經常需要進行的任務,以確保系統穩定運行并優化資源使用。以下將詳細介紹多種Linux服務性能查看的方法,這些方法涵蓋了CPU、
    的頭像 發表于 09-02 11:15 ?1671次閱讀

    Linux調度的核心scheduler_tick介紹

    scheduler_tick在Linux內核中扮演著關鍵角色。它不僅負責處理定時中斷和更新系統時間,還記錄進程的運行時間,并決定是否需要進行任務切換。通過這些功能,scheduler_tick有效保障了系統的時間管理和任務調度
    的頭像 發表于 08-22 14:54 ?745次閱讀

    深入探討Linux的進程調度

    Linux操作系統作為一個開源且廣泛應用的操作系統,其內核設計包含了許多核心功能,而進程調度(Scheduler)就是其中一個至關重要的模塊。進程調度
    的頭像 發表于 08-13 13:36 ?1212次閱讀
    深入探討<b class='flag-5'>Linux</b>的進程<b class='flag-5'>調度</b><b class='flag-5'>器</b>

    基于望獲實時Linux的高性能運動控制適配

    國科環宇依托深厚的技術積累與實戰經驗,成功推出了基于望獲實時Linux的高性能運動控制適配方案。該方案不僅保留了Linux的通用性與兼容性,還通過自研的調度算法、網絡優化技術及先進的
    的頭像 發表于 08-08 13:51 ?508次閱讀
    基于望獲實時<b class='flag-5'>Linux</b>的高性能運動控制<b class='flag-5'>器</b>適配