欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在一個或多個虛擬機中生成應(yīng)用級依賴的系統(tǒng)和方法

文檔序號:7806932閱讀:362來源:國知局

專利名稱::在一個或多個虛擬機中生成應(yīng)用級依賴的系統(tǒng)和方法
技術(shù)領(lǐng)域
:本公開一般涉及用于在一個或多個虛擬機中生成應(yīng)用級依賴(dependency)的系統(tǒng)和方法。
背景技術(shù)
:企業(yè)服務(wù)通常由許多業(yè)務(wù)服務(wù)器和/或網(wǎng)絡(luò)組成。隨著網(wǎng)絡(luò)增長和成熟的計算虛擬化技術(shù)的進展,企業(yè)應(yīng)用變得更復(fù)雜。例如,由于云計算,更多用戶應(yīng)用從個人計算機移動到虛擬數(shù)據(jù)中心(VDC)中,最終用戶通過請求由數(shù)據(jù)中心的業(yè)務(wù)服務(wù)器提供的業(yè)務(wù)來使用遠程應(yīng)用。分布式應(yīng)用變得更強大和全面。單個節(jié)點的性能問題或失敗會影響整個分布式系統(tǒng)的服務(wù)質(zhì)量(QoS)。與硬件故障或資源耗盡相比較,軟件問題很難檢測。因此,期待分布式應(yīng)用的性能管理。一種用于應(yīng)用發(fā)現(xiàn)的當(dāng)前技術(shù)是通過監(jiān)視應(yīng)用事件。此技術(shù)在每個物理服務(wù)器上安裝代理。該代理監(jiān)視由應(yīng)用報告的事件,并且將事件轉(zhuǎn)發(fā)到中心應(yīng)用管理服務(wù)器。隨后,應(yīng)用管理服務(wù)器在數(shù)據(jù)中心中分析應(yīng)用事件、發(fā)現(xiàn)在數(shù)據(jù)中心上運行的應(yīng)用、并找到應(yīng)用之間的依賴。用于應(yīng)用依賴發(fā)現(xiàn)的一種當(dāng)前技術(shù)是裝備Java字節(jié)代碼的中間件軟件。裝備的代碼跟蹤通過中間件的請求并且將跟蹤日志發(fā)送到中心應(yīng)用管理服務(wù)器。隨后應(yīng)用管理服務(wù)器分析這些日志、得知應(yīng)用之間的消息交換、并發(fā)現(xiàn)應(yīng)用之間的依賴。此技術(shù)在通過裝備的中間件進行通信的分布式應(yīng)用上工作。用于應(yīng)用依賴發(fā)現(xiàn)(applicationdependencydiscovery)的一種當(dāng)前技術(shù)是發(fā)覺(sniff)每個物理服務(wù)器上的網(wǎng)絡(luò)通信量。此技術(shù)在每個物理服務(wù)器上安裝代理以發(fā)覺到此服務(wù)器或來自此服務(wù)器的網(wǎng)絡(luò)通信量,并且將通信量日志發(fā)送到中心應(yīng)用服務(wù)器。應(yīng)用服務(wù)器分析這些通信量日志并生成物理服務(wù)器之間的應(yīng)用依賴(applicationdependency)。圖1示出通過在每個物理服務(wù)器上發(fā)覺網(wǎng)絡(luò)通信量而生成的應(yīng)用依賴的示例。在該示例中,交換客戶端(client)應(yīng)用通過公知的域名系統(tǒng)(DNS)端口53連接到一個服務(wù)器、通過公知的活動目錄(AD)端口88、135、1024、389連接到另一服務(wù)器、并且通過公知的郵箱端口135連接到另一服務(wù)器??梢匀鐖D1所示生成交換客戶端應(yīng)用的應(yīng)用依賴圖(dependencymap)。可以如下描述用于應(yīng)用、進程和線程的術(shù)語的背景。應(yīng)用是在物理機器或虛擬機(VM)上運行的可執(zhí)行計算機軟件。應(yīng)用可以在操作系統(tǒng)(OS)中創(chuàng)建一個或多個進程。進程是在OS中的運行環(huán)境的為了運行用戶應(yīng)用的基本單位。此運行環(huán)境分配來自O(shè)S的資源并且擁有資源,從而在進程中運行的線程可以共享這些資源。資源可以包括存儲器、開放文件的描述符、開放網(wǎng)絡(luò)連接等等。線程是在計算機系統(tǒng)中執(zhí)行控制的基本單位??赡艽嬖谠谶M程的運行環(huán)境中運行的一個或多個線程。一個應(yīng)用可以創(chuàng)建許多進程以在物理服務(wù)器上提供服務(wù),并且每個進程可以創(chuàng)建共享由此進程占有的資源的一個或多個并行線程。利用每個進程中的一個單線程創(chuàng)建許多進程的應(yīng)用被稱作多進程應(yīng)用。在一個進程中創(chuàng)建許多并行線程的應(yīng)用是多線程應(yīng)用。
發(fā)明內(nèi)容本公開的示范性實施例可以提供用于在一個或多個虛擬機中生成應(yīng)用級依賴的系統(tǒng)和方法。一個示范性實施例涉及用于在一個或多個虛擬機(VM)中生成應(yīng)用級依賴的系統(tǒng)。該系統(tǒng)包括在物理機器上運行的應(yīng)用性能管理(APM)服務(wù)器、一個或多個攔截(intercepting)模塊以及一個或多個內(nèi)省(introspecting)模塊。APM服務(wù)器接受請求并向至少一個轉(zhuǎn)發(fā)守護進程(daemon)發(fā)送命令以開啟所述一個或多個VM的至少一個相關(guān)的VM的檢查狀態(tài),并且生成已選擇的應(yīng)用的應(yīng)用軌跡并輸出用于已選擇的應(yīng)用的應(yīng)用依賴。每個攔截模塊攔截在所述至少一個相關(guān)的VM上的處于傳輸控制協(xié)議(TCP)發(fā)送和關(guān)閉相關(guān)的操作中的客戶機操作系統(tǒng)(guestOS、或稱作虛擬計算機OS)。每個內(nèi)省模塊對于TCP連接和運行線程信息執(zhí)行VM內(nèi)省。另一示范性實施例涉及用于在一個或多個虛擬機(VM)中生成應(yīng)用級依賴的計算機實現(xiàn)的方法。所述方法包括:在提供具有所述一個或多個VM的虛擬環(huán)境的一個或多個物理服務(wù)器的控制之下;攔截處于所述一個或多個VM的至少一個相關(guān)的VM的傳輸控制協(xié)議(TCP)發(fā)送和關(guān)閉相關(guān)的操作中的客戶機操作系統(tǒng)(guestOS);對于TCP連接和運行線程信息執(zhí)行VM內(nèi)??;以及生成已選擇的應(yīng)用的應(yīng)用軌跡并從用于已選擇的應(yīng)用的應(yīng)用軌跡輸出應(yīng)用依賴。從以下利用附圖的適當(dāng)參考提供的詳細說明的仔細理解閱讀中,本公開的上述和其它特征以及方面將變得更容易理解。圖1示出通過在每個物理服務(wù)器上發(fā)覺網(wǎng)絡(luò)通信量而生成的應(yīng)用依賴的示例。圖2A示出根據(jù)示范性實施例的應(yīng)用軌跡的示例。圖2B示出根據(jù)示范性實施例的應(yīng)用依賴圖的示例。圖2C示出根據(jù)示范性實施例的利用VM信息的應(yīng)用依賴圖的示例。圖3A示出根據(jù)示范性實施例的、用于在一個或多個虛擬機中生成應(yīng)用級依賴的系統(tǒng)的不意圖。圖3B示出根據(jù)示范性實施例的示出圖3A的系統(tǒng)的詳細操作的示范性環(huán)境。圖4示出根據(jù)示范性實施例的、用于在虛擬化環(huán)境中生成應(yīng)用級依賴的數(shù)據(jù)流的示意圖。圖5示出根據(jù)示范性實施例的三階段方案的示意圖。圖6示出根據(jù)示范性實施例的、利用用于在虛擬化環(huán)境中生成應(yīng)用級依賴的方法的圖5的三個階段。圖7是示出根據(jù)示范性實施例的、選擇攔截機制的決定的流程圖。圖8示出根據(jù)示范性實施例的、在TCP協(xié)議的關(guān)閉和發(fā)送函數(shù)中設(shè)置硬件斷點的示意圖。圖9示出根據(jù)示范性實施例的、通過在VMM中復(fù)制映射SDT表來攔截TCP相關(guān)的系統(tǒng)調(diào)用的不意圖。圖10示出根據(jù)示范性實施例的、在用于運行線程和TCP連接信息的進程中內(nèi)省LinuxVM內(nèi)核的數(shù)據(jù)結(jié)構(gòu)的示例。圖11示出根據(jù)示范性實施例的、每線程通信量日志的格式,以及日志在VMM中被生成并由轉(zhuǎn)發(fā)守護進程轉(zhuǎn)發(fā)到APM服務(wù)器。圖12示出根據(jù)示范性實施例的、在多個客戶機(guest)VM之間進行攔截并內(nèi)省的VMM機制。圖13示出根據(jù)示范性實施例的、將每線程通信量日志轉(zhuǎn)換為線程間通信量日志并存儲在日志數(shù)據(jù)庫中的示例。圖14示出根據(jù)示范性實施例的生成應(yīng)用軌跡的示例。圖15示出根據(jù)示范性實施例的、對于在時間段Ata期間的線程Ta生成應(yīng)用軌跡的算法的流程圖。圖16A和圖16B示出根據(jù)示范性實施例的、示出從應(yīng)用軌跡生成應(yīng)用依賴(GAD)的算法的操作流。圖17示出根據(jù)示范性實施例的、示出在學(xué)習(xí)階段中的VDC1700中的增量式使能通信量日志的示例。具體實施例方式本示范性實施例公開了用于在虛擬化環(huán)境中使用VM檢查來生成應(yīng)用級依賴的技術(shù)??梢酝ㄟ^攔截VM運行和內(nèi)省VM狀態(tài)來執(zhí)行VM檢查。該技術(shù)攔截處于分組發(fā)送系統(tǒng)調(diào)用中的客戶機OS、執(zhí)行VM內(nèi)省以得到運行線程和TCP連接信息、以及向服務(wù)器發(fā)送此通信量日志?;诰€程的通信量日志在應(yīng)用性能管理(APM)服務(wù)器中被進一步轉(zhuǎn)換為線程間通信量日志。從線程間通信量日志可以生成兩種輸出。一種輸出是線程粒度(threadgranuIarity)方面的應(yīng)用軌跡,另一種輸出是來自應(yīng)用軌跡的精確的應(yīng)用依賴圖。應(yīng)用軌跡由在它的出現(xiàn)時刻的應(yīng)用之間的消息交換的列表組成。應(yīng)用軌跡可以包括由此應(yīng)用直接發(fā)送的消息和由其他應(yīng)用間接地發(fā)送的消息,所述其他應(yīng)用用于處理由此應(yīng)用發(fā)送的消息??梢砸詷湫螖?shù)據(jù)結(jié)構(gòu)存儲應(yīng)用軌跡。應(yīng)用軌跡可以包括一個或多個結(jié)點、一個或多個鏈接以及一個或多個箭頭。圖2A示出根據(jù)示范性實施例的應(yīng)用軌跡的示例。參照圖2A,應(yīng)用軌跡200從瀏覽器I開始。在該軌跡中的結(jié)點指示在一時間段期間對應(yīng)用的消息交換。例如,結(jié)點210指示在開始時間0:01和結(jié)束時間4:59的時間段期間對名稱為網(wǎng)絡(luò)服務(wù)器I的應(yīng)用的消息交換。該軌跡中的鏈接指示兩個應(yīng)用之間的直接的消息交換。例如,在結(jié)點210和結(jié)點220之間的鏈接指示在名為網(wǎng)絡(luò)服務(wù)器I的應(yīng)用和名為負載平衡器的應(yīng)用之間的直接消息交換。軌跡中的箭頭指示從客戶端應(yīng)用到服務(wù)器應(yīng)用的兩個應(yīng)用之間的連接的方向,例如,箭頭230指示客戶端方(應(yīng)用服務(wù)器1,0:33,4:59)到服務(wù)器方(數(shù)據(jù)庫服務(wù)器,4:50,4:59)連接。應(yīng)用軌跡可以幫助管理員找出應(yīng)用性能的瓶頸。例如,當(dāng)數(shù)據(jù)庫服務(wù)器到應(yīng)用服務(wù)器I的消息響應(yīng)時間很長時,將間接地影響用戶在瀏覽器I上的運行性能。通過調(diào)查軌跡信息,可以發(fā)現(xiàn)哪個應(yīng)用的消息交換的持續(xù)時間太長。應(yīng)用依賴圖可以通過圖形顯示進一步通知管理員哪個依賴關(guān)系很慢。應(yīng)用依賴圖記錄應(yīng)用之間的依賴。圖2B示出根據(jù)示范性實施例的應(yīng)用依賴圖的示例。參照圖2B,應(yīng)用依賴圖250從瀏覽器I開始。在應(yīng)用依賴圖250中,如果應(yīng)用A已經(jīng)與應(yīng)用B進行了數(shù)據(jù)交換并且A是A到B連接的客戶端方,則A依賴B。例如,如果負載平衡器(應(yīng)用A)已經(jīng)與應(yīng)用服務(wù)器2(應(yīng)用B)進行了數(shù)據(jù)交換,則負載平衡器依賴應(yīng)用服務(wù)器2。應(yīng)用依賴圖等效于軌跡的靜態(tài)視圖。虛擬機或物理機器的信息可以被添加在應(yīng)用依賴圖上以幫助理解應(yīng)用部署。示范性實施例可以關(guān)聯(lián)VM內(nèi)核信息以在虛擬化環(huán)境中生成應(yīng)用依賴圖。圖2C示出在其上具有VM信息的圖2B的應(yīng)用依賴圖的示意圖。其中虛線塊指示虛擬化環(huán)境中的VM并且VM可以包括一個或多個成員。例如,網(wǎng)絡(luò)服務(wù)器I和負載平衡器處于相同VM260中并且在該虛擬化環(huán)境中存在五個VM。圖3A示出根據(jù)示范性實施例的、用于在一個或多個虛擬機(VM)中生成應(yīng)用級依賴的系統(tǒng)的示意圖。參照圖3A,系統(tǒng)300包括在物理機器310上運行的應(yīng)用性能管理(APM)服務(wù)器330、一個或多個攔截模塊和一個或多個內(nèi)省模塊。APM服務(wù)器330接受請求322并且向至少一個轉(zhuǎn)發(fā)守護進程355發(fā)送控制命令330a以開啟諸如VMlVMN的一個或多個VM的至少一個相關(guān)的VM的檢查狀態(tài),并且生成已選擇的應(yīng)用的應(yīng)用軌跡并輸出用于已選擇的應(yīng)用的應(yīng)用依賴。諸如攔截模塊374的每個攔截模塊攔截在全部相關(guān)的VM上處于傳輸控制協(xié)議(TCP)發(fā)送和關(guān)閉相關(guān)的操作中的客戶機操作系統(tǒng)(OS)。諸如內(nèi)省模塊372的每個內(nèi)省模塊通過檢查客戶機OS的運行內(nèi)核數(shù)據(jù)結(jié)構(gòu)和得到一個或多個運行線程的進程和線程信息來執(zhí)行對于TCP連接和運行線程信息的VM內(nèi)省,并且生成一個或多個每線程通信量日志330b用于經(jīng)由轉(zhuǎn)發(fā)守護進程355發(fā)送到APM服務(wù)器。攔截模塊374和內(nèi)省模塊372在諸如物理服務(wù)器I的相應(yīng)的物理服務(wù)器上的諸如VMM370的相應(yīng)的VM監(jiān)視器(VMM)中,并且相應(yīng)的轉(zhuǎn)發(fā)守護進程355在相應(yīng)的物理服務(wù)器I上運行。圖3B示出根據(jù)示范性實施例的示出圖3A的系統(tǒng)的詳細操作的示范性環(huán)境。在該環(huán)境中,APM服務(wù)器330可以通過圖形用戶接口(⑶I)320從管理員接收請求322以開始應(yīng)用依賴生成。請求322可以包含至少一個已選擇的應(yīng)用和相關(guān)的虛擬機標(biāo)識符(vm-1d)列表。已選擇的應(yīng)用是將被識別應(yīng)用依賴的應(yīng)用,它可以攜帶諸如至少一個應(yīng)用程序名和它的運行VM的VM標(biāo)識符(vm-1d)之類的信息;相關(guān)的vm-1d列表表示與已選擇的應(yīng)用相關(guān)的以及使能VM檢查所需的VM的列表。在接收請求時,APM服務(wù)器向在運行與已選擇的應(yīng)用相關(guān)的VM的一個或多個物理服務(wù)器上的一個或多個轉(zhuǎn)發(fā)守護進程發(fā)送控制命令330a??刂泼羁梢园_啟/關(guān)閉檢查特征和相應(yīng)的vm-1d。每個轉(zhuǎn)發(fā)守護進程向相應(yīng)的VMM傳遞控制命令。對于具有檢查狀態(tài)開啟的VM,例如VMM370,VM攔截模塊374攔截處于TCP發(fā)送和關(guān)閉相關(guān)函數(shù)中的它的運行,并且VM內(nèi)省模塊372檢查內(nèi)核數(shù)據(jù)結(jié)構(gòu)并得到運行的線程和TCP連接信息。內(nèi)省模塊372為在VM中的每個呼叫TCP相關(guān)函數(shù)生成一個每線程通信量日志。每線程通信量日志發(fā)送給轉(zhuǎn)發(fā)守護進程355以向APM服務(wù)器330轉(zhuǎn)發(fā)每線程通信量330b。通過分析接收的日志,APM服務(wù)器330可以通過⑶1320向管理員發(fā)送輸出324。輸出可以包括至少一個應(yīng)用軌跡和已選擇的應(yīng)用的應(yīng)用依賴圖。VMM370中的VM內(nèi)核信息376可以包括TCP操作攔截信息和內(nèi)核對象定義。TCP發(fā)送攔截信息是攔截TCP發(fā)送和TCP關(guān)閉相關(guān)操作所需的信息。在實施例中它可以是TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的地址或TCP發(fā)送關(guān)閉相關(guān)的系統(tǒng)調(diào)用數(shù)量。在接收開啟檢查命令之后,攔截模塊374從VM內(nèi)核信息376載入攔截信息并開始在TCP發(fā)送和關(guān)閉相關(guān)操作中進行攔截。在成功地攔截TCP操作之后,系統(tǒng)300可以在內(nèi)省模塊372中開始執(zhí)行通信量日志匯集。內(nèi)省模塊372被配置為執(zhí)行用于線程和TCP連接信息的VM內(nèi)省。內(nèi)省模塊372可以檢查VM的CPU寄存器值,得到運行的線程和處理的套件的內(nèi)核對象并生成每線程通信量日志。內(nèi)省模塊372可以檢查VM的CPU寄存器值,得到運行線程和處理套件的內(nèi)核對象并生成每線程通信量日志。它從VM內(nèi)核信息376接收內(nèi)核對象定義。內(nèi)核對象定義包括對于進程、線程和套件對象的定義。內(nèi)省模塊372使用內(nèi)核對象定義來解釋線程和套件對象中的值以生成每線程通信量日志。由內(nèi)省模塊372匯集的每個每線程通信量日志可以至少包含諸如時間信息、線程信息、連接信息、方向等的信息。在生成每線程通信量日志之后,內(nèi)省模塊372向轉(zhuǎn)發(fā)守護進程355輸出每個每線程通信量日志,轉(zhuǎn)發(fā)守護進程355向APM服務(wù)器330轉(zhuǎn)發(fā)每線程通信量日志330b。APM服務(wù)器330還可以包括通信量日志轉(zhuǎn)換模塊334和依賴圖生成模塊336。利用每個每線程通信量日志,通信量日志轉(zhuǎn)換模塊334通過找到每個每線程通信量日志的目的線程來執(zhí)行從每線程通信量日志到線程間通信量日志的轉(zhuǎn)換,并且將每個線程間通信量日志存儲到日志數(shù)據(jù)庫380。依賴圖生成模塊336從日志數(shù)據(jù)庫380讀取線程間通信量日志。每個線程間通信量日志可以包含諸如時間、發(fā)送器/接收器線程信息、方向等的信息。APM服務(wù)器310可以使用增量使能模塊332來逐漸使能相關(guān)的VM的檢查狀態(tài)直到至少一個相關(guān)的VM的檢查狀態(tài)被開啟。依賴圖生成模塊336通過生成應(yīng)用軌跡(GAT)算法從全部線程間通信量日志生成應(yīng)用軌跡。并且,它通過生成應(yīng)用依賴(GAD)算法從應(yīng)用軌跡生成在一時間段期間的精確的應(yīng)用依賴,并且輸出用于已選擇的應(yīng)用的精確的應(yīng)用依賴??梢砸灾T如樹形數(shù)據(jù)結(jié)構(gòu)存儲應(yīng)用軌跡。GAD算法可以從應(yīng)用軌跡并且通過遞歸調(diào)用GAD子例程來生成應(yīng)用依賴圖。圖4示出用于生成應(yīng)用軌跡和依賴的系統(tǒng)300的數(shù)據(jù)流。管理員將已選擇的應(yīng)用414和相關(guān)的vm-1d列表416輸入到系統(tǒng)中。攔截模塊374從VM內(nèi)核信息376載入攔截信息412并開始檢查相關(guān)的VM。當(dāng)客戶機VM被攔截時,內(nèi)省模塊372從VM內(nèi)核信息載入內(nèi)核對象定義422、讀取客戶機VM中的內(nèi)核對象用于得到線程和TCP連接信息并生成每線程通信量日志330b到通信量日志轉(zhuǎn)換模塊334。通信量日志轉(zhuǎn)換模塊334將每線程通信量日志330b轉(zhuǎn)換成為線程間通信量日志435并輸出到依賴圖生成模塊336。依賴圖生成模塊336生成應(yīng)用軌跡445,然后生成應(yīng)用依賴447并輸出給管理員。在一個實例中,管理員可以不必確切知道已選擇的應(yīng)用的相關(guān)的VM,而必須使能VDC中的每個VM的檢查狀態(tài)用于生成應(yīng)用依賴。示范性實施例使用三階段方案來找到已選擇的應(yīng)用的相關(guān)的VM從而降低生成的通信量日志的數(shù)量并降低依賴生成的成本。圖5示出根據(jù)示范性實施例的三階段方案的示意圖。參照圖5,三階段包括學(xué)習(xí)階段510、發(fā)現(xiàn)階段520和生成階段530。學(xué)習(xí)階段510識別與應(yīng)用相關(guān)的VM。在發(fā)現(xiàn)階段520中僅對相關(guān)的VM使能VM檢查。這將降低需要檢查的VM的數(shù)量。在學(xué)習(xí)階段510中,輸入將生成依賴的已選擇的應(yīng)用,并且使用增量式方法來使能相關(guān)的VM的檢查特征直到?jīng)]有新的相關(guān)的VM被找到。學(xué)習(xí)階段510的輸出是已選擇的應(yīng)用414和用于該應(yīng)用的相關(guān)的vm-1d列表416,并且該輸出還被發(fā)送到發(fā)現(xiàn)階段520。根據(jù)應(yīng)用和它的相關(guān)vm-1d列表,在發(fā)現(xiàn)階段520中匯集基于線程的通信量日志并且生成線程間通信量日志435。線程間通信量日志435還被發(fā)送到生成階段530。在生成階段530中,生成應(yīng)用軌跡445和應(yīng)用依賴437。因此,根據(jù)圖4的示范性實施例,利用計算機實現(xiàn)的用于在虛擬化環(huán)境中生成應(yīng)用級依賴的方法的三個階段可以顯示為圖6。在圖6中,發(fā)現(xiàn)階段520包括攔截610、內(nèi)省620和通信量日志轉(zhuǎn)換630的步驟。攔截610執(zhí)行攔截模塊374的操作。內(nèi)省620執(zhí)行內(nèi)省模塊372的操作。而且,通信量日志轉(zhuǎn)換630執(zhí)行通信量日志轉(zhuǎn)換模塊334的操作。生成階段530包括依賴圖生成640的步驟,并且依賴圖生成640執(zhí)行依賴生成模塊336的操作。學(xué)習(xí)階段510包括增量式使能650的步驟。增量式使能650通過使用來自通信量日志轉(zhuǎn)換630的線程間通信量日志435來增量式地使能VM通信量日志,并向發(fā)現(xiàn)階段520輸出vm-1d列表416。因此,用于在一個或多個虛擬機中生成應(yīng)用級依賴的計算機實現(xiàn)的方法可以包括攔截610、內(nèi)省620、通信量日志轉(zhuǎn)換630和依賴圖生成640。換句話說,在提供具有所述一個或多個VM的虛擬環(huán)境的一個或多個物理服務(wù)器的控制之下,計算機實現(xiàn)的方法可以攔截處于一個或多個VM的至少一個相關(guān)的VM的傳輸控制協(xié)議(TCP)發(fā)送和關(guān)閉相關(guān)的操作中的客戶機操作系統(tǒng)(OS),通過檢查客戶機OS的運行線程并得到一個或多個運行線程和TCP連接信息來執(zhí)行用于TCP連接和運行線程信息的VM內(nèi)省,以及生成一個或多個每線程通信量日志,然后將一個或多個每線程通信量日志轉(zhuǎn)換為一個或多個線程間通信量日志,并從一個或多個線程間通信量日志生成應(yīng)用軌跡并從應(yīng)用軌跡輸出用于已選擇的應(yīng)用的應(yīng)用依賴。公開的用于在虛擬化環(huán)境中生成應(yīng)用級依賴的示范性實施例以諸如apachepre-fork模式之類的多進程模型或諸如apacheworker模式之類的多線程模型或兩者運行。在一些實施例中,攔截610可以利用通過硬件斷點的攔截或攔截TCP相關(guān)的系統(tǒng)調(diào)用來實現(xiàn),但不限于這些。圖7是示出根據(jù)示范性實施例的、選擇攔截機制的決定的流程圖。在示范性實施例中,選擇攔截機制的決定可以取決于由CPU支持的硬件調(diào)試寄存器的數(shù)量DN和客戶機OS中的TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的數(shù)量。如圖7所示,當(dāng)數(shù)量DN大于TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的數(shù)量時,選擇通過硬件斷點的攔截,如步驟710所示。當(dāng)數(shù)量DN不大于TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的數(shù)量時,選擇通過TCP相關(guān)的系統(tǒng)調(diào)用的攔截,該TCP相關(guān)的系統(tǒng)調(diào)用包括從VM客戶機OS復(fù)制映射服務(wù)描述符表(shadowservicedescriptortable,SDT)表格到VM監(jiān)視器(VMM)中(步驟720)并且將VM客戶機OS中的SDT表格修改以攔截TCP相關(guān)的系統(tǒng)調(diào)用(步驟722)。圖8示出根據(jù)示范性實施例的、在TCP協(xié)議棧的closeO和send()函數(shù)中設(shè)置硬件斷點的示意圖。參照圖8,客戶機VM800可以在內(nèi)核模式820中提供諸如系統(tǒng)調(diào)用分配(syscalldispatch)821、對象類型分配823和協(xié)議類型分配825之類的分配函數(shù)。系統(tǒng)調(diào)用分配821是基于系統(tǒng)調(diào)用數(shù)量的分配函數(shù)。對象類型分配823是基于諸如套件、文件、proc等的文件描述符對象的文件系統(tǒng)類型的分配函數(shù)。協(xié)議類型分配825是基于諸如TCP、UDP、MCAST等的套件的協(xié)議類型的分配函數(shù)。用戶應(yīng)用812在客戶機VM800的用戶模式810中運行。它可以調(diào)用各個系統(tǒng)調(diào)用來發(fā)送TCP通信量。例如,使用TCP套件文件描述符作為參數(shù)的許多系統(tǒng)調(diào)用可以發(fā)送分組到TCP連接中,諸如sendO、sendtoO、writeO和sendmsgO。這些系統(tǒng)調(diào)用全部間接地調(diào)用Linux內(nèi)核TCP協(xié)議棧的稱作tcp_sendmsg()的內(nèi)核函數(shù)。—個實例可以在此tcp_sendmsg()函數(shù)中使能硬件調(diào)試斷點。當(dāng)VMM得到由于tcp_sendmsg()函數(shù)中的此硬件斷點的VM_exit事件時,它成功地攔截TCP發(fā)送相關(guān)的系統(tǒng)調(diào)用并在下一步中開始執(zhí)行通信量匯集。從而,示范性實施例可以在發(fā)送822中斷開客戶機OS的TCP協(xié)議操作以生成發(fā)送分組到TCP連接的線程的日志,并且在關(guān)閉824中斷開客戶機OS的TCP協(xié)議操作以生成關(guān)閉TCP連接的線程的日志。因此,通過硬件斷點的攔截可以通過諸如在TCP協(xié)議的closeO和sendO函數(shù)中設(shè)置硬件斷點來執(zhí)行。在本公開中,這些術(shù)語“VM”、“客戶機VM”或“客戶機”用于表示相同的東西。術(shù)語“客戶機”經(jīng)常和VMM—起使用來強調(diào)這樣的事實:許多VM可以在相同的物理服務(wù)器上運行并且使用由VMM(像客戶機)分配的資源。圖9示出根據(jù)示范性實施例的、通過在VMM中復(fù)制映射SDT表格來攔截TCP相關(guān)的系統(tǒng)調(diào)用的示意圖。其中影子SDT表格被復(fù)制到VMM并且客戶機OS的SDT表格中的TCP相關(guān)的系統(tǒng)調(diào)用條目被修改為無效地址。參照圖9,當(dāng)調(diào)用系統(tǒng)調(diào)用時,客戶機VM800跳到在它的SDT表格中指定的無效地址并且生成頁錯誤。頁錯誤造成具有“頁錯誤”作為理由的VM_exit,并且VMM910中的頁錯誤處理器914接收此頁錯誤VM_exit事件并且檢查它的錯誤地址。如果錯誤地址是在客戶機VM的SDT表格中指定的無效地址,則VMM將此VM的程序計數(shù)器改變?yōu)榇鎯υ谟白覵DT表格912中的地址,從而VM可以繼續(xù)它的TCP系統(tǒng)調(diào)用操作。因此,攔截TCP相關(guān)的系統(tǒng)調(diào)用可以通過在VMM中復(fù)制映射SDT表格并修改諸如VM的SDT中的TCP發(fā)送和關(guān)閉相關(guān)的系統(tǒng)調(diào)用處理器來實現(xiàn)。圖10和圖11舉例來示出內(nèi)省620的詳細操作。參照圖10,內(nèi)省參考保留給網(wǎng)絡(luò)服務(wù)器進程1020的內(nèi)核對象,包括進程對象(task_struct1021)、進程的開放文件描述符表(files_struct1022、fdtable1023、和file[]1024)、文件描述符對象(file1025)和套件對象(socketl026和inet_sock1027)。VMM檢查運行的VM的虛擬CPU的堆棧指針寄存器1010,并且利用4096掩蓋堆棧指針寄存器的值以獲得運行的線程的task_strUCt內(nèi)核對象1021的地址。VMM利用對內(nèi)核對象定義的知識來解釋task_struct目標(biāo)1021并且獲得當(dāng)前運行的線程信息。如可以看到的,VMM還可以從攔截的函數(shù)的參數(shù)列表得到當(dāng)前處理的TCP連接信息。在Intel處理器的一個實例中,在內(nèi)核函數(shù)調(diào)用中通過的參數(shù)存儲在CPU寄存器中。為了攔截TCP相關(guān)函數(shù),當(dāng)前處理的套件對象1026的地址在它的參數(shù)列表中通過。然后可以通過從CPU寄存器讀取套件對象并利用內(nèi)核對象定義解釋該套件對象來得到TCP連接信息。為了攔截TCP相關(guān)的系統(tǒng)調(diào)用,文件描述符數(shù)在它的參數(shù)列表中通過。然后可以通過在進程中參考文件描述符表(1022、1023和1024)、讀取在文件描述符中的套件對象(1026)的地址并利用內(nèi)核對象定義解釋套件對象來得到TCP連接信息。每個VMM通過攔截和內(nèi)省客戶機VM來生成每線程通信量日志。然后生成的每線程通信量日志還被發(fā)送給APM服務(wù)器。如圖11所示,生成的每線程通信量日志可以被發(fā)送給在域O上運行的轉(zhuǎn)發(fā)守護進程以轉(zhuǎn)發(fā)到APM服務(wù)器330。每個生成的每線程通信量日至1110可以包含諸如時間信息,線程信息、連接信息、方向(請求或回復(fù))等的信息。圖12示出根據(jù)示范性實施例的、在多個客戶機VM之間進行攔截并內(nèi)省的VMM機制。參照圖12,VMM中的VMM機制可以包括VM_exit處理器1210來處理VM退出事件,頁錯誤處理器1220來處理頁面錯誤vm_eXit事件,調(diào)試處理器1230來處理斷點vm_eXit事件,VM檢查器1240來執(zhí)行對VM內(nèi)核對象和通信量日志的內(nèi)省,VM調(diào)度器1250來重新開始VM運行,通信量日志緩存器1260來存儲每線程通信量日志,以及包含在VM信息高速緩存1270中的VM內(nèi)核信息376。VM內(nèi)核信息包含基于VM的攔截和內(nèi)省信息,其至少包括檢查狀態(tài)(諸如開啟或斷開)、攔截的方法(諸如通過硬件中斷或影子SDT表格)、TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的地址、TCP相關(guān)的系統(tǒng)調(diào)用的數(shù)量、影子SDT表格、以及內(nèi)核對象定義(諸如線程對象和套件對象的地址偏移)。用于每線程通信量日志1110的信息可以包括時間信息、線程信息(諸如vmid、進程id、應(yīng)用程序名)、連接信息(諸如源IP、源端口、目的IP、目的端口)和方向(諸如請求,回復(fù))。當(dāng)VMM機制應(yīng)用硬件中斷方案來在諸如VMl和VM2的多個客戶機VM之間攔截和內(nèi)省時,VMM機制執(zhí)行兩個部分。第一部分是VMl命中TCP發(fā)送和關(guān)閉相關(guān)的斷點,第二部分是VMl調(diào)度到VM2。在第一部分中,VMl通過硬件斷點運行TCP發(fā)送函數(shù)并觸發(fā)VM_exit事件。VM_exit處理器1210檢查退出理由是“硬件斷點”并調(diào)用調(diào)試處理器1230。調(diào)試處理器1230檢查斷點地址是在TCP發(fā)送函數(shù)中并調(diào)用VM檢查器1240來執(zhí)行內(nèi)省。VM檢查器1240從VM信息高速緩存1270查找內(nèi)核對象定義并在VMl中的內(nèi)核對象處執(zhí)行內(nèi)省。在內(nèi)省之后,VM檢查器1240得到線程和TCP連接信息,生成一個每線程通信量日志,并將它存儲在通信量日志緩沖器1260中。然后VM調(diào)度器1250重新開始VMl的運行。在第二部分中,由于VMl的時間片到期,因此VMl退出,并且由于VM重新調(diào)度,所以VMl生成VM_exit事件。調(diào)度器1250存將運行的VM(VMl)的上下文儲到存儲器中并且從存儲器載入下一VM(VM2)的上下文。因為對于VMl和VM2,TCP發(fā)送相關(guān)函數(shù)的檢查狀態(tài)和地址可能不相同,所以在切換到下一VM以前還執(zhí)行載入檢查狀態(tài)和配置硬件斷點。VM調(diào)度器1250從VM內(nèi)核信息1270讀取下一VM的檢查狀態(tài)。如果下一VM(VM2)的檢查狀態(tài)是開啟并且所述攔截的方法是通過硬件中斷(諸如I)進行,則VM檢查器1240從VM信息高速緩存1270讀取TCP發(fā)送相關(guān)的地址并且設(shè)置硬件調(diào)試寄存器。當(dāng)VMM機制應(yīng)用影子SDT表格方案來在諸如VMl和VM2的多個客戶機VM之間攔截和內(nèi)省時,VMM機制執(zhí)行兩個部分。第一部分是VMl調(diào)用TCP發(fā)送相關(guān)的系統(tǒng)調(diào)用,并且第二部分是VMl調(diào)度到VM2。在第一部分中,VMl調(diào)用TCP發(fā)送相關(guān)的系統(tǒng)調(diào)用并通過頁錯誤觸發(fā)VM_exit事件。VM_exit處理器1210檢查退出理由是“頁錯誤”并調(diào)用頁錯誤處理器1220。頁錯誤處理器檢查錯誤地址是在SDT表格中指定的地址,并調(diào)用VM檢查器1240。VM檢查器1240從VM信息高速緩存1270查找內(nèi)核對象定義并在VMl中的內(nèi)核對象中執(zhí)行內(nèi)省。在內(nèi)省以后,VM檢查器1240得到線程和TCP連接信息并生成一個每線程通信量日志并將它存儲到通信量日志緩存器1260。VM檢查器1240還通過查找存儲在VM信息高速緩存1270中的影子SDT表格來設(shè)置虛擬CPU的指令指針寄存器以校正系統(tǒng)調(diào)用函數(shù)的地址。然后VM調(diào)度器1250重新開始VMl的運行。在第二部分中,由于用于此VM的時間片到期,所以VMl退出,并且由于VM重新調(diào)度,所以VMl生成VM_exit事件。調(diào)度器1250將運行的VM(VMl)的上下文存儲到存儲器中并且載入下一VM(VM2)的上下文。VM調(diào)度器1250還從VM內(nèi)核信息1270讀取檢查狀態(tài)。如果VM2的檢查狀態(tài)是開啟,則所述方法是通過影子SDT表格(諸如2)攔截并且它的影子SDT表格不存在,VM檢查器從下一VM(VM2)復(fù)制一個映射SDT表格并且將VM2的SDT表格中的TCP相關(guān)的系統(tǒng)調(diào)用條目修改為無效地址。VM調(diào)度器1250重新開始VM2的運行。在攔截610并內(nèi)省620之后,APM服務(wù)器1120中的每線程通信量日志將被轉(zhuǎn)換為線程間通信量日志。圖13示出根據(jù)示范性實施例的、將每線程通信量日志轉(zhuǎn)換為線程間通信量日志的示例。APM服務(wù)器1120通過找到每個每線程通信量日志的目的線程將每個每線程通信量日志轉(zhuǎn)換成為相應(yīng)的進程間通信量日志。如圖13的示例所示,每個基于每線程的通信量日志被轉(zhuǎn)換成進程間通信量日志。例如,兩個基于每線程的通信量日志(1310和1320)表示通過相同的TCP連接c發(fā)送給彼此的兩個線程TA和TB。所述兩個每線程通信量日志被轉(zhuǎn)換為兩個線程間通信量日志(1330和1340)。由時間(tl)、線程信息(TA)、連接(Cl)和方向(請求)組成的每線程通信量日志1310被轉(zhuǎn)換為由時間(tl)、發(fā)送器線程信息(TA)、接收器線程信息(TB)和方向(請求)組成的線程間通信量日志(1330)。類似地,由時間(t5)、線程信息(TB)、連接(Cl)和方向(回復(fù))組成的每線程通信量日志1320被轉(zhuǎn)換為由時間(t5)、發(fā)送器線程信息(TB)、接收器線程信息(TA)和方向(回復(fù))組成的線程間通信量日志(1340)。線程間通信量日志可以存儲在APM服務(wù)器的數(shù)據(jù)庫中。因為生成的通信量日志記錄線程之間的消息交換,所以應(yīng)用程序生成依賴生成算法可以使用線程間消息交換信息以生成用于在多進程和多線程模型中運行的兩種應(yīng)用的100%精確的應(yīng)用依賴圖。根據(jù)示范性實施例用于由線程間通信量日志生成軌跡的設(shè)計是使用遞歸算法來找出在一時間段期間在線程之間的全部間接消息交換。圖14示出根據(jù)示范性實施例的生成應(yīng)用軌跡的示例。參照圖14,應(yīng)用軌跡從線程A開始并且分別在時間段Atl和時間段At2期間與線程B和線程C進行消息交換。線程B分別在時間段Atll、時間段Atl2和時間段Λtl3期間與線程D、E和F進行消息交換。在時間段Λta期間的應(yīng)用A的軌跡由標(biāo)記TRA(A,Ata)表示,并且還可以通過如下遞歸算法擴展。TRA(A,Ata)={φ,Atl),Μφ,Δtl),(C,Δt2),IM(C,Δt2)}⑴={(B,Δtl),{(D,Λtil),(E,Δtl2),(F,Δtl3)},(C,Δt2),m(C,Δt2)}⑵={(B,Atl),{(D,Atll),(E,Atl2),(F,Atl3)},(C,Δt2),{(G,At21),(H,At22)}}(3)等式⑴意味著在時間段Ata期間應(yīng)用(或線程)A的軌跡等效于在時間段Atl期間與B的消息交換(由(B,Atl)表示)加上在時間段Atl期間的線程B的軌跡(由TRA(B,Atl)表示),以及在時間段At2期間與線程C的消息交換(由(C,△t2)表示)加上在時間段Λt2期間線程C的軌跡(由TRA(C,At2)表示)。還可以通過擴展線程B的軌跡來得到等式(2)。還可以通過擴展線程C的軌跡來得到等式(3)。在等式(3)中,在Ata期間應(yīng)用A的軌跡是與應(yīng)用(或線程)B,D、E、F、C、G和H的消息交換。應(yīng)用(或線程)B和C直接與應(yīng)用A連接。應(yīng)用(或線程)D、E、F、G和H間接地與應(yīng)用A連接。圖15示出根據(jù)示范性實施例的、在時間段Ata期間對于線程Ta的生成應(yīng)用軌跡(GAT)的算法的流程圖。GAT算法的輸出是以樹形數(shù)據(jù)結(jié)構(gòu)存儲的應(yīng)用軌跡。參照圖15,算法GAT(Ta,Ata)從初始化開始,包括設(shè)置應(yīng)用軌跡為空樹(即結(jié)果={}),當(dāng)前依賴線程為空(即current-dep-thread=null),并且At的開始時間為時間段Ata的開始時間(即At的開始時間=Ata的開始時間),如步驟1510所示。然后算法GAT(Ta,Ata)找到在Ata期間與線程Ta相關(guān)的下一通信量日志(步驟1515)。當(dāng)沒有找到與線程Ta相關(guān)的下一線程通信量日志時,算法GAT(Ta,Ata)返回結(jié)果。當(dāng)找到這種下一通信量日志時,算法GAT(Ta,Δta)更新先前的線程通信量日志和當(dāng)前線程通信量(即previous-log=cur-log,current-log=foundlog),并且設(shè)置線程Tb為當(dāng)前日志的遠程線程(即Tb=current-log的遠程線程),如步驟1520所示。當(dāng)線程Tb不是current-dep-thread(步驟1522)或current-log是在Δta期間的最后一個條目時(步驟1524),算法GAT(Ta,Ata)執(zhí)行動作并返回到步驟1515;否則,它直接返回到步驟1515。其中所述動作包括設(shè)置Δt的結(jié)束時間為previous-log的時間(步驟1530)、追加一個軌跡項(current-dep-thread,At)作為結(jié)果樹的子節(jié)點(即result+=(current-dep-thread,Δt))(步驟1532)、遞歸調(diào)用GAT算法來生成在Δt期間的用于current-dep-thread的應(yīng)用軌跡樹以及添加生成的樹作為結(jié)果樹的子樹(即result+=GAT(current-dep-thread,Δt))(步驟1534)、以及設(shè)置current-dep-thread為Tb并且設(shè)置Δt的開始時間為current-log的時間(即current-dep-thread=Tb和At的開始時間=current-log的時間)(步驟1536)。結(jié)果,算法GAT(Ta,Δta)以樹形數(shù)據(jù)結(jié)構(gòu)輸出應(yīng)用軌跡“result”。圖16A和圖16B示出根據(jù)示范性實施例的、示出從樹形數(shù)據(jù)結(jié)構(gòu)的應(yīng)用軌跡生成圖形數(shù)據(jù)結(jié)構(gòu)的應(yīng)用依賴(GAD)的算法的操作流。參照圖16A,GAD算法從初始化開始,包括設(shè)置應(yīng)用依賴圖為空圖(即result=空圖),并且設(shè)置根節(jié)點為軌跡樹的根(即rnode=軌跡樹的根),如步驟1610所示。然后,GAD算法通過遞歸調(diào)用函數(shù)GAD來生成應(yīng)用依賴圖(即result)(步驟1615)。圖16B示出根據(jù)示范性實施例的、示出函數(shù)GAD(rnode,result)的操作的流程圖。參照圖16B,函數(shù)GAD(rnode,result)具有兩個參數(shù)。一個是模式而另一個是結(jié)果。模式參數(shù)是在樹形數(shù)據(jù)結(jié)構(gòu)中的結(jié)點,表示應(yīng)用軌跡中的子樹。結(jié)果參數(shù)是存儲在遞歸調(diào)用GAD函數(shù)期間生成的應(yīng)用依賴圖的圖形數(shù)據(jù)結(jié)構(gòu)。GAD函數(shù)從得到軌跡中的根節(jié)點的下一孩子開始,即c=得到rnode的下一孩子(步驟1620)。如果沒有找到rnode的這樣的孩子,則去到步驟1625。如果找到rnode的這樣的孩子,則去到步驟1621。如果結(jié)點c包括在結(jié)果圖形數(shù)據(jù)結(jié)構(gòu)中(步驟1621),則添加結(jié)點c到結(jié)果圖形中(步驟1622)。因為現(xiàn)在rnode和c兩個都在結(jié)果圖形數(shù)據(jù)結(jié)構(gòu)中,所以如果從rnode到c的鏈接包括在結(jié)果圖形數(shù)據(jù)結(jié)構(gòu)中,則將link(rnode,c)添加到結(jié)果圖形數(shù)據(jù)結(jié)構(gòu)中(步驟1626)。在步驟1628中,利用(c,result)作為兩個新的參數(shù)遞歸調(diào)用GAD函數(shù)以生成其余的依賴。如可以從圖16A和圖16B看到的,通過從應(yīng)用軌跡生成應(yīng)用依賴圖來執(zhí)行GAD算法,并且遞歸調(diào)用GAD函數(shù)直到?jīng)]有rnode的下一孩子被找到。換句話說,應(yīng)用依賴性演算法是使用遞歸方法來找出在時間段期間與已選擇的應(yīng)用相關(guān)的全部間接依賴線程。GAD算法的輸出是應(yīng)用依賴圖。可以以圖形數(shù)據(jù)結(jié)構(gòu)表示依賴圖。生成的依賴圖可以諸如在圖形用戶接口(⑶I)上顯示以幫助諸如管理員理解軟件部署、定位失敗線程、定位性能瓶頸等。還可以分析生成的依賴圖以自動找出分布式應(yīng)用中的性能問題的根本原因。如前所述,示范性實施例使用三階段方案來降低通信量日志匯集和依賴生成的成本。用于依賴和匯集的成本可以包括諸如通過VMM檢查TCP操作、向APM服務(wù)器發(fā)送日志條目、將日志條目存儲到APM服務(wù)器的日志數(shù)據(jù)庫中等。用于通過VMM檢查TCP操作的成本可以包括諸如從VM到VMM的上下文切換、執(zhí)行內(nèi)核對象中的內(nèi)省、上下文切換到重新開始原始VM運行等。用于將日志條目發(fā)送到APM服務(wù)器可以包括諸如VMM通過信道將日志條目發(fā)送到域O中的轉(zhuǎn)發(fā)守護進程、以及轉(zhuǎn)發(fā)守護進程通過TCP連接將日志條目發(fā)送到APM服務(wù)器等。在學(xué)習(xí)階段中,增量式使能650的步驟識別與已選擇的應(yīng)用414相關(guān)的VM以生成依賴。換句話說,僅相關(guān)的VM被選擇并且在下一階段中被使能VM檢查,從而降低需要檢查的VM的數(shù)量。示范性實施例使用增量式的使能650來使能相關(guān)的VM的檢查特征直到?jīng)]有新的相關(guān)的VM被找到。如在圖6中提到的,增量式使能650通過使用來自通信量日志轉(zhuǎn)換630的線程間通信量日志435來增量式地使能VM通信量日志,并輸出相關(guān)的vm-1d列表416到攔截610。圖17示出根據(jù)示范性實施例的、示出在學(xué)習(xí)階段中的VDC1700中的增量式使能通信量日志的示例。在圖17的示例中,最初,VM1710中的應(yīng)用(瀏覽器I)被選擇來生成依賴,并且開始學(xué)習(xí)階段。在第一次使能中,識別包含應(yīng)用DNS(應(yīng)用瀏覽器I的依賴者)的VM1720。在第二次使能中,識別包含應(yīng)用網(wǎng)絡(luò)服務(wù)器I(應(yīng)用瀏覽器I的依賴者)的VM1730。在第三次使能中,識別包含應(yīng)用網(wǎng)絡(luò)應(yīng)用I的VM1740和包含應(yīng)用網(wǎng)絡(luò)應(yīng)用2(應(yīng)用網(wǎng)絡(luò)服務(wù)器I的依賴者)的VM1760。在第4次使能中,識別包含應(yīng)用數(shù)據(jù)庫服務(wù)器(應(yīng)用網(wǎng)絡(luò)應(yīng)用I的依賴者)的VM1750。因此,在學(xué)習(xí)階段之后輸出的相關(guān)的VM-1d列表可以包括VM1710,VM1720、VM1730、VM1740,VM1750和VM1760。因此,僅相關(guān)的VM被選擇并使能用于下一階段(發(fā)現(xiàn)階段)的VM檢查。發(fā)現(xiàn)階段可以再次開始應(yīng)用(瀏覽器I)并將通信量記記錄到APM服務(wù)器中。而且,在生成階段,APM服務(wù)器可以運行依賴生成算法并經(jīng)由⑶I輸出應(yīng)用軌跡和依賴1770到諸如管理系統(tǒng)或根源分析模塊。從而,本示范性實施例提供了在虛擬化環(huán)境中調(diào)查線程級別以生成應(yīng)用級依賴的技術(shù)。該技術(shù)采用VM內(nèi)省方法而不安裝額外的軟件或執(zhí)行諸如端口輪詢活動。它在系統(tǒng)調(diào)用中進行攔截并快速檢測部署改變。它還以線程間級別記錄通信量并以線程粒度生成應(yīng)用軌跡。從應(yīng)用軌跡,它通過依賴生成算法生成十分精確的應(yīng)用依賴。該技術(shù)對于多進程和多線程應(yīng)用兩者運行。雖然已經(jīng)參照示范性實施例描述了本公開,但是應(yīng)該理解本發(fā)明不限于此處描述的細節(jié)。在上述說明中已經(jīng)暗示各替換和修改,并且其它將由本領(lǐng)域普通技術(shù)人員想到。因此,所有這種替換和修改都旨在包含在如附加的權(quán)利要求中定義的本發(fā)明的范圍內(nèi)。權(quán)利要求1.一種用于在一個或多個虛擬機(VM)中生成應(yīng)用級依賴的系統(tǒng),包括:應(yīng)用性能管理(APM)服務(wù)器,在物理機器上運行,用于接受請求并向至少一個轉(zhuǎn)發(fā)守護進程發(fā)送命令以開啟所述一個或多個VM的至少一個相關(guān)的VM的檢查狀態(tài),并且生成已選擇的應(yīng)用的應(yīng)用軌跡并輸出用于所述已選擇的應(yīng)用的應(yīng)用依賴;一個或多個攔截模塊,其中每個攔截模塊攔截在所述至少一個相關(guān)的VM上的處于傳輸控制協(xié)議(TCP)發(fā)送和關(guān)閉相關(guān)的操作中的客戶機操作系統(tǒng)(OS);以及一個或多個內(nèi)省模塊,其中每個內(nèi)省模塊對于TCP連接和運行的線程信息執(zhí)行VM內(nèi)省。2.如權(quán)利要求1所述的系統(tǒng),其中所述每個內(nèi)省模塊通過檢查客戶機OS的運行的內(nèi)核數(shù)據(jù)結(jié)構(gòu)并得到一個或多個運行的線程和TCP連接信息,并且生成一個或多個每線程通信量日志以用于經(jīng)由所述轉(zhuǎn)發(fā)守護進程發(fā)送給所述APM服務(wù)器,來執(zhí)行所述VM內(nèi)省。3.如權(quán)利要求1所述的系統(tǒng),其中所述每個攔截模塊和所述每個內(nèi)省模塊兩個都在相應(yīng)的物理服務(wù)器上的相應(yīng)VM監(jiān)視器中,并且所述至少一個轉(zhuǎn)發(fā)守護進程的相應(yīng)的轉(zhuǎn)發(fā)守護進程在所述相應(yīng)的物理服務(wù)器上運行。4.如權(quán)利要求1所述的系統(tǒng),其中所述APM服務(wù)器還包括:通信量日志轉(zhuǎn)換模塊,用于將一個或多個每線程通信量日志轉(zhuǎn)換為一個或多個線程間通信量日志;以及依賴圖生成模塊,用于從所述一個或多個線程間通信量日志生成所述應(yīng)用軌跡并從應(yīng)用軌跡輸出用于已選擇的應(yīng)用的應(yīng)用依賴。5.如權(quán)利要求4所述的系統(tǒng),所述系統(tǒng)使用日志數(shù)據(jù)庫以存儲所述一個或多個線程間通信量日志。6.如權(quán)利要求1所述的系統(tǒng),其中所述一個或多個每線程通信量日志中的每一個包含時間信息、線程信息、連接信息和方向。7.如權(quán)利要求4所述的系統(tǒng),其中所述一個或多個線程間通信量日志中的每一個包含時間信息、發(fā)送器線程信息、接收器線程信息和方向。8.如權(quán)利要求1所述的系統(tǒng),其中所述應(yīng)用軌跡記錄從一個應(yīng)用開始的多個應(yīng)用之間的消息交換和時間段。9.如權(quán)利要求1所述的系統(tǒng),其中所述應(yīng)用軌跡以樹形數(shù)據(jù)結(jié)構(gòu)存儲,所述樹形數(shù)據(jù)結(jié)構(gòu)從根節(jié)點開始,并且包括一個或多個結(jié)點、一個或多個鏈接和一個或多個箭頭,在應(yīng)用軌跡中的結(jié)點指示在一時間段期間到應(yīng)用的消息交換,在應(yīng)用軌跡中的鏈接指示兩個應(yīng)用之間的直接消息交換,在所述軌跡中的箭頭指示兩個應(yīng)用之間的連接的方向。10.如權(quán)利要求1所述的系統(tǒng),其中所述應(yīng)用依賴是以樹形數(shù)據(jù)結(jié)構(gòu)表示的應(yīng)用依賴圖。11.如權(quán)利要求1所述的系統(tǒng),其中所述APM服務(wù)器使用增量啟動模塊來逐漸使能相關(guān)的VM的檢查狀態(tài)直到至少一個相關(guān)的VM的檢查狀態(tài)被開啟。12.一種用于在一個或多個虛擬機(VM)中生成應(yīng)用級依賴的計算機實現(xiàn)的方法,包括:在提供具有所述一個或多個VM的虛擬環(huán)境的一個或多個物理服務(wù)器的控制之下;攔截處于所述一個或多個VM的至少一個相關(guān)的VM的傳輸控制協(xié)議(TCP)發(fā)送和關(guān)閉相關(guān)的操作中的客戶機操作系統(tǒng)(OS);對于TCP連接和運行的線程信息執(zhí)行VM內(nèi)?。灰约吧梢堰x擇的應(yīng)用的應(yīng)用軌跡并從應(yīng)用軌跡輸出用于已選擇的應(yīng)用的應(yīng)用依賴。13.如權(quán)利要求12所述的計算機實現(xiàn)的方法,還包括:通過檢查客戶機OS的運行的線程并得到一個或多個運行的線程和TCP連接信息以及生成一個或多個每線程通信量日志來執(zhí)行所述VM內(nèi)省。14.如權(quán)利要求13所述的計算機實現(xiàn)的方法,還包括:將所述一個或多個每線程通信量日志轉(zhuǎn)換為一個或多個線程間通信量日志。15.如權(quán)利要求14所述的計算機實現(xiàn)的方法,還包括學(xué)習(xí)階段、發(fā)現(xiàn)階段和生成階段以生成應(yīng)用級依賴。16.如權(quán)利要求15所述的計算機實現(xiàn)的方法,還包括,在所述學(xué)習(xí)階段,使用增量方法來識別與已選擇的應(yīng)用相關(guān)的至少一個VM,以及生成相關(guān)的虛擬機標(biāo)識符列表并提供給發(fā)現(xiàn)階段。17.如權(quán)利要求15所述的計算機實現(xiàn)的方法,還包括,在所述發(fā)現(xiàn)階段,匯集所述一個或多個每線程通信量日志、生成所述一個或多個線程間通信量并提供給生成階段。18.如權(quán)利要求15所述的計算機實現(xiàn)的方法,還包括,在生成階段,生成應(yīng)用軌跡并通過應(yīng)用一應(yīng)用依賴算法來從應(yīng)用軌跡生成應(yīng)用依賴圖。19.如權(quán)利要求18所述的計算機實現(xiàn)的方法,還包括:通過應(yīng)用依賴算法使用遞歸方法來找出在一時間段期間與已選擇的應(yīng)用相關(guān)的全部間接依賴線程。20.如權(quán)利要求13所述的計算機實現(xiàn)的方法,其中所述一個或多個每線程通信量日志中的每一個包括時間信息、線程信息、連接信息和方向。21.如權(quán)利要求14所述的計算機實現(xiàn)的方法,其中所述一個或多個線程間通信量日志中的每一個包括時間信息、發(fā)送器線程信息、接收器線程信息和方向。22.如權(quán)利要求12所述的計算機實現(xiàn)的方法,還包括通過硬件斷點或通過攔截TCP相關(guān)的系統(tǒng)調(diào)用來實現(xiàn)所述攔截。23.如權(quán)利要求12所述的計算機實現(xiàn)的方法,還包括在多進程模型中運行。24.如權(quán)利要求12所述的計算機實現(xiàn)的方法,還包括在多線程模型中運行。25.如權(quán)利要求22所述的計算機實現(xiàn)的方法,其中選擇攔截機制的決定取決于由中央處理單元(CPU)支持的硬件調(diào)試寄存器的數(shù)量和TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的數(shù)量。26.如權(quán)利要求25所述的計算機實現(xiàn)的方法,其中當(dāng)由CPU支持的硬件調(diào)試寄存器的數(shù)量大于TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的數(shù)量時,選擇通過硬件斷點的攔截。27.如權(quán)利要求25所述的計算機實現(xiàn)的方法,其中當(dāng)由CPU支持的硬件調(diào)試寄存器的數(shù)量不大于TCP發(fā)送和關(guān)閉相關(guān)函數(shù)的數(shù)量時,選擇攔截TCP相關(guān)的系統(tǒng)調(diào)用,其中攔截TCP相關(guān)的系統(tǒng)調(diào)用包括:在VM監(jiān)視器中復(fù)制映射服務(wù)描述符表格(SDT)并且修改SDT表格以攔截TCP相關(guān)的系統(tǒng)調(diào)用。全文摘要一種在一個或多個虛擬機(VM)中生成應(yīng)用級依賴的技術(shù)。VM監(jiān)視器中的攔截模塊攔截處于TCP發(fā)送和關(guān)閉相關(guān)的操作中的客戶機操作系統(tǒng)(OS)。VM監(jiān)視器中的內(nèi)省模塊通過檢查運行的線程和處理套件內(nèi)核對象來對于TCP連接和線程信息執(zhí)行VM內(nèi)省。它產(chǎn)生應(yīng)用軌跡并從該應(yīng)用軌跡輸出用于已選擇的應(yīng)用的應(yīng)用依賴。文檔編號H04L29/08GK103164288SQ201110451868公開日2013年6月19日申請日期2011年12月29日優(yōu)先權(quán)日2011年12月15日發(fā)明者闕志克,林浩澄申請人:財團法人工業(yè)技術(shù)研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
西藏| 林口县| 阳东县| 信阳市| 区。| 西乌| 重庆市| 都江堰市| 怀来县| 齐齐哈尔市| 许昌市| 开化县| 杂多县| 铁岭市| 云安县| 张家港市| 邵阳市| 长丰县| 崇明县| 龙陵县| 台江县| 定结县| 蒙山县| 万安县| 瑞昌市| 家居| 兰溪市| 平凉市| 县级市| 安塞县| 邢台市| 大竹县| 耿马| 黎城县| 稷山县| 尚志市| 水城县| 肥城市| 深水埗区| 运城市| 同江市|