用于系統(tǒng)適配的動(dòng)態(tài)程序評(píng)估的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明整體涉及系統(tǒng)適配。更具體地講,本發(fā)明涉及執(zhí)行動(dòng)態(tài)程序評(píng)估以使系統(tǒng)適應(yīng)其當(dāng)前操作環(huán)境。
【背景技術(shù)】
[0002]可根據(jù)不同考慮事項(xiàng)編寫多個(gè)版本的源代碼來執(zhí)行相同功能。例如,作者可為一般數(shù)據(jù)處理任務(wù)或功能編碼庫例程,諸如圖形渲染例程,從而基于例如不同的算法或優(yōu)化參數(shù)等生成單獨(dú)的源代碼。每種源代碼可編譯成作為不同具體實(shí)施的單獨(dú)的可執(zhí)行程序以執(zhí)行共同任務(wù)。
[0003]由于系統(tǒng)可安裝有包括共同任務(wù)(或庫例程)的這些多個(gè)具體實(shí)施的庫,要求手動(dòng)配置以指定可執(zhí)行代碼中的哪種可執(zhí)行代碼應(yīng)當(dāng)用于系統(tǒng)并不少見。然而,隨著現(xiàn)代數(shù)據(jù)處理系統(tǒng)的復(fù)雜度提升,手動(dòng)配置已變得過于繁瑣而變得不實(shí)用。
[0004]另外,程序員可提供多個(gè)版本的源代碼來實(shí)施相同任務(wù)而不用考慮將要執(zhí)行這些代碼的實(shí)際操作環(huán)境中所有可能的變化。事實(shí)上,在設(shè)計(jì)代碼時(shí),要考慮實(shí)際操作環(huán)境中的所有相關(guān)變化可能會(huì)越來越難或甚至不可行。
[0005]因此,用于系統(tǒng)適應(yīng)實(shí)際操作環(huán)境的當(dāng)前方法不實(shí)用、不全面并且未優(yōu)化。
【發(fā)明內(nèi)容】
[0006]在一個(gè)實(shí)施例中,動(dòng)態(tài)程序評(píng)估可測(cè)試運(yùn)行可執(zhí)行程序的多個(gè)變型來選擇適用于當(dāng)前系統(tǒng)運(yùn)行環(huán)境的一個(gè)或多個(gè)可執(zhí)行程序。每個(gè)可執(zhí)行程序能夠執(zhí)行共同任務(wù)。在運(yùn)行時(shí)期間可經(jīng)由測(cè)試運(yùn)行來評(píng)估可執(zhí)行程序以生成測(cè)量性能相關(guān)信息的傳感器數(shù)據(jù)??苫谒占膫鞲衅鲾?shù)據(jù)來選擇一個(gè)或多個(gè)可執(zhí)行程序。可通過系統(tǒng)硬件/軟件運(yùn)行環(huán)境中檢測(cè)到的變化自動(dòng)觸發(fā)評(píng)估。在一個(gè)實(shí)施例中,動(dòng)態(tài)可執(zhí)行程序適配可允許開發(fā)人員經(jīng)由運(yùn)行時(shí)評(píng)估在最大性能或最大效率之間進(jìn)行選擇?;谟布β蕼y(cè)量的可執(zhí)行程序(例如功能和程序)的動(dòng)態(tài)評(píng)估可智能地配置系統(tǒng)以節(jié)能或改善其他適用系統(tǒng)性能指標(biāo)或?qū)傩浴?br>[0007]本發(fā)明的實(shí)施例包括為設(shè)備中的任務(wù)維護(hù)多個(gè)可執(zhí)行程序的方法和裝置。每個(gè)可執(zhí)行程序能夠響應(yīng)于設(shè)備的操作環(huán)境的變化來執(zhí)行該任務(wù)??蓤?zhí)行每個(gè)可執(zhí)行程序以執(zhí)行任務(wù)的測(cè)試運(yùn)行。在設(shè)備中變化的操作環(huán)境下,每次執(zhí)行可消耗功率量。可基于任務(wù)的測(cè)試運(yùn)行所消耗的功率量來選擇可執(zhí)行程序中的一個(gè)可執(zhí)行程序以在將來執(zhí)行任務(wù)。所選擇的一個(gè)可執(zhí)行程序需要不比所述可執(zhí)行程序中的剩余可執(zhí)行程序中的每個(gè)可執(zhí)行程序所需的功率高的功率。
[0008]在可供選擇的實(shí)施例中,可檢測(cè)到機(jī)器的操作環(huán)境的變化。該機(jī)器可包括用于任務(wù)的多個(gè)可執(zhí)行程序。每個(gè)可執(zhí)行程序能夠執(zhí)行該任務(wù)。響應(yīng)于所檢測(cè)到的變化,可執(zhí)行機(jī)器上的可執(zhí)行程序的測(cè)試運(yùn)行來測(cè)量可執(zhí)行程序在操作環(huán)境下執(zhí)行任務(wù)的適宜性??苫谒鶞y(cè)量的適宜性來選擇可執(zhí)行程序中的一個(gè)可執(zhí)行程序。響應(yīng)于執(zhí)行任務(wù)的將來請(qǐng)求,可執(zhí)行所選擇的一個(gè)可執(zhí)行程序而不執(zhí)行剩余可執(zhí)行程序。
[0009]在可供選擇的實(shí)施例中,可加載用于執(zhí)行數(shù)據(jù)處理例程的可執(zhí)行代碼??蓤?zhí)行代碼可包括兩個(gè)或更多個(gè)執(zhí)行路徑。每個(gè)執(zhí)行路徑能夠執(zhí)行數(shù)據(jù)處理例程??蓤?zhí)行代碼可與用于數(shù)據(jù)處理例程的樣本輸入相關(guān)聯(lián)。響應(yīng)于加載,可執(zhí)行每個(gè)執(zhí)行路徑以用樣本輸入執(zhí)行數(shù)據(jù)處理例程??蓤?zhí)行每個(gè)執(zhí)行路徑以消耗機(jī)器中的單獨(dú)的處理資源(例如功率)量??蓜?dòng)態(tài)地配置可執(zhí)行代碼,例如響應(yīng)于加載,以基于所消耗的處理資源量為數(shù)據(jù)處理例程啟用執(zhí)行路徑中的一個(gè)執(zhí)行路徑。所配置的一個(gè)執(zhí)行路徑可消耗不比剩余執(zhí)行路徑消耗的處理資源量高的處理資源量。該配置可為數(shù)據(jù)處理例程禁用可執(zhí)行代碼中的剩余執(zhí)行路徑。
[0010]通過附圖以及通過以下具體描述,本發(fā)明的其他特征將顯而易見。
【附圖說明】
[0011]本發(fā)明以舉例的方式進(jìn)行說明,并且不僅限于各個(gè)附圖的圖形,在附圖中類似的附圖標(biāo)號(hào)表示類似的元件,并且其中:
[0012]圖1是示出用于動(dòng)態(tài)適配的系統(tǒng)部件的一個(gè)實(shí)施例的框圖;
[0013]圖2是示出在例程上執(zhí)行評(píng)估運(yùn)行以配置硬件的過程的實(shí)施例的流程圖;
[0014]圖3是示出基于傳感器數(shù)據(jù)來選擇用于將來執(zhí)行的程序的過程的實(shí)施例的流程圖;
[0015]圖4是示出基于功耗來選擇可執(zhí)行程序以執(zhí)行任務(wù)的過程的實(shí)施例的流程圖;
[0016]圖5是示出檢測(cè)操作環(huán)境的變化以選擇適合于操作環(huán)境的可執(zhí)行程序的過程的實(shí)施例的流程圖;
[0017]圖6是示出在可執(zhí)行程序中執(zhí)行執(zhí)行路徑以響應(yīng)于可執(zhí)行代碼的加載來選擇執(zhí)行路徑中的一個(gè)執(zhí)行路徑的過程的實(shí)施例的流程圖;
[0018]圖7示出了可與本文所述的實(shí)施例一起使用的典型計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)例。
【具體實(shí)施方式】
[0019]描述了用于動(dòng)態(tài)程序評(píng)估的方法和裝置。以下說明中示出了許多具體細(xì)節(jié),以提供對(duì)本發(fā)明實(shí)施例的全面解釋。然而,對(duì)于本領(lǐng)域的技術(shù)人員顯而易見的是,本發(fā)明的實(shí)施例可在不具有這些具體細(xì)節(jié)的情況下實(shí)施。在其他情況下,未詳細(xì)示出已熟知的部件、結(jié)構(gòu)和技術(shù),以免影響對(duì)此說明的理解。
[0020]本說明書中提到的“ 一個(gè)實(shí)施例”或“實(shí)施例”是指,結(jié)合實(shí)施例所描述的特定特征、結(jié)構(gòu)或特性可包括在本發(fā)明的至少一個(gè)實(shí)施例中。在本說明書中的不同位置出現(xiàn)短語“在一個(gè)實(shí)施例中”不一定都是指同一個(gè)實(shí)施例。
[0021]下圖中示出的過程通過處理邏輯執(zhí)行,所述處理邏輯包括硬件(例如,電路、專用邏輯等)、軟件(諸如在通用計(jì)算機(jī)系統(tǒng)或?qū)S脵C(jī)上運(yùn)行的軟件)、或兩者的組合。雖然下文按照某些順序操作來描述過程,但應(yīng)當(dāng)理解,所描述的某些操作可以不同的順序來執(zhí)行。此外,某些操作也可以并行地執(zhí)行而并非按順序執(zhí)行。
[0022]在一個(gè)實(shí)施例中,動(dòng)態(tài)程序評(píng)估可基于當(dāng)前運(yùn)行環(huán)境允許系統(tǒng)配置哪些可用的可執(zhí)行程序在不久的將來執(zhí)行任務(wù),從而改善特定系統(tǒng)度量。例如,系統(tǒng)可包括可執(zhí)行程序的多個(gè)版本或變型,每一個(gè)可執(zhí)行程序能夠執(zhí)行相同任務(wù)??赡芤阎付ùせ畹漠?dāng)前可執(zhí)行程序來執(zhí)行任務(wù),例如經(jīng)由來自應(yīng)用的應(yīng)用編程接口調(diào)用來執(zhí)行。
[0023]在一個(gè)實(shí)施例中,可觸發(fā)動(dòng)態(tài)程序評(píng)估來評(píng)估每個(gè)可執(zhí)行程序或一組選擇的可用的可執(zhí)行程序來確定應(yīng)當(dāng)指定哪一個(gè)或哪些可執(zhí)行程序在經(jīng)調(diào)用或請(qǐng)求時(shí)執(zhí)行任務(wù)。因此,可能不會(huì)為系統(tǒng)執(zhí)行(例如不激活或加載)未選擇或指定的剩余可執(zhí)行程序來執(zhí)行相應(yīng)任務(wù)。
[0024]在一些實(shí)施例中,動(dòng)態(tài)程序評(píng)估可引起在用于執(zhí)行任務(wù)的一組可執(zhí)行程序上的評(píng)估測(cè)試運(yùn)行。對(duì)于測(cè)試情況,可執(zhí)行可執(zhí)行程序或選擇的可執(zhí)行程序中的每一個(gè)可執(zhí)行程序,并且可收集和比較相應(yīng)系統(tǒng)度量,例如經(jīng)由硬件傳感器來進(jìn)行。系統(tǒng)度量可包括功耗、處理速度、內(nèi)存使用率、經(jīng)過時(shí)間和/或其他適用度量。
[0025]系統(tǒng)可聚集多個(gè)可執(zhí)行程序,每個(gè)可執(zhí)行程序能夠執(zhí)行相同任務(wù)。在運(yùn)行時(shí)期間,可激活可執(zhí)行程序中的一個(gè)可執(zhí)行程序來執(zhí)行任務(wù),例如經(jīng)由來自應(yīng)用的公用API (應(yīng)用編程接口)??蛇B同多個(gè)可執(zhí)行程序提供任務(wù)的測(cè)試案例。每個(gè)可執(zhí)行程序可編譯自不同的源代碼以使用單獨(dú)方法或方法的變型(例如不同算法、不同具體實(shí)施等)來完成相同任務(wù)。因此,多個(gè)可執(zhí)行程序可為系統(tǒng)提供機(jī)會(huì)來選擇不同的選項(xiàng)以在不同的時(shí)間實(shí)例處完成任務(wù)。
[0026]在某些實(shí)施例中,動(dòng)態(tài)程序評(píng)估可在可用的可執(zhí)行程序上執(zhí)行評(píng)估運(yùn)行來決定哪一個(gè)在將來于特定機(jī)器上執(zhí)行任務(wù)時(shí)最具高功效。可執(zhí)行程序中的每個(gè)可執(zhí)行程序可代表用于執(zhí)行相同任務(wù)的不同選項(xiàng)或備選例程。運(yùn)行時(shí)評(píng)估可有效地了解可能影響評(píng)估結(jié)果的所有因素(例如硬件或軟件)。在為可執(zhí)行程序設(shè)計(jì)或編寫相應(yīng)代碼(或源代碼)時(shí),這些因素可能不可用或者可能不會(huì)考慮它們。示例性因素可包括平臺(tái)(例如不同處理器、電路板、總線、操作系統(tǒng)等)、系統(tǒng)配置、環(huán)境設(shè)置(例如網(wǎng)絡(luò)環(huán)境、溫度等)或其他適用的運(yùn)行時(shí)處理因素。
[0027]在一些實(shí)施例中,可為數(shù)據(jù)處理任務(wù)選擇可用的可執(zhí)行程序的子組來進(jìn)行評(píng)估,而不是在所有可用的可執(zhí)行程序上執(zhí)行測(cè)試運(yùn)行??蓜?dòng)態(tài)地確定和/或微調(diào)可執(zhí)行程序的子組。例如,可保留評(píng)估結(jié)果的記錄或歷史??筛鶕?jù)之前的(例如最新的)測(cè)試結(jié)果將每個(gè)可用的可執(zhí)行程序排名(基于某個(gè)標(biāo)準(zhǔn),諸如功率使用)。根據(jù)評(píng)級(jí)順序,待評(píng)估的可用的可執(zhí)行程序的子組可標(biāo)識(shí)為可用的可執(zhí)行程序的一部分(例如前3、前25%等)。因此,可根據(jù)例如當(dāng)前運(yùn)行環(huán)境持續(xù)調(diào)節(jié)(或調(diào)諧)所需的測(cè)試運(yùn)行數(shù)目,無需每次都測(cè)試運(yùn)行每個(gè)可用的可執(zhí)行程序。
[0028]在一些實(shí)施例中,當(dāng)觸發(fā)時(shí),可監(jiān)測(cè)對(duì)用戶體驗(yàn)的影響來計(jì)劃動(dòng)態(tài)程序評(píng)估。例如,在系統(tǒng)空閑的時(shí)間段期間,可以用戶不可見方式在后臺(tái)執(zhí)行動(dòng)態(tài)執(zhí)行評(píng)估??赏V购突謴?fù)動(dòng)態(tài)適配(例如當(dāng)檢測(cè)到系統(tǒng)空閑時(shí))直到完成每次計(jì)劃的測(cè)試運(yùn)行。因此,當(dāng)滿足了某些運(yùn)行時(shí)間條件(諸如系統(tǒng)空閑而沒有處理用戶相關(guān)任務(wù)或其他適用高優(yōu)先級(jí)任務(wù))時(shí),可以多個(gè)(例如非連續(xù))時(shí)間間隔段(例如每隔5ms)來單獨(dú)執(zhí)行測(cè)試運(yùn)行選擇的可執(zhí)行程序所需的短時(shí)間段(例如20ms)。
[0029]在一個(gè)實(shí)施例中,系統(tǒng)可基于最近執(zhí)行了哪些任務(wù)(例如在對(duì)應(yīng)的API的上次調(diào)用或來自應(yīng)用的其他調(diào)用中)動(dòng)態(tài)地生成或選擇測(cè)試案例。已在系統(tǒng)中配置或安裝的可執(zhí)行程序可與一個(gè)或多個(gè)測(cè)試案例相關(guān)聯(lián),這些測(cè)試案例可應(yīng)用于執(zhí)行可執(zhí)行程序以進(jìn)行評(píng)估。
[0030]在一些實(shí)施例中,可提供預(yù)編譯的測(cè)試案例作為要在評(píng)估時(shí)間應(yīng)用的用于選擇可執(zhí)行程序的特定固定輸入,從而例如提供庫服務(wù)來執(zhí)行數(shù)據(jù)處理任務(wù)。對(duì)于每個(gè)可執(zhí)行程序可執(zhí)行相同或相似的測(cè)試以執(zhí)行相同任務(wù)來經(jīng)由硬件傳感器收集性能數(shù)據(jù)(例如花費(fèi)的時(shí)間、消耗的處理循環(huán)、使用的功率等)。能夠進(jìn)行動(dòng)態(tài)程序評(píng)估的固件可自動(dòng)拾取最佳可用的可執(zhí)行程序(例如基于某個(gè)算法)來響應(yīng)于所檢測(cè)到的環(huán)境變化或基于用戶配置的計(jì)劃來執(zhí)行任務(wù)。
[