新四季網

動態編譯調度方法及裝置與流程

2024-03-31 21:38:05


本發明涉及虛擬機編譯調度技術領域,尤其涉及一種動態編譯調度方法及裝置。



背景技術:

虛擬機(VM,Virtual Machine)主要通過軟體或者輔以少量硬體支持的方法虛擬出一臺計算機,其依託於本地的物理機,通過其執行引擎對給定的虛擬機指令序列在本地機器上模擬執行。虛擬機的執行引擎可以由解釋器來實現,解釋器以一條虛擬機指令為單位進行取指令、解碼和執行。但單純的解釋執行性能低下,因此虛擬機中引入動態編譯系統來提高其性能。編譯器是動態編譯系統的核心,以一組連續的虛擬機指令序列為單位整體編譯成本地CPU指令序列,稱為本地方法,然後由硬體直接執行翻譯後的本地方法。編譯器由於消除了重複的取指令和解碼的過程,同時又在翻譯時進行大量優化,因此其性能往往是解釋器的10倍以上。解釋執行期間,虛擬機會偵測程序中執行頻度較高的方法,稱為熱點方法,編譯器是在程序運行過程中,對虛擬機所偵測到的熱點方法進行動態編譯的,故又將其稱為即時(JIT,Just-in-time)編譯器。

因此,現代虛擬機中一般同時包含解釋器和即時編譯器,並採用混合的運行模式來執行應用程式。對於程序中的任意一個方法m,均由解釋器開始執行。若方法m的執行頻度較高,則虛擬機調用即時編譯器將方法m編譯成本地方法,隨後將由硬體直接執行編譯生成的本地方法。這種由解釋執行和硬體直接執行相混合的模式稱為混合運行模式。

對於採用混合運行模式的虛擬機,程序中所有方法均由解釋器開始執行。 解釋執行期間,虛擬機會偵測程序中的熱點方法。當某個熱點方法被虛擬機識別後,該熱點方法會被加入到編譯隊列中等待編譯。當系統中的編譯隊列非空時,即時編譯器會按照熱點方法被加入編譯隊列的先後順序,優先編譯先加入隊列的熱點方法。

目前,虛擬機主要採用基於熱點閾值的熱點識別策略來偵測程序中的熱點方法,即當程序中方法m的執行次數超過熱點閾值時,則判定方法m為程序中的熱點方法,熱點閾值越小,程序中被識別為熱點的方法也越多,由此帶來的編譯開銷也越大。

在實現本發明的過程中,發明人發現現有技術中至少存在如下技術問題:

現有的對程序熱點的識別是根據程序過去的歷史信息來進行預測的,不能精確識別出程序中的熱點,有些方法可能為被誤識別為熱點方法,從而導致虛擬機動態編譯的開銷增大,動態編譯性能降低。



技術實現要素:

本發明提供的動態編譯調度方法及裝置,能夠降低虛擬機動態編譯的開銷,提升動態編譯性能。

第一方面,本發明提供一種動態編譯調度方法,包括:

獲取當前編譯隊列的長度,其中,所述當前編譯隊列為熱點方法隊列;

若所述當前編譯隊列的長度大於編譯過載閾值,則獲取所述當前編譯隊列中各熱點方法的綜合活躍度,刪除綜合活躍度最低的至少一個熱點方法,並對所述當前編譯隊列中剩餘的熱點方法進行編譯調度;

若所述當前編譯隊列的長度不大於編譯過載閾值,則對所述當前編譯隊列中的熱點方法進行編譯調度;

將編譯調度時所選定的熱點方法從所述當前編譯隊列中移除,並進行編譯。

第二方面,本發明提供一種動態編譯調度裝置,包括:

第一獲取單元,用於獲取當前編譯隊列的長度,其中,所述當前編譯隊列為熱點方法隊列;

第二獲取單元,用於在所述當前編譯隊列的長度大於編譯過載閾值時,獲取所述當前編譯隊列中各熱點方法的綜合活躍度;

刪除單元,用於刪除綜合活躍度最低的至少一個熱點方法;

第一編譯調度單元,用於對所述當前編譯隊列中剩餘的熱點方法進行編譯調度;

第二編譯調度單元,用於在所述當前編譯隊列的長度不大於編譯過載閾值時,對所述當前編譯隊列中的熱點方法進行編譯調度;

移除單元,用於將編譯調度時所選定的熱點方法從所述當前編譯隊列中移除;

編譯單元,用於對所述移除單元所移除的熱點方法進行編譯。

