一種多核處理器調控方法及裝置及使用該方法的移動終端的制作方法
【專利摘要】本發(fā)明提供一種多核處理器的調控方法,獲取當前工作的每個處理器內核的負載值;獲取負載值的最高值和最低值;判斷最低值是否小于預設最低閾值,若是,則判斷最低值與最高值之和是否小于預設最高閾值,若是則對最低值對應的處理器內核進行關閉操作。該方案中,對多核處理器中的處理器內核進行調度時,不是按照現(xiàn)有技術中將序號最大的處理器內核關閉,而是根據(jù)當前的負載情況,當負載最低的處理器內核的負載值低于預設最低閾值,說明該處理器內核的負載已經(jīng)很小,可以考慮進行優(yōu)化操作,通過計算最低負載與最高負載之和是否能夠超過預設最高閾值,可以避免重復開啟和關閉新的處理器內核,造成系統(tǒng)資源浪費的問題,提高了系統(tǒng)資源的利用率。
【專利說明】
一種多核處理器調控方法及裝置及使用該方法的移動終端
技術領域
[0001]本發(fā)明涉及處理器領域,具體涉及一種多核處理器的調控方法及裝置。
【背景技術】
[0002]中央處理器(CPU,Central Processing Unit)是一塊超大規(guī)模的集成電路,是一臺計算機的運算核心(Core)和控制核心(Control Unit),其主要功能是解釋計算機指令以及處理計算機軟件中的數(shù)據(jù)。隨著所需處理的數(shù)據(jù)量日益增加,對處理器的要求也越來越高,多核處理器(多核CPU)應運而生。多核CPU就是基板上集成有多個單核CPU,多核CPU可以同時處理任務,提高了運算處理的速度。
[0003]隨著現(xiàn)有的智能手機的性能越來強大,手機中CPU具有的內核數(shù)量也越來越多,頻率也越來越高,但是使用多個CPU內核會消耗更多的電量,導致手機在保證性能的時候喪失了手機的電池壽命。為了在系統(tǒng)性能和電池壽命之間進行平衡,大多手機都采用CPUhotplug算法(CPU熱插拔算法)來動態(tài)的對系統(tǒng)使用的CPU的內核數(shù)量進行調節(jié),使得在各個場景下的CHJ內核的數(shù)量在合理的范圍之內,既可以保證性能,又可以比較好的兼顧電池的續(xù)航能力。
[0004]現(xiàn)有技術中,手機的CPUhotplug算法通過以下方式實現(xiàn):當系統(tǒng)負載重的時候,該算法會從序號為1、2、3、……N的CPU內核之間按照順序和策略,將若干個CPU內核喚起,進行重任務的處理,保證用戶體驗。當系統(tǒng)負載較輕的時候,系統(tǒng)從序號最大的CPU內核開始進行卸載工作,由于序號最大的CPU內核的處理的任務也可能會比較多,這些處理任務的進程需要迀移到其他CPU內核,這樣會導致進程多次迀移,也使得當前CPU內核使用的緩存丟失而不再可用,需要消耗時間重新獲取進程或者線程,加劇了 CPU的負擔。
【發(fā)明內容】
[0005]因此,本發(fā)明要解決的技術問題在于克服現(xiàn)有技術中的多核處理器進行沒必要的進程迀移導致緩存不可用、占用資源、消耗能源的缺陷。
[0006]本發(fā)明提供一種多核處理器調控方法,包括如下步驟:
[0007]獲取當前工作的每個處理器內核的負載值;
[0008]獲取所述負載值中的最高值和最低值;
[0009]判斷所述最低值是否小于預設最低閾值,若小于預設最低閾值,則判斷所述最低值與所述最高值之和是否小于預設最高閾值,若小于預設最高閾值,則對所述最低值對應的處理器內核進行關閉操作。
[0010]優(yōu)選地,還包括判斷所述最高值是否大于預設最高閾值,若是則判斷所述最低值是否大于預設中間閾值,若是則至少開啟一個未工作的處理器內核。
[0011]優(yōu)選地,所述獲取當前工作的每個處理器內核的負載值的步驟,包括:
[0012]設置一個時間窗;
[0013]對于每個處理器內核,收集其在該時間窗內的工作時間所占的百分比作為處理器內核的負載值。
[0014]優(yōu)選地,對所述最低值對應的處理器內核進行關閉操作的步驟,包括
[0015]將所述處理器內核的負載進行迀移;
[0016]判斷迀移是否完成,若完成則對該處理器內核進行斷電。
[0017]本發(fā)明還提供一種使用所述多核處理器調控方法的移動終端。
[0018]本發(fā)明還提供一種多核處理器調控裝置,包括:
[0019]負載值獲取單元,用于獲取當前工作的每個處理器內核的負載值;
[0020]極值獲取單元,用于獲取所述負載值的最高值和最低值;
[0021]關閉操作單元,用于判斷所述最低值是否小于預設最低閾值,若是,則判斷所述最低值與所述最高值之和是否小于預設最高閾值,若是則對所述最低值對應的處理器內核進行關閉操作。
[0022]優(yōu)選地,還包括開啟單元,用于判斷所述最高值是否大于預設最高閾值,若是則判斷所述最低值是否大于預設中間閾值,若是則至少開啟一個未工作的處理器內核。
[0023]優(yōu)選地,所述負載值獲取單元包括:
[0024]時間窗設置子單元,設置一個時間窗;
[0025]收集子單元,對于每個處理器內核,收集其在該時間窗內的工作時間所占的百分比作為處理器內核的負載值。
[0026]優(yōu)選地,所述關閉操作單元包括:
[0027]迀移子單元,將所述處理器內核的負載進行迀移;
[0028]斷電子單元,判斷迀移是否完成,若完成則對該處理器內核進行斷電。
[0029]本發(fā)明技術方案,具有如下優(yōu)點:
[0030]1.本發(fā)明提供一種多核處理器的調控方法,獲取當前工作的每個處理器內核的負載值;獲取所述負載值的最高值和最低值;判斷所述最低值是否小于預設最低閾值,若是,則判斷所述最低值與所述最高值之和是否小于預設最高閾值,若是則對所述最低值對應的處理器內核進行關閉操作。該方案中,對多核處理器中的處理器內核進行調度時,不是按照現(xiàn)有技術中將序號最大的處理器內核關閉,而是根據(jù)當前的負載情況,當負載最低的處理器內核的負載值低于預設最低閾值,說明該處理器內核的負載已經(jīng)很小,可以考慮進行優(yōu)化操作,通過計算最低負載與最高負載之和是否能夠超過預設最高閾值,可以避免重復開啟和關閉新的處理器內核,造成系統(tǒng)資源浪費的問題,提高了系統(tǒng)資源的利用率。
[0031]2.本發(fā)明提供的多核處理器調控方法,還包括判斷所述最高值是否大于預設最高閾值,若是則判斷所述最低值是否大于預設中間閾值,若是則至少開啟一個未工作的處理器內核。該方案考慮了增加新處理器內核的情況,當最高的負載超過最高閾值且最低的負載也超過一個中間閾值的時候,考慮增加新的處理器內核來提高系統(tǒng)性能,保證了系統(tǒng)的利用率。
【附圖說明】
[0032]為了更清楚地說明本發(fā)明【具體實施方式】或現(xiàn)有技術中的技術方案,下面將對【具體實施方式】或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施方式,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0033]圖1為本發(fā)明實施例1中多核處理器調控方法的一個具體示例的流程圖;
[0034]圖2為本發(fā)明實施例2中多核處理器調控裝置的一個具體示例的結構框圖。
【具體實施方式】
[0035]下面將結合附圖對本發(fā)明的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0036]在本發(fā)明的描述中,需要說明的是,術語“中心”、“上”、“下”、“左”、“右”、“豎直”、“水平”、“內”、“外”等指示的方位或位置關系為基于附圖所示的方位或位置關系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構造和操作,因此不能理解為對本發(fā)明的限制。此外,術語“第一”、“第二”、“第三”僅用于描述目的,而不能理解為指示或暗示相對重要性。
[0037]在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術語“安裝”、“相連”、“連接”應做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,還可以是兩個元件內部的連通,可以是無線連接,也可以是有線連接。對于本領域的普通技術人員而言,可以具體情況理解上述術語在本發(fā)明中的具體含義。
[0038]此外,下面所描述的本發(fā)明不同實施方式中所涉及的技術特征只要彼此之間未構成沖突就可以相互結合。
[0039]實施例1
[0040]本實施例中提供一種多核處理器調控方法,用于具有多核處理器的智能設備的操作系統(tǒng)中,如手機、電腦等設備中,其目的是對多核處理器中的多個處理器內核進行合理的開啟和關閉,在保證系統(tǒng)性能的同時降低能耗。該方法包括如下步驟:
[0041]S1、獲取當前工作的每個處理器內核的負載值。
[0042]該步驟中,在操作系統(tǒng)中設置有CPUfreq governor(動態(tài)調整CPU頻率的模塊)和CPU hotplug(CPU熱插拔模板),CPUfreq governor用于動態(tài)地調整CPU的頻率,CPUhotplug用于控制多個CPU內核的熱插拔。本步驟中可以收集各個CPUfreq governor的loading值,將CPU hotplug和CPUfreq通用一個CPU loading收集算法,避免資源的重復使用,通過該loading值可以得到各個CPU內核的負載值。由于該loading值是根據(jù)采用周期一幀一幀來獲得的,loading值可能存在一定的抖動性,出現(xiàn)短時內的loading值的劇烈變化,為了避免該抖動對多核處理器調控的影響,通過滑窗的方式獲得一個時間長度內的loading值,然后計算其平均值作為每個處理器內核的負載值。
[0043]該獲取當前工作的每個處理器內核的負載值的步驟,包括:
[0044]Sll、設置一個時間窗。
[0045]CPU hotp IUg接收到系統(tǒng)獲得的負載值,為了更好的評估和防止系統(tǒng)性能的抖動性,需要在收集負載過程中進行平滑處理,處理的原則就是滑動平均,即設置一個滑動時間窗口,該時間窗的長度根據(jù)需要來選擇,這個時間窗的大小其實是做出CPU內核(下文也稱為CPU core)的熱插拔動作的間隔,時間窗口對于判斷CPU內核是否需要上電或下電操作是不同的,對于上電操作要快,必須保證用戶體驗,下電動作相對慢些,也可以防止性能的抖動,兩者的時間比例關系不固定,需要多次重復試驗確定最佳時間窗口數(shù)值。判斷CPU是否需要上電時,滑動窗口的推薦數(shù)值為20毫秒,判斷CPU內核是否需要下電時,滑動窗口的推薦數(shù)值為60?100毫秒之間。例如(PU的內核數(shù)量是5個,如果當前CPU內核使用的個數(shù)為3個,則設置兩個時間窗分別為20毫秒和60毫秒,分別用于檢測是否需要增加CPU內核或是否需要關閉CPU內核。
[0046]S12、對于每個處理器內核,收集其在該時間窗內的工作時間所占的百分比作為處理器內核的負載值。
[0047]當收集的負載達到滑動窗口設置的時間窗大小的時候,計算各個CPUloading的值。
[0048]根據(jù)時間窗長度內的工作時間和時間窗長度,來計算負載值m,即m= tbusy/t,其中t為時間窗的長度,tbusy為在該時間窗長度內的工作時間長度。如在20暈秒中,工作了 I O暈秒,10毫秒為空閑,則該處理器內核的負載值為50%。通過上述過程,獲得了每個處理器內核的負載值為m。
[0049]S2、獲取所述負載值的最高值和最低值。
[0050]根據(jù)步驟SI中計算出的每個處理器內核的負載值,將所述負載值升序排列,可以得到負載值的最高值和其對應的處理器內核以及負載值的最低值及其對應的處理器內核。
[0051]在負載較輕時,使用60毫秒的時間窗獲得的負載值,負載值的最低值會觸發(fā)預設的最低閾值,執(zhí)行S3-S4關閉一個或多個CPU內核。在負載較重時,使用20毫秒的時間窗獲得的負載值,負載值的最高值會觸發(fā)預設的最高閾值,執(zhí)行步驟S5,開啟一個或多個CPU內核。
[0052]S3、判斷負載值的所述最低值是否小于預設最低閾值,此處的預設最低閾值可以在10 % -20 %之間選擇,若是,則執(zhí)行S4,若否則繼續(xù)監(jiān)控負載值。
[0053]S4、判斷所述最低值與所述最高值之和是否小于預設最高閾值,最高閾值可以設置為90%及以上,也可以根據(jù)需要對該閾值進行合理調整,若負載值中的所述最低值與所述最高值之和小于預設最高閾值,則對所述最低值對應的處理器內核進行關閉操作,若否則繼續(xù)監(jiān)控負載值。進行關閉操作時,會將待關閉的處理器內核上的任務進行迀移,迀移到其他的處理器內核上,判斷迀移是否完成,若完成則對該處理器內核進行斷電。
[0054]具體的一種方式為:負載較輕的時候,各個CPUloading值進行一個按照從小到大的排序,當最小loading的CPU core觸發(fā)了最低門限,最高的loading的CPU core加上最小loading的數(shù)值沒有觸發(fā)最高門限閥值,那么就可以將其置于plutout狀態(tài),將負載最小的CPU core上的負載迀移后進行斷電操作,通過兩次閾值的計算的目的在于防止CPU core的數(shù)量抖動的太過于頻繁,否則不利于省電。
[0055]該方案中,對多核處理器中的處理器內核進行調度時,不是按照現(xiàn)有技術中將序號最大的處理器內核關閉,而是根據(jù)當前的負載情況,當負載最低的處理器內核的負載值低于預設最低閾值,說明該處理器內核的負載已經(jīng)很小,可以考慮進行優(yōu)化操作,通過計算最低負載與最高負載之和是否能夠超過預設最高閾值,可以避免重復開啟和關閉新的處理器內核,造成系統(tǒng)資源浪費,提高了系統(tǒng)資源的利用率。
[0056]作為進一步的方案,還包括S5、判斷所述負載值的最高值是否大于預設最高閾值,若是則判斷所述最低值是否大于預設中間閾值,預設中間閾值可以根據(jù)需要設置為50%-70%之間的一個數(shù)值,若最低值大于該預設中間閾值,則至少開啟一個未工作的處理器內核。
[0057]具體為:當系統(tǒng)負載較重時,獲取CPUcore的最高的loading數(shù)值和獲取CPUloading最小的數(shù)值,如果CPU loading最高值大于預設的最高閾值,CPU loading最小的數(shù)值大于預設的中間閥值,該預設中間閾值小于預設的最高閾值且大于預設的最低閾值,那么就可以觸發(fā)CPU core的plugin操作,增加CPU core的數(shù)量來提升系統(tǒng)的性能。
[0058]該方案考慮了增加新處理器內核的情況,當最高的負載超過最高閾值且最低的負載也超過一個中間閾值的時候,考慮增加新的處理器內核來提高系統(tǒng)性能,保證了系統(tǒng)的利用率。
[0059]如果不滿足上述觸發(fā)條件,那么系統(tǒng)就會滑入下一個窗口來收集各個工作的CPUcore的loading數(shù)值,進入下一個收集周期。根據(jù)系統(tǒng)負載來決定系統(tǒng)中有多少個工作的CPU Core0
[0060]通過執(zhí)行上述方法,與現(xiàn)有技術相比,就可以很好的保證當系統(tǒng)負載較輕時,如果一個CPU core的進程CPU占用率較高,并且靠后,并不會導致其因為CPU hotplug算法導致進程迀移,也不會導致這個進程在此CPU core上面的cache消失。且該方案保證了系統(tǒng)的性能,降低了能耗。
[0061]本實施例中還提供一種使用上述多核處理器調控方法的移動終端,如手機、ipad、筆記本電腦等。
[0062]實施例2
[0063]本施例提供一種多核處理器調控裝置,包括:
[0064]負載值獲取單元01,用于獲取當前工作的每個處理器內核的負載值;
[0065]極值獲取單元02,用于獲取所述負載值的最高值和最低值;
[0066]關閉操作單元03,用于判斷所述最低值是否小于預設最低閾值,若是,則判斷所述最低值與所述最高值之和是否小于預設最高閾值,若是則對所述最低值對應的處理器內核進行關閉操作。
[0067]作為優(yōu)化的方案,還包括開啟單元04,用于判斷所述最高值是否大于預設最高閾值,若是則判斷所述最低值是否大于預設中間閾值,若是則至少開啟一個未工作的處理器內核。
[0068]其中,所述負載值獲取單元01包括:
[0069 ]時間窗設置子單元,設置一個時間窗;
[0070]收集子單元,對于每個處理器內核,收集其在該時間窗內的工作時間所占的百分比作為處理器內核的負載值。
[0071]其中,所述關閉操作單元03包括:
[0072]迀移子單元,將所述處理器內核的負載進行迀移;
[0073]斷電子單元,判斷迀移是否完成,若完成則對該處理器內核進行斷電。
[0074]本實施例中的裝置可以避免重復開啟和關閉新的處理器內核,造成系統(tǒng)資源浪費的問題,提高了系統(tǒng)資源的利用率。
[0075]本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0076]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0077]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0078]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0079]顯然,上述實施例僅僅是為清楚地說明所作的舉例,而并非對實施方式的限定。對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動仍處于本發(fā)明創(chuàng)造的保護范圍之中。
【主權項】
1.一種多核處理器調控方法,其特征在于,包括如下步驟: 獲取當前工作的每個處理器內核的負載值; 獲取所述負載值中的最高值和最低值; 判斷所述最低值是否小于預設最低閾值,若小于預設最低閾值,則判斷所述最低值與所述最高值之和是否小于預設最高閾值,若小于預設最高閾值,則對所述最低值對應的處理器內核進行關閉操作。2.根據(jù)權利要求1所述的方法,其特征在于,還包括判斷所述最高值是否大于預設最高閾值,若是則判斷所述最低值是否大于預設中間閾值,若是則至少開啟一個未工作的處理器內核。3.根據(jù)權利要求1或2所述的方法,其特征在于,所述獲取當前工作的每個處理器內核的負載值的步驟,包括: 設置一個時間窗; 對于每個處理器內核,收集其在該時間窗內的工作時間所占的百分比作為處理器內核的負載值。4.根據(jù)權利要求1或2所述的方法,其特征在于,對所述最低值對應的處理器內核進行關閉操作的步驟,包括 將所述處理器內核的負載進行迀移; 判斷迀移是否完成,若完成則對該處理器內核進行斷電。5.—種使用權利要求1-4任一所述的方法的移動終端。6.一種多核處理器調控裝置,其特征在于,包括: 負載值獲取單元,用于獲取當前工作的每個處理器內核的負載值; 極值獲取單元,用于獲取所述負載值的最高值和最低值; 關閉操作單元,用于判斷所述最低值是否小于預設最低閾值,若是,則判斷所述最低值與所述最高值之和是否小于預設最高閾值,若是則對所述最低值對應的處理器內核進行關閉操作。7.根據(jù)權利要求6所述的裝置,其特征在于,還包括開啟單元,用于判斷所述最高值是否大于預設最高閾值,若是則判斷所述最低值是否大于預設中間閾值,若是則至少開啟一個未工作的處理器內核。8.根據(jù)權利要求6或7所述的裝置,其特征在于,所述負載值獲取單元包括: 時間窗設置子單兀,設置一個時間窗; 收集子單元,對于每個處理器內核,收集其在該時間窗內的工作時間所占的百分比作為處理器內核的負載值。9.根據(jù)權利要求6或7所述的裝置,其特征在于,所述關閉操作單元包括: 迀移子單元,將所述處理器內核的負載進行迀移; 斷電子單元,判斷迀移是否完成,若完成則對該處理器內核進行斷電。
【文檔編號】G06F9/50GK105893141SQ201510957666
【公開日】2016年8月24日
【申請日】2015年12月17日
【發(fā)明人】謝國鋒
【申請人】樂視致新電子科技(天津)有限公司