線程調(diào)度方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種線程調(diào)度方法和系統(tǒng),該線程調(diào)度方法包括以下步驟:獲取線程的狀態(tài)信息,其中,狀態(tài)信息包括線程的類型;當(dāng)線程為預(yù)定類型線程,且預(yù)定類型線程至少滿足下列預(yù)定條件之一時:運行有預(yù)定類型線程的處理器需要進行線程遷出;需要為被喚醒的預(yù)定類型線程確定執(zhí)行被喚醒的預(yù)定類型線程的處理器;至少執(zhí)行下列預(yù)定操作之一:將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器;將被喚醒的預(yù)定類型線程遷移至無運算資源競爭的處理器。上述的線程調(diào)度方法和系統(tǒng),能夠針對預(yù)定類型線程采取相應(yīng)的調(diào)度方法,滿足預(yù)定類型線程的效能需求,提高了線程的執(zhí)行效率和處理器的利用率。
【專利說明】
線程調(diào)度方法和系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及處理器技術(shù)領(lǐng)域,特別涉及一種線程調(diào)度方法和系統(tǒng)?!颈尘凹夹g(shù)】
[0002]在一些領(lǐng)域中,例如移動智能通信終端領(lǐng)域,線程調(diào)度對所有的進程/線程都采用相同的調(diào)度策略。例如,當(dāng)線程被醒時,通常會選擇線程睡眠前執(zhí)行該線程的運算資源(處理器)或者從開啟狀態(tài)的運算資源中選擇閑置或者占用率低的運算資源來執(zhí)行被喚醒的線程。另外,當(dāng)一個運算資源由于多個線程運行而負(fù)載過重時,線程調(diào)度器將嘗試把其中一個或者多個線程迀移到其他運算資源以達到負(fù)載平衡。
[0003]上述的線程調(diào)度方案在線程被喚醒或者迀移線程時,僅使用簡單的優(yōu)先權(quán)無差別地對待所有的線程,使得線程執(zhí)行效率低、處理器利用率低。
【發(fā)明內(nèi)容】
[0004]基于此,有必要針對上述技術(shù)問題,提供一種線程調(diào)度方法和系統(tǒng),其能夠提高線程的執(zhí)行效率和處理器的利用率。
[0005]—種線程調(diào)度方法,包括以下步驟:
[0006]獲取線程的狀態(tài)信息,其中,所述狀態(tài)信息包括線程的類型;
[0007]當(dāng)所述線程為預(yù)定類型線程,且所述預(yù)定類型線程至少滿足下列預(yù)定條件之一時:運行有預(yù)定類型線程的處理器需要進行線程迀出;
[0008]需要為被喚醒的預(yù)定類型線程確定執(zhí)行所述被喚醒的預(yù)定類型線程的處理器; [〇〇〇9]至少執(zhí)行下列預(yù)定操作之一:
[0010]將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器;
[0011]將被喚醒的預(yù)定類型線程迀移至無運算資源競爭的處理器。
[0012]在其中一個實施例中,所述將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器的步驟包括:
[0013]獲取所述正在運行的預(yù)定類型線程的優(yōu)先權(quán)信息;
[0014]判斷是否存在閑置的處理器;
[0015]如果是,則將所述優(yōu)先權(quán)最高的預(yù)定類型線程迀移至所述閑置的處理器;
[0016]如果否,則將優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類型線程迀移至無所述預(yù)定類型線程競爭的處理器。
[0017]在其中一個實施例中,所述將被喚醒的預(yù)定類型線程迀移至無資源競爭的處理器的步驟包括:
[0018]獲取所述處理器的負(fù)載信息;
[0019]判斷是否存在無運算資源競爭的處理器;
[0020]如果是,則將所述被喚醒的預(yù)定類型線程迀移至所述無運算資源競爭的處理器;
[0021]如果否,則將所述被喚醒的預(yù)定類型線程調(diào)度至所述被喚醒的預(yù)定類型線程睡眠前的處理器。
[0022]在其中一個實施例中,還包括:當(dāng)對所述預(yù)定類型線程進行調(diào)度時,實時地對運行所述預(yù)定類型線程的處理器進行動態(tài)電壓頻率調(diào)整。[〇〇23]在其中一個實施例中,還包括:當(dāng)所述線程為非預(yù)定類型線程時,則基于處理器上線程均衡的原則,對所述非預(yù)定類型線程進行調(diào)度。[〇〇24] 一種線程調(diào)度系統(tǒng),包括:
[0025]信息獲取模塊,用于獲取線程的狀態(tài)信息,其中,所述狀態(tài)信息包括線程的類型;
[0026]線程調(diào)度模塊,用于當(dāng)所述線程為預(yù)定類型線程時,且所述預(yù)定類型線程至少滿足下列預(yù)定條件之一時:運行有預(yù)定類型線程的處理器需要進行線程迀出;需要為被喚醒的預(yù)定類型線程確定執(zhí)行所述被喚醒的預(yù)定類型線程的處理器;[〇〇27]至少執(zhí)行下列預(yù)定操作之一:將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器;將被喚醒的預(yù)定類型線程迀移至無資源競爭的處理器。
[0028]在其中一個實施例中,所述線程調(diào)度模塊還用于:獲取所述正在運行的預(yù)定類型線程的優(yōu)先權(quán)信息;判斷是否存在閑置的處理器;當(dāng)存在閑置的處理器時,將所述優(yōu)先權(quán)最高的預(yù)定類型線程迀移至所述閑置的處理器;當(dāng)不存在閑置處理器時,將優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類型線程迀移至無所述預(yù)定類型線程競爭的處理器。[〇〇29]在其中一個實施例中,所述線程調(diào)度模塊還用于:獲取所述處理器的負(fù)載信息;判斷是否存在無運算資源競爭的處理器;當(dāng)存在無運算資源競爭的處理器時,則將所述被喚醒的預(yù)定類型線程迀移至所述無運算資源競爭的處理器;當(dāng)不存在無運算資源競爭的處理器時,則將所述被喚醒的預(yù)定類型線程調(diào)度至所述被喚醒的預(yù)定類型線程睡眠前的處理器。
[0030]在其中一個實施例中,還包括:電壓頻率調(diào)整模塊,用于當(dāng)對所述預(yù)定類型線程進行調(diào)度時,實時地對運行所述預(yù)定類型線程的處理器進行動態(tài)電壓頻率調(diào)整。
[0031]在其中一個實施例中,所述線程調(diào)度模塊還用于:當(dāng)所述線程為非預(yù)定類型線程時,則基于處理器上線程均衡的原則,對所述非預(yù)定類型線程進行調(diào)度。[〇〇32] 上述的線程調(diào)度方法和系統(tǒng),通過監(jiān)測處理器上線程的狀態(tài)信息,當(dāng)線程為預(yù)定類型線程,且預(yù)定類型線程滿足預(yù)定條件時,則根據(jù)預(yù)定類型線程的狀態(tài)信息,基于效能最大化和資源競爭最小化的原則對預(yù)定類型線程進行調(diào)度,即將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器;或者將被喚醒的預(yù)定類型線程迀移至無運算資源競爭的處理器。上述的線程調(diào)度方法和系統(tǒng)能夠針對預(yù)定類型線程采取相應(yīng)的調(diào)度方法,能最大限度地滿足預(yù)定類型線程的效能需求,提高了預(yù)定類型線程的執(zhí)行效率和處理器的利用率。【附圖說明】
[0033]圖1為一個實施例的線程調(diào)度方法的流程圖;
[0034]圖2為一個實施例的對預(yù)定類型線程進行調(diào)度的流程圖;[〇〇35]圖3a為一個實施例的正在運行的線程的狀態(tài)示意圖;[〇〇36]圖3b為圖3a的線程的迀移的狀態(tài)示意圖;
[0037]圖4a為另一個實施例的運行的線程的狀態(tài)示意圖;[〇〇38]圖4b為圖4a的線程的迀移的狀態(tài)示意圖;
[0039]圖5為一個實施例的對被喚醒的預(yù)定類型線程進行調(diào)度的流程圖;
[0040]圖6a為一個實施例的喚醒的線程狀態(tài)示意圖;[〇〇411圖6b為圖6a的線程迀移的狀態(tài)示意圖;
[0042]圖7為一個實施例的線程調(diào)度系統(tǒng)的結(jié)構(gòu)框圖;
[0043]圖8為另一個實施例的線程調(diào)度系統(tǒng)的結(jié)構(gòu)框圖。【具體實施方式】
[0044]在一個實施例中,如圖1所示,提出了一種線程調(diào)度方法。該方法包括以下步驟:
[0045]步驟102,獲取線程的狀態(tài)信息,其中,所述狀態(tài)信息包括線程的類型。[〇〇46]線程調(diào)度器可實時監(jiān)測處理器上的線程的狀態(tài)信息。在本實施例中處理器的數(shù)目可為多個。處理器可以為中央處理器(Central Processing Unit,CPU),圖形處理器 (Graphics Processing Unit,GF*U),視頻處理單元(Video Processing Unit,VPU)等中的至少一種。線程的數(shù)目可以為一個或多個。處理器上線程的狀態(tài)信息包括線程的類型、效能、數(shù)目以及線程的狀態(tài)。效能是指線程執(zhí)行某項任務(wù)所用時間的倒數(shù),時間越短表示線程的效能越好。線程的狀態(tài)包括運行狀態(tài)、阻塞狀態(tài)。其中,阻塞狀態(tài)包括睡眠狀態(tài),線程由睡眠狀態(tài)被喚醒后可進入運行狀態(tài)。
[0047]在一個實施例中,線程的類型可以根據(jù)線程執(zhí)行的任務(wù)/功能屬性進行劃分。例如這些任務(wù)/功能可以為屏幕觸控反饋、屏幕更新頻率等影響用戶體驗的任務(wù)/功能,這些任務(wù)/功能的執(zhí)行情況會被用戶直接感知,例如,屏幕觸控反饋有延遲,則用戶在進行了觸摸操作之后,觸摸屏的不能立即響應(yīng),從而使得用戶體驗不好。[〇〇48]步驟104,當(dāng)線程為預(yù)定類型線程,且預(yù)定類型線程至少滿足下列預(yù)定條件之一時:運行有預(yù)定類型線程的處理器需要進行線程迀出;需要為被喚醒的預(yù)定類型線程確定執(zhí)行該喚醒的預(yù)定類型線程的處理器。至少執(zhí)行下列的預(yù)定操作之一。
[0049]在本實施例中,預(yù)定類型線程為執(zhí)行預(yù)定任務(wù)/功能的線程,這些預(yù)定任務(wù)/功能為對用戶體驗影響明顯的任務(wù)/功能,例如,屏幕觸控反饋速度、屏幕畫面更新頻率等。
[0050] 在很多情況下,需要進行線程迀出,例如,如果某個處理器(源處理器)的負(fù)載過高或者溫度過高,則可以將該處理器上的一個或多個線程迀移到其他處理器(目標(biāo)處理器), 即被迀移出去的線程不再由源處理器執(zhí)行,而是由目標(biāo)處理器執(zhí)行。
[0051]當(dāng)處理器上的線程為預(yù)定類型線程時,則根據(jù)所述預(yù)定類型線程的狀態(tài)信息,基于效能最大化和資源競爭最小化的原則對預(yù)定類型線程進行調(diào)度。
[0052]當(dāng)線程為預(yù)定類型線程且滿足上述實施例的預(yù)定條件之一時,線程調(diào)度器則以滿足預(yù)定類型線程效能和降低預(yù)定類型線程的資源競爭為原則,執(zhí)行至少下列預(yù)定操作之一。效能為預(yù)定類型線程完成任務(wù)/功能所花費時間的倒數(shù),時間越短,則預(yù)定類型線程的效能越好。[〇〇53]所述的預(yù)定操作包括:[〇〇54] (1)將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器。
[0055]正在運行的預(yù)定類型線程的數(shù)目可能為一個或者多個,當(dāng)這些預(yù)定類型線程滿足上述實施例中描述的條件時,則將正在運行的優(yōu)先級最高的預(yù)定類型線程調(diào)度至效能最高的處理器,以保證預(yù)定類型線程的執(zhí)行。在本實施例中,效能最高的處理器包括:閑置的處理器和無運算資源競爭的處理器。
[0056] (2)將被喚醒的預(yù)定類型線程迀移至無運算資源競爭的處理器。[〇〇57]在本實施例中,運算資源競爭是指多個線程被同一處理器執(zhí)行時,線程間競爭共享資源。無運算資源競爭的處理器包括無預(yù)定類型線程競爭的處理器。[〇〇58] 上述的線程調(diào)度方法,通過監(jiān)測處理器上線程的狀態(tài)信息,當(dāng)線程為預(yù)定類型線程,且預(yù)定類型線程滿足預(yù)定條件時,則根據(jù)預(yù)定類型線程的狀態(tài)信息,基于效能最大化和資源競爭最小化的原則對預(yù)定類型線程進行調(diào)度,即將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器;或者將被喚醒的預(yù)定類型線程迀移至無運算資源競爭的處理器。上述的線程調(diào)度方法能夠針對預(yù)定類型線程采取相應(yīng)的調(diào)度方法,能最大限度地滿足預(yù)定類型線程的效能需求,提高了預(yù)定類型線程的執(zhí)行效率和處理器的利用率。[〇〇59]在一個實施例中,如圖2所示,將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器的步驟包括:
[0060]步驟202,獲取正在運行的預(yù)定類型線程的優(yōu)先權(quán)信息。[0061 ]當(dāng)處理器上運行的預(yù)定線程的數(shù)目為多個時,需要獲取預(yù)定類型線程的優(yōu)先權(quán)信息,從而線程調(diào)度器可以根據(jù)預(yù)定類型線程的優(yōu)先權(quán)信息對預(yù)定類型線程進行調(diào)度。[〇〇62] 步驟204,判斷是否存在閑置的處理器,如果是,則執(zhí)行步驟206,反之則執(zhí)行步驟 208 〇[〇〇63]在本實施例中,判斷是否有閑置的處理器,如果有則基于預(yù)定類型線程效能最大化的原則,將預(yù)定類型線程迀移至閑置的處理器,以保證預(yù)定類型線程的效能需求。[〇〇64] 步驟206,將優(yōu)先權(quán)最高的預(yù)定類型線程迀移至閑置的處理器。[〇〇65]當(dāng)存在閑置的處理器時,由于運行的預(yù)定類型線程的數(shù)目可能為一個或者多個, 因此根據(jù)預(yù)定類型線程的優(yōu)先權(quán)對至少一個預(yù)定類型線程進行調(diào)度,從而對處于運行狀態(tài)的預(yù)定類型線程進行迀移以滿足預(yù)定類型線程的效能并減少預(yù)定類型線程間的資源競爭。 [〇〇66]當(dāng)正在執(zhí)行的預(yù)定類型線程的數(shù)目為一個時,則將該正在執(zhí)行的預(yù)定類型線程迀移至閑置的處理器。如圖3a所示,處理器1(CPU0)上執(zhí)行的有A、B、C三個線程,其中A為預(yù)定類型線程,處理器2(CPU1)處于閑置狀態(tài),則將線程迀移至CPU1,以減少CPU0上的資源競爭, 如圖3b所示。同時對CPU1進行動態(tài)電壓頻率調(diào)整,使得CPU1的效能滿足預(yù)定類型線程A的效能需求。
[0067]當(dāng)處于運行狀態(tài)的預(yù)定類型線程的數(shù)目為多個時,則計算各個處于運行狀態(tài)的預(yù)定類型線程的優(yōu)先權(quán)信息,將優(yōu)先權(quán)級別最高的預(yù)定類型線程迀移至閑置的處理器。[〇〇68] 進一步地,當(dāng)前處理器上正在運行的預(yù)定類型線程的數(shù)目超過可用處理器的數(shù)目時,則將多個預(yù)定類型線程在各處理器上均衡分配。[〇〇69]步驟208,將優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類型線程迀移至無預(yù)定類型線程競爭的處理器。
[0070]當(dāng)不存在閑置的處理器時,則計算正在運行的預(yù)定類型線程的優(yōu)先權(quán)和其他處理器的資源競爭狀況,將優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類型線程迀移至無預(yù)定類型線程競爭的處理器。
[0071]在一個實施例中,當(dāng)正在運行的預(yù)定類型線程的數(shù)目為一個時,則將該正在運行的預(yù)定類型線程保留在當(dāng)前處理器。當(dāng)正在運行的預(yù)定類型線程的數(shù)目為多個時,將優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類型線程迀移至無預(yù)定類型線程競爭的處理器。
[0072]例如,假設(shè)多個運行的預(yù)定類型線程的優(yōu)先權(quán)分別為1、2、3、4…,其中1表示優(yōu)先權(quán)最高,2次之,依次類推。在示例中,將優(yōu)先權(quán)為1的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)為2的預(yù)定類型線程迀移至無預(yù)定類型線程競爭的處理器。[〇〇73] 進一步地,當(dāng)優(yōu)先權(quán)為2的預(yù)定類型線程迀移至無預(yù)定類型線程競爭的處理器后, 當(dāng)前處理器的資源競爭仍然較大時,則繼續(xù)迀移優(yōu)先權(quán)為3的預(yù)定類型線程迀移至無預(yù)定類型線程競爭的處理器,依次類推。[〇〇74]例如圖4a所示,線程A、C為預(yù)定類型線程,且預(yù)定類型線程C的優(yōu)先權(quán)高于預(yù)定類型線程A,且處理器CPU3運行的線程D為非預(yù)定類型線程。因此,將預(yù)定類型線程A迀移至效能最尚的處理器CPU3,如圖4b所不。[〇〇75]上述的對正在運行的預(yù)定類型線程的調(diào)度,能夠滿足預(yù)定類型線程的效能需求, 同時提高了線程的執(zhí)行效率和處理器的利用率。[〇〇76]在一個實施例中,如圖5所示,將被喚醒的預(yù)定類型線程迀移至無資源競爭的處理器的步驟包括:[〇〇77]步驟502,獲取處理器的負(fù)載信息。[〇〇78]獲取至少一個處理器上的運行的負(fù)載信息。在本實施例中,負(fù)載信息包括線程的數(shù)目和類型,以及線程間的競爭狀態(tài)。[〇〇79] 步驟504,判斷是否存在無運算資源競爭的處理器,如果是,則執(zhí)行步驟506,反之, 則執(zhí)行步驟508。
[0080]根據(jù)上述實施例獲取的處理器的負(fù)載信息,判斷是否存在無運算資源競爭的處理器,如果存在,則執(zhí)行步驟506,反之,則執(zhí)行步驟508。
[0081] 步驟506,將被喚醒的預(yù)定類型線程迀移至無運算資源競爭的處理器。
[0082]在本實施例中,無運算資源競爭的處理器是指既能滿足喚醒的預(yù)定類型線程的效能,又能保證預(yù)定類型線程間的資源競爭低的處理器。[〇〇83] 步驟508,將被喚醒的預(yù)定類型線程調(diào)度至被喚醒的預(yù)定類型線程睡眠前的處理器。
[0084]在本實施例中,當(dāng)不存在無運算資源競爭的處理器時,將被喚醒的預(yù)定類型線程調(diào)度至被喚醒的預(yù)定類型線程睡眠前的處理器,以滿足被喚醒的預(yù)定類型線程的效能。 [〇〇85]例如圖6a所示,預(yù)定類型線程A在時間3時暫時性地完成了任務(wù)并進入睡眠狀態(tài), 離開了處理器1(CPU0)。預(yù)定類型線程A在時間10被喚醒,通過檢測可知處理器4(CPU3)不能同時滿足預(yù)定類型線程A和線程D的效能,因此線程調(diào)度器則將預(yù)定類型線程A調(diào)度至原處理器CPU0執(zhí)行,如圖6b所示。[〇〇86] 通過上述實施例的預(yù)定類型線程的調(diào)度方法,能夠保證喚醒的預(yù)定類型線程的效能需求。
[0087]在一個實施例中,該線程調(diào)度方法還包括:當(dāng)對預(yù)定類型線程進行調(diào)度時,實時地對預(yù)定類型線程迀移后的處理器進行動態(tài)電壓頻率調(diào)整。目前公開的動態(tài)電壓頻率調(diào)整的方法已有很多,這里不再贅述。
[0088] 通過實時的動態(tài)電壓頻率調(diào)整,不僅可以保證預(yù)定類型線程的效能,而且還能減少效能溢出。[〇〇89]在一個實施例中,該方法還包括:當(dāng)線程為非預(yù)定類型線程時,則基于處理器上線程均衡的原則,對非預(yù)定類型線程進行調(diào)度。
[0090]在本實施例中,當(dāng)判定處理器上的線程為非預(yù)定類型線程時,則對非預(yù)定類型線程進行迀移以使得各個處理器的線程(負(fù)載)均衡。需要說明的是,在本實施例中,按照現(xiàn)有線程迀移方法對非預(yù)定類型線程進行迀移時,只對運行非預(yù)定類型線程的處理器進行周期性的動態(tài)電壓頻率調(diào)整。
[0091]在一個實施例中,如圖7所示,提出了一種線程調(diào)度系統(tǒng)700。該系統(tǒng)700包括:信息獲取模塊702和線程調(diào)度模塊704。[〇〇92]信息獲取模塊702用于獲取線程的狀態(tài)信息,其中,狀態(tài)信息包括線程的類型。線程調(diào)度模塊704,用于當(dāng)線程為預(yù)定類型線程時,且預(yù)定類型線程至少滿足下列預(yù)定條件之一時:運行有預(yù)定類型線程的處理器需要進行線程迀出;需要為被喚醒的預(yù)定類型線程確定執(zhí)行所述被喚醒的預(yù)定類型線程的處理器;[〇〇93]至少執(zhí)行下列預(yù)定操作之一:將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器;將被喚醒的預(yù)定類型線程迀移至無資源競爭的處理器。[〇〇94]在一個實施例中,線程調(diào)度模塊704還用于:獲取正在運行的預(yù)定類型線程的優(yōu)先權(quán)信息;判斷存在閑置的處理器;當(dāng)存在閑置的處理器時,將優(yōu)先權(quán)最高的預(yù)定類型線程迀移至所述閑置的處理器;當(dāng)不存在閑置處理器時,將優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類型線程迀移至無預(yù)定類型線程競爭的處理器。[〇〇95]在一個實施例中,線程調(diào)度模塊704還用于:獲取處理器的負(fù)載信息;判斷是否存在無運算資源競爭的處理器;當(dāng)存在無運算資源競爭的處理器時,則將被喚醒的預(yù)定類型線程迀移至無運算資源競爭的處理器;當(dāng)不存在無運算資源競爭的處理器時,則將被喚醒的預(yù)定類型線程調(diào)度至被喚醒的預(yù)定類型線程睡眠前的處理器。[〇〇96]在一個實施例中,線程調(diào)度模塊704還用于:當(dāng)線程為非預(yù)定類型線程時,則基于處理器上線程均衡的原則,對非預(yù)定類型線程進行調(diào)度。[〇〇97] 在一個實施例中,如圖8所示,系統(tǒng)700還包括:電壓頻率調(diào)整模塊706。電壓頻率調(diào)整模塊706用于當(dāng)對預(yù)定類型線程進行調(diào)度時,實時地對運行預(yù)定類型線程的處理器進行動態(tài)電壓頻率調(diào)整。
[0098]本實施例的線程調(diào)度系統(tǒng)700用于實現(xiàn)前述的線程調(diào)度方法,因此線程調(diào)度系統(tǒng) 700中的具體實施可參見前文中線程調(diào)度方法的實施例部分,在此不再累述。
[0099]以上所述實施例的各技術(shù)特征可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術(shù)特征所有可能的組合都進行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
[0100]以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【主權(quán)項】
1.一種線程調(diào)度方法,其特征在于,包括以下步驟:獲取線程的狀態(tài)信息,其中,所述狀態(tài)信息包括線程的類型;當(dāng)所述線程為預(yù)定類型線程,且所述預(yù)定類型線程至少滿足下列預(yù)定條件之一時:運行有預(yù)定類型線程的處理器需要進行線程迀出;需要為被喚醒的預(yù)定類型線程確定執(zhí)行所述被喚醒的預(yù)定類型線程的處理器;至少執(zhí)行下列預(yù)定操作之一:將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最高的處理器;將被喚醒的預(yù)定類型線程迀移至無運算資源競爭的處理器。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將正在運行的優(yōu)先權(quán)最高的預(yù)定類型 線程調(diào)度至效能最高的處理器的步驟包括:獲取所述正在運行的預(yù)定類型線程的優(yōu)先權(quán)信息;判斷是否存在閑置的處理器;如果是,則將所述優(yōu)先權(quán)最高的預(yù)定類型線程迀移至所述閑置的處理器;如果否,則將優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類 型線程迀移至無所述預(yù)定類型線程競爭的處理器。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將被喚醒的預(yù)定類型線程迀移至無資 源競爭的處理器的步驟包括:獲取所述處理器的負(fù)載信息;判斷是否存在無運算資源競爭的處理器;如果是,則將所述被喚醒的預(yù)定類型線程迀移至所述無運算資源競爭的處理器;如果否,則將所述被喚醒的預(yù)定類型線程調(diào)度至所述被喚醒的預(yù)定類型線程睡眠前的 處理器。4.根據(jù)權(quán)利要求1至3任意一項所述的方法,其特征在于,還包括:當(dāng)對所述預(yù)定類型線 程進行調(diào)度時,實時地對運行所述預(yù)定類型線程的處理器進行動態(tài)電壓頻率調(diào)整。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:當(dāng)所述線程為非預(yù)定類型線程時, 則基于處理器上線程均衡的原則,對所述非預(yù)定類型線程進行調(diào)度。6.—種線程調(diào)度系統(tǒng),其特征在于,包括:信息獲取模塊,用于獲取線程的狀態(tài)信息,其中,所述狀態(tài)信息包括線程的類型;線程調(diào)度模塊,用于當(dāng)所述線程為預(yù)定類型線程時,且所述預(yù)定類型線程至少滿足下 列預(yù)定條件之一時:運行有預(yù)定類型線程的處理器需要進行線程迀出;需要為被喚醒的預(yù) 定類型線程確定執(zhí)行所述被喚醒的預(yù)定類型線程的處理器;至少執(zhí)行下列預(yù)定操作之一:將正在運行的優(yōu)先權(quán)最高的預(yù)定類型線程調(diào)度至效能最 高的處理器;將被喚醒的預(yù)定類型線程迀移至無資源競爭的處理器。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述線程調(diào)度模塊還用于:獲取所述正在 運行的預(yù)定類型線程的優(yōu)先權(quán)信息;判斷是否存在閑置的處理器;當(dāng)存在閑置的處理器時, 將所述優(yōu)先權(quán)最高的預(yù)定類型線程迀移至所述閑置的處理器;當(dāng)不存在閑置處理器時,將 優(yōu)先權(quán)最高的預(yù)定類型線程保留在當(dāng)前處理器,將優(yōu)先權(quán)次之的預(yù)定類型線程迀移至無所 述預(yù)定類型線程競爭的處理器。8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述線程調(diào)度模塊還用于:獲取所述處理器的負(fù)載信息;判斷是否存在無運算資源競爭的處理器;當(dāng)存在無運算資源競爭的處理器 時,則將所述被喚醒的預(yù)定類型線程迀移至所述無運算資源競爭的處理器;當(dāng)不存在無運 算資源競爭的處理器時,則將所述被喚醒的預(yù)定類型線程調(diào)度至所述被喚醒的預(yù)定類型線 程睡眠前的處理器。9.根據(jù)權(quán)利要求6至8任意一項所述的系統(tǒng),其特征在于,還包括:電壓頻率調(diào)整模塊,用于當(dāng)對所述預(yù)定類型線程進行調(diào)度時,實時地對運行所述預(yù)定 類型線程的處理器進行動態(tài)電壓頻率調(diào)整。10.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述線程調(diào)度模塊還用于:當(dāng)所述線程為 非預(yù)定類型線程時,則基于處理器上線程均衡的原則,對所述非預(yù)定類型線程進行調(diào)度。
【文檔編號】G06F9/48GK105955809SQ201610261165
【公開日】2016年9月21日
【申請日】2016年4月25日
【發(fā)明人】陳奐彣, 張文彥
【申請人】深圳市萬普拉斯科技有限公司