本發明實施例提供的動態編譯調度方法及裝置,在當前編譯隊列的長度大於編譯過載閾值時,先刪除綜合活躍度最低的部分熱點方法,然後再對當前編譯隊列中剩餘的熱點方法進行編譯調度,並將編譯調度時所選定的熱點方法從當前編譯隊列中移除後進行編譯。與現有技術相比,本發明能夠清除編譯隊列中綜合活躍度較低的熱點方法,有效降低虛擬機動態編譯的開銷;而且只有當虛擬機處於編譯過載的狀態時才進行熱點方法的清除,可以避免編譯隊列中的熱點方法被過度刪除,從而在整體上提升虛擬機的動態編譯性能。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描 述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。

圖1為本發明動態編譯調度方法實施例一的流程圖;

圖2為本發明動態編譯調度方法實施例二的流程圖;

圖3為本發明動態編譯調度裝置實施例一的結構示意圖;

圖4為本發明動態編譯調度裝置實施例二的結構示意圖。

具體實施方式

為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。

本發明提供一種動態編譯調度方法,圖1為本發明動態編譯調度方法實施例一的流程圖,如圖1所示,本實施例的方法包括:

S11、獲取當前編譯隊列的長度,其中,所述當前編譯隊列為熱點方法隊列。

這裡的方法指的是面向對象程序設計中的方法,本質上是程序中的一個代碼片段,是虛擬機進行編譯的最小單元。因此,本文中「方法」的概念可以擴展為程序中能夠被編譯的最小代碼片段,例如,面向過程的程式語言中的函數,以及Qemu等二進位翻譯器中的基本塊等。

S12、若所述當前編譯隊列的長度大於編譯過載閾值,則獲取所述當前編譯隊列中各熱點方法的綜合活躍度,刪除綜合活躍度最低的至少一個熱點方法,並對所述當前編譯隊列中剩餘的熱點方法進行編譯調度。

S13、若所述當前編譯隊列的長度不大於編譯過載閾值,則對所述當前編譯 隊列中的熱點方法進行編譯調度。

S14、將編譯調度時所選定的熱點方法從所述當前編譯隊列中移除,並進行編譯。

本發明實施例提供的動態編譯調度方法,在當前編譯隊列的長度大於編譯過載閾值時,先刪除綜合活躍度最低的部分熱點方法,然後再對當前編譯隊列中剩餘的熱點方法進行編譯調度,並將編譯調度時所選定的熱點方法從當前編譯隊列中移除後進行編譯。與現有技術相比,本發明能夠清除編譯隊列中綜合活躍度較低的熱點方法,有效降低虛擬機動態編譯的開銷;而且只有當虛擬機處於編譯過載的狀態時才進行熱點方法的清除,可以避免編譯隊列中的熱點方法被過度刪除,從而在整體上提升虛擬機的動態編譯性能。

本發明實施例還提供一種動態編譯調度方法,圖2為本發明動態編譯調度方法實施例二的流程圖,如圖2所示,本實施例的方法包括:

S21、虛擬機啟動,完成對解釋器、編譯器的初始化。

S22、解釋器初始化完畢後,開始解釋執行程序中的方法。

S23、編譯器初始化完畢後進入等待編譯的狀態。

S24、解釋器在解釋執行方法的同時,偵測方法是否屬於熱點方法,若該方法不屬於熱點方法,則繼續解釋執行;若該方法屬於熱點方法,則執行步驟S25。

具體地,解釋器偵測方法的執行次數是否超過熱點閾值,若不超過熱點閾值,則判定該方法不屬於熱點方法;若超過熱點閾值,則判定該方法屬於熱點方法。

S25、解釋器將熱點方法加入編譯隊列中,同時喚醒編譯器,觸發編譯。

S26、編譯器獲取當前編譯隊列的長度,其中,所述當前編譯隊列為熱點方法隊列。

S27、編譯器判斷當前編譯隊列的長度是否大於編譯過載閾值,若當前編譯隊列的長度大於編譯過載閾值,則執行步驟S28~S31;若當前編譯隊列的長度不大於編譯過載閾值,則執行步驟S32。

其中,所述編譯過載閾值為所述編譯器預先設定的。

S28、編譯器獲取所述當前編譯隊列中各熱點方法的全局活躍信息。

具體地,編譯器按照如下公式計算獲得當前編譯隊列中各熱點方法的全局活躍信息:

global_activeness(m)=execute_count(m)

