虛擬計算環境的運行時資源監控與內存泄漏檢測技術( 簡體 字) | |
作者:肖如良 | 類別:1. -> 程式設計 -> 綜合 |
出版社:電子工業出版社 | 3dWoo書號: 41199 詢問書籍請說出此書號! 有庫存 NT售價: 290 元 |
出版日:3/1/2015 | |
頁數:256 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121252648 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章 緒論 1
1.1 虛擬計算環境 1 1.2 虛擬計算環境的可靠性 2 1.3 資源監控與動態調整 3 1.4 內存泄漏檢測 5 1.5 小結 6 第2章 虛擬計算環境可靠性的相關研究 7 2.1 內存泄漏國內外研究現狀 7 2.1.1 與內存泄漏靜態檢測相關的研究工作 7 2.1.2 與內存泄漏動態檢測相關的研究工作 8 2.1.3 存在的問題 11 2.2 虛擬計算環境內存泄漏檢測技術的相關研究 12 2.2.1 概述 12 2.2.2 虛擬機性能信息的獲取 13 2.2.3 虛擬機內存管理 13 2.2.4 基于虛擬環境的程序調試 15 2.2.5 基于虛擬計算環境的入侵檢測 15 2.2.6 虛擬計算環境下存在的語義障礙 16 2.3 國內外典型的資源監測與資源調整工具 17 2.3.1 國內外相關研究 17 2.3.2 代表性資源監控系統的實現 19 2.4 小結 21 第3章 虛擬計算環境及內存泄漏檢測基礎 23 3.1 虛擬計算環境基礎 23 3.1.1 概述 23 3.1.2 CPU虛擬化 24 3.1.3 內存虛擬化 25 3.1.4 輸入/輸出設備虛擬化 28 3.1.5 Xen的CPU虛擬化模型 29 3.1.6 Xen虛擬計算框架 32 3.1.7 虛擬計算環境下不同抽象級別間的語義障礙 36 3.2 內存泄漏檢測技術基礎 40 3.2.1 動態內存管理 40 3.2.2 動態代碼執行分析 42 3.2.3 目標進程的控制方法 46 3.3 小結 49 第4章 多目標監測的通信進程管理 51 4.1 沖突問題描述 51 4.2 CSP理論 51 4.3 基于CSP的分布式內存泄漏檢測分析系統模型 51 4.4 模型的正確性證明 53 4.5 小結 55 第5章 基于自省機制的運行時內存泄漏檢測機制 57 5.1 虛擬計算環境中的監控機制與自省機制 57 5.2 基于自省機制的運行時內存泄漏檢測模型 58 5.2.1 基于自省機制檢測的流模型 59 5.2.2 內存泄漏判定基礎 62 5.3 內存泄漏確認規則 64 5.3.1 實現內存對象分組 64 5.3.2 檢測潛在的內存泄漏 65 5.3.3 內存泄漏的確認規則 66 5.4 虛擬計算環境內存泄漏檢測機制的實現基礎 66 5.5 VMLD中4個基礎模塊的職責 68 5.5.1 內部緩沖區維護模塊(Maintain Buffer) 68 5.5.2 控制模塊(Controller) 70 5.5.3 攔截模塊(Interceptor) 70 5.5.4 監視模塊(Monitor) 71 5.6 實驗及結果分析 72 5.6.1 有效性實驗分析 73 5.6.2 性能實驗分析 74 5.7 小結 75 第6章 虛擬計算環境資源監控系統框架 77 6.1 設計思路 77 6.2 系統部署結構 78 6.3 XResMonitor系統功能模塊 79 6.3.1 資源信息監測模塊 79 6.3.2 資源調整模塊 80 6.4 XResMonitor模塊工作流程 82 6.4.1 資源信息監測流程 82 6.4.2 資源調整流程 83 6.5 XResMonitor系統特色 84 6.6 小結 85 第7章 虛擬計算環境資源監控系統的關鍵技術 87 7.1 虛擬機資源信息收集策略 87 7.1.1 Xen虛擬機的信息收集策略 87 7.1.2 XResMonitor系統的信息收集策略 88 7.2 資源實時監測 89 7.2.1 內存資源實時監測 90 7.2.2 CPU資源實時監測 95 7.3 資源調整策略 97 7.3.1 內存資源調整策略 97 7.3.2 VCPU資源調整 107 7.4 XResMonitor監測系統的原型實現 111 7.4.1 原型系統的實現環境 111 7.4.2 功能實現評估 112 7.4.3 原型系統的性能評估 116 7.5 小結 117 第8章 基于Xen的內存泄漏檢測分析系統MLDA模塊級關鍵技術 119 8.1 MLDA系統框架描述 119 8.1.1 控制模塊 119 8.1.2 侵入模塊 124 8.1.3 攔截模塊 125 8.1.4 監視模塊 129 8.1.5 內核支持模塊 131 8.1.6 數據處理與存儲模塊 135 8.1.7 分析模塊 140 8.1.8 用戶交互模塊 141 8.1.9 模塊協作 148 8.2 控制模塊和監視模塊實現的關鍵技術 149 8.2.1 Windows下動態鏈接庫注入技術 150 8.2.2 Linux下動態鏈接庫注入技術 153 8.3 攔截模塊和監視模塊實現的關鍵技術 156 8.3.1 代碼內存保護解除的實現 156 8.3.2 代碼復制的實現 157 8.3.3 運行流程重定向代碼的生成 160 8.3.4 堆訪問情況的捕捉 162 8.4 監視模塊和內核代碼交互實現的關鍵技術 166 8.5 內核代碼訪問內存頁表的實現 168 8.6 數據收集模塊和數據處理模塊交互的實現 171 8.7 數據處理過程 178 8.8 小結 179 第9章 MLDA的系統級技術實現 181 9.1 系統部署 181 9.1.1 Xen內核修改部分 181 9.1.2 監視端的安裝 182 9.1.3 Windows下的安裝 182 9.1.4 Linux下的安裝 182 9.2 MLDA系統結構 184 9.3 MLDA系統的基礎功能 184 9.3.1 動態鏈接庫注入 184 9.3.2 超級調用 185 9.3.3 域間通信 185 9.3.4 進程堆內存地址空間頁表訪問 186 9.3.5 內存操作行為的捕捉 187 9.4 MLDA內存泄漏檢測 188 9.5 MLDA內存泄漏預測 191 9.6 小結 193 第10章 GDI內存泄漏檢測 195 10.1 概述 195 10.2 GDI攔截模塊 195 10.2.1 注入DLL模塊 196 10.2.2 修改函數導入表和模塊導出表的地址 196 10.3 GDI監控模塊 197 10.3.1 監控數據的組織 197 10.3.2 監控數據的采集過程及存儲策略 197 10.4 GDI分析模塊 198 10.5 GDI可視化模塊 198 10.5.1 顯示GDI內存泄漏嫌疑和故障信息 199 10.5.2 生成監測報告 200 第11章 結束語 205 11.1 總結 205 11.2 未來工作 207 附錄A 基于Xen的內存泄漏檢測技術的部分源代碼 209 參考文獻 237 在云計算相關的虛擬計算環境中,不僅要對系統的資源占用進行運行時監控調整,而且要對系統所發生的內存泄漏進行檢測與分析,這種可靠性保障技術極具挑戰性。本書在介紹了相關研究工作及基礎內容之后,主要針對資源監控調整與內存泄漏檢測問題,構建了Xen虛擬機管理器中的自定義超級調用體系,研究了虛擬計算資源,包括內存資源與CPU資源的監控與調整機制、運行時內存泄漏檢測等方面的關鍵技術,提出了基于自省機制的內存泄漏檢測確認規則、虛擬計算環境的資源監測收集策略和資源調整策略,基于Xen虛擬機管理器設計并實現了虛擬計算環境的資源監控與調整子系統XResMonitor與虛擬計算環境的內存泄漏檢測分析系統MLDA,最后介紹了GDI內存泄漏檢測的工作。
全書包含了以上主要關鍵技術的實現思路與技術細節,可供計算機專業相關工程技術人員、研究人員參考。 隨著云計算技術的不斷發展,現代軟件的規模越來越大、復雜性越來越高,其可靠性也越來越難以保障,這種挑戰性問題與云計算的虛擬化技術密切相關。在云計算的虛擬計算環境中,為了提高系統服務的可靠性,不僅要對系統的資源占用進行運行時監控調整,而且要對系統所發生的內存泄漏進行檢測與分析,這種可靠性保障技術尤其是運行時資源調整與不停機服務器應用程序的內存泄漏檢測極具挑戰性。
內存泄漏是導致系統可靠性降低的重要因素之一,它不僅會使應用程序申請動態內存失敗,導致服務中止,嚴重時會導致整個應用系統因資源耗竭而崩潰。對于長期運行在服務器上的操作系統及大量服務,發生內存泄漏會帶來嚴重的后果,可能會導致系統級服務中止。內存泄漏問題長期以來一直困擾很多開發人員,常常使項目交付使用的時間大幅延期,不僅降低了開發效率,而且影響了最終軟件產品的質量,進而給軟件企業造成了直接的經濟損失。 內存泄漏是指已經被申請的內存資源沒有被合理地釋放,從而導致這部分資源不能被系統重新利用的一種現象。內存泄漏廣泛存在或者隱藏于程序之中,被泄漏的內存資源不能被重新利用且不再被訪問。如果被泄漏的是虛擬內存,則內存泄漏會使得應用程序的虛擬內存空間耗竭,導致任務的中斷和失敗;如果被泄漏的是物理內存,則整個系統減少了能夠使用的物理地址。內存泄漏會使應用程序申請動態內存失敗,導致服務中止,嚴重時會導致整個系統因資源耗竭而崩潰。內存泄漏不僅會減少可用的內核虛擬內存地址空間,而且還會不斷蠶食整個操作系統,系統可用的物理內存頁面,導致整機不得不重新啟動。對于運行時間很短的程序,內存泄漏一般不是問題,但是對于長期運行的程序,如通信領域軟件、嵌入式敏感軟件系統等行業性軟件、運行在服務器上的服務和操作系統本身,內存泄漏會帶來嚴重的后果,可能會導致系統服務中止而造成非常嚴重的經濟損失,并可能帶來嚴重的社會問題。 比如,通信軟件作為一類特殊領域的軟件,不僅存在監控程序、系統服務程序和應用程序等多種形態,而且它們的部署平臺不盡相同,其運行的軟件環境也千差萬別。這些都給通信軟件的內存泄漏檢測帶來了一系列的挑戰性問題。例如,針對運行在不同操作系統、硬件環境等異構平臺下的各種不同形態程序,如何有效地判定內存泄漏嫌疑,并準確地進行故障定位?如何高效地監控這些程序對有限內存資源的申請、使用和釋放?又如何針對動態變化的運行平臺,制定出科學合理的監控策略等。因此,研究和開發跨平臺的服務器應用程序內存泄漏檢測的關鍵技術具有重要的意義。 隨著云計算、大數據時代的來臨,軟件系統和硬件環境的異構性將更為突出、更加明顯,軟件企業(當然包括通信軟件生產商)不得不面對這一新的計算特點,也不得不適應這一新的計算環境。將虛擬化技術應用于跨平臺內存泄漏檢測之上,以虛擬化平臺構建內存泄漏檢測系統,可以利用虛擬機管理器的一致性,在不同操作系統之間保持同樣的實現方式。某些系統內核的關鍵數據對于猜測內存泄漏現象是否發生具有重大的意義,但通常情況下因操作系統對這些數據加以保護而不容易取得。利用虛擬機管理器特權則可以很容易獲得這些數據。對于構建內存泄漏檢測框架過程中遇到的域間通信,虛擬化計算平臺上也可以利用這些操作系統運行在同一套硬件上的特性提供高效率的解決方案。 全書共11章,第1章介紹虛擬計算環境可靠性問題兩個方面的主要內容,即資源的監控調整與內存泄漏檢測的背景信息。第2章從內存泄漏的研究現狀、虛擬計算環境下的內存泄漏檢測方法、虛擬計算資源監測與資源調整等方面進行了概述。第3章介紹基于Xen虛擬機的虛擬計算環境中與內存泄漏檢測相關的虛擬化基礎理論。第4章基于CSP理論構建一種基于Xen虛擬化平臺的內存泄漏檢測模型,給出其實現方法;討論模型內系統成員之間的交互,并基于CSP進行了正確性證明。第5章介紹虛擬化體系結構中的監控機制與自省機制,然后提出基于自省機制的運行時內存泄漏檢測模型,并構建原型實現與實驗分析,給出實驗結果與分析。第6章在原有工作XMMC框架上,基于Xen虛擬計算環境提出XResMonitor資源監測系統框架。首先對資源監測調整系統XResMonitor的設計思路進行簡單介紹,并給出其部署結構和總體結構;詳細描述其模塊結構及各模塊的功能及各模塊之間的關系,并介紹整個系統框架及各模塊的工作流程,總結了XResMonitor系統的主要特色。第7章介紹XResMonitor系統的設計思路和功能模塊。首先對Xen虛擬機現有的資源信息收集的策略進行介紹,并引出適合XResMonitor系統的資源信息收集策略;其次介紹XResMonitor系統資源監測的工作原理和關鍵技術實現,包括對內存資源和VCPU資源的監測;最后給出XResMonitor系統對內存資源和VCPU資源調整的工作原理和關鍵技術。第8章介紹MLDA系統框架模塊級層面的內存泄漏檢測分析關鍵技術。第9章從系統級角度,對虛擬計算環境的內存泄漏檢測分析系統MLDA的技術實現進行介紹。第10章介紹GDI內存泄漏檢測分析,是本書相關內容的補充。該章內容并不是基于Xen層面的成果,而是運行于Windows層面的檢測與分析,因為集成在基于Xen虛擬環境上作為一個統一的工作,故放在后面章節進行介紹。第11章對本書進行的全面總結。 本書較全面地介紹了國內外內存泄漏檢測的相關研究和成果,即虛擬化技術實現過程中需要解決的若干關鍵技術,這些技術支撐著虛擬機管理器功能的核心技術。本書還主要研究了Xen虛擬計算環境下資源監控系統XResMonitor的資源監測收集策略和資源調整策略,設計并實現一種基于Xen虛擬計算環境的資源監控與內存泄漏檢測的MLDA系統。 我們與中郵科通信技術股份有限公司合作,受福建省科技計劃重大項目資助,開展了“跨平臺內存泄漏檢測系統的關鍵技術研發及產業化”(2011H6006)的立項研究,本書全面總結了本項目研究及其拓展的主要內容。 本書獲得福建師范大學軟件學院軟件工程省級重點學科建設的資助,該資助為本書的順利出版提供了非常重要的支持。在此,也特別感謝福建師范大學科研處的有關領導、軟件學院姚志強院長、蔡聲鎮副院長、倪友聰副教授、杜欣副教授等有關領導和老師的支持和幫助,感謝軟件學院提供了相關研究開發所必需的各種條件;姜軍、胡耀、陳明珍、韓佳、李鵬澎等研究生同學,他們為本項目做了大量的研究工作,進行了編程實現,付出了艱辛和努力,為本書部分內容的撰寫也提供了很重要的幫助。電子工業出版社的王曉慶編輯為本書的出版做了大量的工作,對此深表感謝。最后,特別感謝我的家人對我的支持。 本書錯誤之處在所難免,敬請各位讀者批評指正。 肖如良 xiaoruliang@fjnu.edu.cn 2014年11月5日 |