新四季網

改進作為管理程序來賓而運行的虛擬機中內存使用情況的系統和方法

2023-04-25 06:46:41 1

專利名稱:改進作為管理程序來賓而運行的虛擬機中內存使用情況的系統和方法
技術領域:
一般而言,本發明涉及虛擬機環境及其他運行時環境,具體來說,涉及作為管理程 序內的來賓運行的Java及其他虛擬機環境內的內存使用情況。優先權聲明本申請要求2007年9月7日提出的專利申請號為No. 60/970,834,標題為「SYSTEM AND METHOD TO IMPROVE MEMORY USAGEIN VIRTUAL MACHINES RUNNING AS HYPERVISOR GUESTS」的美國臨時專利申請;以及2008年9月5日提出的專利申請號為No. 12/205,467, 標題為 「SYSTEM AND METHOD TO IMPR0VEMEM0RY USAGE IN VIRTUAL MACHINES RUNNING ASHYPERVIS0R GUESTS」的美國專利申請的優先權,這些專利申請以引用的方式併入本文 中。
背景技術:
可以使用伺服器虛擬化來將單一物理伺服器分區為多個虛擬伺服器,其中,每一 個虛擬伺服器都可以運行其自己的作業系統(OS)和一組應用程式。負責管理虛擬伺服器 的軟體一般被稱為「管理程序」(hypervisor,或稱為管理器)。系統管理員可以配置管理程 序以給每一個虛擬伺服器其自己的物理資源(如RAM或CPU時間)的份額。以此方式,操 作系統的多個副本以為它們各自都在它們自己的伺服器上運行,而實際上它們正在共享一 個物理伺服器。在管理程序內運行的作業系統一般被稱為該管理程序的來賓(guest)。虛擬化技術的主要用途之一是提高伺服器利用率。在伺服器上單獨運行的伺服器 應用程式很少能充分利用伺服器。例如,如果各自使用40%的伺服器容量的兩個應用程式 可以在同一個伺服器上運行,那麼,只需要一個物理伺服器,而不是兩個物理伺服器,相應 地降低了能源消耗和空間要求。只要所有應用程式都需要相同的作業系統和庫,那麼聚合同一個伺服器上的多個 應用程式久不需要伺服器虛擬化。令人遺憾的是,許多舊版伺服器應用程式需要不同的操 作系統,或其不同的版本。在這些情況下,在同一個伺服器上運行多個這些舊版伺服器應用 程序的唯一途徑是使用管理程序來執行伺服器虛擬化。在某些情況下,管理程序也可以提 供通常在作業系統中不可用的服務,如保證一定量的伺服器資源對一個來賓可用,而不對 另一個權限較小的來賓可用。利用多個物理伺服器,每個伺服器運行一個管理程序,一個服 務器上的管理程序可以將來賓移動到另一個伺服器。這可以用來適應應用程式工作負荷的 變化或伺服器的必需的升級或修理。當前可用的伺服器虛擬化技術的示例包括VMWare和 XenSource0由於空閒的伺服器常常與正在工作的伺服器使用幾乎同樣多的能量(這跟例如 筆記本電腦不同,筆記本電腦由於電池因素試圖節能),聚合來賓可以提供大量的能量和空 間節省,這會立即轉換成較低的成本。因此,許多信息技術或IT部門的一個共同的項目是 數據中心合併。數據中心合併也受必要性的驅動,例如,常常不可能向計算機中心添加更多的能量,或者沒有更多的可用的伺服器空間。然而,從長遠觀點來看,將舊的應用程式和操 作系統放到使用管理程序的現代的硬體上可能不是有效的解決方案。需要與底層作業系統 和管理程序進行協作的更加智能的應用程式,以便將來完全利用數據中心資源。與模擬已經存在的硬體設計的虛擬伺服器相比,虛擬機是可以為其編譯應用程式 軟體的抽象計算機。因此,虛擬機是在不同的硬體和作業系統組合之間是一致的應用程式 軟體的抽象層。在不同的平臺上運行相同應用程式的大部分複雜性由虛擬機進行處理,因 此,虛擬機變為非常複雜的軟體。現代的虛擬機需要管理特定處理器的代碼生成、比如線程 作業系統從屬的資源、聯網和文件系統。虛擬機也管理堆(heap),在堆內,進行虛擬機對象 的分配和釋放。虛擬機的示例包括Java虛擬機(JVM)以及其不同的實現方式,包括JRockit JVM,以及Hotspot JVM。當今的大部分伺服器應用程式都是以Java編寫的,並在這樣的虛 擬機上執行的。數據中心合併的當前趨勢需要虛擬機在作為管理程序來賓運行時表現良 好,並有助於資源節省。