其中,global_activeness(m)為熱點方法m的全局活躍信息,execute_count(m)為熱點方法m的總執行次數,execute_count(m)=invocation_count(m)+loop_count(m),invocation_count(m)為熱點方法m被調用的次數,loop_count(m)為熱點方法m內部循環迭代的次數。

S29、編譯器獲取所述當前編譯隊列中各熱點方法的當前局部活躍信息;

具體地,編譯器按照如下公式計算獲得當前編譯隊列中各熱點方法的當前局部活躍信息:

其中,local_activeness(m)為熱點方法m的當前局部活躍信息,Δt為當前時刻前的某一時間段長度,Δexecute(m)為當前時刻前的Δt時間段內熱點方法m的執行次數,Δexecute(m)=Δinvocation_count(m)+Δloop_count(m),Δinvocation_count(m)為當前時刻前的Δt時間段內熱點方法m被調用的次數,Δloop_count(m)為當前時刻前的Δt時間段內熱點方法m內部循環迭代的次數。

S30、根據所述全局活躍信息和當前局部活躍信息,計算所述當前編譯隊列中各熱點方法的綜合活躍度。

具體地,編譯器按照如下公式計算獲得當前編譯隊列中各熱點方法的綜合活躍度:

activeness(m)=global_activeness×[local_activeness(m)+1]

其中,activeness(m)為當前編譯隊列中熱點方法m的綜合活躍度,global_activeness(m)為熱點方法m的全局活躍信息,local_activeness(m)為熱點方法m的當前局部活躍信息。

S31、編譯器從所述當前編譯隊列中刪除綜合活躍度最低的k個熱點方法。

其中,k可以為預先設置的常數,也可以等於當前編譯隊列的長度乘以Ratio後取整,其中,Ratio為所述編譯器預先設定的,0<Ratio<1;

值得說明的是,若當前編譯隊列的長度乘以Ratio所得的值小於1,則k取1;若當前編譯隊列的長度乘以Ratio所得的值為大於1的小數,則k為當前編譯隊列的長度乘以Ratio所得的值向下取整。

S32、編譯器對所述當前編譯隊列中的熱點方法進行編譯調度。

S33、編譯器將編譯調度時所選定的熱點方法從所述當前編譯隊列中移除。

S34、編譯器對所移除的熱點方法進行編譯。

S35、編譯器判斷當前編譯隊列是否為空,若不為空,則返回執行步驟S26;若為空,則返回步驟S23,編譯器進入等待編譯的狀態。

本發明實施例提供的動態編譯調度方法,在當前編譯隊列的長度大於編譯過載閾值時,先根據當前編譯隊列中各熱點方法的全局活躍信息和當前局部活躍信息,計算各熱點方法綜合活躍度,並刪除綜合活躍度最低的部分熱點方法,然後再對當前編譯隊列中剩餘的熱點方法進行編譯調度,並將編譯調度時所選定的熱點方法從當前編譯隊列中移除後進行編譯,直至編譯隊列為空。與現有技術相比,本發明能夠清除編譯隊列中綜合活躍度較低的熱點方法,有效降低 虛擬機動態編譯的開銷;而且只有當虛擬機處於編譯過載的狀態時才進行熱點方法的清除,可以避免編譯隊列中的熱點方法被過度刪除,從而在整體上提升虛擬機的動態編譯性能。

本發明實施例提供一種動態編譯調度裝置,圖3為本發明動態編譯調度裝置實施例一的結構示意圖,如圖3所示,本實施例的裝置包括:

第一獲取單元11,用於獲取當前編譯隊列的長度,其中,所述當前編譯隊列為熱點方法隊列;

這裡的方法指的是面向對象程序設計中的方法,本質上是程序中的一個代碼片段,是虛擬機進行編譯的最小單元。因此,本文中「方法」的概念可以擴展為程序中能夠被編譯的最小代碼片段,例如,面向過程的程式語言中的函數,以及Qemu等二進位翻譯器中的基本塊等。

第二獲取單元12,用於在所述當前編譯隊列的長度大於編譯過載閾值時,獲取所述當前編譯隊列中各熱點方法的綜合活躍度;

刪除單元13,用於刪除綜合活躍度最低的至少一個熱點方法;

第一編譯調度單元14,用於對所述當前編譯隊列中剩餘的熱點方法進行編譯調度;

第二編譯調度單元15,用於在所述當前編譯隊列的長度不大於編譯過載閾值時,對所述當前編譯隊列中的熱點方法進行編譯調度;

移除單元16,用於將編譯調度時所選定的熱點方法從所述當前編譯隊列中移除;

編譯單元17,用於對所述移除單元所移除的熱點方法進行編譯。

