本發(fā)明涉及numa
技術領域:
:,特別涉及一種基于numa架構(gòu)的性能優(yōu)化方法及系統(tǒng)。
背景技術:
::當前,numa架構(gòu)(numa,即non-uniformmemoryarchitecture)中存在多個內(nèi)存節(jié)點,每個內(nèi)存節(jié)點以及對應的多核系統(tǒng)構(gòu)成一個內(nèi)存區(qū)域,并且在每個內(nèi)存區(qū)域上設有獨立且私有的內(nèi)存控制器,能夠為線程訪問本地內(nèi)存節(jié)點時,在訪問時間上為用戶帶來更優(yōu)的體驗。然而,在目前的numa架構(gòu)中,如何對內(nèi)存進行放置成為了影響系統(tǒng)整體性能的一個重要環(huán)節(jié)。技術實現(xiàn)要素:有鑒于此,本發(fā)明的目的在于提供一種基于numa架構(gòu)的性能優(yōu)化方法及系統(tǒng),能夠針對不同情況選擇合適的內(nèi)存放置策略,有利于提升系統(tǒng)整體性能。其具體方案如下:一種基于numa架構(gòu)的性能優(yōu)化方法,包括:監(jiān)測numa架構(gòu)中的全局統(tǒng)計參數(shù);監(jiān)測dram訪問過程中的mrr參數(shù);根據(jù)當前監(jiān)測到的全局統(tǒng)計參數(shù)和mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略;其中,調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略;根據(jù)當前目標策略展開相應的調(diào)度操作??蛇x的,所述監(jiān)測numa架構(gòu)中的全局統(tǒng)計參數(shù),包括:監(jiān)測numa架構(gòu)中的maptu參數(shù)、mc-imb參數(shù)以及l(fā)ar參數(shù)??蛇x的,所述根據(jù)當前監(jiān)測到的全局統(tǒng)計參數(shù)和mrr參數(shù),確定出相應的調(diào)度策略的過程,包括:判斷當前的maptu參數(shù)是否大于第一預設閾值,如果是,則啟動擁塞調(diào)度策略;若已啟動所述擁塞調(diào)度策略,則根據(jù)當前監(jiān)測到的mc-imb參數(shù)、lar參數(shù)以及mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略??蛇x的,所述根據(jù)當前監(jiān)測到的mc-imb參數(shù)、lar參數(shù)以及mrr參數(shù),確定出相應的調(diào)度策略的過程,包括:判斷當前的mrr參數(shù)是否大于第二預設閾值,并且判斷當前剩余的ram容量是否大于預設容量閾值,如果均是,則將當前目標策略確定為所述內(nèi)存頁副本策略;判斷當前的mc-imb參數(shù)是否大于第三預設閾值,如果是,則將當前目標策略確定為所述interleaving策略;判斷當前的lar參數(shù)是否小于第四預設閾值,如果是,則將當前目標策略確定為所述內(nèi)存頁共享放置策略??蛇x的,所述第一預設閾值為50,所述第二預設閾值為95%,所述第三預設閾值為35%,所述第四預設閾值為80%。本發(fā)明還相應公開了一種基于numa架構(gòu)的性能優(yōu)化系統(tǒng),包括:第一監(jiān)測模塊,用于監(jiān)測numa架構(gòu)中的全局統(tǒng)計參數(shù);第二監(jiān)測模塊,用于監(jiān)測dram訪問過程中的mrr參數(shù);策略確定模塊,用于根據(jù)當前監(jiān)測到的全局統(tǒng)計參數(shù)和mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略;其中,調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略;調(diào)度模塊,用于根據(jù)當前目標策略展開相應的調(diào)度操作??蛇x的,所述第一監(jiān)測模塊,具體用于監(jiān)測numa架構(gòu)中的maptu參數(shù)、mc-imb參數(shù)以及l(fā)ar參數(shù)。可選的,所述策略確定模塊,包括:策略啟動子模塊,用于判斷當前的maptu參數(shù)是否大于第一預設閾值,如果是,則啟動擁塞調(diào)度策略;策略確定子模塊,用于當所述策略啟動子模塊已啟動所述擁塞調(diào)度策略,則根據(jù)當前監(jiān)測到的mc-imb參數(shù)、lar參數(shù)以及mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略??蛇x的,所述策略確定子模塊,包括:第一確定單元,用于判斷當前的mrr參數(shù)是否大于第二預設閾值,并且判斷當前剩余的ram容量是否大于預設容量閾值,如果均是,則將當前目標策略確定為所述內(nèi)存頁副本策略;第二確定單元,用于判斷當前的mc-imb參數(shù)是否大于第三預設閾值,如果是,則將當前目標策略確定為所述interleaving策略;第三確定單元,用于判斷當前的lar參數(shù)是否小于第四預設閾值,如果是,則將當前目標策略確定為所述內(nèi)存頁共享放置策略??蛇x的,所述第一預設閾值為50,所述第二預設閾值為95%,所述第三預設閾值為35%,所述第四預設閾值為80%。本發(fā)明中,基于numa架構(gòu)的性能優(yōu)化方法,包括:監(jiān)測numa架構(gòu)中的全局統(tǒng)計參數(shù);監(jiān)測dram訪問過程中的mrr參數(shù);根據(jù)當前監(jiān)測到的全局統(tǒng)計參數(shù)和mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略;其中,調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略;根據(jù)當前目標策略展開相應的調(diào)度操作??梢姡景l(fā)明先對numa架構(gòu)中的全局統(tǒng)計參數(shù)進行監(jiān)測,并監(jiān)測dram訪問過程中的mrr參數(shù),然后基于上述全局統(tǒng)計參數(shù)以及mrr參數(shù)確定出相應的調(diào)度策略,其中,上述調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略,由此可見本發(fā)明可針對不同情況選擇合適的內(nèi)存放置策略,有利于提升系統(tǒng)整體性能。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1為本發(fā)明實施例公開的一種基于numa架構(gòu)的性能優(yōu)化方法流程圖;圖2a為本發(fā)明實施例公開的無cache資源競爭示意圖;圖2b為本發(fā)明實施例公開的單個cache資源競爭示意圖;圖2c為本發(fā)明實施例公開的兩個cache資源競爭示意圖;圖3為本發(fā)明實施例公開的遠程內(nèi)存訪問示意圖;圖4為本發(fā)明實施例公開的內(nèi)存遷移結(jié)果示意圖;圖5為本發(fā)明實施例公開的first-touch策略示意圖;圖6為本發(fā)明實施例公開的interleaving策略示意圖;圖7為本發(fā)明實施例公開的一種基于numa架構(gòu)的性能優(yōu)化系統(tǒng)結(jié)構(gòu)示意圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。參見圖1所示,本發(fā)明實施例公開了一種基于numa架構(gòu)的性能優(yōu)化方法,包括以下步驟:步驟s101:監(jiān)測numa架構(gòu)中的全局統(tǒng)計參數(shù)。步驟s102:監(jiān)測dram訪問過程中的mrr參數(shù)。需要說明的是,上述mrr參數(shù)也即是內(nèi)存讀寫比率。步驟s103:根據(jù)當前監(jiān)測到的全局統(tǒng)計參數(shù)和mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略;其中,調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略。步驟s104:根據(jù)當前目標策略展開相應的調(diào)度操作。需要指出的是,上述公開的性能優(yōu)化方法有利于減少數(shù)據(jù)傳輸擁塞現(xiàn)象,由于數(shù)據(jù)擁塞現(xiàn)象會降低內(nèi)存訪問性能,所以本實施例通過減少數(shù)據(jù)傳輸擁塞可提升內(nèi)存訪問性能。參見圖2a至2c所示,由于資源競爭容易引發(fā)數(shù)據(jù)擁塞現(xiàn)象,從而降低內(nèi)存訪問性能,所以本實施例考慮先對從以下幾個方面來進行分析:(1)目標任務(目標線程)應該置于哪個numa節(jié)點上以保證本地內(nèi)存訪問,(2)目標任務可以與哪個任務在同一個numa節(jié)點上協(xié)同處理以避免cache/內(nèi)存控制器/互聯(lián)網(wǎng)絡資源的競爭帶來的性能損失,(3)如何遷移目標應用程序的內(nèi)存數(shù)據(jù)以防止出現(xiàn)內(nèi)存遠程訪問。如圖2a所示,4個業(yè)務對應的4個線程直接沒有任何計算競爭,4個任務均訪問自身的內(nèi)存數(shù)據(jù),不會對彼此資源需求造成干擾。本發(fā)明實施例將該線程-內(nèi)存配置策略作為基礎(最理想配置)。由圖2b,2c中所示,均為具有cache競爭的場景。首先將應用程序分類(線程分類),分類的依據(jù)為其內(nèi)存訪問強度。其中內(nèi)存密集型任務為該線程將會產(chǎn)生大量的內(nèi)存訪問請求。任務劃分的依據(jù),內(nèi)存密集型任務為每1000條指令超過2個llcmisses(llc,即lastlevelcache)。本發(fā)明實施例繼續(xù)對于內(nèi)存密集型任務進行分級:一般內(nèi)存密集型任務表示每1000條指令將產(chǎn)生2-100個llcmisses。而劇烈內(nèi)存密集型任務為cachemisses超過100。需要指出的是,上述劃分依賴于cpu的型號以及numa結(jié)構(gòu)類型,并且不是固定不變的。本發(fā)明實施例同樣定義cpu密集型的任務:每1000條指令將產(chǎn)生少于2個的llcmisses。線程調(diào)度的目的在于何時,選擇何種線程置于相同的numa節(jié)點中或者將線程分開置于不同的numa節(jié)點中。為了充分的了解線程訪存特性,本發(fā)明實施例選擇miss-rate策略以便持續(xù)地監(jiān)測線程產(chǎn)生的最后一層cachemissrate(即lastlevelcachemissesperthousandinstructions)。當前普遍的方法均表明miss-rate可以非常有效地定量分析線程數(shù)據(jù):如果兩個線程共享同一個llccache時會產(chǎn)生較大的cachemisses,說明該兩個線程對于cpu的計算資源具有較強的競爭性,這樣的線程配置方式會帶來較大的性能降級。本發(fā)明實施例可指定算法持續(xù)監(jiān)測處于運行狀態(tài)線程的cachemissrates。在任意1秒時間內(nèi),根據(jù)運行狀態(tài)線程的cachemissrate進行排序,然后將low-miss-rate的線程以及high-miss-rate線程置于同一個numa節(jié)點中。與上述內(nèi)容對應的具體的線程調(diào)度策略如下:(1)將排序隊列中,從最大內(nèi)存密集型的線程(最高的cachemisses)開始,依次置于不同的numa節(jié)點中(numadomain),直到所有的domain都分配到線程。(2)在排序隊列中,從最小的內(nèi)存密集型的線程(最低的cachemisses)開始,依次按照1的方式置于不同的numa節(jié)點中(numadomain),直到所有的domain在該循環(huán)內(nèi)都分配到線程。(3)依照前面1,2中進行依次迭代處理,直至隊列中所有的線程均被分配。上述線程調(diào)度策略可以保證將內(nèi)存密集型的任務均勻的分配到numa節(jié)點中。本實施例中,在任意調(diào)度時間段(例如每秒),每個線程的硬件計數(shù)器將會記錄cachemisses的大小。對于每個線程的cachemisses數(shù)據(jù),可以生成一個日志記錄該線程的cachemisses。為了保證采樣的精確度,當硬件計數(shù)器發(fā)現(xiàn)cachemisses出現(xiàn)時并不立即更新logo,而是該變化維持的時間需要超過一定的時間閾值(例如,5秒)。在日志中,本實施例對于每個線程進行編號,并且每個線程具有以下幾個元素<內(nèi)存/cpu密集型,當前運行的cpuid,當前的線程id>,線程依然根據(jù)cachemisses進行排序。假設有個應用程序y,具有8個線程,該8個線程包括2個superdevils(d),3個devils(d)以及3個turtles(t)。而線程編號<0,3,4,5>由socket0進行處理,而剩下的1,2,6,7由另一個socket進行處理。因此排序后的線程logo可以如下所示:new_class:dddddtttnew_processid:04023001new_threadid:07426351因此根據(jù)上述線程調(diào)度策略,可以得到如下線程綁核結(jié)果:domain:dom0dom1dom2dom3new_core:01234567layout:dtdtdtdd如圖3至圖4所示,線程遷移并不能完全決定性能的提升,因為linux默認的公平調(diào)度算法不會遷移線程對應的內(nèi)存頁。因此在遷移線程的同時,仍然需要遷移線程對應的內(nèi)存頁。內(nèi)存遷移的策略是將內(nèi)存遷移至線程所在的numa節(jié)點中。基本的方式是監(jiān)測線程修改的內(nèi)存頁,然后遷移包含該頁的一部分內(nèi)存數(shù)據(jù)以保證熱點數(shù)據(jù)的遷移。本發(fā)明實施例可以采用linux用戶態(tài)編程實現(xiàn)numa內(nèi)存頁遷移:線程的cachemisses采用性能分析工具pfmon來進行采樣,遷移線程采用linuxschedulingaffinity系統(tǒng)調(diào)用,而遷移內(nèi)存則采用numa_migration_pages系統(tǒng)調(diào)用。本發(fā)明實施例采用遠程內(nèi)存訪問強度(remoteaccesses)標記遠程內(nèi)存訪問的性能代價。例如,如果檢測到任意遠程內(nèi)存訪問,然后遷移對應的內(nèi)存頁至線程新抵達的numa節(jié)點上,本發(fā)明實施例可以降低所有的遠程內(nèi)存訪問,此時遠程內(nèi)存訪問強度為0。當每次一個線程被發(fā)現(xiàn)遠程訪問一個遠程numa節(jié)點時,則本實施例可以查詢線程自己的虛擬地址空間,并且找到與請求地址相關的內(nèi)存頁(一個或者多個),進行內(nèi)存頁遷移操作。具體的,可以設計以下幾種內(nèi)存遷移策略:①按次序遷移,找到修改內(nèi)存頁進行按次序遷移k個頁,k個頁包括當前被訪問的內(nèi)存熱集②前序+后序遷移,找到修改內(nèi)存頁,遷移前序k/2個頁,再遷移后序k/2個頁③隨機遷移,隨機找到k個內(nèi)存頁進行遷移④類比遷移,在上一個內(nèi)存頁訪問的基礎上進行遷移k個頁控制遷移需要降低不必要的遷移次數(shù),一些遷移不會帶來性能的提升。由于llcmissrate變化比較大,但不需要針對每次llcmissrate的變化進行內(nèi)存頁遷移。為了選擇合理的內(nèi)存頁遷移方式,本發(fā)明實施例可以采用intel計數(shù)器pebs(preciseevent-basedsample)標記被讀/寫的內(nèi)存地址。pebs的優(yōu)點在于具有較低的采樣開銷,同時也將產(chǎn)生較低的標記精確度。pebs的精確度將會影響遷移內(nèi)存數(shù)據(jù)集大小的精確性(精確度越低,需要遷移的頁數(shù)量越高)。因此,需要針對不同的任務類型,進行合適的k值得選擇。另外,在線的調(diào)度算法需要一個硬件采樣模塊實時地統(tǒng)計頁訪問信息(例如,10毫秒喚起一次pebs模塊以判斷是否需要進行頁遷移)。numa結(jié)構(gòu)中,每個節(jié)點包含一個多核cpu以及一個與該cpu本地相連的dram,而該dram又由一個或者多個內(nèi)存控制器組成。numa處理中的多個節(jié)點共享一個cache一致性系統(tǒng)(cachecoherent),該一致性系統(tǒng)由高速互聯(lián)網(wǎng)絡(high-speedinterconnect)進行連接。物理地址是全局共享的,以便任意numa節(jié)點中的所有核心均可以訪問內(nèi)存數(shù)據(jù)。本地節(jié)點訪問本地內(nèi)存數(shù)據(jù)(本地內(nèi)存訪問)依賴于本地內(nèi)存控制器,本地節(jié)點訪問遠程內(nèi)存數(shù)據(jù)(遠程內(nèi)存訪問)需要通過遠程內(nèi)存控制器以及互聯(lián)網(wǎng)絡。遠程內(nèi)存訪問與本地內(nèi)存訪問相比具有較長的訪問時間。因此,如果調(diào)度線程或者內(nèi)存數(shù)據(jù)使其位于同一個內(nèi)存節(jié)點中(例如,最大化數(shù)據(jù)訪問的局部性,盡可能的將內(nèi)存頁至于線程所在的numa節(jié)點中),這樣可以避免由于遠程內(nèi)存訪問帶來的性能開銷,并且此時numa結(jié)構(gòu)中內(nèi)存訪問性能將會得到明顯的提升。然而,遠程內(nèi)存訪問的性能瓶頸并非完全由長距離的內(nèi)存讀取操作(遠程內(nèi)存訪問)所決定。在實際應用中,互聯(lián)網(wǎng)絡以及內(nèi)存控制器由于內(nèi)存訪問帶來的擁塞(congestiononinterconnectlinksandinmemorycontrollers)會帶來較大的性能損耗。因此本實施例可以主要關注numa中傳輸結(jié)構(gòu)的優(yōu)化。需要說明的是,本發(fā)明實施例針對上述情況所提出的優(yōu)化方案具有一個前提:cpu產(chǎn)生較大的內(nèi)存訪問請求,這些內(nèi)存請求將會帶來大量的內(nèi)存數(shù)據(jù)傳輸,而這些傳輸數(shù)據(jù)會造成互聯(lián)網(wǎng)絡以及內(nèi)存控制器的擁塞(測試表明,將會帶來5倍的性能損耗)。本發(fā)明實施例具體可以采用放置線程以及調(diào)度內(nèi)存數(shù)據(jù)集的協(xié)同策略以避免傳輸熱點從而阻止傳輸擁塞。本發(fā)明實施例在前述公開內(nèi)容的基礎上,進一步提出了解決數(shù)據(jù)傳輸擁塞的方法,具體是在用戶態(tài)進行調(diào)度設計,并且依然使用線程調(diào)度以及內(nèi)存頁管理的方式來解決數(shù)據(jù)傳輸擁塞的問題。本發(fā)明實施例中,首先分析遠程訪問帶來的性能影響要低于數(shù)據(jù)傳輸擁塞導致的性能影響。為了驗證該結(jié)論,本發(fā)明實施例針對下面兩種情況進行了測試分析:(1)分析遠程內(nèi)存訪問導致的性能降級,以及(2)分析由于數(shù)據(jù)傳輸擁塞導致的性能降級。值得注意的是:當cpu利用率低于30%時,傳輸擁塞的問題將不需要考慮,因為此時內(nèi)存?zhèn)鬏數(shù)目偭坎蛔阋允沟脙?nèi)存控制器以及互聯(lián)網(wǎng)絡達到傳輸擁塞的程度。對于上述情況(1),本發(fā)明實施例分析兩種內(nèi)存訪問形式:本地內(nèi)存訪問以及遠程內(nèi)存訪問。其中遠程內(nèi)存訪問與本地訪問相比將會產(chǎn)生30%的性能損耗。對于上述情況(2),為了分析數(shù)據(jù)傳輸擁塞,本發(fā)明實施例加大線程并發(fā)量(例如,12個核全部跑滿12個線程)。并且本發(fā)明實施例考慮了linux中兩種內(nèi)存數(shù)據(jù)擺放策略:first-touch策略,即內(nèi)存數(shù)據(jù)頁放置在線程首次訪問的節(jié)點上,以及interleaving策略(也即內(nèi)存頁均勻放置策略),即內(nèi)存頁將分布在所有的numa節(jié)點上。具體可參見圖5和圖6所示。通過實驗發(fā)現(xiàn),由于內(nèi)存數(shù)據(jù)集放置的策略不同,數(shù)據(jù)傳輸擁塞成為性能提升的主要瓶頸。本發(fā)明實施例進一步分析造成性能損失的因素。如表1所示,本地內(nèi)存訪問比率表示本地節(jié)點的內(nèi)存訪問總量/總訪問量,內(nèi)存訪問延遲表示單個內(nèi)存訪問(包括本地訪問以及遠程訪問)需要的時間(用cycles表示)。內(nèi)存控制器的不平衡系數(shù)表示所有的內(nèi)存控制器的數(shù)據(jù)傳輸總量與平均值之間的標準偏差。互聯(lián)網(wǎng)絡平均利用率:當前某個監(jiān)測的互聯(lián)網(wǎng)絡帶寬占有量/總體的互聯(lián)網(wǎng)絡帶寬占有量。l3mpki:每千條指令中最后一層cache的缺失總數(shù)。ipc表示每個cpu時鐘周期cycle完成的指令數(shù)。表1由表1的結(jié)果可知:(1)本地內(nèi)存訪問總量在兩種內(nèi)存放置策略下基本上相同,也就是說即便不采用本地內(nèi)存策略也不會影響本地內(nèi)存訪問。對于streamcluster來說,在first-touch策略下,一個線程將進行內(nèi)存初始化工作,該線程將所有的數(shù)據(jù)初始化于本地的內(nèi)存節(jié)點。對于interleaving策略來說,線程需要的數(shù)據(jù)量均勻分配在所有的numa節(jié)點中。對于mapreduce任務來說,interleaving策略降低了本地內(nèi)存訪問比率(遠程內(nèi)存訪問請求變得更多),但是性能卻出現(xiàn)了提升。因此,本發(fā)明實施例得到一個重要的結(jié)論,本地內(nèi)存訪問的優(yōu)化并不完全意味著numa結(jié)構(gòu)的性能提升。由表1可以看出,ipc在interleaving策略下獲得了提升,這就意味著在相同的時鐘周期內(nèi)有更多的指令被執(zhí)行。并且通過l3cache缺失的分析,兩種內(nèi)存放置策略并沒有帶來明顯的cachemiss。從內(nèi)存訪問延遲結(jié)果可以看出,在interleaving策略下streamcluster的內(nèi)存訪問延遲將會減少2.48倍,而mapreduce的內(nèi)存訪問延遲將會減少1.39倍。內(nèi)存訪問延遲直接反映了numa結(jié)構(gòu)的性能影響。由此可以得到重要的結(jié)論為:降低內(nèi)存控制器以及互聯(lián)網(wǎng)絡的數(shù)據(jù)通訊擁塞會帶來明顯的性能提升。如果緩解在互聯(lián)網(wǎng)絡以及內(nèi)存控制器層數(shù)據(jù)傳輸擁塞的問題,則numa的性能將會得到極大的提升。但是,并且不是所有的情況都需要采用interleaving策略。例如對于nas應用程序(多線程任務),nas在interleaving策略下并不具備明顯的優(yōu)勢。針對以上的分析,本發(fā)明實施例可以通過線程調(diào)度結(jié)合內(nèi)存放置策略,并且考慮任務特性,來進行算法設計。本實施例中,上述步驟s103中的調(diào)度策略具體包括內(nèi)存放置策略,其中,內(nèi)存防止策略包括內(nèi)存頁共享放置策略、interleaving策略以及內(nèi)存頁副本策略。其中,內(nèi)存頁共享放置策略是將多個線程需要訪問的頁置于同一個內(nèi)存節(jié)點中。多個線程在同一個內(nèi)存節(jié)點上工作,將不同線程所需的內(nèi)存頁置于相同內(nèi)存節(jié)點會帶來較為明顯得性能提升;而內(nèi)存頁均勻放置策略則是將內(nèi)存數(shù)據(jù)均勻的置于多個numa內(nèi)存節(jié)點中。該策略適用于內(nèi)存頁由多個線程訪問的情況,并且此時內(nèi)存控制器以及互聯(lián)網(wǎng)絡出現(xiàn)數(shù)據(jù)傳輸不平衡的情況;另外,內(nèi)存頁副本策略是將多個內(nèi)存頁副本置于多個numa內(nèi)存節(jié)點中。多個副本策略最大的優(yōu)點在于避免/緩解數(shù)據(jù)傳輸熱點。并且多副本策略,還可以避免遠程內(nèi)存訪問導致的性能損失。但是內(nèi)存頁副本策略同樣具有一定的局限性,主要包括以下三個方面:(a)同一個頁有多個副本,數(shù)據(jù)同步需要額外的算法設計,并且需要根據(jù)讀/寫進行特別考慮;(b)多個內(nèi)存頁副本,需要考慮頁表的管理,同樣需要將頁表副本化,置于多個numa節(jié)點中,并且需要實時同步;(c)頁副本占用了內(nèi)存空間,會導致一些需要大量內(nèi)存的任務無法獲得足夠的內(nèi)存空間,從而導致缺頁的情況產(chǎn)生。需要進一步說明的是,在linux中,一個進程的地址空間由mm_struct結(jié)構(gòu)體進行管理,該結(jié)構(gòu)體保存了地址空間的有效位以及保護一個指針進行地址的選取。由于頁表會出現(xiàn)pagetablewalk,導致無法修改pagetable的結(jié)構(gòu)去針對每一個虛擬頁配置多個硬件地址。因此,本實施例可以對于每個numa節(jié)點維持一個pagetable的副本,并且這些頁表副本直接需要持續(xù)的進行同步操作(即使此時沒有虛擬頁副本)。linux自帶的機制在頁表修改時鎖住頁表。本方案依然延續(xù)該一致性設計。本實施例可以選擇鎖住其中一個頁表副本,其他頁表副本將會進行同步操作。當一個頁被復制以后,則每個numa節(jié)點上均會存在一個頁副本。本實施例可以采用寫保護策略以防復制內(nèi)存頁被修改,對于復制頁上任意一個寫操作,都將返回一個寫保護報錯(pageprotectionfault)。為了解決該fault,本實施例可以在所有的numa節(jié)點上采用讀保護,而此時出現(xiàn)寫保護報錯的內(nèi)存頁執(zhí)行寫操作。此時若,其他的節(jié)點需要訪問該臟頁,本實施例會將該頁重新拷貝至訪問numa節(jié)點,使得該頁完成讀操作。頁同步的策略采用pagecollapses方法,該方法具有較大的開銷。即便對于較少的寫操作(1000accesses),開銷都將會非常的高,由于ibs(即instruction-basedsampling)的采樣精確度,導致無法獲得每個頁的讀寫比率。因此,本實施例采用用戶態(tài)程序提取的內(nèi)存讀寫比率,而無法采用頁級的讀寫比率,副本優(yōu)化策略在內(nèi)存讀寫比率較低時被關閉??梢?,本發(fā)明實施例先對numa架構(gòu)中的全局統(tǒng)計參數(shù)進行監(jiān)測,并監(jiān)測dram訪問過程中的mrr參數(shù),然后基于上述全局統(tǒng)計參數(shù)以及mrr參數(shù)確定出相應的調(diào)度策略,其中,上述調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略,由此可見本發(fā)明實施例可針對不同情況選擇合適的內(nèi)存放置策略,有利于提升系統(tǒng)整體性能。本實施例中公開了一種具體的基于numa架構(gòu)的性能優(yōu)化方法,相對于上一實施例,本實施例對技術方案作了進一步的說明和優(yōu)化。具體的:在上一實施例步驟s101中,需要對numa架構(gòu)中的全局統(tǒng)計參數(shù)進行監(jiān)測。其中,上述步驟s101具體可以包括:監(jiān)測numa架構(gòu)中的maptu參數(shù)、mc-imb參數(shù)以及l(fā)ar參數(shù)。其中,maptu參數(shù)為每單位時間內(nèi)內(nèi)存訪問總數(shù),mc-imb參數(shù)為內(nèi)存控制器中數(shù)據(jù)傳輸不平衡統(tǒng)計,lar參數(shù)為本地內(nèi)存訪問請求比率。進一步的,在上一實施例步驟s103中,根據(jù)當前監(jiān)測到的全局統(tǒng)計參數(shù)和mrr參數(shù),確定出相應的調(diào)度策略的過程,具體可以包括:判斷當前的maptu參數(shù)是否大于第一預設閾值,如果是,則啟動擁塞調(diào)度策略;若已啟動擁塞調(diào)度策略,則根據(jù)當前監(jiān)測到的mc-imb參數(shù)、lar參數(shù)以及mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略。也即,若maptu參數(shù)大于某個閾值時,擁塞調(diào)度策略將會啟動。并且本實施例中maptu參數(shù)可以會根據(jù)不同的cpu架構(gòu)來進行改變。在實際中選擇maptu閾值的策略是,在不同的內(nèi)存放置策略下,統(tǒng)計目標任務的性能參數(shù),選擇最低的maptu值。一旦擁塞調(diào)度策略啟動,則需要考慮選擇的內(nèi)存放置策略,如內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略。本實施例中,上述第一預設閾值具體可以為50。具體的,上述根據(jù)當前監(jiān)測到的mc-imb參數(shù)、lar參數(shù)以及mrr參數(shù),確定出相應的調(diào)度策略的過程,可以包括:判斷當前的mrr參數(shù)是否大于第二預設閾值,并且判斷當前剩余的ram容量是否大于預設容量閾值,如果均是,則將當前目標策略確定為內(nèi)存頁副本策略,否則判斷當前的mc-imb參數(shù)是否大于第三預設閾值,如果是,則將當前目標策略確定為interleaving策略,否則判斷當前的lar參數(shù)是否小于第四預設閾值,如果是,則將當前目標策略確定為內(nèi)存頁共享放置策略。本實施例中,內(nèi)存頁副本策略的風險在于會帶來額外的開銷,例如,內(nèi)存頁副本策略需要占用更多的內(nèi)存空間,內(nèi)存頁副本策略需要進行副本級同步。為了解決由內(nèi)存頁副本策略導致的內(nèi)存空間問題,本實施例依然采用閾值控制的方法:首先判斷當前空余的ram容量是否大于預設容量閾值,例如,上述預設容量閾值具體可以為1-(1/num_nodes),并且本實施例假設所有的頁都需要進行復制,上述預設容量閾值可以較好的控制由于副本策略導致的內(nèi)存不足問題,因為并不是所有的頁都需要復制。但對于大數(shù)據(jù)集的任務或者副本策略并不能帶來性能提升的任務,副本策略將不會被執(zhí)行。為了避免數(shù)據(jù)同步的開銷,本實施例需要考慮內(nèi)存頁的讀寫情況。本實施例在當前剩余ram容量大于上述預設容量閾值的情況下,進一步限定內(nèi)存頁讀比例大于95%時才執(zhí)行副本策略。也即,上述第二預設閾值具體可以為95%。當numa結(jié)構(gòu)中內(nèi)存控制訪問不平衡時,interleaving策略會帶來較優(yōu)的性能提升。本實施例依然根據(jù)閾值進行策略選擇,當發(fā)現(xiàn)內(nèi)存控制器中數(shù)據(jù)傳輸不均衡超過35%時,此時采用interleaving策略將會帶來較好的性能結(jié)果,也即上述第三預設閾值具體可以為35%。通常情況下,內(nèi)存控制器數(shù)據(jù)傳輸越不均衡,此時interleaving策略帶來的性能提升較大。本實施例中,內(nèi)存頁共享放置策略啟動的條件為所有的內(nèi)存頁將由單一的numa節(jié)點訪問,該訪問模式不會帶來內(nèi)存數(shù)據(jù)傳輸上的不平衡。因此,內(nèi)存頁共享放置策略啟動的條件為本地內(nèi)存訪問請求比率小于80%,也即,本實施例中上述第四預設閾值具體可以為80%。與上一實施例對應的,本發(fā)明實施例還進一步公開了一種基于numa架構(gòu)的性能優(yōu)化系統(tǒng),參見圖7所示,該系統(tǒng)包括:第一監(jiān)測模塊101,用于監(jiān)測numa架構(gòu)中的全局統(tǒng)計參數(shù);第二監(jiān)測模塊102,用于監(jiān)測dram訪問過程中的mrr參數(shù);策略確定模塊103,用于根據(jù)當前監(jiān)測到的全局統(tǒng)計參數(shù)和mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略;其中,調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略;調(diào)度模塊104,用于根據(jù)當前目標策略展開相應的調(diào)度操作。其中,上述第一監(jiān)測模塊101,具體用于監(jiān)測numa架構(gòu)中的maptu參數(shù)、mc-imb參數(shù)以及l(fā)ar參數(shù)。另外,上述策略確定模塊103,包括策略啟動子模塊以及策略確定子模塊;其中,策略啟動子模塊,用于判斷當前的maptu參數(shù)是否大于第一預設閾值,如果是,則啟動擁塞調(diào)度策略;策略確定子模塊,用于當策略啟動子模塊已啟動擁塞調(diào)度策略,則根據(jù)當前監(jiān)測到的mc-imb參數(shù)、lar參數(shù)以及mrr參數(shù),確定出相應的調(diào)度策略,得到當前目標策略。具體的,上述策略確定子模塊,可以包括第一確定單元、第二確定單元以及第三確定單元;其中,第一確定單元,用于判斷當前的mrr參數(shù)是否大于第二預設閾值,并且判斷當前剩余的ram容量是否大于預設容量閾值,如果均是,則將當前目標策略確定為內(nèi)存頁副本策略;第二確定單元,用于判斷當前的mc-imb參數(shù)是否大于第三預設閾值,如果是,則將當前目標策略確定為interleaving策略;第三確定單元,用于判斷當前的lar參數(shù)是否小于第四預設閾值,如果是,則將當前目標策略確定為內(nèi)存頁共享放置策略。進一步的,上述第一預設閾值具體為50,第二預設閾值具體為95%,第三預設閾值具體為35%,第四預設閾值具體為80%??梢?,本發(fā)明實施例先對numa架構(gòu)中的全局統(tǒng)計參數(shù)進行監(jiān)測,并監(jiān)測dram訪問過程中的mrr參數(shù),然后基于上述全局統(tǒng)計參數(shù)以及mrr參數(shù)確定出相應的調(diào)度策略,其中,上述調(diào)度策略包括內(nèi)存頁副本策略、interleaving策略以及內(nèi)存頁共享放置策略,由此可見本發(fā)明實施例可針對不同情況選擇合適的內(nèi)存放置策略,有利于提升系統(tǒng)整體性能。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或
技術領域:
:內(nèi)所公知的任意其它形式的存儲介質(zhì)中。本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應當指出,對于本
技術領域:
:的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。當前第1頁12當前第1頁12