發明內容
這裡說明了改進作為管理程序來賓運行的虛擬機,或其它垃圾收集的運行時環境 中的內存使用情況的系統和方法。用於管理程序控制來賓作業系統的當前技術大大地影響 了在來賓作業系統內運行的虛擬機的性能。本發明的實施例是通過提供改進作為管理程序來賓運行的虛擬機或運行時環境 收集的其他垃圾中的內存使用情況的系統和方法來解決此問題的。根據實施例,提供了用 於響應來自管理程序的請求更改虛擬機的內存使用情況的系統,包括管理程序;在所述 管理程序內運行的來賓作業系統;所述管理程序和所述來賓作業系統之間的通信信道;所 述來賓作業系統中的氣球驅動程序;用於執行軟體應用的虛擬機;所述氣球驅動程序和所 述虛擬機之間的通信信道;供所述虛擬機用於作為所述軟體應用的一部分存儲軟體對象和 指針的內存空間或堆;以及,供所述虛擬機使用的壓縮垃圾收集器。根據另一個實施例,所述氣球驅動程序可以使用所述氣球驅動程序到虛擬機的通 信信道來控制所述虛擬機的堆的大小。根據另一個實施例,所述管理程序可以在所述虛擬機堆之間均勻地或以指定的比 例分割可用的物理RAM。根據另一個實施例,所述管理程序可以為不同的虛擬機設置不同的堆大小,保證 符合服務層次的約束,這些約束對於每一個虛擬機是不同的。根據另一個實施例,所述作業系統可以被專門定製成只運行單一虛擬機,沒有交 換也沒有其他用戶進程。