本發明實施例提供的動態編譯調度裝置,在當前編譯隊列的長度大於編譯過載閾值時,先刪除綜合活躍度最低的部分熱點方法,然後再對當前編譯隊列 中剩餘的熱點方法進行編譯調度,並將編譯調度時所選定的熱點方法從當前編譯隊列中移除後進行編譯。與現有技術相比,本發明能夠清除編譯隊列中綜合活躍度較低的熱點方法,有效降低虛擬機動態編譯的開銷;而且只有當虛擬機處於編譯過載的狀態時才進行熱點方法的清除,可以避免編譯隊列中的熱點方法被過度刪除,從而在整體上提升虛擬機的動態編譯性能。

圖4為本發明動態編譯調度裝置實施例二的結構示意圖,如圖4所示,可選地,所述第二獲取單元12可以包括:

第一獲取模塊121,用於獲取所述當前編譯隊列中各熱點方法的全局活躍信息;

第二獲取模塊122,用於獲取所述當前編譯隊列中各熱點方法的當前局部活躍信息;

計算模塊123,用於根據所述全局活躍信息和當前局部活躍信息,計算所述當前編譯隊列中各熱點方法的綜合活躍度。

可選地,所述第一獲取模塊121,用於按照如下公式計算獲得當前編譯隊列中各熱點方法的全局活躍信息:

global_activeness(m)=execute_count(m)

其中,global_activeness(m)為熱點方法m的全局活躍信息,execute_count(m)為熱點方法m的總執行次數,execute_count(m)=invocation_count(m)+loop_count(m),invocation_count(m)為熱點方法m被調用的次數,loop_count(m)為熱點方法m內部循環迭代的次數。

可選地,所述第二獲取模塊122,用於按照如下公式計算獲得當前編譯隊列中各熱點方法的當前局部活躍信息:

其中,local_activeness(m)為熱點方法m的當前局部活躍信息,Δt為當前時刻前的某一時間段長度,Δexecute(m)為當前時刻前的Δt時間段內熱點方法m的執行次數,Δexecute(m)=Δinvocation_count(m)+Δloop_count(m),Δinvocation_count(m)為當前時刻前的Δt時間段內熱點方法m被調用的次數,Δloop_count(m)為當前時刻前的Δt時間段內熱點方法m內部循環迭代的次數。

可選地,所述計算模塊123,用於按照如下公式計算獲得當前編譯隊列中各熱點方法的綜合活躍度:

activeness(m)=global_activeness×[local_activeness(m)+1]

其中,activeness(m)為當前編譯隊列中熱點方法m的綜合活躍度,global_activeness(m)為熱點方法m的全局活躍信息,local_activeness(m)為熱點方法m的當前局部活躍信息。

可選地,所述刪除單元13,用於刪除綜合活躍度最低的k個熱點方法。

其中,k可以是預先設置的常數,也可以等於當前編譯隊列的長度乘以Ratio後取整,其中,Ratio為所述編譯器預先設定的,0<Ratio<1;

值得說明的是,若當前編譯隊列的長度乘以Ratio所得的值小於1,則k取1;若當前編譯隊列的長度乘以Ratio所得的值為大於1的小數,則k為當前編譯隊列的長度乘以Ratio所得的值向下取整。

本發明實施例提供的動態編譯調度裝置,在當前編譯隊列的長度大於編譯過載閾值時,先根據當前編譯隊列中各熱點方法的全局活躍信息和當前局部活躍信息,計算各熱點方法綜合活躍度,並刪除綜合活躍度最低的部分熱點方法,然後再對當前編譯隊列中剩餘的熱點方法進行編譯調度,並將編譯調度時所選定的熱點方法從當前編譯隊列中移除後進行編譯,直至編譯隊列為空。與現有技術相比,本發明能夠清除編譯隊列中綜合活躍度較低的熱點方法,有效降低 虛擬機動態編譯的開銷;而且只有當虛擬機處於編譯過載的狀態時才進行熱點方法的清除,可以避免編譯隊列中的熱點方法被過度刪除,從而在整體上提升虛擬機的動態編譯性能。

本發明實施例動態編譯調度方法及裝置,可以適用於在JAVA等高級語言虛擬機中進行動態編譯調度,但不僅限於此。

本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過電腦程式來指令相關的硬體來完成,所述的程序可存儲於一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光碟、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。

以上所述,僅為本發明的具體實施方式,但本發明的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本發明揭露的技術範圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護範圍之內。因此,本發明的保護範圍應該以權利要求的保護範圍為準。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