国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      混合系統(tǒng)中的方法調(diào)用的優(yōu)先執(zhí)行的制作方法

      文檔序號:6533276閱讀:134來源:國知局
      混合系統(tǒng)中的方法調(diào)用的優(yōu)先執(zhí)行的制作方法
      【專利摘要】在一個方面中,基于親和性的優(yōu)先調(diào)用技術(shù)可以在具有異構(gòu)平臺的混合系統(tǒng)中提高分布式應(yīng)用的性能。可以在運(yùn)行時攔截或捕獲在處理器上執(zhí)行的程序中的代碼段。在所述混合系統(tǒng)中選擇用于執(zhí)行所述代碼段的平臺,所述平臺被確定為在所述混合系統(tǒng)中的多個平臺中以最佳效率運(yùn)行所述代碼段。在被確定為以最佳效率運(yùn)行所述代碼段的所選平臺上動態(tài)執(zhí)行所述代碼段。
      【專利說明】混合系統(tǒng)中的方法調(diào)用的優(yōu)先執(zhí)行

      【技術(shù)領(lǐng)域】
      [0001] 本申請一般地涉及具有異構(gòu)處理器的計(jì)算機(jī)和混合計(jì)算系統(tǒng),更具體地說,涉及 在處理器上執(zhí)行代碼以便提高混合系統(tǒng)中的性能。

      【背景技術(shù)】
      [0002] 計(jì)算系統(tǒng)可以包含異構(gòu)處理器。例如,諸如圖形處理單元(GPU)、現(xiàn)場可編程 門陣列(FPGA)之類的通用和專用處理器可以共同組成計(jì)算系統(tǒng)?;旌舷到y(tǒng)的另一個 實(shí)例是來自位于紐約阿蒙克的國際機(jī)器公司(IBM?)的 zEnterprise BladeCenter Extension (zBX)基礎(chǔ)架構(gòu),該基礎(chǔ)架構(gòu)包括系統(tǒng)Z196、X86刀片和Power7刀片;Z196和刀 片通過專用網(wǎng)絡(luò)連接。隨著處理海量數(shù)據(jù)和嚴(yán)苛CPU周期的商業(yè)工作負(fù)載的出現(xiàn),越來越 多的成功應(yīng)用可以受益于在混合系統(tǒng)上運(yùn)行。
      [0003] 在這些混合系統(tǒng)中,數(shù)據(jù)局部性是確定軟件性能的一個因素。數(shù)據(jù)局部性指應(yīng)用 請求的數(shù)據(jù)優(yōu)先地來自使用數(shù)據(jù)的位置的本地文件系統(tǒng)。存在利用數(shù)據(jù)局部性提高分布式 軟件性能的已知解決方案。但是,這些解決方案沒有考慮與混合系統(tǒng)關(guān)聯(lián)的其它類型的局 部性。


      【發(fā)明內(nèi)容】

      [0004] 可以提供用于在具有異構(gòu)平臺的混合系統(tǒng)中運(yùn)行分布式程序的方法和系統(tǒng)。在一 個方面,一種用于在具有異構(gòu)平臺的混合系統(tǒng)中運(yùn)行分布式程序的方法可以包括在處理器 上執(zhí)行的程序的運(yùn)行時中捕獲程序的方法調(diào)用。所述方法還可以包括針對一種或多種平臺 特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號引用。所述方法還可以包括基于與所述 一種或多種平臺特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺特定的實(shí)現(xiàn)中選擇 一種平臺特定的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺特定的實(shí)現(xiàn)在所述混合系 統(tǒng)中的相應(yīng)一個或多個平臺上運(yùn)行的高效程度。所述方法還可以包括返回對所選擇的平臺 特定的實(shí)現(xiàn)的直接引用。所述方法還還可以包括使用所返回的對所選擇的平臺特定的實(shí)現(xiàn) 的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián)的所述符號引用。
      [0005] 在另一個方面,一種用于基于親和性的優(yōu)先(preferential)調(diào)用技術(shù)的在具有 異構(gòu)平臺的混合系統(tǒng)中提高分布式應(yīng)用性能的方法可以包括在運(yùn)行時攔截在處理器上執(zhí) 行的程序中的代碼段。所述方法還可以包括確定所述混合系統(tǒng)中用于執(zhí)行所述代碼段的平 臺,所述平臺被確定為在所述混合系統(tǒng)中的多個平臺中以最佳效率運(yùn)行所述代碼段??梢?在被確定為以最佳效率運(yùn)行所述代碼段的所述平臺上動態(tài)地執(zhí)行所述代碼段。
      [0006] 在一個方面,一種用于在混合系統(tǒng)中運(yùn)行分布式程序的系統(tǒng)可以包括所述混合系 統(tǒng)中運(yùn)行應(yīng)用程序的處理器?;谟H和性的優(yōu)先調(diào)用模塊可以可操作以在運(yùn)行時攔截程序 的方法調(diào)用。所述基于親和性的優(yōu)先調(diào)用模塊可以還可操作以針對一種或多種平臺特定的 實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號引用。所述基于親和性的優(yōu)先調(diào)用模塊可以還 可操作以基于與所述一種或多種平臺特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平 臺特定的實(shí)現(xiàn)中選擇一種平臺特定的實(shí)現(xiàn)。所述親和性度量指示所述一種或多種平臺特定 的實(shí)現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一個或多個平臺上運(yùn)行的高效程度。所述基于親和性的優(yōu) 先調(diào)用模塊可以還可操作以使用對所選擇的平臺特定的實(shí)現(xiàn)的直接引用替換與所捕獲的 方法調(diào)用關(guān)聯(lián)的所述符號引用。
      [0007] 還可以提供一種存儲指令程序的計(jì)算機(jī)可讀存儲介質(zhì),所述指令程序可由機(jī)器執(zhí) 行以便執(zhí)行在此描述的一種或多種方法。
      [0008] 下面參考附圖詳細(xì)描述各種實(shí)施例的進(jìn)一步特性以及結(jié)構(gòu)和操作。在附圖中,相 同的參考標(biāo)號指示相同或功能類似的元件。

      【專利附圖】

      【附圖說明】
      [0009] 圖1示出本公開的一個實(shí)施例中的優(yōu)先方法調(diào)用的一個具體實(shí)例;
      [0010] 圖2示出本公開的一個實(shí)施例中的親和性表的一個實(shí)例數(shù)據(jù)結(jié)構(gòu);
      [0011] 圖3示出其中將一個實(shí)施例中的本公開的優(yōu)先方法調(diào)用應(yīng)用于Java?加速原型的 一個實(shí)例方案;
      [0012] 圖4示出可以利用本公開的優(yōu)先方法調(diào)用的另一個實(shí)例方案;
      [0013] 圖5示出其中在運(yùn)行時將數(shù)學(xué)密集型功能卸載到Power平臺的一個實(shí)例方案;
      [0014] 圖6示出可以在本公開的一個實(shí)施例中實(shí)現(xiàn)優(yōu)先方法執(zhí)行系統(tǒng)的一個實(shí)例計(jì)算 機(jī)或處理系統(tǒng)的示意圖。

      【具體實(shí)施方式】
      [0015] 在本公開中,混合系統(tǒng)通常指包含通用和專用計(jì)算平臺的異構(gòu)分布式系統(tǒng)。因?yàn)?混合系統(tǒng)可以用作靈活平臺以便在性價比方面優(yōu)化工作負(fù)載,所以軟件應(yīng)用可以受益于在 混合系統(tǒng)中運(yùn)行。例如,對于在IBM? ZBX上運(yùn)行的應(yīng)用,盡管在安全性和可靠性方面具 有優(yōu)先級的組件可以放在Z196芯片上,但在計(jì)算方面具有優(yōu)先級的組件可以放在X86或 Power7微處理器刀片上。
      [0016] 在一個實(shí)施例中,本公開通過考慮功能局部性提高混合系統(tǒng)中的性能。在本公開 中,功能局部性指執(zhí)行的功能(或代碼)優(yōu)先地是最適合于特定平臺的版本。在本公開的 一個實(shí)施例中,平臺可以包含硬件和軟件兩者。在本公開的一個實(shí)施例中,"功能局部性"涉 及平臺。例如,一般而言IBM? Power平臺比IBM? Z平臺更好地支持浮點(diǎn)計(jì)算。因此, 在具有Z和Power平臺的混合系統(tǒng)中,可以為具有重要浮點(diǎn)計(jì)算的功能提供兩個版本,分別 是一個用于Z而另一個用于Power。盡管Power版本具有用于浮點(diǎn)計(jì)算的直接調(diào)用,但Z版 本可以使用某種浮點(diǎn)仿真加速。利用功能局部性可以明顯提高混合系統(tǒng)中的軟件性能。
      [0017] 在本公開的一個實(shí)施例中,公開一種在此稱為"優(yōu)先方法調(diào)用"的技術(shù),其可以提 高在混合系統(tǒng)中運(yùn)行的軟件性能。在一個方面,優(yōu)先方法調(diào)用是"基于親和性的優(yōu)先方法調(diào) 用"技術(shù),其可以提高混合系統(tǒng)中的分布式應(yīng)用的性能。在該技術(shù)中,可以基于比較方法在 不同平臺上的親和性,進(jìn)行優(yōu)先方法調(diào)用。方法、功能或過程指用于在處理器或平臺上執(zhí)行 的編程模塊或一組指令。此外,本公開的方法可以應(yīng)用于程序中的代碼段、工作單元等;因 此,在此描述的方法無需限于應(yīng)用程序中的"方法"本身。
      [0018] 在一個實(shí)施例中,本公開中的親和性指在一種類型的平臺上運(yùn)行代碼段的效率, 例如平臺運(yùn)行給定功能的良好程度如何。例如,方法在平臺上的親和性表征該方法在平臺 上執(zhí)行的高效程度??梢杂煞椒ǖ墓逃心J胶推脚_特征決定該效率。方法可以在其中該方 法具有最佳親和性的平臺上動態(tài)執(zhí)行。因此,例如軟件方法調(diào)用可以在混合系統(tǒng)或具有異 構(gòu)平臺的系統(tǒng)的不同處理器中動態(tài)執(zhí)行。在本公開的一個實(shí)施例中,基于親和性的方法確 定應(yīng)該在異構(gòu)平臺的哪一處理器上執(zhí)行軟件或代碼段。這樣,例如可以通過在分布式系統(tǒng) 的應(yīng)用級別解決優(yōu)化,優(yōu)化應(yīng)用程序的運(yùn)行。
      [0019] 這種基于親和性的執(zhí)行技術(shù)還可以應(yīng)用于數(shù)據(jù)讀取,其中優(yōu)選讀取具有更好局部 性的數(shù)據(jù)。在本公開的一個實(shí)施例中,方法親和性考慮數(shù)據(jù)局部性。在本公開的一個實(shí)施 例中,可以以脫機(jī)和聯(lián)機(jī)方式更新親和性。在此公開的方法的優(yōu)點(diǎn)包括利用混合系統(tǒng)中的 隱式差異,以便在可以最適合工作項(xiàng)目的位置上執(zhí)行工作項(xiàng)目。
      [0020] 例如,考慮IBM? zBX。IBM? ZBX是包括Z和Power平臺的混合系統(tǒng)。需要 訪問存儲在Z上的大量數(shù)據(jù)的方法可以通過因?yàn)閿?shù)據(jù)局部性而在Z上執(zhí)行,具有較高親和 性。如果這些方法在Power上運(yùn)行,則可以在Z上調(diào)用它們,并且可以以更高效的方式為應(yīng) 用提供Z數(shù)據(jù)。需要強(qiáng)大的單線程性能的方法也在Z平臺上具有高親和性,因?yàn)楫?dāng)前Z具 有行業(yè)中最快的線程。需要強(qiáng)大的安全性和獨(dú)有的服務(wù)質(zhì)量的方法也是在Z上具有高親和 性的方法。
      [0021] 在Power上具有高親和性的方法可以包括具有很少或最低數(shù)據(jù)要求的長時間運(yùn) 行的應(yīng)用、在Power上受益于SMT (同步多線程)的多個并行線程、需要大量主存儲器的方 法、需要存儲帶寬的方法,以及計(jì)算密集型的分析算法(例如,浮點(diǎn)運(yùn)算)。
      [0022] 在實(shí)踐中,可以以不同表示測定親和性。它可以是布爾變量,其指示方法能夠還是 不能在平臺上運(yùn)行,或者方法如何一般地優(yōu)選一個平臺而不是另一個;它可以是數(shù)值性能 度量(例如,吞吐量或響應(yīng)時間);它還可以是模糊變量,其基于現(xiàn)有知識表明方法如何優(yōu) 選一個平臺而不是其它平臺;它還可以是基于性價比的值,其用于測定在每個平臺上運(yùn)行 方法的相對收益。
      [0023] 在一個實(shí)施例中,本公開可以提供利用平臺親和性以提高混合系統(tǒng)中的軟件性能 和成本效率??梢岳没旌舷到y(tǒng)中的隱式異構(gòu)性,以便在具有最佳性價比的平臺上放置和 執(zhí)行工作負(fù)載中的每個工作單元。在本公開的一個實(shí)施例中,當(dāng)在運(yùn)行程序中調(diào)用方法時, 捕獲該方法。該方法可以具有平臺特定的實(shí)現(xiàn)的多個副本,并且可以在捕獲該方法時執(zhí)行 每種實(shí)現(xiàn)。可以將用于這些多種實(shí)現(xiàn)的引用和關(guān)聯(lián)親和性存儲在親和性表等中。通過查找 親和性表,可以做出決策以針對該方法選擇具有最佳親和性的平臺。此決策可以考慮親和 性和運(yùn)行實(shí)現(xiàn)的開銷。上述方法稱為優(yōu)先方法調(diào)用。
      [0024] 圖1示出本公開的一個實(shí)施例中的優(yōu)先方法調(diào)用的一個具體實(shí)例。在104,具有名 為"f〇〇 0 "的方法的應(yīng)用編程102運(yùn)行和調(diào)用該方法。當(dāng)調(diào)用該方法時,可以攔截或捕獲 符號引用以及運(yùn)行環(huán)境信息??梢詫⒃撔畔鬟f到過程,該過程查找用于該方法的所有平 臺特定的實(shí)現(xiàn)。在106,查找方法f 〇〇()。例如,親和性表108等可以存儲親和性度量、與該 方法的每種不同平臺實(shí)現(xiàn)關(guān)聯(lián)的值或因素或此類指示。表108還可以存儲其它信息,例如 運(yùn)行每種不同平臺實(shí)現(xiàn)的開銷。從在表108中查找的信息,確定具有最佳親和性的特定平 臺實(shí)現(xiàn)。此外,可以考慮選擇具有最小開銷的實(shí)現(xiàn)。可以返回對具有最佳親和性的實(shí)現(xiàn)的 直接引用作為所捕獲方法的代替者。在110,例如通過引用,被確定或選擇為具有最佳親和 性并且可選地具有最小開銷的特定平臺實(shí)現(xiàn)替換對f〇〇()的方法調(diào)用。在本公開的一個實(shí) 施例中,使用符號引用替換實(shí)現(xiàn)應(yīng)用軟件一部分的運(yùn)行時重新分發(fā)。
      [0025] 在本公開的一個實(shí)施例中,單獨(dú)的軟件等可以負(fù)責(zé)創(chuàng)建和更新親和性表。
      [0026] 本公開的優(yōu)先執(zhí)行可以應(yīng)用于代碼段(程序102的一部分),例如上面描述為方法 f〇〇()。在本公開的一個實(shí)施例中,基于運(yùn)行的程序中的方法等可能是優(yōu)先調(diào)用技術(shù)的候選 者的判定,可以攔截或捕獲此類方法。在本公開的一個實(shí)施例中,配置可以標(biāo)記或者以其它 方式指定這些方法或代碼段作為候選者。
      [0027] 在本公開的一個實(shí)施例中,優(yōu)先方法調(diào)用可以最佳地應(yīng)用于以受管代碼(例如, Java?、Python?)編寫的軟件,因?yàn)榇颂幍拇a與平臺無關(guān),并且可以通過使用底層虛擬機(jī) 更容易地在運(yùn)行時捕獲。但是,本公開并未將優(yōu)先方法調(diào)用限于任何特定代碼;相反,以任 何編程語言等編寫的程序都適用。在本公開的一個實(shí)施例中,可以通過引用替換進(jìn)行方法 捕獲。例如,當(dāng)捕獲方法時,可以通過對具有最佳親和性的平臺特定的實(shí)現(xiàn)的直接引用來替 換對該方法的符號引用??梢灶A(yù)先加載或動態(tài)地加載包含該實(shí)現(xiàn)的庫。不需要程序中的每 種方法都支持優(yōu)先調(diào)用。例如,僅以下這些方法可以調(diào)用或啟用優(yōu)先方法調(diào)用:根據(jù)定義的 閾值或準(zhǔn)則,其親和性跨平臺變化,并且例如,其效率可以被視為對整體性能至關(guān)重要?;?于定義的閾值或準(zhǔn)則,判定方法的效率是否被視為至關(guān)重要。
      [0028] 在本公開的一個實(shí)施例中,親和性表可以是數(shù)據(jù)結(jié)構(gòu),其存儲針對優(yōu)先方法調(diào)用 考慮的所有方法的每種平臺特定的實(shí)現(xiàn)的親和性信息。圖2示出本公開的一個實(shí)施例中的 親和性表的一個實(shí)例數(shù)據(jù)結(jié)構(gòu)。表中的每個項(xiàng)可以對應(yīng)于一種實(shí)現(xiàn),即方法的獨(dú)特平臺特 定的實(shí)現(xiàn)。例如,在Java?中,實(shí)現(xiàn)可以是包含在jar(Java?存檔)文件中的類成員函數(shù)。 一個類可以存在于多個jar文件中,針對一個平臺優(yōu)化每個jar文件。
      [0029] 在本公開的一個實(shí)施例中,一種方法可以具有多種平臺特定的實(shí)現(xiàn),每種實(shí)現(xiàn)對 應(yīng)于特別平臺的一種實(shí)現(xiàn),因此對應(yīng)于親和性表中的多個項(xiàng)。具有不同參數(shù)的相同方法可 以對應(yīng)于親和性表中的不同項(xiàng),其中每個項(xiàng)包含不同的親和性值。項(xiàng)可以包括以下字段:方 法名稱202,例如"foo〇 " ;對方法實(shí)現(xiàn)的引用204,例如實(shí)現(xiàn)方法的功能的名稱;目標(biāo)平臺 206,其指定實(shí)現(xiàn)針對的平臺,例如X86、Power、Z等;親和性度量208,其指示該實(shí)現(xiàn)在調(diào)用 者的平臺(即,目標(biāo)平臺)上運(yùn)行的高效程度的度量;版本210,其指定該實(shí)現(xiàn)的版本;以及 "固定或可變親和性"字段212。"固定或可變親和性"字段212指示親和性度量是在運(yùn)行時 期間不變,還是應(yīng)在每次捕獲方法時更新其值。圖2中所示的更多或更少字段可以充當(dāng)親 和性表。例如,并非需要存在實(shí)例中所示的所有字段,和/或可以存在其它額外字段。
      [0030] 作為一個實(shí)例,在Java?應(yīng)用的上下文中,平臺特定的實(shí)現(xiàn)可以是jar庫中的類成 員函數(shù)。在一個實(shí)施例中,可以將支持本公開的優(yōu)先方法調(diào)用的Java?類存儲在多個jar 庫中,針對一個特定平臺優(yōu)化每個庫。在運(yùn)行時加載適當(dāng)?shù)膉ar文件,具體取決于親和性比 較結(jié)果。
      [0031] 在本公開的一個實(shí)施例中,可以在程序執(zhí)行之前初始化親和性表。最初,在一個實(shí) 施例中,表可以包含支持本公開的優(yōu)先方法調(diào)用的所有這些方法。在一個實(shí)施例中,該信息 可以由開發(fā)人員確定,并且可以作為配置文件提供給本公開的親和性管理過程(例如,管 理圖1中所示的程序和項(xiàng)目的過程)。一種方法可以包括為平臺量身定制的多種實(shí)現(xiàn),每種 實(shí)現(xiàn)在親和性表中具有一個記錄??梢酝ㄟ^親和性管理過程計(jì)算和分配親和性度量。如果 方法的平臺特定的實(shí)現(xiàn)缺失其親和性度量,則其在表中的對應(yīng)親和性度量字段可以留空或 包括此類指示。
      [0032] 在本公開的一個實(shí)施例中,可以在運(yùn)行時更新親和性表。例如,當(dāng)在運(yùn)行時捕獲方 法時,如果其親和性度量為空,或者如果根據(jù)字段"固定或可變親和性",其親和性度量需要 重新計(jì)算,則可以觸發(fā)親和性估計(jì)過程以便計(jì)算親和性并且填充或更新項(xiàng)的字段。
      [0033] 如果首次調(diào)用方法并且因此表中沒有項(xiàng),則可以將其默認(rèn)實(shí)現(xiàn)作為項(xiàng)插入到表 中,并且在運(yùn)行時動態(tài)測量親和性值。默認(rèn)實(shí)現(xiàn)可以是其上運(yùn)行方法或運(yùn)行調(diào)用方法的程 序的平臺的實(shí)現(xiàn)。在本公開的一個實(shí)施例中,對于多次調(diào)用的方法,每當(dāng)其新測量的親和性 被確定為不同于存儲在親和性表中的親和性度量時,可以更新表項(xiàng)中的親和性字段。
      [0034] 響應(yīng)于發(fā)生方法捕獲,可以使用方法名稱或類似標(biāo)識作為進(jìn)入親和性表的鍵以便 查找關(guān)聯(lián)的項(xiàng)數(shù)據(jù)。例如,在本公開的一個實(shí)施例中,每當(dāng)發(fā)生方法捕獲時,使用方法名稱 作為關(guān)鍵字以便在親和性表中查找所有項(xiàng)。這些項(xiàng)對應(yīng)于多種平臺特定的實(shí)現(xiàn)。通過比較 親和性度量(如果需要,則可以觸發(fā)親和性估計(jì)過程),選擇具有最佳親和性的實(shí)現(xiàn),并且 其引用替換原始符號引用。如果該字段中的項(xiàng)為空或需要更新,并且如果過程可用于獲得 測量,則例如可以動態(tài)地觸發(fā)親和性估計(jì)過程。
      [0035] 在本公開的一個實(shí)施例中,表中的每種方法均包含默認(rèn)實(shí)現(xiàn)。如果由于親和性估 計(jì)失敗而導(dǎo)致親和性比較沒有產(chǎn)生線索,則可以使用默認(rèn)實(shí)現(xiàn)并且返回其引用。適當(dāng)?shù)鼐?有和使用默認(rèn)實(shí)現(xiàn)將確保程序可以始終運(yùn)行,即使優(yōu)先方法調(diào)用沒有選擇優(yōu)先實(shí)現(xiàn)。
      [0036] 在本公開的一個實(shí)施例中,親和性比較考慮執(zhí)行選擇的實(shí)現(xiàn)導(dǎo)致的開銷。在一個 實(shí)施例中,如果開銷足夠高以便抵消優(yōu)選平臺帶來的潛在收益,則不應(yīng)該選擇該平臺。當(dāng)進(jìn) 行跨平臺調(diào)用時,可以發(fā)生較大開銷;例如,程序最初在平臺A上運(yùn)行,它進(jìn)行在平臺B上優(yōu) 選實(shí)現(xiàn)的方法調(diào)用。因此,該方法調(diào)用變成遠(yuǎn)程過程調(diào)用(RPC)型的調(diào)用。這種RPC引入 額外網(wǎng)絡(luò)延遲和額外CPU使用。在本公開的一個實(shí)施例中,在親和性比較時需要考慮所有 這些開銷。如果開銷高,則可以在親和性計(jì)算時相應(yīng)地減小親和性度量。
      [0037] 親和性估計(jì)
      [0038] 在本公開中,可以使用一種或多種親和性估計(jì)方法或過程。具有各種親和性估計(jì) 方法,具體取決于實(shí)際方案和應(yīng)用(程序)關(guān)注的SLA(服務(wù)水平協(xié)議)。例如,對于延遲關(guān) 鍵的應(yīng)用,可以使用方法執(zhí)行時間作為親和性;對于計(jì)算密集型應(yīng)用,可以使用CPU周期使 用作為親和性;在高能效的方案中,可以使用能源消耗作為親和性;可以使用它們的任何 一個或多個組合,或者其它因素。可組合多個性能度量以便形成效用函數(shù)型的度量以測定 親和性。此外,如果關(guān)注性價比,則可以在親和性度量中包括在平臺上執(zhí)行實(shí)現(xiàn)的成本。例 如,Z CPU周期比Power CPU周期的成本更高昂。通過將CPU周期的單位價格引入到親和 性中,計(jì)算密集型方法將優(yōu)選Power平臺以便降低總成本。
      [0039] 親和性可以隨時間而有所變化,因?yàn)橄到y(tǒng)負(fù)載動態(tài)改變。一個實(shí)例是跨網(wǎng)絡(luò)方法 的延遲親和性度量取決于隨時間變化的后臺網(wǎng)絡(luò)業(yè)務(wù)。對于此類親和性度量,例如最初可 以將它們聲明為變量,如上面通過親和性表中的字段"固定或可變親和性"討論的那樣。對 于具有可變親和性字段的項(xiàng),每次查詢親和性時,可以按需重新計(jì)算親和性。
      [0040] 方法級依賴性圖
      [0041] 當(dāng)初始化親和性表時,可以指定支持優(yōu)先調(diào)用的方法。開發(fā)人員可以根據(jù)平臺特 定的實(shí)現(xiàn)的可用性和方法之間的依賴性,手動創(chuàng)建這種指定。方法級依賴性圖顯示程序或 應(yīng)用中的方法之間的調(diào)用關(guān)系。依賴性圖可以是用于加快手動過程的有用工具。具體地說, 如果開發(fā)人員想要啟用方法A的優(yōu)先調(diào)用,并且在依賴性圖中發(fā)現(xiàn)方法A調(diào)用方法B,則開 發(fā)人員還應(yīng)啟用方法B以及方法B調(diào)用的任何其它方法的優(yōu)先調(diào)用。因此,例如,如果方法 B被確定為不能在平臺上運(yùn)行,則也不能在該平臺上優(yōu)先調(diào)用方法A。方法級依賴性圖可以 通過一個或多個軟件工具自動產(chǎn)生。
      [0042] 依賴性包(dependency bundle)可以有助于相互關(guān)聯(lián)的方法的優(yōu)先執(zhí)行。首先形 成依賴性圖以便表示相互關(guān)系。在本公開的一個實(shí)施例中,基于依賴性圖,如果優(yōu)先執(zhí)行方 法,則該方法所依賴于的所有方法可以作為包而優(yōu)先執(zhí)行。
      [0043] 使用方案
      [0044] 方案1 :優(yōu)先Java?類加載
      [0045] 方案1是在Java?加速原型中應(yīng)用優(yōu)先方法調(diào)用理念。圖3描述該方案。兩個服 務(wù)器A 302和B 304是不同的平臺。Java虛擬機(jī)(JVM) 306在服務(wù)器A 302上運(yùn)行以便處 理Java?工作負(fù)載。在服務(wù)器B 304上,開發(fā)代理JVM 308 (其可以是具有新增特性的另一 個JVM)以便將Java?工作負(fù)載從服務(wù)器A 302卸載到B 304。將純Java?調(diào)用卸載到B 304時,在服務(wù)器A 302上進(jìn)行的Java本機(jī)接口(JNI)調(diào)用依然在A 302上。在引導(dǎo)階段, JVM 306和代理JVM 308均需要加載許多公共Java?類庫,因?yàn)樗鼈冏x取大量公共Java?類 庫。如果這些類庫310僅保留在服務(wù)器A上,則代理JVM 308的引導(dǎo)極其低效,因?yàn)楸仨毻?過RPC (遠(yuǎn)程過程調(diào)用)將每個類庫文件從A 302傳送到B 304。平均上,加載的類生成大 約120個RPC調(diào)用。每個RPC調(diào)用需要跨網(wǎng)絡(luò)并且產(chǎn)生網(wǎng)絡(luò)延遲。因此,代理JVM的引導(dǎo) 階段大約為1.5小時。
      [0046] 可以應(yīng)用本公開的優(yōu)先方法調(diào)用以便加快上面方案中的引導(dǎo)階段。在本公開的一 個實(shí)施例中的實(shí)現(xiàn)中,Java?類庫可以具有本地副本。在此,本地指圖3中的服務(wù)器B 304, 遠(yuǎn)程指服務(wù)器A 302。在庫的本地副本中,將布爾成員變量添加到每個Java?類以便指示類 是否具有本地副本。然后,根據(jù)Java?成員函數(shù)是否啟用優(yōu)先調(diào)用,添加每個成員函數(shù)中的 檢查以便判定應(yīng)調(diào)用本地還是遠(yuǎn)程成員函數(shù)。創(chuàng)建配置文件以便指定哪個類庫文件具有本 地副本。代理JVM開發(fā)人員創(chuàng)建該配置文件。此外,添加新類以便在引導(dǎo)階段執(zhí)行。添加 的類將讀入該配置文件,并且初始化每個類中的布爾變量。在上面的更改之后,在引導(dǎo)階段 執(zhí)行優(yōu)先類加載。在該方案中,優(yōu)先方法調(diào)用證明是非常有效:代理JVM的引導(dǎo)時間從1. 5 小時減少到幾分鐘。
      [0047] 方案2 : Java?中的優(yōu)先字符文件讀取
      [0048] 圖4示出可以使用本公開的優(yōu)先方法調(diào)用的另一個實(shí)例方案??梢詫?yōu)先方 法調(diào)用應(yīng)用于Java?文件輸入/輸出(I/O)以便在混合系統(tǒng)中實(shí)現(xiàn)更快的文件讀取。 FileReader是用于讀取字符文件的Java?類。該類的構(gòu)造器接受文件名參數(shù)并且準(zhǔn)備 從該文件讀取。如果文件位于遠(yuǎn)程服務(wù)器,則將跨底層分布式文件系統(tǒng)(例如,網(wǎng)絡(luò)文件 系統(tǒng)(NFS))讀取該文件。除了大量網(wǎng)絡(luò)延遲的缺點(diǎn)之外,該默認(rèn)行為需要解決字符編碼 問題帶來的不便。具體地說,不同平臺上的字符文件可以以不同方案編碼。因此,當(dāng)調(diào)用 FileReader構(gòu)造器時,開發(fā)人員需要指定編碼方案,其取決于存儲文件的平臺。
      [0049] 在本公開的一個實(shí)施例中,應(yīng)用優(yōu)先方法調(diào)用將解決網(wǎng)絡(luò)延遲問題和字符編碼的 不便。參考圖4,在406調(diào)用該FileReader構(gòu)造器方法時,在408從親和性表410等中查找 輸入?yún)?shù)文件名,并且在本公開的一個實(shí)施例中,如果如在412測試的那樣存在本地副本, 則在414優(yōu)先地由本地副本替換該文件名。根據(jù)最終從中檢索文件的平臺(本地418或共 享420),可以在416隱式調(diào)用另一種方法以進(jìn)行字符編碼/解碼。在圖4的實(shí)例中,EBCDIC 是Z 404上的字符編碼方案,ASCII是Power 402上的編碼方案。這樣,解決上面的兩個問 題,并且該過程的發(fā)生可以對Java?程序完全透明。該方案展示考慮數(shù)據(jù)局部性的收益。 此外,基于運(yùn)行編碼/解碼算法的效率,可以確定用于運(yùn)行方法的適當(dāng)平臺。
      [0050] 方案3 :優(yōu)先數(shù)學(xué)密集型功能執(zhí)行
      [0051] 在該方案中,在本公開的一個實(shí)施例中,可以應(yīng)用優(yōu)先方法調(diào)用以便將計(jì)算密集 型工作負(fù)載從Z放置到Power。原理可以是Power平臺一般比Z平臺具有更好的浮點(diǎn)支持。 圖5示出其中在運(yùn)行時將數(shù)學(xué)密集型功能卸載到Power平臺的一個實(shí)例方案。例如,當(dāng)在 506調(diào)用或捕獲Z 504上的方法f〇〇()時,并且如果在508檢測該方法具有大量數(shù)學(xué)計(jì)算 (例如,這可以通過源代碼分析進(jìn)行),則可以在510搜索親和性表512以便檢測是否存在 針對foo()的Power版本實(shí)現(xiàn)。如果存在,則可以在514返回Power版本實(shí)現(xiàn)。在518,可 以調(diào)用Power版本實(shí)現(xiàn)而不是默認(rèn)Z版本。在本公開的一個實(shí)施例中,可以在516使用RPC 機(jī)制實(shí)現(xiàn)這種跨系統(tǒng)調(diào)用。在本公開的一個實(shí)施例中,當(dāng)決定使用哪個版本的f〇〇()時,考 慮RPC開銷。在本公開的一個實(shí)施例中,源代碼分析可以執(zhí)行檢測方法是否具有數(shù)學(xué)計(jì)算。 可以設(shè)置一個或多個準(zhǔn)則以便確定方法是否是計(jì)算密集型的。例如,如果方法中的數(shù)學(xué)計(jì) 算數(shù)量滿足或超出閾值,則方法可以被確定是計(jì)算密集型的,從而保證優(yōu)先方法調(diào)用選項(xiàng)。 在本公開的一個實(shí)施例中,當(dāng)在510在親和性表中查找f 〇〇 ()時,可以抵消PowerPC特定的 實(shí)現(xiàn)的親和性,這是由于跨平臺通信所致。
      [0052] 在本公開的另一個實(shí)施例中,提供在跨本地和遠(yuǎn)程系統(tǒng)運(yùn)行的軟件中應(yīng)用優(yōu)先方 法調(diào)用的一個實(shí)例。本地和遠(yuǎn)程系統(tǒng)通過網(wǎng)絡(luò)連接。對于性能收益,在這種方案中,功能調(diào) 用應(yīng)該優(yōu)選在本地系統(tǒng)上執(zhí)行,只要其所需資源是本地的。為了啟用優(yōu)先方法調(diào)用,首先分 析軟件中的每個方法調(diào)用以便判定它應(yīng)該在本地還是遠(yuǎn)程運(yùn)行。判定技術(shù)是在統(tǒng)計(jì)上分析 方法實(shí)現(xiàn)的二進(jìn)制/字節(jié)代碼以及創(chuàng)建調(diào)用圖。對于調(diào)用圖中的每個功能調(diào)用,進(jìn)行檢查 以便判定通過調(diào)用訪問的資源在本地獲得還是在遠(yuǎn)程獲得。如果通過本機(jī)方法訪問的所有 資源在本地獲得,則可以注釋方法以便本地執(zhí)行。如果否,則可以注釋方法以便遠(yuǎn)程執(zhí)行。 這種確定可本地化的本機(jī)方法的方法可以用于確定親和性度量或因素。例如,如果可以本 地化本機(jī)方法,則親和性度量傾向于"本地機(jī)器";如果否,則親和性傾向于"遠(yuǎn)程機(jī)器"。
      [0053] 在本公開的一個實(shí)施例中,提供在混合系統(tǒng)中的方法調(diào)用的優(yōu)先執(zhí)行?;谟H和 性的優(yōu)先方法調(diào)用技術(shù)例如可以通過在具有最佳效率因素(例如,性價比)的平臺上動態(tài) 執(zhí)行工作負(fù)載中的每個工作單元,提高混合系統(tǒng)中的分布式應(yīng)用的性能。例如,對方法調(diào) 用的符號引用在運(yùn)行時被捕獲,并被代之以對具有最佳親和性的平臺特定的實(shí)現(xiàn)的直接引 用。
      [0054] -種利用功能局部性的方法可以明顯提高混合系統(tǒng)中的軟件性能?;谟H和性的 優(yōu)先方法調(diào)用技術(shù)提供可啟用以便在其中方法具有最佳親和性的平臺上執(zhí)行方法(例如 應(yīng)用于其中具有更好局部性的數(shù)據(jù)被優(yōu)選讀取的數(shù)據(jù)讀取,或者所述方法使用其它本地資 源)的特性、以脫機(jī)和聯(lián)機(jī)方式更新親和性的特性、用于利用混合系統(tǒng)中的隱式差異以便 在最適合工作項(xiàng)目的位置上執(zhí)行工作項(xiàng)目的特性。親和性表可以存儲有關(guān)方法調(diào)用的平臺 特定的實(shí)現(xiàn)和親和性度量的信息。
      [0055] 在混合系統(tǒng)中運(yùn)行分布式軟件可以優(yōu)先地在其中方法具有最佳親和性的平臺上 調(diào)用方法,并且優(yōu)先地在具有最佳局部性的服務(wù)器上訪問數(shù)據(jù),這可以包括(i)攔截方法 調(diào)用和文件讀取,并且對照表查找被請求項(xiàng)目,(ii)選擇表中具有最佳親和性或局部性的 匹配項(xiàng)目,并且通過從步驟(ii)返回的名稱替換原始方法名稱或文件名稱。
      [0056] 親和性表可以涉及以靜態(tài)和動態(tài)方式創(chuàng)建和更新親和性表的親和性管理系統(tǒng)。最 初,親和性表可以包含已知具有為平臺量身定制的實(shí)現(xiàn)的方法的親和性度量。在運(yùn)行時,可 以從有關(guān)方法在平臺上執(zhí)行的高效程度的測量獲知方法的親和性,并且親和性計(jì)算方法可 以知曉網(wǎng)絡(luò)延遲和帶寬(或其它開銷或環(huán)境因素)并在決策過程中使用該信息。
      [0057] 盡管上面的描述根據(jù)在程序中執(zhí)行方法解釋了本公開的方法,但程序中的任何其 它工作單元或項(xiàng)目或代碼段均可以具有優(yōu)先的平臺特定的實(shí)現(xiàn)并使用該優(yōu)先的平臺特定 的實(shí)現(xiàn)來執(zhí)行。
      [0058] 圖6示出可以在本公開的一個實(shí)施例中實(shí)現(xiàn)優(yōu)先方法執(zhí)行系統(tǒng)的實(shí)例計(jì)算機(jī)或 處理系統(tǒng)的示意圖。計(jì)算機(jī)系統(tǒng)僅是合適的處理系統(tǒng)的一個實(shí)例,并非旨在對在此描述的 方法實(shí)施例的功能和使用范圍帶來任何限制。示出的處理系統(tǒng)可與眾多其它通用或?qū)S糜?jì) 算系統(tǒng)環(huán)境或配置一起操作??梢赃m于與圖6中所示的處理系統(tǒng)一起使用的公知計(jì)算系 統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、 厚客戶機(jī)、手持或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子 產(chǎn)品、網(wǎng)絡(luò)個人電腦、小型計(jì)算機(jī)系統(tǒng)、大型計(jì)算機(jī)系統(tǒng)和包括上述任意系統(tǒng)或設(shè)備的分 布式云計(jì)算環(huán)境,等等。
      [0059] 可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境 下描述計(jì)算機(jī)系統(tǒng)。通常,程序模塊可以包括執(zhí)行特定任務(wù)或者實(shí)現(xiàn)特定抽象數(shù)據(jù)類型的 例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)系統(tǒng)可以在通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn) 程處理設(shè)備執(zhí)行任務(wù)的分布式云計(jì)算環(huán)境中實(shí)施。在分布式云計(jì)算環(huán)境中,程序模塊可以 位于包括存儲設(shè)備的本地或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)存儲介質(zhì)上。
      [0060] 計(jì)算機(jī)系統(tǒng)的組件可以包括但不限于:一個或者多個處理器或者處理單元12,系 統(tǒng)存儲器16,以及將不同系統(tǒng)組件(包括系統(tǒng)存儲器16)連接到處理器12的總線14。處 理器12可以包括執(zhí)行在此描述的方法的優(yōu)先方法執(zhí)行模塊10。模塊10可以編程到處理器 12的集成電路中,或者從存儲器16、存儲設(shè)備18或網(wǎng)絡(luò)24或它們的組合加載。
      [0061] 總線14可以表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控 制器,外圍總線,圖形加速端口,使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的處理器或局域總 線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu) (MCA)總線,增強(qiáng)型ISA (EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局域總線以及外圍組件互連 (PCI)總線。
      [0062] 計(jì)算機(jī)系統(tǒng)可以包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是能夠被計(jì)算機(jī)系 統(tǒng)訪問的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。
      [0063] 系統(tǒng)存儲器16可以包括易失性存儲器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存 取存儲器(RAM)和/或高速緩沖存儲器等。計(jì)算機(jī)系統(tǒng)還可以包括其它可移動/不可移 動的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)18可以用于讀寫不 可移動的、非易失性磁介質(zhì)(例如"硬盤驅(qū)動器")。盡管圖6中未示出,可以提供用于對可 移動非易失性磁盤(例如"軟盤")讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如 ⑶-ROM、DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通 過一個或者多個數(shù)據(jù)介質(zhì)接口與總線14相連。
      [0064] 計(jì)算機(jī)系統(tǒng)也可以與一個或多個外部設(shè)備26 (例如鍵盤、指點(diǎn)設(shè)備、顯示器28等) 通信,還可與一個或者多個使得用戶能與該計(jì)算機(jī)系統(tǒng)交互的設(shè)備通信,和/或與使得該 計(jì)算機(jī)系統(tǒng)能與一個或多個其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等 等)通信。這種通信可以通過輸入/輸出(I/O)接口 20進(jìn)行。
      [0065] 此外,計(jì)算機(jī)系統(tǒng)可以通過網(wǎng)絡(luò)適配器22與一個或者多個網(wǎng)絡(luò)24(例如局域網(wǎng) (LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器22通過 總線14與計(jì)算機(jī)系統(tǒng)的其它組件通信。應(yīng)當(dāng)理解,盡管圖中未示出,但是其它硬件和/或 軟件組件可以與計(jì)算機(jī)系統(tǒng)一起操作,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、 外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
      [0066] 所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算 機(jī)程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、 完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方 式,這里可以統(tǒng)稱為"電路"、"模塊"或"系統(tǒng)"。此外,本發(fā)明的各個方面還可以實(shí)現(xiàn)為在一 個或多個計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可 讀的程序代碼。
      [0067] 可以采用一個或多個計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī) 可讀信號介質(zhì)或者計(jì)算機(jī)可讀存儲介質(zhì)。計(jì)算機(jī)可讀存儲介質(zhì)例如可以是一但不限于一 電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者上述的任意合適的組合。計(jì)算 機(jī)可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便 攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器 (EPROM或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者 上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲介質(zhì)可以是任何包含或存儲程序的 有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
      [0068] 計(jì)算機(jī)可讀的信號介質(zhì)可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù) 信號,其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括一 但不限于一電磁信號、光信號或上述的任意合適的組合。計(jì)算機(jī)可讀的信號介質(zhì)可以是計(jì) 算機(jī)可讀存儲介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳 輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
      [0069] 計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限 于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
      [0070] 可以以一種或多種程序設(shè)計(jì)語言的任意組合來編寫用于執(zhí)行本發(fā)明的各個方面 的操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、 Smalltalk、C++等,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如"C"語言或類似的程序設(shè)計(jì) 語言,一種描述性語言如Perl、VBS或類似語言,和/或功能性語言,如Lisp和ML以及邏輯 目標(biāo)語言如Prolog。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí) 行、作為一個獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全 在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種 類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部 計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
      [0071] 將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/ 或框圖描述本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/ 或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給 通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得 這些指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實(shí)現(xiàn)流程圖和 /或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
      [0072] 也可以把這些計(jì)算機(jī)程序指令存儲在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、 其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備以特定方式工作,從而,存儲在計(jì)算機(jī)可讀介質(zhì)中的 指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令 的制造品(article of manufacture) 〇
      [0073] 也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn) 的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供實(shí)現(xiàn)流程圖和/或框圖中 的一個或多個方框中規(guī)定的功能/動作的過程。
      [0074] 附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的不同實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以代 表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用 于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo) 注的功能可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本 并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是, 框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定 的功能或動作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合 來實(shí)現(xiàn)。
      [0075] 計(jì)算機(jī)程序產(chǎn)品可以包括能夠?qū)崿F(xiàn)在此描述的方法的所有相應(yīng)特性,并且當(dāng)被加 載到計(jì)算機(jī)系統(tǒng)中時,其能夠執(zhí)行這些方法。當(dāng)前上下文中的計(jì)算機(jī)程序、軟件程序、程序 或軟件是指一組指令的以任何語言、代碼或符號表示的任何表達(dá),旨在使具有信息處理能 力的系統(tǒng)直接執(zhí)行特定的功能,或者執(zhí)行以下兩者之一或全部后執(zhí)行特定的功能:(a)轉(zhuǎn) 換為另一種語言、代碼或符號;和/或(b)以不同的材料形式再現(xiàn)。
      [0076] 在此使用的術(shù)語只是為了描述特定的實(shí)施例并且并非旨在作為本發(fā)明的限制。如 在此使用的,單數(shù)形式"一"、"一個"和"該"旨在同樣包括復(fù)數(shù)形式,除非上下文明確地另 有所指。還將理解,當(dāng)在此說明書中使用時,術(shù)語"包括"和/或"包含"指定了聲明的特性、 整數(shù)、步驟、操作、元素和/或組件的存在,但是并不排除一個或多個其它特性、整數(shù)、步驟、 操作、元素、組件和/或其組合的存在或增加。
      [0077] 下面權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟(如 果有)的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它元件相組合地執(zhí)行 該功能的結(jié)構(gòu)、材料或操作。出于示例和說明目的給出了對本發(fā)明的描述,但所述描述并非 旨在是窮舉的或是將本發(fā)明限于所公開的形式。在不偏離本發(fā)明的范圍和精神的情況下, 對于所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變化都將是顯而易見的。實(shí)施例的選擇 和描述是為了最佳地解釋本發(fā)明的原理和實(shí)際應(yīng)用,并且當(dāng)適合于所構(gòu)想的特定使用時, 使得所屬【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實(shí)施例。
      [0078] 本公開的各個方面可以實(shí)現(xiàn)為包含在計(jì)算機(jī)或機(jī)器可用或可讀介質(zhì)中的程序、軟 件或計(jì)算機(jī)指令,當(dāng)在計(jì)算機(jī)、處理器和/或機(jī)器上執(zhí)行時,這些程序、軟件或計(jì)算機(jī)指令 導(dǎo)致計(jì)算機(jī)或機(jī)器執(zhí)行所述方法步驟。還提供一種程序存儲設(shè)備,其可由機(jī)器讀取,有形地 包含可由機(jī)器執(zhí)行的指令程序以便執(zhí)行本公開中描述的各種功能和方法。
      [0079] 本公開的系統(tǒng)和方法可以在通用計(jì)算機(jī)或?qū)S糜?jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)和運(yùn)行??捎糜?本申請的術(shù)語"計(jì)算機(jī)系統(tǒng)"和"計(jì)算機(jī)網(wǎng)絡(luò)"可以包括固定和/或便攜式計(jì)算機(jī)硬件、軟 件、外圍設(shè)備和存儲設(shè)備的各種組合。計(jì)算機(jī)系統(tǒng)可以包括聯(lián)網(wǎng)或以其它方式鏈接以協(xié)作 執(zhí)行的多個單獨(dú)組件,或者可以包括一個或多個獨(dú)立的組件。本申請的計(jì)算機(jī)系統(tǒng)的硬件 和軟件組件可以包括并且可以包括在固定和便攜式設(shè)備(例如臺式計(jì)算機(jī)、膝上型計(jì)算機(jī) 和/或服務(wù)器)中。模塊可以是設(shè)備、軟件、程序或系統(tǒng)的實(shí)現(xiàn)某種"功能"的組件,其可以 實(shí)現(xiàn)為軟件、硬件、固件、電子電路等。
      [0080] 上面描述的實(shí)施例是示例性實(shí)例,并且不應(yīng)該解釋為本發(fā)明限于這些特定的實(shí)施 例。因此,所屬【技術(shù)領(lǐng)域】的技術(shù)人員可以實(shí)現(xiàn)各種更改和修改,而不偏離在所附權(quán)利要求中 限定的本發(fā)明的精神或范圍。
      【權(quán)利要求】
      1. 一種用于在具有異構(gòu)平臺的混合系統(tǒng)中運(yùn)行分布式程序的方法,所述方法包括: 在處理器上執(zhí)行的程序的運(yùn)行時中捕獲程序的方法調(diào)用; 針對一種或多種平臺特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號引用; 基于與所述一種或多種平臺特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺特 定的實(shí)現(xiàn)中選擇一種平臺特定的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺特定的實(shí) 現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一個或多個平臺上運(yùn)行的高效程度; 返回對所選擇的平臺特定的實(shí)現(xiàn)的直接引用;以及 使用所返回的對所選擇的平臺特定的實(shí)現(xiàn)的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián) 的所述符號引用。
      2. 根據(jù)權(quán)利要求1的方法,其中所述程序的所述運(yùn)行時繼續(xù)使用替換后的直接引用執(zhí) 行所述程序。
      3. 根據(jù)權(quán)利要求1的方法,其中返回步驟包括返回對所選擇的平臺特定的實(shí)現(xiàn)的所述 直接引用以及與關(guān)聯(lián)平臺相關(guān)的信息。
      4. 根據(jù)權(quán)利要求1的方法,其中在包含所述親和性度量的表中查找所述符號引用。
      5. 根據(jù)權(quán)利要求4的方法,其中在運(yùn)行時動態(tài)地計(jì)算和更新所述表中的所述親和性度 量。
      6. 根據(jù)權(quán)利要求4的方法,其中在計(jì)算所述親和性度量中使用與運(yùn)行所述一種或多種 平臺特定的實(shí)現(xiàn)關(guān)聯(lián)的開銷。
      7. 根據(jù)權(quán)利要求4的方法,其中基于執(zhí)行時間或資源使用或它們的組合,計(jì)算所述親 和性度量。
      8. 根據(jù)權(quán)利要求1的方法,其中所述程序的方法調(diào)用與多種不同的平臺特定的實(shí)現(xiàn)關(guān) 聯(lián)。
      9. 根據(jù)權(quán)利要求1的方法,其中基于在所述程序的方法調(diào)用中指定的不同參數(shù),將所 述程序的方法調(diào)用與多種不同的平臺特定的實(shí)現(xiàn)關(guān)聯(lián)。
      10. -種用于基于親和性的優(yōu)先調(diào)用技術(shù)的在具有異構(gòu)平臺的混合系統(tǒng)中提高分布式 應(yīng)用性能的方法,所述方法包括: 在運(yùn)行時攔截在處理器上執(zhí)行的程序中的代碼段; 確定所述混合系統(tǒng)中用于執(zhí)行所述代碼段的平臺,所述平臺被確定為在所述混合系統(tǒng) 中的多個平臺中以最佳效率運(yùn)行所述代碼段, 其中在被確定為以最佳效率運(yùn)行所述代碼段的所述平臺上動態(tài)地執(zhí)行所述代碼段。
      11. 根據(jù)權(quán)利要求10的方法,其中所述確定包括查找表,所述表包括指定與所述代碼 段和效率度量關(guān)聯(lián)的一種或多種平臺特定的實(shí)現(xiàn)的一個或多個表項(xiàng)。
      12. 根據(jù)權(quán)利要求11的方法,其中在運(yùn)行時動態(tài)地確定所述效率度量,并且使用最近 確定的效率度量更新所述表。
      13. 根據(jù)權(quán)利要求10的方法,其中如果確定所述代碼段是用于所述基于親和性的優(yōu)先 調(diào)用技術(shù)的候選者,則執(zhí)行攔截步驟。
      14. 一種用于在混合系統(tǒng)中運(yùn)行分布式程序的系統(tǒng),所述系統(tǒng)包括: 所述混合系統(tǒng)中運(yùn)行應(yīng)用程序的處理器;以及 基于親和性的優(yōu)先調(diào)用模塊,其可操作以在運(yùn)行時攔截程序的方法調(diào)用,所述基于親 和性的優(yōu)先調(diào)用模塊還可操作以針對一種或多種平臺特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào) 用關(guān)聯(lián)的符號引用,所述基于親和性的優(yōu)先調(diào)用模塊還可操作以基于與所述一種或多種平 臺特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺特定的實(shí)現(xiàn)中選擇一種平臺特定 的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺特定的實(shí)現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一 個或多個平臺上運(yùn)行的高效程度,所述基于親和性的優(yōu)先調(diào)用模塊還可操作以使用對所選 擇的平臺特定的實(shí)現(xiàn)的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián)的所述符號引用。
      15. 根據(jù)權(quán)利要求14的系統(tǒng),還包括存儲表項(xiàng)的數(shù)據(jù)庫,所述表項(xiàng)指定方法調(diào)用的一 種或多種平臺特定的實(shí)現(xiàn)以及關(guān)聯(lián)的效率度量,所述關(guān)聯(lián)的效率度量指示相應(yīng)平臺運(yùn)行相 應(yīng)平臺特定的實(shí)現(xiàn)的高效程度。
      16. 根據(jù)權(quán)利要求15的系統(tǒng),其中在運(yùn)行時動態(tài)地更新所述效率度量。
      17. 根據(jù)權(quán)利要求15的系統(tǒng),其中使用與在相應(yīng)平臺上運(yùn)行所述一種或多種平臺特定 的實(shí)現(xiàn)關(guān)聯(lián)的開銷作為選擇所述平臺特定的實(shí)現(xiàn)時的多個準(zhǔn)則之一。
      18. 根據(jù)權(quán)利要求15的系統(tǒng),其中所述數(shù)據(jù)庫存儲所述方法調(diào)用的多種平臺特定的實(shí) 現(xiàn)。
      19. 根據(jù)權(quán)利要求18的系統(tǒng),其中基于所述方法調(diào)用中使用的不同參數(shù),所述數(shù)據(jù)庫 存儲所述方法調(diào)用的多種平臺特定的實(shí)現(xiàn)。
      20. -種存儲指令程序的計(jì)算機(jī)可讀存儲介質(zhì),所述指令程序可由機(jī)器執(zhí)行以便執(zhí)行 一種在具有異構(gòu)平臺的混合系統(tǒng)中運(yùn)行分布式程序的方法,所述方法包括: 在處理器上執(zhí)行的程序的運(yùn)行時中捕獲程序的方法調(diào)用; 針對一種或多種平臺特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號引用; 基于與所述一種或多種平臺特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺特 定的實(shí)現(xiàn)中選擇一種平臺特定的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺特定的實(shí) 現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一個或多個平臺上運(yùn)行的高效程度; 返回對所選擇的平臺特定的實(shí)現(xiàn)的直接引用;以及 使用所返回的對所選擇的平臺特定的實(shí)現(xiàn)的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián) 的所述符號引用。
      21. 根據(jù)權(quán)利要求20的計(jì)算機(jī)可讀存儲介質(zhì),其中所述程序的所述運(yùn)行時繼續(xù)使用替 換后的直接引用執(zhí)行所述程序。
      22. 根據(jù)權(quán)利要求20的計(jì)算機(jī)可讀存儲介質(zhì),其中返回步驟包括返回對所選擇的平臺 特定的實(shí)現(xiàn)的所述直接引用以及與關(guān)聯(lián)平臺相關(guān)的信息。
      23. 根據(jù)權(quán)利要求20的計(jì)算機(jī)可讀存儲介質(zhì),其中在包含所述親和性度量的表中查找 所述符號引用。
      24. 根據(jù)權(quán)利要求23的計(jì)算機(jī)可讀存儲介質(zhì),其中在運(yùn)行時動態(tài)地計(jì)算和更新所述表 中的所述親和性度量。
      25. 根據(jù)權(quán)利要求23的計(jì)算機(jī)可讀存儲介質(zhì),其中在計(jì)算所述親和性度量中使用與運(yùn) 行所述一種或多種平臺特定的實(shí)現(xiàn)關(guān)聯(lián)的開銷。
      【文檔編號】G06F9/46GK104160377SQ201380013717
      【公開日】2014年11月19日 申請日期:2013年3月4日 優(yōu)先權(quán)日:2012年3月12日
      【發(fā)明者】M·H·道森, P·杜布, L·L·鄺, 高雨青, X·R·格林, M·H·T·哈克, 伊藤愛, G·約翰遜, N·K·凌, 劉巖斌, 孟曉橋, P·B·納加拉賈, S·R·西拉姆, 譚偉, 張立 申請人:國際商業(yè)機(jī)器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1