專利名稱:基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高性能計(jì)算技術(shù)及分析領(lǐng)域,特別涉及一種基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法及裝置。
背景技術(shù):
高性能計(jì)算一直是進(jìn)行現(xiàn)代科學(xué)研究的重要支柱,例如,人類基因、地球氣候準(zhǔn)確預(yù)報(bào)與模擬、核爆炸模擬等等,都與并行計(jì)算技術(shù)緊緊聯(lián)系在一起。但這些程序往往存在各種各樣的性能問題,這類問題對(duì)于高性能計(jì)算的影響很大,表現(xiàn)在如下幾個(gè)方面1、性能瓶頸會(huì)影響高性能程序的擴(kuò)展性,從而導(dǎo)致可計(jì)算的問題規(guī)模被制約。對(duì)于高性能計(jì)算領(lǐng)域的主要應(yīng)用,例如,核物理、天氣預(yù)報(bào),在問題規(guī)模提升時(shí)對(duì)內(nèi)存容量和帶寬的需求也會(huì)迅速提升,而現(xiàn)代的高性能計(jì)算機(jī)同時(shí)提供高內(nèi)存容量和帶寬的手段就是增加并行計(jì)算的核心數(shù)量。因此,當(dāng)擴(kuò)展性不好時(shí),應(yīng)用程序?qū)o法對(duì)大規(guī)模的問題進(jìn)行求解,從而降低其科學(xué)意義。2、性能問題會(huì)導(dǎo)致程序運(yùn)行的時(shí)間增長。目前高性能計(jì)算用戶主要通過在超級(jí)計(jì)算中心按每計(jì)算核心每小時(shí)的標(biāo)準(zhǔn)來購買機(jī)時(shí),這種運(yùn)行時(shí)間的增長會(huì)導(dǎo)致用戶在運(yùn)行大規(guī)模程序時(shí)的開支和使用的計(jì)算核心數(shù)量成正比,造成重大的經(jīng)濟(jì)損失。性能分析工具主要包括兩部分,性能數(shù)據(jù)的采集與性能數(shù)據(jù)的分析。對(duì)于高性能程序而言,性能數(shù)據(jù)的采集存在如下關(guān)鍵問題1、性能數(shù)據(jù)的采集粒度與引入的額外性能開銷的矛盾。一般來說,性能數(shù)據(jù)的采集粒度越細(xì),之后所能進(jìn)行的分析就越準(zhǔn)確。細(xì)粒度地?cái)?shù)據(jù)采集會(huì)給程序的執(zhí)行帶來額外的開銷,可能會(huì)干擾程序本身的性能特征。高性能計(jì)算程序往往需要使用數(shù)千甚至上萬顆CPU核心進(jìn)行運(yùn)算。但在這種規(guī)模的計(jì)算中,干擾會(huì)得到放大和傳播,從而導(dǎo)致得出錯(cuò)誤的熱點(diǎn)分析報(bào)告。將性能工具引入的性能開銷降低到可忽視的程度,對(duì)于高性能計(jì)算的性能分析工具至關(guān)重要。2、性能數(shù)據(jù)的采集粒度與性能數(shù)據(jù)大小的矛盾。同樣,當(dāng)性能數(shù)據(jù)采集粒度過細(xì)時(shí),數(shù)據(jù)量可能會(huì)變得較大,不加以控制甚至可以達(dá)到數(shù)TB的級(jí)別,除了加重了系統(tǒng)的輸入輸出(Input/Output,即I/O)負(fù)擔(dān),降低了系統(tǒng)的穩(wěn)定性外,大量的數(shù)據(jù)還會(huì)影響實(shí)際分析的效果。如何限制性能數(shù)據(jù)的大小,也是不可忽視的問題。3、國產(chǎn)計(jì)算平臺(tái)特有的問題,如性能采集相關(guān)的硬件設(shè)備支持相對(duì)較弱,性能事件計(jì)數(shù)器少于常用分析方法所需要的數(shù)量等問題。目前主要的采集方法是通過插裝(instrumentation)或者采樣(sampling)的手段進(jìn)行。插裝方法是通過編譯或者鏈接手段在生成可執(zhí)行文件時(shí)插入性能采集的代碼,其優(yōu)點(diǎn)是確定性,易對(duì)應(yīng)到源碼,不會(huì)丟失性能數(shù)據(jù),但是開銷和性能數(shù)據(jù)的量往往巨大。采樣方法是通過定時(shí)器和硬件性能采集設(shè)備,定時(shí)采集性能數(shù)據(jù),如果采集頻率設(shè)置合理,則性能開銷相對(duì)較小,但對(duì)應(yīng)到源程序較為困難,且實(shí)現(xiàn)時(shí)存在多種問題。
發(fā)明內(nèi)容
本發(fā)明的目的旨在至少解決上述的技術(shù)缺陷之一。為達(dá)到上述目的,本發(fā)明一方面的實(shí)施例提出一種基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,包括以下步驟S101 :設(shè)置控制參數(shù);S102 :運(yùn)行待采集的程序;S103 :獲取當(dāng)前運(yùn)行的所述程序的函數(shù)調(diào)用上下文;S104 :如果獲取所述程序的函數(shù)調(diào)用上下文失敗,則構(gòu)建所述程序的函數(shù)調(diào)用上下文;S105 :通信插裝模塊對(duì)所述程序進(jìn)行插裝,采集所述程序的通信性能數(shù)據(jù),并對(duì)應(yīng)到觸發(fā)插裝的程序函數(shù)調(diào)用上下文;S106 :中斷所述程序的運(yùn)行;S107 :通過計(jì)算采樣模塊對(duì)所述程序進(jìn)行采樣,采集所述程序的計(jì)算性能數(shù)據(jù),并對(duì)應(yīng)到采樣捕獲的程序函數(shù)調(diào)用上下文;S108 :恢復(fù)所述程序的運(yùn)行;S109 :重復(fù)S105至S108步驟直到全部所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)采集完畢;S110 :對(duì)所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)進(jìn)行整理并輸出。根據(jù)本發(fā)明實(shí)施例的方法,通過合理的采樣和插裝混合的方式,避免采集開銷與通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)量過大,同時(shí)采用隨機(jī)輪換的方法解決了平臺(tái)硬件不足的問題。在本發(fā)明的一個(gè)實(shí)施例中,所述控制參數(shù)包括采樣頻率、緩沖區(qū)大小、采集事件列表。在本發(fā)明的一個(gè)實(shí)施例中,所述通信性能數(shù)據(jù)包括通信時(shí)間、通信頻度、通信消息量。在本發(fā)明的一個(gè)實(shí)施例中,所述通信插裝模塊還用于構(gòu)建通信拓?fù)?。在本發(fā)明的一個(gè)實(shí)施例中,所述計(jì)算性能數(shù)據(jù)包括計(jì)算時(shí)間、硬件性能讀數(shù)。在本發(fā)明的一個(gè)實(shí)施例中,所述通信插裝模塊對(duì)所述程序進(jìn)行插裝,包括所述通信插裝模塊在所述程序的預(yù)定插裝位置上插裝入采集代碼;當(dāng)所述程序運(yùn)行到所述預(yù)定插裝位置時(shí),采集所述程序的計(jì)算性能數(shù)據(jù)。為達(dá)到上述目的,本發(fā)明另一方面的實(shí)施例提出一種基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,包括控制模塊、獲取模塊、程序構(gòu)建模塊、中斷模塊、通信插裝模塊和計(jì)算采樣模塊,其中,所述控制模塊用于設(shè)置控制參數(shù),以及管理所述獲取模塊、所述程序構(gòu)建模塊、所述中斷模塊、所述通信插裝模塊和所述計(jì)算采樣模塊運(yùn)行,并在全部所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)采集完畢后對(duì)所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)進(jìn)行整理并輸出;所述獲取模塊,用于獲取所述待采集的程序及所述程序的函數(shù)調(diào)用上下文;所述程序構(gòu)建模塊,用于在所述獲取模塊獲取所述程序的函數(shù)調(diào)用上下文失敗時(shí)構(gòu)建所述程序的函數(shù)調(diào)用上下文;所述中斷模塊,用于中斷所述程序運(yùn)行,并在需要的時(shí)候恢復(fù)所述程序的運(yùn)行;所述通信插裝模塊,用于插裝到所述程序中,采集所述程序的通信性能數(shù)據(jù),并對(duì)應(yīng)到觸發(fā)插裝的程序函數(shù)調(diào)用上下文;所述計(jì)算采樣模塊,用于對(duì)所述程序進(jìn)行采樣,采集所述程序的計(jì)算性能數(shù)據(jù),并對(duì)應(yīng)到采樣捕獲的程序函數(shù)調(diào)用上下文。根據(jù)本發(fā)明實(shí)施例的方法,通過合理的采樣和插裝混合的方式,避免采集開銷與通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)量過大,同時(shí)采用隨機(jī)輪換的方法解決了平臺(tái)硬件不足的問題。在本發(fā)明的一個(gè)實(shí)施例中,所述控制參數(shù)包括采樣頻率、緩沖區(qū)大小、采集事件列表。
在本發(fā)明的一個(gè)實(shí)施例中,所述通信性能數(shù)據(jù)包括通信時(shí)間、通信頻度、通信消息量。在本發(fā)明的一個(gè)實(shí)施例中,所述通信插裝模塊還用于構(gòu)建通信拓?fù)洹T诒景l(fā)明的一個(gè)實(shí)施例中,所述計(jì)算性能數(shù)據(jù)包括計(jì)算時(shí)間、硬件性能讀數(shù)。在本發(fā)明的一個(gè)實(shí)施例中,所述通信插裝模塊對(duì)所述程序進(jìn)行插裝,包括所述通信插裝模塊在所述程序的預(yù)定插裝位置上插裝入采集代碼;當(dāng)所述程序運(yùn)行到所述預(yù)定插裝位置時(shí),采集所述程序的計(jì)算性能數(shù)據(jù)。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中圖1為根據(jù)本發(fā)明一個(gè)實(shí)施例的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法的流程圖;圖2為根據(jù)本發(fā)明一個(gè)實(shí)施例的插裝插件的工作示意圖;圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的CCT的邏輯接口樣例示意圖;圖4為根據(jù)本發(fā)明一個(gè)實(shí)施例的計(jì)算采集模塊的采集示意圖;以及圖5為根據(jù)本發(fā)明一個(gè)實(shí)施例的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置的框架圖。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的實(shí)施例,實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。圖1為本發(fā)明實(shí)施例的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法的流程圖。如圖1所示,根據(jù)本發(fā)明實(shí)施例的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,包括以下步驟步驟S101,設(shè)置控制參數(shù)。具體地,當(dāng)程序啟動(dòng)時(shí),通過預(yù)定義的初始化入口讀取配置文件,設(shè)置本次執(zhí)行需要采集的性能數(shù)據(jù)的控制參數(shù),包括采樣頻率、緩沖區(qū)大小和采集事件列表等。步驟S102,運(yùn)行待采集的程序。步驟S103,獲取當(dāng)前運(yùn)行的程序的函數(shù)調(diào)用上下文。在本發(fā)明的一個(gè)實(shí)施例中,獲取當(dāng)前運(yùn)行的程序的函數(shù)調(diào)用上下文,如果獲取程序的函數(shù)調(diào)用上下文失敗,則構(gòu)建程序的函數(shù)調(diào)用上下文。讀取程序狀態(tài)并依次執(zhí)行插裝庫中加載的采集插件的預(yù)處理邏輯。步驟S104,通信插裝模塊對(duì)程序進(jìn)行插裝,采集程序的通信性能數(shù)據(jù),并對(duì)應(yīng)到觸發(fā)插裝的程序函數(shù)調(diào)用上下文。在本發(fā)明的一個(gè)實(shí)施例中,通信插裝模塊采集每次通信所花費(fèi)的通信時(shí)間、并根據(jù)通信時(shí)間點(diǎn)來記錄通信的頻度,并將其存儲(chǔ)至當(dāng)前上下文環(huán)境。此外,通信插裝模塊通過通信原語的參數(shù),構(gòu)建局部的通信拓?fù)浣Y(jié)構(gòu),在終止時(shí)刻合并全局通信的拓?fù)浣Y(jié)構(gòu)。具體地,每個(gè)插裝插件包括一個(gè)初始化接口,一個(gè)預(yù)處理接口,一個(gè)后處理接口,以及一個(gè)終止接口。在插件被控制模塊加載和卸載時(shí),其初始化接口或終止接口分別會(huì)被調(diào)用。在每一個(gè)插裝點(diǎn)的前后,預(yù)處理和后處理的接口將分別被執(zhí)行。步驟S105,中斷程序的運(yùn)行。在本發(fā)明的一個(gè)實(shí)施例中,獲取當(dāng)前運(yùn)行的程序的函數(shù)調(diào)用上下文,如果獲取程序的函數(shù)調(diào)用上下文失敗,則構(gòu)建程序的函數(shù)調(diào)用上下文并進(jìn)行初始化處理,并讀取硬件計(jì)數(shù)與時(shí)鐘并設(shè)置下次采樣讀取內(nèi)容。步驟S106,通過計(jì)算采樣模塊對(duì)程序進(jìn)行采樣,采集程序的計(jì)算性能數(shù)據(jù),并對(duì)應(yīng)到采樣捕獲的程序函數(shù)調(diào)用上下文。具體地,通信插裝模塊首先在程序的預(yù)定插裝位置上插裝入采集代碼,該采樣代碼包括一個(gè)初始化接口,一個(gè)觸發(fā)接口,以及一個(gè)終止接口,采集代碼加載和卸載時(shí),其初始化接口或終止接口分別會(huì)被調(diào)用。當(dāng)程序運(yùn)行到預(yù)定插裝位置時(shí),觸發(fā)接口被調(diào)用采集程序的計(jì)算性能數(shù)據(jù)。其中,計(jì)算性能數(shù)據(jù)包括計(jì)算時(shí)間、硬件性能讀數(shù)。在本發(fā)明的一個(gè)實(shí)施例中,通信原語信息采集插件采集記錄每次通信的參數(shù)信息,包括通信類型、消息大小和各種規(guī)約操作數(shù)等,并將其存儲(chǔ)至當(dāng)前上下文環(huán)境。通信域采集插件通過通信域來達(dá)到隔離不同通信的目的。我們通過記錄通信域操作的原語來采集通信域相關(guān)信息并記錄到當(dāng)前上下文環(huán)境。步驟S107,恢復(fù)程序的運(yùn)行。通過重復(fù)上述步驟S104到S107直到采集全部通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)。步驟S108,對(duì)通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)進(jìn)行整理并輸出。圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的CCT的邏輯接口樣例示意圖。如圖3,調(diào)用上下文樹(Calling Context Tree,即CCT)來快速地比較兩個(gè)CCT的對(duì)應(yīng)節(jié)點(diǎn)以分析擴(kuò)展性問題。由于高性能應(yīng)用程序主要為fortran和C編寫,因此樹狀的結(jié)構(gòu)與源代碼的可以自然地關(guān)聯(lián)在一起。圖4中的每一個(gè)樹節(jié)點(diǎn)都表示一個(gè)調(diào)用上下文,可能代表一個(gè)子例程調(diào)用,也可能代表具體的代碼行。每一個(gè)節(jié)點(diǎn)都維護(hù)和記錄了該上下文發(fā)生的性能事件,包括總的花費(fèi)時(shí)間,通信時(shí)間,各個(gè)通信函數(shù)的調(diào)用等。由于命令式語言(ImperativeLanguage)編寫程序的執(zhí)行模式通常是嵌套執(zhí)行的,因此在程序執(zhí)行的任意一點(diǎn)都可以通過保存的調(diào)用者信息,從而恢復(fù)到入口點(diǎn)的過程調(diào)用鏈(backtrace)。Backtrace由一組程序計(jì)數(shù)器(ProgramCounter)的值所構(gòu)成,標(biāo)識(shí)了函數(shù)的調(diào)用層次和位置。根據(jù)本發(fā)明實(shí)施例的方法,通過合理的采樣和插裝混合的方式,避免采集開銷與通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)量過大,同時(shí)采用隨機(jī)輪換的方法解決了平臺(tái)硬件不足的問題,并且通過合理設(shè)置采樣頻率從而避免影像程序的性能,減少不必要的數(shù)據(jù)采集。另外,通過插裝的代碼的確定的位置觸發(fā)的確定性約束兩次插裝時(shí)間之間的采樣事件,從而增加采樣的準(zhǔn)確性,還通過采用插件的方式實(shí)現(xiàn)各個(gè)采集模塊,因此降低了采集模塊之間的耦合度,方便擴(kuò)展。圖5為根據(jù)本發(fā)明一個(gè)實(shí)施例的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置的框架圖。如圖5所示,根據(jù)本發(fā)明實(shí)施例的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,包括控制模塊100、獲取模塊200、程序構(gòu)建模塊300、中斷模塊400、通信插裝模塊500和計(jì)算采樣模塊600。具體地,控制模塊100用于設(shè)置控制參數(shù),以及管理獲取模塊200、程序構(gòu)建模塊300、中斷模塊400、通信插裝模塊500和計(jì)算采樣模塊600運(yùn)行,并在全部通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)采集完畢后對(duì)通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)進(jìn)行整理并輸出。在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)程序啟動(dòng)時(shí)通過預(yù)定義的初始化入口讀取配置文件,設(shè)置本次執(zhí)行需要采集的性能數(shù)據(jù)的控制參數(shù),包括采樣頻率、緩沖區(qū)大小和采集事件列表等。通過這些參數(shù),控制模塊100加載相應(yīng)的采集插件,并將執(zhí)行轉(zhuǎn)到用戶程序的執(zhí)行流程。在程序結(jié)束時(shí),控制模塊會(huì)和其他節(jié)點(diǎn)進(jìn)行同步,收集采集的數(shù)據(jù)經(jīng)格式化處理后輸出到硬盤存儲(chǔ)。獲取模塊200用于獲取待采集的程序及程序的函數(shù)調(diào)用上下文。程序構(gòu)建模塊300用于在獲取模塊獲取程序的函數(shù)調(diào)用上下文失敗時(shí)構(gòu)建程序的函數(shù)調(diào)用上下文。中斷模塊400用于中斷程序運(yùn)行,并在需要的時(shí)候恢復(fù)程序的運(yùn)行。通信插裝模塊500用于插裝到程序中,采集程序的通信性能數(shù)據(jù),并對(duì)應(yīng)到觸發(fā)插裝的程序函數(shù)調(diào)用上下文。在本發(fā)明的一個(gè)實(shí)施例中,通信插裝模塊采集每次通信所花費(fèi)的通信時(shí)間、并根據(jù)通信時(shí)間點(diǎn)來記錄通信的頻度,并將其存儲(chǔ)至當(dāng)前上下文環(huán)境。此外,通信插裝模塊通過通信原語的參數(shù),構(gòu)建局部的通信拓?fù)浣Y(jié)構(gòu),在終止時(shí)刻合并全局通信的拓?fù)浣Y(jié)構(gòu)。具體地,每個(gè)插裝插件包括一個(gè)初始化接口,一個(gè)預(yù)處理接口,一個(gè)后處理接口,以及一個(gè)終止接口。在插件被控制模塊加載和卸載時(shí),其初始化接口或終止接口分別會(huì)被調(diào)用。在每一個(gè)插裝點(diǎn)的前后,預(yù)處理和后處理的接口將分別被執(zhí)行。計(jì)算采樣模塊600用于對(duì)程序進(jìn)行采樣,采集程序的計(jì)算性能數(shù)據(jù),并對(duì)應(yīng)到采樣捕獲的程序函數(shù)調(diào)用上下文。具體地,通信插裝模塊首先在程序的預(yù)定插裝位置上插裝入采集代碼,該采樣代碼包括一個(gè)初始化接口,一個(gè)觸發(fā)接口,以及一個(gè)終止接口,采集代碼加載和卸載時(shí),其初始化接口或終止接口分別會(huì)被調(diào)用。當(dāng)程序運(yùn)行到預(yù)定插裝位置時(shí),觸發(fā)接口被調(diào)用采集程序的計(jì)算性能數(shù)據(jù)。其中,計(jì)算性能數(shù)據(jù)包括計(jì)算時(shí)間、硬件性能讀數(shù)。在本發(fā)明的一個(gè)實(shí)施例中,通信原語信息采集插件采集記錄每次通信的參數(shù)信息,包括通信類型、消息大小和各種規(guī)約操作數(shù)等,并將其存儲(chǔ)至當(dāng)前上下文環(huán)境。通信域采集插件通過通信域來達(dá)到隔離不同通信的目的。我們通過記錄通信域操作的原語來采集通信域相關(guān)信息并記錄到當(dāng)前上下文環(huán)境。根據(jù)本發(fā)明實(shí)施例的裝置,通過合理的采樣和插裝混合的方式,避免采集開銷與通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)量過大,同時(shí)采用隨機(jī)輪換的方法解決了平臺(tái)硬件不足的問題,并且通過合理設(shè)置采樣頻率從而避免影像程序的性能,減少不必要的數(shù)據(jù)采集。另外,通過插裝的代碼的確定的位置觸發(fā)的確定性約束兩次插裝時(shí)間之間的采樣事件,從而增加采樣的準(zhǔn)確性,還通過采用插件的方式實(shí)現(xiàn)各個(gè)采集模塊,因此降低了采集模塊之間的耦合度,方便擴(kuò)展。應(yīng)當(dāng)理解,本發(fā)明的裝置實(shí)施例中的各個(gè)模塊的具體操作過程可與方法實(shí)施例中的描述相同,此處不再詳細(xì)描述。盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在不脫離本發(fā)明的原理和宗旨的情況下在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。
權(quán)利要求
1.一種基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,其特征在于,包括以下步驟: S101:設(shè)置控制參數(shù); S102:運(yùn)行待米集的程序; S103:獲取當(dāng)前運(yùn)行的所述程序的函數(shù)調(diào)用上下文; S104:如果獲取所述程序的函數(shù)調(diào)用上下文失敗,則構(gòu)建所述程序的函數(shù)調(diào)用上下文; S105:通信插裝模塊對(duì)所述程序進(jìn)行插裝,采集所述程序的通信性能數(shù)據(jù),并對(duì)應(yīng)到觸發(fā)插裝的函數(shù)調(diào)用上下文; S106:中斷所述程序的運(yùn)行; S107:通過計(jì)算采樣模塊對(duì)所述程序進(jìn)行采樣,采集所述程序的計(jì)算性能數(shù)據(jù),并對(duì)應(yīng)到采樣捕獲的程序函數(shù)調(diào)用上下文; S108:恢復(fù)所述程序的運(yùn)行;S109:重復(fù)S105至S108步驟直到全部所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)采集完畢; S110:對(duì)所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)進(jìn)行整理并輸出。
2.如權(quán)利要求1所述 的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,其特征在于,所述控制參數(shù)包括:采樣頻率、緩沖區(qū)大小、采集事件列表。
3.如權(quán)利要求1所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,其特征在于,所述通信性能數(shù)據(jù)包括:通信時(shí)間、通信頻度、通信消息量。
4.如權(quán)利要求1或3所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,其特征在于,所述通信插裝模塊還用于構(gòu)建通信拓?fù)洹?br>
5.如權(quán)利要求1所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,其特征在于,所述計(jì)算性能數(shù)據(jù)包括:計(jì)算時(shí)間、硬件性能讀數(shù)。
6.如權(quán)利要求1所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法,其特征在于,所述通信插裝模塊對(duì)所述程序進(jìn)行插裝,包括: 所述通信插裝模塊在所述程序的預(yù)定插裝位置上插裝入采集代碼; 當(dāng)所述程序運(yùn)行到所述預(yù)定插裝位置時(shí),采集所述程序的計(jì)算性能數(shù)據(jù)。
7.一種基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,其特征在于,包括控制模塊、獲取模塊、程序構(gòu)建模塊、中斷模塊、通信插裝模塊和計(jì)算采樣模塊,其中, 所述控制模塊用于設(shè)置控制參數(shù),以及管理所述獲取模塊、所述程序構(gòu)建模塊、所述中斷模塊、所述通信插裝模塊和所述計(jì)算采樣模塊運(yùn)行,并在全部所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)采集完畢后對(duì)所述通信性能數(shù)據(jù)和所述計(jì)算性能數(shù)據(jù)進(jìn)行整理并輸出;所述獲取模塊,用于獲取所述待采集的程序及所述程序的函數(shù)調(diào)用上下文; 所述程序構(gòu)建模塊,用于在所述獲取模塊獲取所述程序的函數(shù)調(diào)用上下文失敗時(shí)構(gòu)建所述程序的函數(shù)調(diào)用上下文; 所述中斷模塊,用于中斷所述程序運(yùn)行,并在需要的時(shí)候恢復(fù)所述程序的運(yùn)行; 所述通信插裝模塊,用于插裝到所述程序中,采集所述程序的通信性能數(shù)據(jù),并對(duì)應(yīng)到觸發(fā)插裝的程序函數(shù)調(diào)用上下文; 所述計(jì)算采樣模塊,用于對(duì)所述程序進(jìn)行采樣,采集所述程序的計(jì)算性能數(shù)據(jù),并對(duì)應(yīng)到采樣捕獲的程序函數(shù)調(diào)用上下文。
8.如權(quán)利要求7所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,其特征在于,所述控制參數(shù)包括:采樣頻率、緩沖區(qū)大小、采集事件列表。
9.如權(quán)利要求7所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,其特征在于,所述通信性能數(shù)據(jù)包括:通信時(shí)間、通信頻度、通信消息量。
10.如權(quán)利要求7或9所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,其特征在于,所述通信插裝模塊還用于構(gòu)建通信拓?fù)洹?br>
11.如權(quán)利要求7所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,其特征在于,所述計(jì)算性能數(shù)據(jù)包括:計(jì)算時(shí)間、硬件性能讀數(shù)。
12.如權(quán)利要求7所述的基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集裝置,其特征在于,所述通信插裝模塊對(duì)所述程序進(jìn)行插裝,包括: 所述通信插裝模塊在所述程序的預(yù)定插裝位置上插裝入采集代碼; 當(dāng)所述程序運(yùn)行到所 述預(yù)定插裝位置時(shí),采集所述程序的計(jì)算性能數(shù)據(jù)。
全文摘要
本發(fā)明提出一種基于高性能平臺(tái)的并行程序性能數(shù)據(jù)采集方法及裝置。其中,方法包括S101設(shè)置控制參數(shù);S102運(yùn)行待采集的程序;S103獲取當(dāng)前運(yùn)行的程序的函數(shù)調(diào)用上下文;S104通信插裝模塊對(duì)程序進(jìn)行插裝,采集程序的通信性能數(shù)據(jù),并對(duì)應(yīng)到觸發(fā)插裝的程序函數(shù)調(diào)用上下文;S105中斷程序的運(yùn)行;S106通過計(jì)算采樣模塊對(duì)程序進(jìn)行采樣,采集程序的計(jì)算性能數(shù)據(jù),并對(duì)應(yīng)到采樣捕獲的程序函數(shù)調(diào)用上下文;S107恢復(fù)程序的運(yùn)行;S108步驟S104到S107直到采集全部通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù);S109對(duì)通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)進(jìn)行整理并輸出。根據(jù)本發(fā)明實(shí)施例的方法,通過合理的采樣和插裝混合的方式,避免采集開銷與通信性能數(shù)據(jù)和計(jì)算性能數(shù)據(jù)量過大。
文檔編號(hào)G06F9/48GK103077080SQ20131000553
公開日2013年5月1日 申請(qǐng)日期2013年1月7日 優(yōu)先權(quán)日2013年1月7日
發(fā)明者翟琰, 翟季冬, 陳力維, 陳文光 申請(qǐng)人:清華大學(xué)