筆、跟蹤球、或其他定點(diǎn)設(shè)備。其他輸入設(shè)備可包括各種傳感器,包括生物測(cè)定輸入設(shè)備、音頻和視頻輸入設(shè)備、以及其他傳感器。
[0098]網(wǎng)絡(luò)接口 216可以是到另一計(jì)算機(jī)的任何類型的連接。在許多實(shí)施例中,網(wǎng)絡(luò)接口 216可以是有線以太網(wǎng)連接。其他實(shí)施例可包括基于各種通信協(xié)議的有線或無(wú)線連接。
[0099]客戶端202可以包括可執(zhí)行各種應(yīng)用254的操作系統(tǒng)218。在某些實(shí)施例中,執(zhí)行環(huán)境220可執(zhí)行應(yīng)用254。在任一情況中,操作系統(tǒng)218或執(zhí)行環(huán)境220可通過(guò)管理由用于254消耗的資源并控制執(zhí)行來(lái)管理應(yīng)用254的執(zhí)行。
[0100]由操作系統(tǒng)218或執(zhí)行環(huán)境220管理的資源可以是存儲(chǔ)器資源、網(wǎng)絡(luò)資源、輸入/輸出資源、處理器資源、和其它資源。操作系統(tǒng)218或執(zhí)行環(huán)境220可分配存儲(chǔ)器、執(zhí)行垃圾收集、安排處理器可用性、賦予存儲(chǔ)資源優(yōu)先級(jí)及分配存儲(chǔ)資源、以及其它功能。在某些實(shí)施例中,該執(zhí)行環(huán)境220可以被稱作虛擬機(jī)。
[0101]跟蹤器222和224可在操作系統(tǒng)218或執(zhí)行環(huán)境220內(nèi)操作。跟蹤器222和224可監(jiān)視應(yīng)用254的執(zhí)行并收集各種信息,包括執(zhí)行數(shù)據(jù)、操作數(shù)據(jù)、調(diào)試數(shù)據(jù)、和其它類型的信息。在很多情況中,跟蹤器222和224可被暴露給可由應(yīng)用254處理的敏感數(shù)據(jù)。
[0102]原始跟蹤數(shù)據(jù)226可以是跟蹤器222或224收集的數(shù)據(jù)。原始跟蹤數(shù)據(jù)226可包括由應(yīng)用254處理的數(shù)據(jù)元素,以及對(duì)應(yīng)用元素的引用,諸如函數(shù)名和其它描述符。
[0103]模糊器228可處理原始跟蹤數(shù)據(jù)以創(chuàng)建經(jīng)模糊的跟蹤數(shù)據(jù)230。模糊器228可使用各種機(jī)制來(lái)模糊原始跟蹤數(shù)據(jù)226的一些或全部。在某些情況中,僅特定元素可被模糊,而原始跟蹤數(shù)據(jù)226中的其它元素可維持在明文格式。
[0104]在某些實(shí)施例中,源代碼分析器252可創(chuàng)建一組源代碼注釋254。源代碼注釋254可被用來(lái)以有意義的函數(shù)名和其它信息來(lái)裝飾原始跟蹤數(shù)據(jù)226。
[0105]源代碼注釋254可以是注釋、標(biāo)記、標(biāo)簽、或可從源代碼取得的其它信息。這樣的信息可由編譯器、調(diào)試工具、或其它源創(chuàng)建。在某些情況中,源代碼注釋254可由專用源代碼分析器252創(chuàng)建。通信代理232可將經(jīng)模糊的跟蹤數(shù)據(jù)230發(fā)送到遠(yuǎn)程設(shè)備240用以處理。遠(yuǎn)程設(shè)備240可位于可由防火墻236以及其它安全措施保護(hù)的安全環(huán)境之外。通信代理232可將經(jīng)模糊的跟蹤數(shù)據(jù)230通過(guò)防火墻236和網(wǎng)絡(luò)238發(fā)送到遠(yuǎn)程設(shè)備240。
[0106]遠(yuǎn)程設(shè)備240可在硬件平臺(tái)242上操作。硬件平臺(tái)242可類似于硬件平臺(tái)204。在某些實(shí)例中,硬件平臺(tái)242可以是虛擬機(jī)、云計(jì)算系統(tǒng)、計(jì)算群集、或某些其它執(zhí)行環(huán)境。
[0107]通信代理246可從設(shè)備202接收經(jīng)模糊的跟蹤數(shù)據(jù)230并處理經(jīng)模糊的跟蹤數(shù)據(jù)230。分析器248可針對(duì)經(jīng)模糊的跟蹤數(shù)據(jù)244執(zhí)行分析以生成各種分析結(jié)果,該結(jié)果可以是調(diào)試和執(zhí)行信息、優(yōu)化信息、或任何其它類型的分析結(jié)果。
[0108]經(jīng)模糊的跟蹤數(shù)據(jù)244可包含來(lái)自多個(gè)設(shè)備202的跟蹤數(shù)據(jù)。在某些實(shí)施例中,來(lái)自兩個(gè)或更多個(gè)設(shè)備的跟蹤數(shù)據(jù)可被組合,以創(chuàng)建比可能僅從一個(gè)設(shè)備創(chuàng)建的跟蹤數(shù)據(jù)更為復(fù)雜的跟蹤數(shù)據(jù)集。
[0109]在某些實(shí)施例中,來(lái)自遠(yuǎn)程設(shè)備240的結(jié)果可被發(fā)送到設(shè)備202以用于進(jìn)一步檢查和使用。在這樣的實(shí)施例中,查找數(shù)據(jù)庫(kù)234可用經(jīng)模糊的和原始數(shù)據(jù)元素填充。在從遠(yuǎn)程設(shè)備240接收到結(jié)果時(shí),查找數(shù)據(jù)234可被用來(lái)從經(jīng)模糊的結(jié)果轉(zhuǎn)換到更有意義的結(jié)果Ο
[0110]圖3是示出用于安裝并監(jiān)視可執(zhí)行代碼的方法的實(shí)施例300的流程圖示。實(shí)施例300在左列示出了客戶端設(shè)備302的操作在右列示出了遠(yuǎn)程設(shè)備304的操作。
[0111]其他實(shí)施例可使用不同的排序、更多或更少的步驟、以及不同的命名或術(shù)語(yǔ)來(lái)完成相似功能。在一些實(shí)施例中,各個(gè)操作或操作集合可與其他操作以同步或異步方式并行地執(zhí)行。此處所選的步驟是為了以簡(jiǎn)化的形式示出一些操作原理而選擇的。實(shí)施例300示出了安全位置中的設(shè)備302和可能在安全位置外的遠(yuǎn)程設(shè)備304之間的交互。跟蹤數(shù)據(jù)在設(shè)備302上被收集、模糊、并被發(fā)送到遠(yuǎn)程設(shè)備304。遠(yuǎn)程設(shè)備304可僅處理經(jīng)模糊的數(shù)據(jù)來(lái)創(chuàng)建特定結(jié)果,該結(jié)果被返回設(shè)備302并被去模糊。
[0112]在設(shè)備302上,應(yīng)用可在框306中執(zhí)行。當(dāng)應(yīng)用執(zhí)行時(shí),跟蹤數(shù)據(jù)可在框308中收集。參數(shù)的一些或全部可使用散列、加密、查找表、隨機(jī)化、或其它模糊技術(shù)來(lái)被模糊。
[0113]經(jīng)模糊的數(shù)據(jù)可在框312中被發(fā)送到遠(yuǎn)程設(shè)備304,遠(yuǎn)程設(shè)備304可在框314中接收經(jīng)模糊的數(shù)據(jù)。
[0114]遠(yuǎn)程設(shè)備304可在框316中對(duì)經(jīng)模糊的跟蹤數(shù)據(jù)執(zhí)行分析以在框318中生成分析結(jié)果。分析結(jié)果可在框320中被發(fā)送到設(shè)備302,設(shè)備302可在框322中接收分析結(jié)果。
[0115]設(shè)備302可在框324中對(duì)數(shù)據(jù)去模糊以在框326中對(duì)分析結(jié)果動(dòng)作。在框324中的去模糊可采用從計(jì)算自經(jīng)模糊的數(shù)據(jù)的結(jié)果來(lái)確定原始、初始值的機(jī)制。
[0116]圖4是示出并行跟蹤系統(tǒng)的實(shí)施例400的圖示。實(shí)施例400示出了具有分發(fā)器的系統(tǒng)的高級(jí)視圖,分發(fā)器可將工作的各單元發(fā)送到不同系統(tǒng),所述不同的系統(tǒng)包括用于性能測(cè)量以及細(xì)化的檢測(cè)或剖析的系統(tǒng)。
[0117]實(shí)施例400可以是其中工作的各單元可在不同環(huán)境中執(zhí)行的系統(tǒng)的示例,其可包括在沒(méi)有檢測(cè)下的執(zhí)行、執(zhí)行級(jí)檢測(cè)、以及細(xì)化的檢測(cè)。在許多情況中,增加檢測(cè)的級(jí)別可導(dǎo)致性能下降。然而,更完整的有關(guān)應(yīng)用的理解可將執(zhí)行和細(xì)化檢測(cè)結(jié)果兩者組合。通過(guò)從兩個(gè)不同環(huán)境收集跟蹤數(shù)據(jù),執(zhí)行相關(guān)數(shù)據(jù)可不受細(xì)化跟蹤的影響。工作的單個(gè)單元可被兩個(gè)不同系統(tǒng)分析。在這樣的系統(tǒng)中,執(zhí)行結(jié)果和細(xì)化跟蹤結(jié)果可針對(duì)工作的那些單元被組合。這樣的系統(tǒng)可用標(biāo)識(shí)符對(duì)跟蹤結(jié)果做標(biāo)記,該標(biāo)識(shí)符可以允許聚集器將結(jié)果匹配到工作的同一單元。
[0118]在其它實(shí)施例中,工作的單個(gè)單元可僅被分析一次。在這樣的系統(tǒng)中,執(zhí)行和細(xì)化分析的結(jié)果可被組合以給出整體圖片,而不需要能夠直接對(duì)比工作的各個(gè)單元。例如,在工作負(fù)載到每類分析的分發(fā)可具有統(tǒng)計(jì)上正態(tài)分布時(shí),這樣的圖片可以是統(tǒng)計(jì)上顯著的。
[0119]請(qǐng)求者42可向分發(fā)器406發(fā)送請(qǐng)求404。請(qǐng)求404可以是要由執(zhí)行環(huán)境的群集處理的工作負(fù)載。在一個(gè)示例中,請(qǐng)求404可以是對(duì)應(yīng)用編程接口的調(diào)用,其中應(yīng)用編程接口可由計(jì)算群集來(lái)執(zhí)行。在另一示例中,請(qǐng)求404可以是高性能計(jì)算系統(tǒng)內(nèi)的工作負(fù)載。在又一個(gè)實(shí)施例中,請(qǐng)求404可以是計(jì)算機(jī)應(yīng)用內(nèi)的函數(shù)或方法調(diào)用。
[0120]分發(fā)器406可分析請(qǐng)求404以確定如何路由請(qǐng)求404。在實(shí)施例400的示例中,請(qǐng)求404可被路由到未檢測(cè)系統(tǒng)410、經(jīng)執(zhí)行檢測(cè)的系統(tǒng)412、或詳細(xì)檢測(cè)的系統(tǒng)414。其它實(shí)施例可具有能夠執(zhí)行請(qǐng)求404的更多或更少的系統(tǒng)。
[0121]分發(fā)器406可具有那個(gè)定義分發(fā)器406可如何執(zhí)行其分發(fā)功能的配置408。配置408可具有其下細(xì)化的或執(zhí)行跟蹤可被執(zhí)行的條件,以及定義何時(shí)無(wú)跟蹤可執(zhí)行的條件。
[0122]條件408可包含過(guò)濾器,其將檢測(cè)限制為僅針對(duì)可用請(qǐng)求的子集。過(guò)濾器或目標(biāo)可定義與輸入流、采樣頻率相關(guān)的參數(shù)、或可定義檢測(cè)如何發(fā)生及何時(shí)發(fā)生的其它參數(shù)。目標(biāo)可定義檢測(cè)粒度,諸如功能組件、函數(shù)、處理、存儲(chǔ)器對(duì)象、或數(shù)據(jù)收集的細(xì)節(jié)的其它級(jí)另IJ。作為與輸入流相關(guān)的參數(shù)的示例,條件408可指示檢測(cè)可在包含具有特定值或值的范圍的特定變量的請(qǐng)求時(shí)執(zhí)行。其它類型的配置定義的示例可為可能被檢測(cè)的請(qǐng)求定義采樣頻率。
[0123]未檢測(cè)系統(tǒng)410可用很少的或無(wú)跟蹤或檢測(cè)來(lái)處理請(qǐng)求404。在很多情況中,未檢測(cè)410可包含可監(jiān)視系統(tǒng)的狀態(tài)或其它行為的最少檢測(cè)。未檢測(cè)系統(tǒng)410不能夠生成可用從其它經(jīng)檢測(cè)系統(tǒng)收集的數(shù)據(jù)來(lái)分析的檢測(cè)結(jié)果。
[0124]經(jīng)執(zhí)行檢測(cè)的系統(tǒng)412可在收集性能相關(guān)度量時(shí)處理請(qǐng)求404。檢測(cè)可被設(shè)計(jì)以具有對(duì)系統(tǒng)性能的最小影響,使得性能度量可被認(rèn)為是精確的。
[0125]經(jīng)細(xì)化檢測(cè)的系統(tǒng)414可在收集細(xì)化操作信息時(shí)處理請(qǐng)求404。在許多情況中,這樣的系統(tǒng)可跟蹤函數(shù)調(diào)用、收集進(jìn)程和函數(shù)之間傳遞的數(shù)據(jù)對(duì)象、收集作為執(zhí)行期間的特定點(diǎn)的對(duì)象值、和其它數(shù)據(jù)。在許多情況中,經(jīng)細(xì)化檢測(cè)的系統(tǒng)414可能比執(zhí)行系統(tǒng)412顯著地慢。
[0126]在實(shí)施例400的示例中,三個(gè)系統(tǒng)被示為處理請(qǐng)求404。在某些實(shí)施例中,這樣的設(shè)備可以是具有相同或不同軟件組件的相同的硬件設(shè)備,而在其它實(shí)施例中,可使用具有不同硬件或軟件組件的不同設(shè)備。這樣不相同的系統(tǒng)可具有設(shè)計(jì)用于高性能、細(xì)化檢測(cè)或其它功能的專用硬件或軟件組件。
[0127]應(yīng)用輸出416可從執(zhí)行請(qǐng)求404的各系統(tǒng)被接收。應(yīng)用輸出416可被返回到請(qǐng)求者 402。
[0128]在兩個(gè)系統(tǒng)執(zhí)行相同請(qǐng)求的情況中,應(yīng)用輸出416可被比較以確定兩個(gè)系統(tǒng)是否收集了相同輸出。在某些實(shí)施例中,當(dāng)兩個(gè)并行設(shè)備收集相同輸出時(shí),輸出可被看成是可靠的或?qū)嶓w化的。當(dāng)來(lái)自兩個(gè)系統(tǒng)的輸出不相同時(shí),輸出值之一可被選擇、值被平均、或采取其它動(dòng)作。
[0129]結(jié)果組合器418可從經(jīng)執(zhí)行檢測(cè)的系統(tǒng)412和經(jīng)細(xì)化檢測(cè)的系統(tǒng)414兩者收集跟蹤數(shù)據(jù),并將結(jié)果存儲(chǔ)在一組檢測(cè)結(jié)果420中。在某些情況中,結(jié)果組合器418可將在兩個(gè)或更多個(gè)不同跟蹤數(shù)據(jù)間的特定執(zhí)行運(yùn)行或特征進(jìn)行匹配。可在本說(shuō)明書(shū)的稍后處找出這樣的匹配的示例。
[0130]圖5是示出其中不同執(zhí)行系統(tǒng)可生成不同級(jí)別的跟蹤數(shù)據(jù)的網(wǎng)絡(luò)環(huán)境的實(shí)施例500的圖示。實(shí)施例500示出可實(shí)現(xiàn)實(shí)施例400以及其他實(shí)施例中描述的操作的某些的硬件組件。
[0131]圖5的圖示出了系統(tǒng)的功能組件。在一些情況下,組件可以是硬件組件、軟件組件、或者硬件和軟件的組合。一些組件可以是應(yīng)用級(jí)軟件,而其他組件可以是執(zhí)行環(huán)境級(jí)組件。在一些情況下,一個(gè)組件到另一組件的連接可以是緊密連接,其中兩個(gè)或更多個(gè)組件在單個(gè)硬件平臺(tái)上操作。在其他情況下,連接可通過(guò)跨長(zhǎng)距離的網(wǎng)絡(luò)連接來(lái)進(jìn)行。每個(gè)實(shí)施例都可使用不同的硬件、軟件、以及互連架構(gòu)來(lái)實(shí)現(xiàn)所描述的功能。
[0132]實(shí)施例500示出了處理通過(guò)外部網(wǎng)絡(luò)504從請(qǐng)求者502接收到的請(qǐng)求系統(tǒng)的示例。分發(fā)器系統(tǒng)506可解析進(jìn)入的請(qǐng)求流并導(dǎo)致各種執(zhí)行系統(tǒng)520執(zhí)行請(qǐng)求。對(duì)請(qǐng)求的應(yīng)用輸出或響應(yīng)可被傳回請(qǐng)求者502,而從執(zhí)行系統(tǒng)520收集的任何跟蹤數(shù)據(jù)可被存儲(chǔ)并由分析系統(tǒng)552使用。
[0133]實(shí)施例500中所示的各種設(shè)備的每一個(gè)可具有硬件平臺(tái)。相應(yīng)的硬件平臺(tái)可類似于實(shí)施例100中的硬件平臺(tái)100。設(shè)備可以是任何類型的硬件平臺(tái),諸如個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、游戲控制臺(tái)、平板計(jì)算機(jī)、移動(dòng)電話、或具有可編程處理器的任何其它設(shè)備。分發(fā)器系統(tǒng)506可接收并解析輸入流,接著將工作的各單元引導(dǎo)到各種執(zhí)行系統(tǒng)520。分發(fā)器系統(tǒng)506可操作在硬件平臺(tái)508上并包含經(jīng)由外部接口 512接收工作請(qǐng)求的分發(fā)器510。分發(fā)器510可具有跟蹤配置514和定義工作的各單元如何分發(fā)的分發(fā)配置516。
[0134]跟蹤配置514可定義算法、條件、或可定義如何及合適收集檢測(cè)數(shù)據(jù)的其它條件。跟蹤配置514可包括粒度、采樣率、采樣大小、要收集的數(shù)據(jù),和其它信息。跟蹤配置514還可包括何時(shí)跟蹤或不跟蹤的特定條件。
[0135]這樣的條件可評(píng)估請(qǐng)求中的數(shù)據(jù)元素,以及來(lái)自外部源的數(shù)據(jù)元素。例如,條件可導(dǎo)致詳細(xì)跟蹤在晚間在輸入?yún)?shù)為“藍(lán)”時(shí)發(fā)生。
[0136]分發(fā)配置516可定義用于分配其它工作單元的條件。分發(fā)配置516可定義負(fù)載平衡算法,例如,該算法將工作分配給輕度負(fù)載的設(shè)備而避免將工作發(fā)送給重度負(fù)載的工作。
[0137]本地網(wǎng)絡(luò)518可將分發(fā)器系統(tǒng)506與各種執(zhí)行系統(tǒng)520相連接。執(zhí)行系統(tǒng)520可具有操作系統(tǒng)524或執(zhí)行環(huán)境530可在其上運(yùn)行的硬件平臺(tái)522。應(yīng)用534可在執(zhí)行系統(tǒng)520上執(zhí)行以響應(yīng)于工作單元,并且各種跟蹤器可在應(yīng)用534處理該工作單元時(shí)收集數(shù)據(jù)。
[0138]在某些實(shí)施例中,應(yīng)用534可直接在操作系統(tǒng)524上執(zhí)行。在這樣的實(shí)施例中,操作系統(tǒng)524可具有用于收集執(zhí)行相關(guān)測(cè)量的輕量跟蹤器526,以及可在應(yīng)用執(zhí)行期間收集經(jīng)細(xì)化信息的詳細(xì)跟蹤器528。
[0139]在其它實(shí)施例中,應(yīng)用534可在執(zhí)行環(huán)境530中執(zhí)行。執(zhí)行環(huán)境530可以是虛擬機(jī),諸如進(jìn)程虛擬機(jī),其管理執(zhí)行并提供各種支持功能,諸如存儲(chǔ)器分配、垃圾收集、進(jìn)程管理、消息傳遞、或其它功能。這樣的執(zhí)行環(huán)境可具有跟蹤器532。
[0140]可使用跟蹤器配置536來(lái)配置各種跟蹤器,跟蹤器配置536可定義收集什么信息以及在什么情況下信息可被收集。在某些實(shí)施例中,跟蹤器配置53可能是導(dǎo)致單個(gè)跟蹤器表現(xiàn)為執(zhí)行級(jí)跟蹤器或詳細(xì)跟蹤器的足夠信息。
[0141]跟蹤數(shù)據(jù)538可以是本地地收集的跟蹤器輸出,其可被傳遞到分析系統(tǒng)552。
[0142]在某些實(shí)施例中,分發(fā)器540可位于執(zhí)行系統(tǒng)52