圖1顯示了根據實施例的改進了在管理程序內作為來賓運行的虛擬機的內存使 用情況的系統的例圖。圖2顯示了根據實施例的內存布局的示意圖,顯示了縮小堆大小之前和之後的 Java _ ο圖3顯示了根據實施例的內存布局的示意圖,顯示了當兩個OS/JVM來賓在管理程序內運行的情況。圖4顯示了根據實施例的內存布局的示意圖,顯示了向管理程序內添加了第三 OS/JVM來賓的情況。圖5顯示了根據實施例的流程圖,顯示了管理程序RAM的重新分配。
具體實施例方式可以使用伺服器虛擬化來將單一物理伺服器分區為多個虛擬伺服器,其中,每一 個虛擬伺服器都可以運行其自己的作業系統(OS)和一組應用程式。負責管理虛擬伺服器 的軟體一般被稱為「管理程序」。系統管理員可以配置管理程序以給每一個虛擬伺服器提供 其自己的物理資源,比如RAM或CPU時間的份額。以此方式,作業系統的多個副本以為它們 各自都在它們自己的伺服器上運行,而實際上它們正在共享一個物理伺服器。在管理程序 內運行的作業系統一般被稱為管理程序的來賓。虛擬化技術的主要用途之一是提高伺服器利用率。在伺服器上單獨運行的伺服器 應用程式很少能充分利用伺服器。例如,如果各自使用40%的伺服器容量的兩個應用程式 可以在同一個伺服器上運行,那麼,只需要一個物理伺服器,而不是兩個物理伺服器,相應 地降低了能源消耗和空間要求。只要所有應用程式都需要相同的作業系統和庫,那麼聚合同一個伺服器上的多個 應用程式久不需要伺服器虛擬化。令人遺憾的是,許多舊版伺服器應用程式需要不同的操 作系統,或其不同的版本。在這些情況下,在同一個伺服器上運行多個這些舊版伺服器應用 程序的唯一途徑是使用管理程序來執行伺服器虛擬化。在某些情況下,管理程序也可以提 供通常在作業系統中不可用的服務,如保證一定量的伺服器資源對一個來賓可用,而不對 另一個權限較小的來賓可用。利用多個物理伺服器,每個伺服器運行一個管理程序,一個服 務器上的管理程序可以將來賓移動到另一個伺服器。這可以用來適應應用程式工作負荷的 變化或伺服器的必需的升級或修理。當前可用的伺服器虛擬化技術的示例包括VMWare和 XenSource0由於空閒的伺服器常常與正在工作的伺服器使用幾乎同樣多的能量(這跟例如 筆記本電腦不同,筆記本電腦由於電池因素試圖節能),聚合來賓可以提供大量的能量和空 間節省,這會立即轉換成較低的成本。因此,許多信息技術或IT部門的一個共同的項目是 數據中心合併。數據中心合併也受必要性的驅動,例如,常常不可能向計算機中心添加更多 的能量,或者沒有更多的可用的伺服器空間。然而,從長遠觀點來看,將舊的應用程式和操 作系統放到使用管理程序的現代的硬體上可能不是有效的解決方案。需要與底層作業系統 和管理程序進行協作的更加智能的應用程式,以便將來完全利用數據中心資源。與模擬已經存在的硬體設計的虛擬伺服器相比,虛擬機是可以為其編譯應用程式 軟體的抽象計算機。因此,虛擬機是在不同的硬體和作業系統組合之間是一致的應用程式 軟體的抽象層。在不同的平臺上運行相同應用程式的大部分複雜性由虛擬機進行處理,因 此,虛擬機變為非常複雜的軟體。現代的虛擬機需要管理特定處理器的代碼生成、比如線 程的作業系統從屬的資源、聯網和文件系統。虛擬機也管理堆(heap),在堆內,進行虛擬機 對象的分配和釋放。虛擬機的示例包括Java虛擬機(JVM)以及其不同的實現方式,包括 JRockit JVM,以及Hotspot JVM。當今的大部分伺服器應用程式都是以Java編寫的,並在這樣的虛擬機上執行的。數據中心合併的當前趨勢需要虛擬機在作為管理程序來賓運行時 表現良好,並有助於資源節省。Java虛擬機內存使用情況Java程序的工作對象是稱為Java對象的數據結構,Java對象存儲在Java堆中。 Java堆是只為Java對象預留的可用內存的一個區域。在Java堆中創建新對象,而當堆中 沒有更多空間剩下時,使用垃圾收集進程識別不再被使用的對象,然後,可以收回相應的內 存並將其用於新的Java對象。除了基本前提之外,Java虛擬機的定義沒有規定對性能的 任何要求或垃圾收集進程的行為,基本前提比如未使用的內存應該重新用於新對象,當要 釋放對象時,應該調用終結程序(finalizer)。在Tim Lindholm和Frank Yellin所著的 "The JavaVirtual Machine Specification (2nd Edition),1999」中提供了有關 Java虛擬 機的更多信息,該文以引用的方式併入本文中。因此,JVM實施者可以選擇優化各種不同的 行為,這取決於應用程式軟體的要求和所使用的特定硬體的特點。理想的垃圾收集器對於 應用程式軟體和軟體用戶是不可檢測的,因為沒有暫停、沒有額外的CPU或內存消費。令人 遺憾的是,沒有這樣的垃圾收集器存在,大量的工作被花費在對不同目標以不同算法實現 高性能對象分配和垃圾收集。—般而言,較大的Java堆提供更好的性能,因為將花費比較長的時間填滿可用內 存,因此,垃圾收集操作較少。只要Java堆稍微大於應用程式大小JVM就可以繼續運轉。應 用程序大小也被稱為活數據(live data)大小,是在進行垃圾收集之後已知仍活著的所有 對象的總和。應用程式大小不能超出Java堆的最大大小。如果應用程式試圖超出此限制, 那麼,會引發致命的「內存用盡」錯誤,JVM結束。在應用程式大小几乎與Java堆大小相同的情況下,JVM將花費其大部分時間進行 垃圾收集,應用程式性能將非常低。如果Java堆是應用程式大小的兩倍,那麼,垃圾收集的 性能影響通常是合理的,或者甚至是比較低的。作業系統內存使用情況交換(swapping)是被證實允許比伺服器在物理上可用的RAM分配更多RAM的操 作系統技術。交換的一般概念是,如果一個進程當前沒有訪問其MM的某個區域,那麼,操 作系統可以將該區域的內容存儲在磁碟上,並將內存給予更迫切地需要內存的另一個進 程。如果原進程稍後再試圖訪問該內存區域,則作業系統不得不再次將它從磁碟加載到內 存中。(如果當發生請求時作業系統內存不夠,則它可能不得不首先將某些其他內存換出到 磁碟,以完成該請求)。在理論上和實踐中,交換在多進程操作環境中對於許多種進程來說 能很好工作。長期以來,硬體和作業系統軟體已被設計和優化為有效地執行交換,並且應用 程序常常具有相比於同一個應用程式的其他部分來說更少使用的代碼和數據。高效的交換依賴於內存中存在當前沒有被活躍地使用並且不會很快被訪問的區 域。這些內存區域可以包含重要數據,其中,該數據當前沒有被訪問,但是,在比較遠的將來 可能被訪問。成功的交換依賴於系統發現這些不活動的內存區域的能力。它們與活動的內 存區域對比鮮明,因為這些區域被進程頻繁地訪問。如果大多數內存區域是活動的,那麼, 系統將不能找到足夠多的非活動區域來換出,並且將不得不換出某些活動區域。這種交換 將導致嚴重的性能下降,因為頁面不得不被存儲到磁碟中然後被立即帶回到RAM中。虛擬機內存的管理程序交換
如同作業系統可以決定換出進程的幾部分一樣,管理程序可以決定換出虛擬機的 幾部分,以為具有更大內存需求的其他虛擬機提供空間。此外,如同作業系統交換對操作系 統內的進程透明一樣,管理程序交換對虛擬機內的作業系統也是透明的。除了作業系統可 能檢測到它有時運行得較慢些以外,交換過程對來賓作業系統是透明的。作業系統本身不 能檢測到它的某些部分被換出。由於整個作業系統運行得慢一些,因此,作業系統內的進程 也將運行得慢一些。
管理程序換出虛擬機內存的幾部分的理由一般與作業系統換出進程的虛擬內存 的幾部分的理由相同,即,有固定量的物理RAM,並且管理程序試圖以最有效的方式在來賓 之間共享這些資源。成功而有效的交換高度依賴於哪些頁面(內存的哪些部分)被挑選以換出。在理 想情況下,應該選擇在最遠的未來才會被使用的頁面。這樣的算法難以設計,但是,對於操 作系統交換有相當好的近似。對於管理程序,問題比較複雜。如果管理程序使用了與來賓 作業系統相同的交換算法,那麼,管理程序和來賓作業系統將希望交換相同的頁面。如果管 理程序首先將頁面換出,有可能隨後很快某一時間該虛擬機內的來賓作業系統會決定換出 同一個頁面。作業系統交換將迫使管理程序再次加載該頁面,以便作業系統進行訪問以使 它可以被再次換出。顯而易見,這不是一個好主意。較好的情況是,如果來賓作業系統先試圖交換,並且當作業系統完成換出頁面時, 管理程序可以換出更多,如果需要的話。如果管理程序可以觸發作業系統執行交換,就可以 實現這一點。舊式作業系統通常沒有從外部軟體接收它們應該如何管理RAM的命令的功 能。某些管理程序通過在來賓作業系統內插入可以與管理程序進行通信的設備驅動程序來 解決此問題。管理程序使用管理程序到作業系統的通信信道,並告訴驅動程序,它希望操作 系統進行交換。然後,驅動程序分配作業系統中的非可交換的內存。效果是,作業系統必須 換出其他內存。管理程序可以檢測到由驅動程序分配的內存,並避免為它分配RAM,因此縮 小了供來賓作業系統使用的RAM總量。這種驅動程序有時被稱為「氣球驅動程序」(balloon driver,或稱氣球驅動器), 因為由驅動程序分配的內存可以被視為在來賓作業系統內膨脹並將進程推出以交換空間 的氣球。最終結果是更好的性能,因為作業系統比管理程序更適合選擇最佳的頁面交換到磁碟。令人遺憾的是,諸如帶有比較大的垃圾收集堆的JVM之類的虛擬機對交換是非常 敏感的。如上文所描述的,交換改進了內存使用情況,並且對性能的影響很小,只要內存使 用頻率是不均勻的,即,內存的某些部分被使用得比其他部分頻繁。由於Java堆在垃圾收 集被觸發之前被完全使用,活動Java對象(live Java object)常常均勻地在Java堆上展 開。如此,當執行垃圾收集以及跟蹤並發現活動對象時,在垃圾收集器活動的短時間內必須 在整個Java堆上隨機地執行讀取。如果整個堆不能保留在內存中,(即,某些部分始終必 須被換出),那麼,按隨機順序檢查Java堆的大部分的垃圾收集跟蹤將導致垃圾收集減慢, 或許幾乎完全停滯。因此,使用氣球驅動程序的管理程序無法調整運行JVM的來賓作業系統的內存使 用情況而不顯著影響JVM的性能。這是降低在虛擬伺服器環境中運行的任何垃圾收集的虛 擬機的效率的嚴重缺點。改進作為管理程序內的來賓運行的垃圾收集的虛擬機的內存使用情況的任何新技術將增大由伺服器虛擬化產生的節省。作為管理程序來賓運行的虛擬機中的改進的內存使用情況在此公開了改進作為管理程序來賓運行的虛擬機或運行時環境收集的其他垃圾中的內存使用情況的系統和方法。如上文所描述的,用於管理程序控制來賓作業系統的當 前技術大大地影響了在來賓作業系統內運行的虛擬機的性能。通過提供改進作為管理程序 來賓運行的虛擬機或運行時環境收集的其他垃圾中的內存使用情況的系統和方法,本發明 的實施例解決了此問題的。實施例是通過提供改進作為管理程序來賓運行的虛擬機或運行 時環境收集的其他垃圾中的內存使用情況的系統和方法來解決此問題的。根據實施例,該 系統用於響應來自管理程序的請求更改虛擬機的內存使用情況,包括管理程序;在所述 管理程序內執行的來賓作業系統;所述管理程序和所述來賓作業系統之間的通信信道;所 述來賓作業系統中的氣球驅動程序;用於執行軟體應用的虛擬機;所述氣球驅動程序和所 述虛擬機之間的通信信道;供所述虛擬機用於作為所述軟體應用的一部分存儲軟體對象和 指針的內存空間或堆;以及,供所述虛擬機使用的壓縮垃圾收集器。圖1顯示了根據實施例的改進了在管理程序內作為來賓運行的虛擬機的內存使 用情況的系統的說明。如圖1所示,系統101包括伺服器102,伺服器102進一步包括計算 機硬體103。該計算機硬體正在運行管理程序104。管理程序正在運行兩個來賓作業系統 105和106。每個作業系統都分別包含氣球驅動程序107和108。管理程序分別使用信道 109和110控制來賓作業系統的內存使用情況。根據實施例,第一 Java虛擬機111作為來賓作業系統105內的進程運行。當應用 軟體正在運行時,它利用Java堆112,Java堆112包含未使用的空閒內存113和包含活動 Java對象的已使用的內存114。堆是由壓縮垃圾收集器115收集的垃圾。壓縮垃圾收集器 在每一次垃圾收集時選擇Java堆的一個區域,並將選定的Java對象移動到彼此靠近,以創 建較大的未使用的內存。氣球驅動程序107使用信道116控制JVM 111的內存使用情況。根據實施例,具有其JVM 117的第二來賓作業系統106具有較小的Java堆118, Java堆118的未使用的空間119較多,而活動數據120較少。它還具有壓縮垃圾收集器 121。氣球驅動程序108使用信道122控制作業系統JVM 117的內存使用情況。圖2顯示了根據實施例的內存布局的示意圖,顯示了縮小堆大小之前和之後的 Java堆。如圖2所示,Java堆201包含隨機地在堆上散布的多個Java對象202。根據實 施例,Java堆被縮小,以便縮小的Java堆206包含相同的Java對象204,但是,這些對象都 被移動得彼此更靠近,即,它們被壓縮。這樣便可以刪除Java堆的末尾205。圖3顯示了根據實施例的內存布局的示意圖,顯示了當兩個OS/JVM來賓在管理程 序內運行時的情況。如圖3所示,管理程序RAM 301正在用於兩個來賓OS/JVM,有Java堆 302和303。Java堆還分別包含Java對象304和305。圖4顯示了根據實施例的內存布局的示意圖,顯示了向管理程序內添加了第三或 隨後的OS/JVM來賓的情況。如圖4所示,管理程序RAM 301包含兩個原始來賓402和403。 根據實施例,這些堆中的Java對象404和405被壓縮,以便可以縮小406它們的大小,並利 用新獲取的內存407創建新的Java堆。然後,新的Java堆407可以供新的OS/JVM來賓使 用,以存儲Java對象408。圖5顯示了根據實施例的流程圖,顯示了管理程序RAM的重新分配。如圖5所示,根據實施例,進程從方框501開始,此時管理程序決定需要重新分配物理RAM。在方框502 中,向不同的來賓發送調整大小的命令。在方框503中,來賓作業系統氣球驅動程序檢查操 作系統的狀態,以判斷是否具有比較大的堆的JVM正在運行。如果是,那麼,在方框504中, 氣球驅動程序向JVM發送調整大小的命令。如果JVM必須縮小堆的大小,那麼,在方框505 中,它使用壓縮垃圾收集器來壓縮堆,以能夠縮小堆大小。如果JVM必須增大堆的大小,那 麼,它可以只是增大堆大小。JVM還向回報告此信息。在方框506中,氣球驅動程序檢查操 作系統的新的狀態。如果JVM調整大小的操作不能完全執行,那麼,氣球驅動程序可能必須 以任何方式對氣球進行充氣,作為最終報告。在方框507中,當所有氣球驅動程序和JVM都 執行了它們的內存使用重新分配並向回報告時,管理程序內存重新分配完成。如上文所描述的,Java堆的大小是十分靈活的。對於稍微大於活動數據的Java 堆,垃圾收集執行得頻繁,並且將會需要較大比例的可用CPU資源。通過增大Java堆的大 小,將會立即降低垃圾收集執行的次數,並增強系統性能。利用如上文所描述的本發明的實 施例,可以使用Java堆大小的靈活性以適應在單一管理程序內運行的多個JVM的需求。利 用此實施例,當向同一個伺服器中添加更多JVM時,可以實現適度退化。否則,一旦氣球驅 動程序強制來賓進行交換,JVM可能停止有效地運行。根據另一個實施例,氣球驅動程序可以使用氣球驅動程序到虛擬機的通信信道來 控制所述虛擬機的堆大小。根據另一個實施例,管理程序可以在虛擬機堆之間均勻地或以指定的比例分割可 用的物理RAM。根據另一個實施例,管理程序可以為不同的虛擬機設置不同的堆大小,以保證符 合服務層次的約束,這些約束對於每個虛擬機是不同的。根據另一個實施例,作業系統可以是專門定製的,以只運行單一虛擬機,沒有交換 也沒有其他用戶進程。可以通過使用常規的通用數字計算機或微處理器或根據本發明的原理編程的專 門數字計算機或微處理器來方便地實現本發明。對於那些精通軟體技術的人來說顯而易見 的是,可以由熟練的程式設計師基於本發明的原理輕鬆地編制適當的軟體代碼。在某些實施例中,本發明包括電腦程式產品,該產品是其中存儲了指令的存儲 介質,這些指令可以用來對計算機進行編程,以執行本發明的任何一個處理。存儲介質可 以包括但不僅限於任何類型的盤,包括軟盤、光碟、DVD、CD-ROM、微驅動,以及磁光碟、ROM、 RAM、EraOM、EEraOM、DRAM、VRAM、快閃記憶體設備、磁卡或光卡,納米系統(包括分子內存IC),或適 於存儲指令和/或數據的任何類型的介質或設備。前面的對本發明的描述只是為了說明和描述。它不意在成為詳盡的說明或將本發 明限於所說明的精確形式。那些精通本領域的專業人員將認識到,可以進行許多修改。具 體來說,顯然,儘管這裡所描述的示例顯示了這些特徵可以如何用於JRockit環境中,但其 他應用伺服器、虛擬機、JVM、計算環境,以及軟體開發系統也可以使用本發明並受益於本發 明。給出的代碼示例只是為了說明目的而呈現。顯然,可以使用其他代碼語言,並利用不同 的代碼來應用這裡所描述的技術。選擇和描述實施例只是為了最好地解釋本發明的原理以及其實際應用,並使精通 本領域的其他技術人員懂得,帶有適合於特定用途的各種修改的各種實施例的本發明也在考慮範圍內。本發明的範圍由下面的權利要求以及它們的等效物限定。
權利要求
一種改進作為管理程序來賓運行的虛擬機中的內存使用情況的系統,包括計算機硬體或機器;在所述計算機硬體或機器上運行的管理程序;作為所述管理程序內的來賓來運行的一個或多個來賓作業系統,其中,所述一個或多個來賓作業系統中的每一個都具有與其關聯的氣球驅動程序,用於執行軟體應用的虛擬機,供所述虛擬機用於作為所述軟體應用的一部分存儲軟體對象和指針的內存空間或堆,以及供所述虛擬機用於對所述內存空間或堆內的軟體對象進行垃圾收集的垃圾收集器;以及其中,所述系統接收有關所述虛擬機對所述內存空間或堆的使用情況的信息,並使用所述氣球驅動程序來控制所述壓縮垃圾收集器的使用,並且管理對於供作為所述管理程序內的來賓運行的所述一個或多個來賓作業系統使用來說所必需的內存空間或堆的大小。
2.根據權利要求1所述的系統,進一步包括作為所述管理程序內的來賓來運行的多個來賓作業系統;所述管理程序和作為所述管理程序內的來賓來運行的所述多個來賓作業系統中的每 一個之間的通信信道;對於作為所述管理程序內的來賓來運行的所述多個來賓作業系統中的每一個,該來賓 作業系統中的所述氣球驅動程序和與該來賓作業系統關聯的或在該來賓作業系統上運行 的虛擬機之間的通信信道;以及其中,所述管理程序使用所述信道來管理所述多個來賓作業系統的內存空間或堆的大小。
3.根據權利要求1所述的系統,其中,所述氣球驅動程序使用所述氣球驅動程序到虛 擬機的通信信道來控制所述虛擬機的堆的大小。
4.根據權利要求1所述的系統,其中,所述管理程序在所述虛擬機堆之間均勻地或以 指定的份額分割可用的物理RAM。
5.根據權利要求1所述的系統,其中,所述管理程序可以為不同的虛擬機設置不同的 堆大小以保證符合服務層次的約束,這些約束對於每一個虛擬機是不同的。
6.根據權利要求1所述的系統,其中,所述作業系統被專門定製成只運行單一虛擬機, 沒有交換也沒有其他用戶進程。
7.一種改進作為管理程序來賓運行的虛擬機中的內存使用情況的方法,包括下列步驟在計算機硬體或機器上運行管理程序;提供作為所述管理程序內的來賓來運行的一個或多個來賓作業系統,其中,所述一個 或多個來賓作業系統中的每一個都具有與其關聯的 氣球驅動程序, 用於執行軟體應用的虛擬機,供所述虛擬機用於作為所述軟體應用的一部分存儲軟體對象和指針的內存空間或堆,以及供所述虛擬機用於對所述內存空間或堆內的軟體對象進行垃圾收集的垃圾收集器;以及接收有關所述虛擬機對所述內存空間或堆的使用情況的信息,並使用所述氣球驅動程 序來控制所述壓縮垃圾收集器的使用,並且管理對於供作為所述管理程序內的來賓運行的 所述一個或多個來賓作業系統使用來說所必需的內存空間或堆的大小。
8.根據權利要求7所述的方法,進一步包括提供作為所述管理程序內的來賓來運行的多個來賓作業系統; 在所述管理程序和作為所述管理程序內的來賓來運行的所述多個來賓作業系統中的 每一個之間提供通信信道;對於作為所述管理程序內的來賓來運行的所述多個來賓作業系統中的每一個,在該來 賓作業系統中的所述氣球驅動程序和與該來賓作業系統關聯的或在該來賓作業系統上運 行的虛擬機之間提供通信信道;以及允許所述管理程序使用所述信道來管理所述多個來賓作業系統的內存空間或堆的大小。
9.根據權利要求7所述的方法,其中,所述氣球驅動程序使用所述氣球驅動程序到虛 擬機的通信信道來控制所述虛擬機的堆的大小。
10.根據權利要求7所述的方法,其中,所述管理程序在所述虛擬機堆之間均勻地或以 指定的份額分割可用的物理RAM。
11.根據權利要求7所述的方法,其中,所述管理程序可以為不同的虛擬機設置不同的 堆大小以保證符合服務層次的約束,這些約束對於每一個虛擬機是不同的。
12.根據權利要求7所述的方法,其中,所述作業系統被專門定製成只運行單一虛擬 機,沒有交換也沒有其他用戶進程。
13.—種改進作為管理程序來賓運行的虛擬機中的內存使用情況的方法,包括下列步驟在計算機硬體或機器上運行管理程序;提供作為所述管理程序內的來賓來運行的一個或多個來賓作業系統,其中,所述一個 或多個來賓作業系統中的每一個都具有與其關聯的 氣球驅動程序, 用於執行軟體應用的虛擬機,供所述虛擬機用於作為所述軟體應用的一部分存儲軟體對象和指針的內存空間或堆,以及供所述虛擬機用於對所述內存空間或堆內的軟體對象進行垃圾收集的垃圾收集器; 由所述管理程序判斷需要重新分配系統中的物理RAM ; 向所述一個或多個來賓作業系統發送調整大小的命令;在每一個來賓作業系統氣球驅動程序中檢查相應作業系統的狀態,以判斷是否具有大 的堆的虛擬機正在運行;如果具有大的堆的虛擬機正在運行,則向所述虛擬機發送調整大小的命令,而如果所 述虛擬機必須縮小所述堆的大小,則允許所述虛擬機壓縮所述堆,並向回報告此信息;以及按需重新分配所述管理程序內存,直到每一個氣球驅動程序和虛擬機都已經執行了任 何必需的內存空間或堆重新分配並向回報告。
14.根據權利要求13所述的方法,其中,如果所述虛擬機必須增大所述堆的大小,則允 許它增大所述堆的大小。
15.根據權利要求13所述的方法,其中,如果不能完全執行大小的縮小,則允許所述氣 球驅動程序對氣球進行充氣。
全文摘要
改進作為管理程序來賓運行的虛擬機中的內存使用情況的系統和方法。根據實施例,本發明提供了用於響應來自管理程序的請求更改虛擬機的內存使用情況的系統,包括管理程序;在所述管理程序內執行的來賓作業系統;所述管理程序和所述來賓作業系統之間的通信信道;所述來賓作業系統中的氣球驅動程序;用於執行軟體應用的虛擬機;所述氣球驅動程序和所述虛擬機之間的通信信道;供所述虛擬機用於作為所述軟體應用的一部分存儲軟體對象和指針的內存空間或堆;以及,供所述虛擬機使用的壓縮垃圾收集器。
文檔編號G06F12/02GK101971146SQ200880106058
公開日2011年2月9日 申請日期2008年9月8日 優先權日2007年9月7日
發明者J·達爾斯泰特 申請人:甲骨文國際公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