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