一種基於NUMA系統的任務調度方法及裝置與流程
2023-12-07 07:26:31 1

本發明涉及計算機技術領域,特別是涉及一種基於numa系統的任務調度方法及裝置。
背景技術:
隨著計算機技術的快速發展,numa(nonuniformmemoryaccessarchitecture,非統一內存訪問結構)技術也得到了快速發展,同時,基於numa技術構建的numa系統也在各行業得到了廣泛應用。
numa系統包含多個numa節點,numa節點用於承載任務的執行。不同任務對不同類型資源的需求不同,當numa系統產生瓶頸,出現系統性能下降問題時,需要通過任務調度來解決。
在現有技術中,多是對任務進行隨機調度,即隨機將目標任務從a節點調度到b節點上,經過一段時間後,如果系統性能未得到提升,則繼續進行任務的隨機調度。
這種隨機調度的方法存在一定的缺點,其很難從根本上解決numa系統當前瓶頸問題,系統性能也不能得到有效提升。
技術實現要素:
本發明的目的是提供一種基於numa系統的任務調度方法及裝置,以從根本上解決numa系統當前瓶頸問題,提升系統整體性能。
為解決上述技術問題,本發明提供如下技術方案:
一種基於numa系統的任務調度方法,包括:
在達到預設的任務調度觸發條件時,確定任務集合中每個任務對每種類型資源的需求,所述任務集合由numa系統中每個numa節點上當前運行的任務構成;
根據每個任務對每種類型資源的需求,確定所述numa系統當前瓶頸對應資源的目標類型;
確定所述任務集合中每個任務對所述目標類型資源的需求度;
根據每個任務對所述目標類型資源的需求度,將所述任務集合中的任務劃分為多個任務組,以使按照大小順序排列的前n個需求度對應的任務處於不同任務組中,n為任務組個數,n小於或等於所述numa系統中numa節點個數;
將每個任務組中的任務分別調度到對應的numa節點上。
在本發明的一種具體實施方式中,所述根據每個任務對每種類型資源的需求,確定所述numa系統當前瓶頸對應資源的目標類型,包括:
針對每種類型資源,確定所述任務集合中所有任務對該類型資源的總需求;
將最大總需求對應的類型確定為所述numa系統當前瓶頸對應資源的目標類型。
在本發明的一種具體實施方式中,所述確定所述任務集合中每個任務對所述目標類型資源的需求度,包括:
獲得設定時間段內對所述任務集合中每個任務的監測數據;
基於所述監測數據,確定每個任務對所述目標類型資源的訪問缺失率;
根據每個任務對所述目標類型資源的訪問缺失率,確定每個任務對所述目標類型資源的需求度。
在本發明的一種具體實施方式中,所述根據每個任務對所述目標類型資源的需求度,將所述任務集合中的任務劃分為多個任務組,包括:
根據所述任務集合中任務數量及所述numa系統中numa節點數量,確定任務組個數n;
將所述任務集合確定為待劃分集合;
將所述待劃分集合中最大需求度對應的任務和最小需求度對應的任務組合為一個任務組;
將未被劃分的任務構成的集合確定為待劃分集合,重複執行所述將所述待劃分集合中最大需求度對應的任務和最小需求度對應的任務組合為一個任務組的步驟,直至得到的任務組數量為n,如果存在未被劃分的任務,則將未被劃分的任務隨機或者按照設定順序劃分到n個任務組中。
在本發明的一種具體實施方式中,所述資源為內存資源、cpu資源或帶寬資源。
一種基於numa系統的任務調度裝置,包括:
需求確定模塊,用於在達到預設的任務調度觸發條件時,確定任務集合中每個任務對每種類型資源的需求,所述任務集合由numa系統中每個numa節點上當前運行的任務構成;
類型確定模塊,用於根據每個任務對每種類型資源的需求,確定所述numa系統當前瓶頸對應資源的目標類型;
需求度確定模塊,用於確定所述任務集合中每個任務對所述目標類型資源的需求度;
分組模塊,用於根據每個任務對所述目標類型資源的需求度,將所述任務集合中的任務劃分為多個任務組,以使按照大小順序排列的前n個需求度對應的任務處於不同任務組中,n為任務組個數,n小於或等於所述numa系統中numa節點個數;
任務調度模塊,用於將每個任務組中的任務分別調度到對應的numa節點上。
在本發明的一種具體實施方式中,所述類型確定模塊,具體用於:
針對每種類型資源,確定所述任務集合中所有任務對該類型資源的總需求;
將最大總需求對應的類型確定為所述numa系統當前瓶頸對應資源的目標類型。
在本發明的一種具體實施方式中,所述需求度確定模塊,具體用於:
獲得設定時間段內對所述任務集合中每個任務的監測數據;
基於所述監測數據,確定每個任務對所述目標類型資源的訪問缺失率;
根據每個任務對所述目標類型資源的訪問缺失率,確定每個任務對所述目標類型資源的需求度。
在本發明的一種具體實施方式中,所述分組模塊,具體用於:
根據所述任務集合中任務數量及所述numa系統中numa節點數量,確定任務組個數n;
將所述任務集合確定為待劃分集合;
將所述待劃分集合中最大需求度對應的任務和最小需求度對應的任務組合為一個任務組;
將未被劃分的任務構成的集合確定為待劃分集合,重複執行所述將所述待劃分集合中最大需求度對應的任務和最小需求度對應的任務組合為一個任務組的步驟,直至得到的任務組數量為n,如果存在未被劃分的任務,則將未被劃分的任務隨機或者按照設定順序劃分到n個任務組中。
在本發明的一種具體實施方式中,所述資源為內存資源、cpu資源或帶寬資源。
應用本發明實施例所提供的技術方案,在達到預設的任務調度觸發條件時,可以確定任務集合中每個任務對每種類型資源的需求,根據每個任務對每種類型資源的需求,確定numa系統當前瓶頸對應資源的目標類型,確定任務集合中每個任務對目標類型資源的需求度,根據需求度,將任務集合中的任務劃分為多個任務組,使按照大小順序排列的前n個需求度對應的任務處於不同任務組中,將每個任務組中的任務分別調度到對應的numa節點上。進行任務調度後,同一numa節點上的任務對目標類型資源的需求度差別較大,可以降低同一numa節點上的任務對目標類型資源的競爭性,從根本上解決numa系統當前瓶頸問題,提升系統整體性能。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例中一種基於numa系統的任務調度方法的實施流程圖;
圖2為本發明實施例中一種基於numa系統的任務調度裝置的結構示意圖。
具體實施方式
為了使本技術領域的人員更好地理解本發明方案,下面結合附圖和具體實施方式對本發明作進一步的詳細說明。顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
參見圖1所示,為本發明實施例所提供的一種基於numa系統的任務調度方法的實施流程圖,該方法可以包括以下步驟:
s110:在達到預設的任務調度觸發條件時,確定任務集合中每個任務對每種類型資源的需求。
任務集合由numa系統中每個numa節點上當前運行的任務構成。
在numa系統中,numa節點可以承載任務的執行。可以將numa系統中每個numa節點上當前運行的任務構成任務集合。
在本發明實施例中,可以預先設定任務調度觸發條件,具體的,可以設定調度周期,當到達新的調度周期時,即可視為達到了任務調度觸發條件,或者,將系統性能下降到預設等級設定為任務調度觸發條件,即當檢測到系統性能下降到該預設等級時,視為達到了任務調度觸發條件。
可以預先設定多個任務調度觸發條件,在達到任意一個設定的任務調度觸發條件時,均可觸發本發明實施例所提供技術方案的執行。
在numa系統中,任務的需求和瓶頸隨著時間的變化而變化。在達到預設的任務調度觸發條件時,可以確定任務集合中每個任務對每種類型資源的需求。資源可以為內存資源、cpu資源或帶寬資源。
不同任務對每種類型資源的需求不同,可以根據任務屬性和任務執行階段,確定每個任務對每種類型資源的需求。
s120:根據每個任務對每種類型資源的需求,確定numa系統當前瓶頸對應資源的目標類型。
確定了任務集合中每個任務對每種類型資源的需求後,可以根據每個任務對每種類型資源的需求,確定numa系統當前是否存在瓶頸,如果存在,則可以確定當前瓶頸對應資源的目標類型。
在本發明的一種具體實施方式中,步驟s120可以包括以下步驟:
步驟一:針對每種類型資源,確定任務集合中所有任務對該類型資源的總需求;
步驟二:將最大總需求對應的類型確定為numa系統當前瓶頸對應資源的目標類型。
為便於描述,將上述兩個步驟結合起來進行說明。
numa系統可提供多種類型資源,針對每種類型資源,可以確定任務集合中所有任務對該類型資源的總需求。可以理解的是,如果任務集合中所有任務對某類型資源的總需求過大,很容易導致產生該類型資源瓶頸。
在本發明實施例中,可以將最大總需求對應的類型確定為numa系統當前瓶頸對應資源的目標類型。
s130:確定任務集合中每個任務對目標類型資源的需求度。
一個任務對目標類型資源的需求度表明該任務對目標類型資源的需求程度。不同任務對同一類型資源的需求度可能不同,如有的任務對內存資源需求較大,有的任務對cpu資源需求較大。
針對任務集合中的每個任務,根據該任務對該目標類型資源的需求,可以確定該任務對目標類型資源的需求度。具體的,可以預先設定需求與需求度的對應關係式,如當需求大於預設第一閾值時,設定其對應的需求度為第一值,當需求在第一閾值和第二閾值之間時,設定其對應的需求度為第二值。舉例而言,當需求大於90%時,其對應的需求度為5,當需求在70%-90%之間時,其對應的需求度為4,這裡需求度的值越高表明需求越大。當然,在實際應用中,還可以設定其他對應關係,本發明實施例對此不做限制。
在本發明的一種具體實施方式中,步驟s130可以包括以下步驟:
第一個步驟:獲得設定時間段內對任務集合中每個任務的監測數據;
第二個步驟:基於監測數據,確定每個任務對目標類型資源的訪問缺失率;
第三個步驟:根據每個任務對目標類型資源的訪問缺失率,確定每個任務對目標類型資源的需求度。
為便於描述,將上述三個步驟結合起來進行說明。
在numa系統運行過程中,可以對numa節點上運行的每個任務進行監測,具體的,可以通過每個任務的硬體計數器對相應任務對各類型資源的訪問缺失率進行記錄。
獲得設定時間段內對任務集合中每個任務的監測數據,基於該監測數據,可以確定每個任務對目標類型資源的訪問缺失率。訪問缺失率可以定義為每1000條指令中訪問缺失個數。
對於一個任務而言,該任務對目標類型資源的訪問缺失率越大,表明該任務對該目標類型資源的需求越大,需求度越大。根據每個任務對目標類型資源的訪問缺失率,可以確定每個任務對目標類型資源的需求度。具體的,針對每個任務,可以直接將該任務對目標類型資源的訪問缺失率確定為該任務對目標類型資源的需求度,或者根據預設的對應關係和該任務對目標類型資源的訪問缺失率,確定該任務對目標類型資源的需求度。
s140:根據每個任務對目標類型資源的需求度,將任務集合中的任務劃分為多個任務組,以使按照大小順序排列的前n個需求度對應的任務處於不同任務組中。
n為任務組個數,n小於或等於numa系統中numa節點個數。
對於任務集合中任意兩個任務,如果這兩個任務對目標類型資源的需求度都很大,那麼可以認為這兩個任務對於該目標類型資源具有較強的競爭力,如果將這兩個任務放置於同一個numa節點上,則將導致較大的性能降級。
在本發明實施例中,根據每個任務對目標類型資源的需求度,可以將任務集合中的任務劃分為多個任務組,具體可以遵循以下劃分規則:按照大小順序排列的n個需求度對應的任務處於不同任務組中。
任務組個數n可以根據numa系統中numa節點個數和當前資源供需情況確定。任務組個數n小於或等於numa系統中numa節點個數。
在本發明的一種具體實施方式中,步驟s140可以包括以下步驟:
步驟一:根據任務集合中任務數量及numa系統中numa節點數量,確定任務組個數n;
步驟二:將任務集合確定為待劃分集合;
步驟三:將待劃分集合中最大需求度對應的任務和最小需求度對應的任務組合為一個任務組;
步驟四:將未被劃分的任務構成的集合確定為待劃分集合,重複執行步驟三的操作,直至得到的任務組數量為n,如果存在未被劃分的任務,則將未被劃分的任務隨機或者按照設定順序劃分到n個任務組中。
為便於描述,將上述四個步驟結合起來進行說明。
根據任務集合中任務數量及numa系統中numa節點數量,可以確定任務組個數n。具體的,任務組個數n可以等於或小於任務集合中任務數量與numa系統中numa節點數量中較小者。
將任務集合確定為待劃分集合。從待劃分集合中取出最大需求度對應的任務和最小需求度對應的任務,將這兩個任務組合為一個任務組。將餘下的未被劃分的任務構成的集合確定為待劃分集合,重複執行上述步驟。當得到的任務組數量為n時結束。
如果此時仍存在未被劃分的任務,則可以將未被劃分的任務隨機或者按照設定順序劃分到n個任務組中。這樣處於同一個任務組中的任務具有一定的親和性,對目標類型資源的需求度有較大差別,可以儘量避免對目標類型資源的競爭。
s150:將每個任務組中的任務分別調度到對應的numa節點上。
將任務集合中的任務劃分為多個任務組後,可以將每個任務組中的任務分別調度到對應的numa節點上,任務組與numa節點一一對應。具體的,可以根據實際情況將任務組與numa節點對應。
應用本發明實施例所提供的方法,在達到預設的任務調度觸發條件時,可以確定任務集合中每個任務對每種類型資源的需求,根據每個任務對每種類型資源的需求,確定numa系統當前瓶頸對應資源的目標類型,確定任務集合中每個任務對目標類型資源的需求度,根據需求度,將任務集合中的任務劃分為多個任務組,使按照大小順序排列的前n個需求度對應的任務處於不同任務組中,將每個任務組中的任務分別調度到對應的numa節點上。進行任務調度後,同一numa節點上的任務對目標類型資源的需求度差別較大,可以降低同一numa節點上的任務對目標類型資源的競爭性,從根本上解決numa系統當前瓶頸問題,提升系統整體性能。
相應於上面的方法實施例,本發明實施例還提供了一種基於numa系統的任務調度裝置,下文描述的一種基於numa系統的任務調度裝置與上文描述的一種基於numa系統的任務調度方法可相互對應參照。
參見圖2所示,該裝置包括以下模塊:
需求確定模塊210,用於在達到預設的任務調度觸發條件時,確定任務集合中每個任務對每種類型資源的需求,任務集合由numa系統中每個numa節點上當前運行的任務構成;
類型確定模塊220,用於根據每個任務對每種類型資源的需求,確定numa系統當前瓶頸對應資源的目標類型;
需求度確定模塊230,用於確定任務集合中每個任務對目標類型資源的需求度;
分組模塊240,用於根據每個任務對目標類型資源的需求度,將任務集合中的任務劃分為多個任務組,以使按照大小順序排列的前n個需求度對應的任務處於不同任務組中,n為任務組個數,n小於或等於numa系統中numa節點個數;
任務調度模塊250,用於將每個任務組中的任務分別調度到對應的numa節點上。
應用本發明實施例所提供的裝置,在達到預設的任務調度觸發條件時,可以確定任務集合中每個任務對每種類型資源的需求,根據每個任務對每種類型資源的需求,確定numa系統當前瓶頸對應資源的目標類型,確定任務集合中每個任務對目標類型資源的需求度,根據需求度,將任務集合中的任務劃分為多個任務組,使按照大小順序排列的前n個需求度對應的任務處於不同任務組中,將每個任務組中的任務分別調度到對應的numa節點上。進行任務調度後,同一numa節點上的任務對目標類型資源的需求度差別較大,可以降低同一numa節點上的任務對目標類型資源的競爭性,從根本上解決numa系統當前瓶頸問題,提升系統整體性能。
在本發明的一種具體實施方式中,類型確定模塊220,具體用於:
針對每種類型資源,確定任務集合中所有任務對該類型資源的總需求;
將最大總需求對應的類型確定為numa系統當前瓶頸對應資源的目標類型。
在本發明的一種具體實施方式中,需求度確定模塊230,具體用於:
獲得設定時間段內對任務集合中每個任務的監測數據;
基於監測數據,確定每個任務對目標類型資源的訪問缺失率;
根據每個任務對目標類型資源的訪問缺失率,確定每個任務對目標類型資源的需求度。
在本發明的一種具體實施方式中,分組模塊240,具體用於:
根據任務集合中任務數量及numa系統中numa節點數量,確定任務組個數n;
將任務集合確定為待劃分集合;
將待劃分集合中最大需求度對應的任務和最小需求度對應的任務組合為一個任務組;
將未被劃分的任務構成的集合確定為待劃分集合,重複執行將待劃分集合中最大需求度對應的任務和最小需求度對應的任務組合為一個任務組的步驟,直至得到的任務組數量為n,如果存在未被劃分的任務,則將未被劃分的任務隨機或者按照設定順序劃分到n個任務組中。
在本發明的一種具體實施方式中,資源為內存資源、cpu資源或帶寬資源。
本說明書中各個實施例採用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。對於實施例公開的裝置而言,由於其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、計算機軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬體、處理器執行的軟體模塊,或者二者的結合來實施。軟體模塊可以置於隨機存儲器(ram)、內存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬碟、可移動磁碟、cd-rom、或技術領域內所公知的任意其它形式的存儲介質中。
本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的技術方案及其核心思想。應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以對本發明進行若干改進和修飾,這些改進和修飾也落入本發明權利要求的保護範圍內。