在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > Linux2.6內(nèi)核中最新電源管理技術(shù)分析及未來發(fā)展

            Linux2.6內(nèi)核中最新電源管理技術(shù)分析及未來發(fā)展

            作者: 時(shí)間:2016-12-07 來源:網(wǎng)絡(luò) 收藏

            們時(shí) CPU 的運(yùn)行頻率不會根據(jù)系統(tǒng)運(yùn)行時(shí)負(fù)載的變化動態(tài)作出調(diào)整。這兩種 governors 對應(yīng)的是兩種極端的應(yīng)用場景,使用 performance governor 體現(xiàn)的是對系統(tǒng)高性能的最大追求,而使用 powersave governor 則是對系統(tǒng)低功耗的最大追求。雖然這兩種應(yīng)用需求確實(shí)存在,但大多數(shù)用戶在大部分時(shí)間里需要的是更加靈活的變頻策略。最早的 cpufreq 子系統(tǒng)通過 userspace governor 為用戶提供了這種靈活性。正如它的名字一樣,使用 userspace governor 時(shí),系統(tǒng)將變頻策略的決策權(quán)交給了用戶態(tài)應(yīng)用程序,并提供了相應(yīng)的接口供用戶態(tài)應(yīng)用程序調(diào)節(jié) CPU 運(yùn)行頻率使用。通過使用 cpufrequtils 工具包中的 cpufreq-set 將 userspace 設(shè)置為 cpufreq 子系統(tǒng)所使用的 governor 后,我們可以看到與之前相比在 /sys/devices/system/cpu/cpuX/cpufreq/ 目錄下多出了一個(gè)名為 scaling_setspeed 的文件,這正是 userspace governor 所提供的特殊用戶接口。用戶可以通過向該文件寫入任何一個(gè) scaling_available_frequencies 中所支持的運(yùn)行頻率,從而將 CPU 設(shè)置在該頻率下運(yùn)行。

            本文引用地址:http://www.biyoush.com/article/201612/327367.htm

              # cpufreq-set -g userspace

              # cat cpuinfo_cur_freq

              1000000

              # cat scaling_available_frequencies

              1667000 1333000 1000000

              # echo 1333000 》scaling_setspeed

              # cat cpuinfo_cur_freq

              1333000

              剛剛提到在使用 userspace governor 時(shí),系統(tǒng)將變頻策略的決策權(quán)交給了用戶態(tài)應(yīng)用程序。該用戶態(tài)應(yīng)用程序一般是一個(gè) daemon 程序,每隔一定的時(shí)間間隔收集一次系統(tǒng)信息并根據(jù)系統(tǒng)的負(fù)載情況使用 userspace governor 提供的 scaling_setspeed 接口動態(tài)調(diào)整 CPU 的運(yùn)行頻率。作為這個(gè)daemon 程序,當(dāng)時(shí)在幾個(gè)主要的 Linux 發(fā)行版中使用的一般是 powersaved 或者 cpuspeed。這兩個(gè) daemon 程序一般每隔幾秒鐘統(tǒng)計(jì)一次 CPU 在這個(gè)采樣周期內(nèi)的負(fù)載情況,并根據(jù)統(tǒng)計(jì)結(jié)果調(diào)整 CPU 的運(yùn)行頻率。這種 userspace governor 加用戶態(tài) daemon 程序的變頻方法雖然為用戶提供了一定的靈活性,但通過開源社區(qū)的廣泛使用所得到的意見反饋逐漸暴露了這種方法的兩個(gè)嚴(yán)重缺陷。第一個(gè)是性能方面的問題。例如powersaved 每隔五秒鐘進(jìn)行一次系統(tǒng)負(fù)載情況的采樣分析的話,我們可以分析一下在下面給出的應(yīng)用場景中的用戶體驗(yàn)。假設(shè) powersaved 的采樣分析剛剛結(jié)束,而且由于在剛剛結(jié)束的采樣周期內(nèi)系統(tǒng)負(fù)載很低,CPU 被設(shè)置在最低頻率上運(yùn)行。這時(shí)用戶如果打開 Firefox? 等對 CPU 運(yùn)算能力要求相當(dāng)高的程序的話,powersaved 要在下一個(gè)采樣點(diǎn)——大約五秒鐘之后才有機(jī)會觀察到這種提高 CPU 運(yùn)行頻率的需求。也就是說,在Firefox 啟動之初的五秒鐘內(nèi) CPU 的計(jì)算能力并沒有被充分發(fā)揮出來,這無疑會使用戶體驗(yàn)大打折扣。第二個(gè)是系統(tǒng)負(fù)載情況的采樣分析的準(zhǔn)確性問題。將監(jiān)控系統(tǒng)負(fù)載情況并對未來 CPU 的性能需求做出判斷的任務(wù)交給一個(gè)用戶態(tài)程序完成實(shí)際上并不合理,一方面是由于一個(gè)用戶態(tài)程序很難完整的收集到所有需要的信息,因?yàn)檫@些信息大部分都保存在內(nèi)核空間;另一方面一個(gè)用戶態(tài)程序如果想要收集這些系統(tǒng)信息,必然需要進(jìn)行用戶態(tài)與內(nèi)核態(tài)之間的數(shù)據(jù)交互,而頻繁的用戶態(tài)與內(nèi)核態(tài)之間的數(shù)據(jù)交互又會給系統(tǒng)性能帶來負(fù)面影響。

              那么這兩個(gè)問題有沒有解決的方法呢?應(yīng)該講社區(qū)中的開發(fā)人員就第二個(gè)問題比較容易達(dá)成一致,既然在用戶態(tài)對系統(tǒng)的負(fù)載情況進(jìn)行采集和分析存在這樣那樣的問題,那么更加合理的做法就是應(yīng)該將這部分工作交由內(nèi)核負(fù)責(zé)。但是第一個(gè)問題呢?第一個(gè)問題最直觀的解決方案就是降低對系統(tǒng)負(fù)載進(jìn)行采樣分析的時(shí)間間隔,這樣 powersaved 就能盡早的對系統(tǒng)負(fù)載的變化做出及時(shí)的響應(yīng)。然而這種簡單的降低采樣分析的時(shí)間間隔的方案同樣存在著兩方面的問題,一方面這意味著更加頻繁的用戶態(tài)與內(nèi)核態(tài)之間的數(shù)據(jù)交互,因此必然也就意味著對系統(tǒng)性能帶來更大的負(fù)面影響;另一方面的主要原因在于當(dāng)時(shí)各個(gè) CPU 生產(chǎn)廠家的變頻技術(shù)在硬件上仍不完善,具體體現(xiàn)就是在對 CPU 進(jìn)行變頻設(shè)置時(shí)所需的操作時(shí)間過長,例如 Intel 早期的 Speedstep 技術(shù)在對 CPU 進(jìn)行變頻設(shè)置時(shí)需要耗時(shí) 250 微秒,在此過程中 CPU 無法正常執(zhí)行指令。讀者如果簡單的計(jì)算一下不難發(fā)現(xiàn),即使對于一個(gè)主頻為 1GHz 的 CPU 而言, 250 微秒也意味著 250,000 個(gè)時(shí)鐘周期,在這期間 CPU 完全可以執(zhí)行完上萬條指令。因此從這個(gè)角度而言,簡單的降低采樣分析的時(shí)間間隔對系統(tǒng)性能帶來的負(fù)面影響更加嚴(yán)重。幸運(yùn)的是隨著硬件技術(shù)的不斷完善和改進(jìn),對 CPU 進(jìn)行變頻設(shè)置所需的操作時(shí)間已經(jīng)顯著降低,例如 Intel 最新的 Enhanced Speedstep 技術(shù)在對 CPU 進(jìn)行變頻設(shè)置時(shí)耗時(shí)已降至 10 微秒,下降了不止一個(gè)數(shù)量級。正是這種 CPU 硬件技術(shù)的發(fā)展為內(nèi)核開發(fā)人員解決這些早期的遺留問題提供了契機(jī),Venkatesh 等人提出并設(shè)計(jì)實(shí)現(xiàn)了一個(gè)新的名為 ondemand 的 governor ,它正是人們長期以來希望看到的一個(gè)完全在內(nèi)核態(tài)下工作并且能夠以更加細(xì)粒度的時(shí)間間隔對系統(tǒng)負(fù)載情況進(jìn)行采樣分析的 governor。在介紹 ondemand governor 的具體實(shí)現(xiàn)之前,我們先來看一下如何使用 ondemand governor 及其向用戶提供了哪些操作接口。通過 cpufreq-set 將 ondemand 設(shè)置為當(dāng)前所使用的 governor 之后,在 /sys/devices/system/cpu/cpuX/cpufreq 目錄下會出現(xiàn)一個(gè)名為 ondemand 的子目錄

              $ sudo cpufreq-set -g ondemand

              $ ls /sys/devices/system/cpu/cpu0/cpufreq/ondemand/

              ignore_nice_load

              powersave_bias

              sampling_rate

              sampling_rate_max

              sampling_rate_min

              up_threshold

              $ sudo cat sampling_rate_min sampling_rate

              sampling_rate_max

              40000

              80000

              40000000

              $ sudo cat up_threshold

              30

              在這個(gè)子目錄下名字以 sampling 打頭的三個(gè)文件分別給出了ondemand governor 允許使用的最短采樣間隔,當(dāng)前使用的采樣間隔以及允許使用的最長采樣間隔,三者均以微秒為單位。

              以筆者的電腦為例, ondemand governor 每隔 80 毫秒進(jìn)行一次采樣。另外比較重要的一個(gè)文件是 up_threshold ,它表明了系統(tǒng)負(fù)載超過什么百分比時(shí)ondemand governor 會自動提高CPU 的運(yùn)行頻率。以筆者的電腦為例,這個(gè)數(shù)值為 30% 。那么這個(gè)表明系統(tǒng)負(fù)載的百分比數(shù)值是如何得到的呢?在支持Intel 最新的 Enhanced Speedstep 技術(shù)的 CPU 中,在處理器硬件中直接提供了兩個(gè) MSR 寄存器(Model Specific Register)供 ondemand governor 采樣分析系統(tǒng)負(fù)載情況使用。這兩個(gè) MSR 寄存器的 名字分別為 IA32_MPERF 和 IA32_APERF[5] ,其中 IA32_MPERF MSR 中的 MPERF 代表Maximum Performance , IA32_APERF MSR 中的 APERF 代表Actual Performance 。就像這兩個(gè) MSR 的名字一樣, IA32_MPERF MSR 寄存器是一個(gè)當(dāng) CPU 處在 ACPI C0 狀態(tài)下時(shí)按照 CPU 硬件支持的最高運(yùn)行頻率每隔一個(gè)時(shí)鐘周期加一的計(jì)數(shù)器;IA32_APERF MSR 寄存器是一個(gè)當(dāng) CPU 處在 ACPI C0 狀態(tài)下時(shí)按照 CPU 硬件當(dāng)前的實(shí)際運(yùn)行頻率每隔一個(gè)時(shí)鐘周期加一的計(jì)數(shù)器。有了這兩個(gè)寄存器的存在,再考慮上 CPU 處于ACPI C0 和處于 ACPI C1、C2、C3 三種狀態(tài)下的時(shí)間比例,也就是 CPU 處于工作狀態(tài)和休眠狀態(tài)的時(shí)間比例, ondemand governor 就可以準(zhǔn)確的計(jì)算出 CPU 的負(fù)載情況了。

              得到了 CPU 的負(fù)載情況,接下來的問題就是如何選擇 CPU 合適的運(yùn)行頻率了。剛剛在前面提到,當(dāng)系統(tǒng)負(fù)載超過up_threshold 所設(shè)定的百分比時(shí), ondemand governor 將會自動提高 CPU 的運(yùn)行頻率,但是具體提高到哪個(gè)頻率上運(yùn)行呢?在 ondemand governor 監(jiān)測到系統(tǒng)負(fù)載超過 up_threshold所設(shè)定的百分比時(shí),說明用戶當(dāng)前需要 CPU 提供更強(qiáng)大的處理能力,因此 ondemand governor 會將CPU設(shè)置在最高頻率上運(yùn)行,這一點(diǎn)社區(qū)中的開發(fā)人員和廣大用戶都沒有任何異議。但是當(dāng) ondemand governor 監(jiān)測到系統(tǒng)負(fù)載下降,可以降低 CPU 的運(yùn)行頻率時(shí),到底應(yīng)該降低到哪個(gè)頻率呢? ondemand governor 的最初實(shí)現(xiàn)是在可選的頻率范圍內(nèi)調(diào)低至下一個(gè)可用頻率,例如筆者使用的 CPU 支持三個(gè)可選頻率,分別為 1.67GHz、 1.33GHz 和 1GHz ,如果 CPU 運(yùn)行在 1.67GHz 時(shí)ondemand governor 發(fā)現(xiàn)可以降低運(yùn)行頻率,那么 1.33GHz 將被選作降頻的目標(biāo)頻率。這種降頻策略的主導(dǎo)思想是盡量減小對系統(tǒng)性能的負(fù)面影響,從而不會使得系統(tǒng)性能在短時(shí)間內(nèi)迅速降低以影響用戶體驗(yàn)。但是在 ondemand governor 的這種最初實(shí)現(xiàn)版本在社區(qū)發(fā)布后,大量用戶的使用結(jié)果表明這種擔(dān)心實(shí)際上是多余的, ondemand governor 在降頻時(shí)對于目標(biāo)頻率的選擇完全可以更加激進(jìn)。因此最新的 ondemand governor 在降頻時(shí)會在所有可選頻率中一次性選擇出可以保證 CPU 工作在 80% 以上負(fù)荷的頻率,當(dāng)然如果沒有任何一個(gè)可選頻率滿足要求的話則會選擇 CPU 支持的最低運(yùn)行頻率。大量用戶的測試結(jié)果表明這種新的算法可以在不影響系統(tǒng)性能的前提下做到更高效的節(jié)能。在算法改進(jìn)后, ondemand governor 的名字并沒有改變,而 ondemand governor 最初的實(shí)現(xiàn)也保存了下來,并且由于其算法的保守性而得名conservative 。

            支持 Intel Enhanced Speedstep 技術(shù)的 CPU 驅(qū)動程序的實(shí)現(xiàn)前文在討論cpufreq 的軟件結(jié)構(gòu)時(shí)已經(jīng)指出, cpufreq 從設(shè)計(jì)上將 CPU 變頻的 policy 與mechanism 分離開來



            關(guān)鍵詞: 電源管理技術(shù)Linux2.

            評論


            技術(shù)專區(qū)

            關(guān)閉