TWI507870B - 虛擬機的記憶體管理方法和電腦系統 - Google Patents

虛擬機的記憶體管理方法和電腦系統 Download PDF

Info

Publication number
TWI507870B
TWI507870B TW102131817A TW102131817A TWI507870B TW I507870 B TWI507870 B TW I507870B TW 102131817 A TW102131817 A TW 102131817A TW 102131817 A TW102131817 A TW 102131817A TW I507870 B TWI507870 B TW I507870B
Authority
TW
Taiwan
Prior art keywords
memory
processor
balloon
phase
target
Prior art date
Application number
TW102131817A
Other languages
English (en)
Other versions
TW201415227A (zh
Inventor
Han Lin Li
Tzi Cker Chiueh
Jui Hao Chiang
Original Assignee
Ind Tech Res Inst
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ind Tech Res Inst filed Critical Ind Tech Res Inst
Publication of TW201415227A publication Critical patent/TW201415227A/zh
Application granted granted Critical
Publication of TWI507870B publication Critical patent/TWI507870B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

虛擬機的記憶體管理方法和電腦系統
本發明是有關於一種電腦系統及其虛擬機的記憶體的管理的技術。
電腦虛擬化是涉及建立一種如同具有作業系統的實體計算機的虛擬機器的技術,且電腦虛擬化的架構大體上依據在單一實體電腦平臺上同時支援多個作業系統的能力來界定。舉例來說,正在運行微軟視窗作業系統(Microsoft Windows)的電腦可主控具有Linux作業系統的虛擬機。在當虛擬機被視為客戶機(guest machine)時,主機為上述發生虛擬化的實體機器。超管理器(hypervisor;正確的說法為虛擬機監控器(virtual machine monitor;VMM))為虛擬化硬體資源且呈現虛擬硬體介面給至少一虛擬機的軟體層。超管理器類似於傳統作業系統管理硬體資源以用於處理的方式以及相對於執行中的虛擬機執行某些管理功能。虛擬機可稱作“客戶”且在虛擬機內運行的作業系統可稱作 “客戶作業系統”。
虛擬化環境當前受到存儲限制,這意味著主機的實體記憶體為資料中心的資源利用的瓶頸。記憶體虛擬化將實體記憶體資源與資料中心分離且接著將資源聚合到虛擬化記憶體池(memory pool)中,所述虛擬化記憶體池可由客戶作業系統或在客戶作業系統上運行的應用程式存取。就記憶體虛擬化來說,記憶體壓縮為記憶體資源管理和利用的至關重要的主題之一。
相似於傳統作業系統,提高超管理器使用的記憶體的最後手段為通過主機交換(即,將虛擬機的記憶體分頁(memory page)移動到實體記憶體置換空間(swap space),稱作記憶體換出)來從虛擬機回收記憶體,將虛擬機的實體位址對機器位址(P2M)表的對應分頁表項(page table entry;PTE)標記為不存在,且接著將對應分頁釋放到超管理器的自由記憶體池中,其中分頁表為由虛擬機使用以存儲虛擬位址與物理位址之間的映射的資料結構。接著,如果所述分頁再次被虛擬機所存取,分頁錯誤被觸發且存取時複製(copy-on access;COA)機制被啟動以將分頁內容從交換磁碟帶到新分配的記憶體分頁中,稱作記憶體換進(swap in)。然而,因為磁碟輸入/輸出(I/O)所造成的長時間的延滯會令人非常不滿意。
作為提高記憶體利用的另一方式,記憶空間的壓縮動作可通過將虛擬機的換出分頁壓縮成大小較小的資料且將其一起放在記憶體中以節省用以存儲原始內容的實體記憶體空間來進行。 這個想法為從壓縮的記憶體進行記憶體換進動作,且將比由實體記憶體空間(如磁碟)進行記憶體換進動作為快,這是因為記憶體的存取速度比磁碟的存取速度為快。
儘管如此,記憶體壓縮主要視為第二選擇,這是因為其不僅啟動引起觸發硬體陷阱hardware trap且停止當前應用程式執行的存取時複製(COA),而且消耗主機的處理器的處理週期(cycle)來壓縮和解壓縮分頁內容並引發較多銷耗。因此,在理想情形下為避免壓縮被客戶作業系統頻繁地存取的記憶體分頁(即,工作集),而是找出閒置記憶體分頁(即,工作集之外的客戶記憶體分頁)以用於記憶體壓縮。
本揭露提供一種虛擬機的記憶體管理方法以有效進行記憶體的管理動作。
本揭露提供一個實施例關於虛擬機的記憶體管理方法。記憶體管理方法包含以下步驟。首先,通過處理器設定第一閥值。接著通過處理器在第一調整階段中根據記憶體換進/再次快取錯誤檢測結果而將氣球目標(balloon target)設定為分配虛擬記憶體大小且將氣球目標逐步遞減第一遞減值。通過處理器檢測至少一個記憶體換進或再次快取錯誤事件來產生記憶體換進/再次快取錯誤檢測結果。通過處理器在冷卻階段中根據記憶體換進/再次快取錯誤檢測結果而停止遞減氣球目標。通過處理器在冷卻階段之後的 第二調整階段中將氣球目標逐步遞減第二遞減值。第二遞減值小於第一遞減值,且氣球目標不小於第一閥值。
一個示範性實施例涉及包含一種電腦系統,包含記憶體以及處理器。所述處理器耦合到所述記憶體且針對對虛擬機的記憶體管理執行以下操作。所述處理器設定第一閥值以及在第一調整階段中根據記憶體換進/再次快取錯誤檢測結果將氣球目標設定為分配虛擬記憶體大小且將氣球目標逐步遞減第一遞減值。所述處理器還通過檢測至少一個記憶體換進或再次快取錯誤事件來產生記憶體換進/再次快取錯誤檢測結果。所述處理器在冷卻階段中根據記憶體換進/再次快取錯誤檢測結果而停止遞減氣球目標。所述處理器還在冷卻階段之後的第二調整階段中將氣球目標逐步遞減第二遞減值。第二遞減值小於第一遞減值,且氣球目標不小於第一閥值。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100‧‧‧電腦系統
100'‧‧‧虛擬機
110‧‧‧處理器
120‧‧‧系統記憶體
150‧‧‧虛擬機
155‧‧‧客戶作業系統
160‧‧‧超管理器
170‧‧‧虛擬硬體
P12、P21、P23、P31、P32、P34‧‧‧路徑
S1‧‧‧第一調整階段
S2、S4‧‧‧冷卻階段
S3‧‧‧第二調整階段
S5‧‧‧第三調整階段
圖1A為說明根據本揭露的示範性實施例的電腦系統的框圖。
圖1B為說明根據本揭露的示範性實施例的虛擬機的框圖。
圖2為說明根據本揭露的示範性實施例的用於對虛擬機的記憶體管理的方法的狀態圖。
圖3為說明根據本揭露的示範性實施例的用於對虛擬機的記憶體管理的方法的另一狀態圖。
現將詳細參考本揭露的實施範例,其實例在附圖中得以說明。只要可能,相同參考數字在圖式和描述中用以指相同或相似部分。
基於說明目的,一個處理器以及一個系統記憶體用於以下實施例中,且本揭露不限於此。在其他實施範例中,可使用一個以上處理器以及一個以上系統記憶體。
圖1A為說明根據本揭露的實施例的電腦系統的方塊圖。參照圖1,電腦系統100包含處理器110、系統記憶體120以及其他標準週邊元件(未繪示),其中系統記憶體120耦接到處理器110。
處理器110可以為專用或專有處理器,其被配置以透過執行定義與操作有關的功能的機器可讀軟體代碼語言來執行特定任務,並藉以透過與電腦系統100的其他元件進行通信來執行功能操作。
系統記憶體120存儲例如作業系統等軟體且暫時存儲當前在作用中或經常被使用的資料或應用程式。因此,系統記憶體120(也稱作實體記憶體)可為較快的記憶體(例如,隨機存取記憶體(RAM)、靜態隨機存取記憶體(SRAM)或動態隨機存取記 憶體(DRAM))以獲得較短的存取時間。
虛擬記憶體為用於管理系統記憶體120的資源的技術。其提供虛構的大量記憶體。虛擬記憶體以及系統記憶體120兩者被劃分為具有連續記憶體位址的區塊,其也稱作記憶體分頁。系統記憶體120可(例如)包含壓縮記憶體,其與電腦系統100上運行的至少一虛擬機相關聯。壓縮記憶體以壓縮格式臨時存儲最近較少存取的記憶體分頁以使得系統記憶體120中有較多空間可用。
超管理器安裝在電腦系統100上且提供支援至少一個虛擬機可同時在虛擬機實體化且執行的虛擬機執行空間。圖1B為說明根據本揭露的示範性實施例的虛擬機的方塊圖。在本實施例中,將僅針對一個虛擬機進行說明,但本揭露不限於此。在其他實施例中,多個虛擬機可共存且以類似方式執行操作。
參看圖1B與圖1A,虛擬機100'包含具有客戶作業系統155和其他應用程式(未圖示)的虛擬機150、超管理器160以及虛擬硬體170。虛擬硬體170包含處理器、記憶體以及I/O裝置,並被抽取且分配以作為虛擬處理器、虛擬記憶體以及虛擬I/O裝置以提供給上層運行的虛擬機150。超管理器160管理虛擬機150且提供仿真硬體以及韌體資源。在一實施例中,Linux的一版本可被安裝在虛擬機150以作為客戶作業系統155內以執行任何支援的應用程式,且可提供支援大多數Linux發行版本的開源軟體Xen作為超管理器160。客戶作業系統155包含氣球驅動程式(balloon driver,未圖示)。結合超管理器160,氣球驅動程式可通過利用記憶體管理演算法來分配或解除分配客戶作業系統155的虛擬記憶體。舉例來說,通過利用客戶作業系統155的現有分頁回收機制,開發出所謂的基於真工作集的氣球演算法(稱作TWS氣球演算法)以探測工作集且收回閒置記憶體分頁作為壓縮目標。在實際的應用上,特別著重於Linux的客戶作業系統,並且,真工作集的氣球演算法還可用於其他客戶作業系統(例如,微軟的視窗作業系統Microsoft Windows)。
更詳細地說,為了使記憶體壓縮較有效,通過利用分頁回收機制來識別虛擬機150的工作集以及壓縮工作集之外的記憶體分頁為必要的。直觀地說,虛擬機150的工作集被定義為在最近被虛擬機150積極地使用的記憶體的量。為了分頁回收,Linux客戶作業系統155使用最近最少使用(least recently used,LRU)準則來確定收回分頁的次序以及維護用於兩個主要類型的記憶體(匿名記憶體和分頁高速緩衝記憶體)的兩個最近最少使用列表:作用中列表和非作用中列表。匿名記憶體的記憶體分頁作為用戶程序的堆積(heap)及堆疊(stack),且分頁高速緩衝記憶體的記憶體分頁以磁片資料的方式備份,其中在對磁片資料的第一次被存取之後在將其儲存在記憶體中的高速緩衝區以減少接下來可能產生的磁片I/O的時間。作用中列表中的記憶體分頁被較頻繁地存取,被稱作熱頁;非作用中列表中的分頁被較不頻繁地存取,被稱作冷頁。在分配後,每一記憶體分頁默認地放入到作用 中列表中。
在本揭露一實施例中,可在客戶作業系統155的內核(例如,domU內核)不能分配記憶體時直接觸發分頁回收機制。舉例來說,當請求記憶體分頁時,內核可能不能從超管理器160的自由記憶體池中找到記憶體分頁。內核可從含有被視為相對較冷的記憶體分頁的非作用中列表中回收記憶體,使得在近期將不會很快存取所回收的記憶體。當非作用中列表中的記憶體分頁的數目不足以實現記憶體分配請求時,內核可檢視作用中列表且將冷頁從作用中列表移動到非作用中列表。
判斷記憶體分頁為熱頁還是冷頁的一種方式為檢查並清除記憶體分頁的分頁表項(Page Table Entry)的硬體參考位元。因此,如果在內核檢視作用中列表參考位是開啟的,那麼清除參考位元,且接著此記憶體分頁被視為熱頁且被保持停留在作用中列表中。否則,記憶體分頁被視為冷頁且移動到非作用中列表。
如果非作用中列表上的記憶體分頁為匿名記憶體,那麼內核可將內容換出到(例如)交換磁片,將進程的對應分頁表項標記為不存在,且接著釋放對應記憶體分頁。稍後,如果再次存取記憶體分頁,那麼通過將分頁內容從交換記憶體空間帶到新分配的記憶體分頁中(即,記憶體換進)來執行存取時複製(COA)機制。或者,如果非作用中列表上的記憶體分頁屬於分頁高速緩衝記憶體,那麼內核可在分頁內容已變髒的情況下將分頁內容刷新到交換磁片,且接著釋放所述分頁。在下一次的存取動作後, 內核必需再次執行記憶體空間的存取(稱作再次快取錯誤(refault))以將內容帶回到分頁高速緩衝記憶體中的新分配的分頁。應注意,在其中一實施例中,交換記憶體空間可為電腦系統100中的硬碟(未圖示)上的用以從系統記憶體120卸載LSU分頁的區域。然而,在另一實施例中,如果用戶在電腦系統100上感覺到工作速度過於緩慢,那麼系統記憶體120的一部分也可用作交換記憶體空間。
每當發生記憶體換進或再次快取錯誤事件時,虛擬機150將具有因為磁片I/O的延遲而降級效能。在一實施例中,從分頁回收的角度來看,可通過對記憶體換進計數和再次快取錯誤計數求和來量化虛擬機150的性能開銷,稱作消費計數overhead_count,其可寫作方程式(1):消費計數overhead_count=記憶體換進計數+再次快取錯誤計數 方程式(1)
在執行虛擬機150的記憶體管理的進程中,可指示氣球驅動程式膨脹或收縮。當電腦系統100處於記憶體壓力的情況下時將發佈膨脹命令。當記憶體壓力已減輕時將發佈收縮命令。每一膨脹或收縮命令包含虛擬機150的記憶體分頁的數目的指示(本文中稱作氣球目標)。與膨脹或收縮命令相關聯的氣球目標表示從客戶作業系統155回收或返回到客戶作業系統155的客戶實體記憶體分頁的數目。在Linux作業系統中,可使用回收機制通過Committed_AS值來識別由所有進程在一時刻消耗的匿名記憶體 的總大小。Committed_AS值表示虛擬機150消耗的匿名記憶體,但不必對應於虛擬機150的工作集大小。換句話說,Committed_AS值在對每一新分配的匿名記憶體分頁的第一次存取後遞增,但在使用者程序明確地釋放記憶體分頁時遞減。舉例來說,如果當程式開始但不觸碰記憶體分頁直到程式退出時,程式分配並存取記憶體分頁僅發生一次,那麼Linux內核可能不從Committed_AS排除此冷頁,即使所述冷頁清楚地在工作集之外也是如此。也就是說,如果因記憶體回收而收回屬於工作集的高速緩衝記憶體分頁,那麼再次快取錯誤事件可發生並被作為應再添加一個記憶體分頁到工作集以容納高速緩衝記憶體分頁的信號。
因此,在實施例中,可維護虛擬機150中的再次快取錯誤事件的計數器且可根據再次快取錯誤計數而調整氣球目標,以使得由收回的高速緩衝記憶體分頁產生的效能消耗可減到最小。此外,可積極地探測虛擬機150的真工作集。如果虛擬機150不執行顯著的磁片I/O,那麼虛擬機150的真工作集比Committed_AS值低,顯著的磁片I/O需要工作集中所包含的額外緩衝器高速緩衝記憶體分頁。也就是說,虛擬機150的實體記憶體分配等於其工作集大小,與記憶體換進和再次快取錯誤相關聯的磁片存取開銷應接近零。因此,為了探測虛擬機150的真工作集,氣球驅動程式的氣球目標可逐步提高,且直到記憶體換進和再次快取錯誤計數開始變成非零才停止。
更具體地說,在本揭露其中一實施例中,虛擬機150的 所估計的工作集大小EWSS可定義為方程式(2)EWSS=所分配的記憶體大小+消費計數 方程式(2)
其中所分配的記憶體大小為分配到虛擬機150的記憶體分頁的數目,且開銷計數為出錯到虛擬機150中的分頁的數目,而且也定義於方程式(1)中。然而,在另一實施例中,虛擬機150的所估計的工作集大小EWSS可為如方程式(3)中所寫的所分配的記憶體大小與開銷計數的線性組合。
EWSS=A1 ×(所分配的記憶體大小)+A2 ×(開銷計數)+C方程式(3)
其中A1 ≧1,A2 ≦1,且C為常數。
當虛擬機150的所分配的記憶體量高於真工作集時,定制的氣球驅動程式用於每秒收集記憶體換進和再次快取錯誤計數且氣球目標經調整以探測虛擬機150的真工作集。氣球目標的上限由處理器110在虛擬機150啟動時設定為虛擬機150的所配置的記憶體大小,且下限則根據由客戶作業系統155約束的記憶體的量而設定。換句話說,基於自我氣球演算法而計算初始下限值,其中添加了針對系統緊急情況和壓縮分頁而保留的分頁要求。在不調整的情況下,當Committed_AS值低時,客戶作業系統155可容易遇到記憶體不足的例外情況。為了更好地近似虛擬機150的真工作集大小,處理器110使用三個運行時間狀態且自適應地調整氣球目標,如圖2所示。
圖2為說明根據本揭露的實施例的用於對虛擬機的記憶 體管理的方法的狀態圖。
參看圖2與圖1A和圖1B中的組件,從第一調整階段S1開始,處理器110將客戶作業系統155的氣球驅動程式的氣球目標初始化為第一閥值(例如,Committed_AS值),此時分頁高速緩衝記憶體上不存在明確資訊。可從導出的內核變數vm_committed_AS檢索Committed_AS值,其中導出的內核變數可由Linux中的任何內核組件或可載入內核模組存取。接著,處理器110以逐步方式將氣球目標降低第一遞減值,其中氣球目標不小於第一閥值。在本實施例中,第一遞減值可為當前Committed_AS值的百分比(例如,5%)。每當發生記憶體換進或再次快取錯誤事件時,處理器110可產生記憶體換進/再次快取錯誤檢測結果,其中記憶體換進/再次快取錯誤檢測結果可指示記憶體換進或再次快取錯誤事件的發生。基於記憶體換進/再次快取錯誤檢測結果,處理器110可停止降低氣球目標且經由路徑P12將氣球驅動程式從第一調整階段S1切換到冷卻階段S2。接著,處理器110在冷卻階段S2中將氣球目標升高分頁計數等於記憶體換進和再次快取錯誤計數的總數目的記憶體的量,這是因為記憶體換進或再次快取錯誤事件中的每一者提出對額外自由記憶體分頁的需要。
請注意,可從內核元件(例如,內核元件vmstat)的變數(例如,變數pswpin)檢索記憶體換進計數,所述內核元件收集關於概要資訊的統計,例如Linux中的作業系統記憶體、程序、 中斷、分頁和區塊I/O。可通過使用Linux中的工具程式(例如,blktrace)攔截(例如)。也可攔截記憶體置換空間的I/O操作來獲得磁碟上再次快取錯誤的資訊,Linux內核提供應用程式編程介面(API)來將掛鈎點(hook point)添加到硬碟I/O且執行統計。一旦跟蹤硬碟I/O,位元映射圖的每一位元便初始化為“0”且在對應磁片塊被存取時設定為“1”點陣圖。當點陣圖在改變為一之前已被設定(即,對應塊之前已被存取但需要另一存取)時對再次快取錯誤事件進行計數。
此記憶體換進和再次快取錯誤事件指示氣球目標正接近真工作集或叢發式的來自應用程式的記憶體需求。因此,進一步減少虛擬機150的記憶體分配是不明智的。即使當發生記憶體換進或再次快取錯誤事件時,仍允許對虛擬機150的記憶體分配超過Committed_AS值。此種靈活性的配置對於運行輸出入密集工作的虛擬機150尤其重要,其中Committed_AS值不反映因分頁快取記憶體而引起的額外記憶體需求。
而且在冷卻階段S2中,處理器110將冷卻計數器初始化為第二閥值(例如,任意地設定為8)且從那時起在每一時間週期將所述計數器遞減,其中所述時間週期可為一秒。當冷卻計數器達到零時,處理器110可認為工作負荷爆發已過去且接著經由路徑P23將氣球驅動程式切換到第二調整階段S3。
氣球目標在第二調整階段S3中應用與在第一調整階段S1中相同的邏輯,不同之處在於處理器110以逐步方式將氣球目 標降低第二遞減值,其中第二遞減值小於第一遞減值。在本實施例中,第二遞減值可為當前Committed_AS值的百分比(例如,1%)。更具體地說,處理器110在第二調整階段S3中以逐步方式將氣球目標降低當前Committed_AS的1%。每當發生記憶體換進或再次快取錯誤事件時,處理器110通過經由路徑P32將氣球驅動程式從第二調整階段S3切換到冷卻階段S2來停止降低氣球目標。處理器110還將氣球目標升高分頁計數等於記憶體換進和再次快取錯誤計數的總數目的記憶體的量,以及將冷卻計數器重新初始化為第二閥值。
另一方面,當氣球驅動程式處於冷卻階段S2或第二調整階段S3時,當虛擬機150的Committed_AS值改變時,處理器110認為虛擬機150的工作集大小將顯著改變且通過進入第一調整階段S1來重置氣球目標。也就是說,如果在處理器110將氣球驅動程式從第二調整階段S3經由路徑P31或從冷卻階段S2經由路徑P21切換到第一調整階段S1之前,氣球目標因記憶體換進或再次快取錯誤爆發而超過Committed_AS值,那麼處理器110可根據方程式(2)將氣球目標重新初始化為Committed_AS值加超過量作為新估計的工作集大小。也就是說,第一閥值在此時改變。在另一實施例中,處理器110還可根據方程式(3)將氣球目標重新初始化為Committed_AS值和開銷計數的線性組合。還應注意,當冷卻計數器尚未達到零時,處理器110將氣球驅動程式從冷卻階段S2切換到第一調整階段S1時,氣球驅動程式仍進入第一調整階 段S1,但處理器110在恢復工作集探測之前繼續向下計數,直到冷卻計數器達到零為止。
在一實施例中,在處理器110將氣球驅動程式從第二調整階段S2切換到第一調整階段S1之前,可在一個以上情形中檢測到記憶體換進/再次快取錯誤事件。也就是說,氣球驅動程式在進入第一調整階段S1之前可在冷卻階段S2與第二調整階段S2之間產生迴圈。在此提供實際的範例,圖3為說明根據本揭露的實施例的用於對虛擬機的記憶體管理的方法的另一狀態圖。應注意,以下的說明僅解釋與圖2所示的實施例間的差異。本揭露不限於此。
參看圖3與圖1A和圖1B中的元件,在處理器110將氣球驅動程式從第二調整階段S2切換到第一調整階段S1之前,其可根據記憶體換進/再次快取錯誤檢測結果將氣球驅動程式交替地切換到至少一個另一冷卻階段S4和至少一個另一第二調整階段(稱作至少一個第三調整階段S5)。在本示範性實施例中,出於清晰和易於解釋的目的,僅說明一個另一冷卻階段S4和一個第三調整階段S5。本揭露不限於此。
更具體地說,當氣球驅動程式處於第二調整階段S3時,每當發生記憶體換進或再次快取錯誤事件時,處理器110通過經由路徑P34將氣球驅動程式從第二調整階段S3切換到另一冷卻階段S4而停止降低氣球目標。處理器110還將氣球目標升高分頁計數等於記憶體換進和再次快取錯誤計數的總數目的記憶體的量, 且進一步將冷卻計數器初始化為第三閥值(例如,任意地設定為8)。在另一冷卻階段S4中,處理器110在每一時間週期遞減另一冷卻計數器,其中所述時間週期可為一秒。當另一冷卻計數器達到零時,處理器110可認為工作負荷爆發已過去且接著經由路徑P45將氣球驅動程式切換到第三調整階段S5。
氣球目標在第三調整階段S5中應用與第二調整階段S2中相同的邏輯,不同之處在於處理器110以逐步方式將氣球目標降低第三遞減值。在本實施例中,將第三遞減值設定為等於第二遞減值,即Committed_AS值的1%。
在一實施例中,存在彼此交替執行的多個另一冷卻階段S4和第三調整階段S5。每當發生記憶體換進或再次快取錯誤事件時,處理器110可接著通過以類似方式將氣球驅動程式從第三調整階段S5切換到下一另一冷卻階段來停止降低氣球目標。當然,處理器110可根據另一冷卻計數器而進一步將氣球驅動程式從下一另一冷卻階段切換到下一另一第三調整階段。還應注意,在另一冷卻階段中的各第三遞減值可不同。本揭露不限於此。
另外,類似於圖2中的第二調整階段S2,當氣球驅動程式處於另一冷卻階段S4或另一第三調整階段S5時,當虛擬機150的Committed_AS值改變時,處理器110認為虛擬機150的工作集大小將顯著改變且通過分別經由路徑S41和路徑S51進入第一調整階段S1來重置氣球目標。細節可參考圖3的實施例中的相關描述。
透過上述記憶體管理方法(即,TWS氣球演算法),處理器110可準確地探測虛擬機150的真工作集,且將不必要的冷頁從系統記憶體120回收到超管理器160的記憶體池以節省較多資源,同時保持應用程式效能而無顯著產生效能下降的情況。
在實施例中,可通過在例如個人電腦和工作站等電腦上執行已準備程式來實施上述記憶體管理方法。所述程式存儲在電腦可讀記錄媒體(例如,硬碟、軟碟、CD-ROM、MO和DVD)上,從所述電腦可讀媒體讀出,且由電腦執行。所述程式可遍及網路(例如,網際網路)散佈。
總地來說,通過利用客戶OS的現有分頁回收機制,本揭露中的記憶體管理方法經設計以探測虛擬機的真工作集且閒置記憶體分頁被收回以作為壓縮目標。通過使用定制氣球驅動程式,基於虛擬機的當前記憶體使用,在考慮記憶體換進/再次快取錯誤事件的情況下,可準確地且動態地估計虛擬機的真工作集,且真工作集進一步提供記憶體資源管理的優點。
所屬領域的技術人員將明白,在不脫離本揭露的範圍或精神的情況下,可對所揭露實施例的結構進行各種修改和變化。鑒於以上內容,希望本揭露涵蓋本揭露的修改和變化,只要所述修改和變化落入所附權利要求書和其等效物的範圍內。
P12、P21、P23、P31、P32‧‧‧路徑
S1‧‧‧第一調整階段
S2‧‧‧冷卻階段
S3‧‧‧第二調整階段

Claims (22)

  1. 一種虛擬機的記憶體管理方法,包括:透過一處理器設定一第一閥值;透過所述處理器在一第一調整階段中根據一記憶體換進/再次快取錯誤檢測結果而將一氣球驅動程式的一氣球目標設定為一分配虛擬記憶體大小且將所述氣球目標逐步遞減一第一遞減值;通過所述處理器檢測至少一記憶體換進或再次快取錯誤事件來產生所述記憶體換進/再次快取錯誤檢測結果;透過所述處理器在一冷卻階段中根據所述記憶體換進/再次快取錯誤檢測結果而停止遞減所述氣球目標;以及透過所述處理器在所述冷卻階段之後的一第二調整階段中將所述氣球目標逐步遞減第二遞減值,其中所述第二遞減值小於所述第一遞減值,且所述氣球目標不小於所述第一閥值。
  2. 如申請專利範圍第1項所述的記憶體管理方法,更包括:當所述第一閥值改變時,透過所述處理器將所述氣球驅動程式從所述冷卻階段切換到所述第一調整階段,或將所述氣球驅動程式從所述第二調整階段切換到所述第一調整階段。
  3. 如申請專利範圍第1項所述的記憶體管理方法,其中所述透過所述處理器將所述氣球目標設定為所述分配虛擬記憶體大小且將所述氣球目標逐步遞減所述第一遞減值的步驟包括:透過所述處理器將所述氣球目標設定為分配到所述虛擬機的 記憶體分頁的數目;以及通過所述處理器將所述氣球目標逐步遞減所述第一閥值的第一百分比。
  4. 如申請專利範圍第1項所述的記憶體管理方法,其中在產生所述記憶體換進/再次快取錯誤檢測結果之後,所述方法更包括:透過所述處理器將所述氣球目標遞增開銷計數,其中所述開銷計數是根據所述至少一記憶體換進以及再次快取錯誤事件的總數目而設定。
  5. 如申請專利範圍第1項所述的記憶體管理方法,其中所述透過所述處理器在所述冷卻階段中根據所述記憶體換進/再次快取錯誤檢測結果而停止遞減所述氣球目標的步驟更包括:透過所述處理器在所述冷卻階段中將計數器設定為一第二閥值且逐步遞減所述計數器。
  6. 如申請專利範圍第5項所述的記憶體管理方法,更包括:當所述計數器達到零時,透過所述處理器將所述氣球驅動程式從所述冷卻階段切換到所述第二調整階段。
  7. 如申請專利範圍第4項所述的記憶體管理方法,其中所述當所述第一閥值改變時,透過所述處理器將所述氣球驅動程式從所述第二調整階段切換到所述第一調整階段的步驟更包括:將所述第一閥值更新為所述分配虛擬記憶體大小和所述開銷計數的線性組合;以及 將所述氣球目標重置為所述更新的第一閥值。
  8. 如申請專利範圍第1項所述的記憶體管理方法,其中所述透過所述處理器在所述第二調整階段中將所述氣球目標逐步遞減第二遞減值的步驟更包括:透過所述處理器將所述氣球目標逐步遞減所述第一閥值的第二百分比。
  9. 如申請專利範圍第1項所述的記憶體管理方法,更包括:透過所述處理器根據所述記憶體換進/再次快取錯誤檢測結果將所述氣球驅動程式從所述第二調整階段交替地切換到至少一個另一冷卻階段以及至少一個第三調整階段;以及當所述第一閥值改變時,透過所述處理器將所述氣球驅動程式從所述至少一個另一冷卻階段以及所述至少一個第三調整階段中的每一者切換到所述第一調整階段。
  10. 如申請專利範圍第9項所述的記憶體管理方法,更包括:透過所述處理器在所述至少一個另一冷卻階段中的每一者中將另一計數器設定為第三閥值且逐步遞減所述另一計數器;透過所述處理器在所述至少一個第三調整階段中的每一者中將所述氣球目標逐步遞減第三遞減值,其中當所述另一計數器達到零時,透過所述處理器將所述氣球驅動程式從所述至少一個冷卻階段中的每一者切換到所述至少一個第三調整階段中的下一第三調整階段,且其中當產生所述記憶體換進/再次快取錯誤檢測結果時,透過 所述處理器將所述氣球驅動程式從所述第三調整階段中的每一者切換到所述至少一個冷卻階段中的下一冷卻階段。
  11. 如申請專利範圍第1項所述的記憶體管理方法,其中當所述虛擬機啟動時,透過所述處理器將所述氣球目標的上限設定為所述分配虛擬記憶體大小,且透過所述處理器將所述氣球目標的下限設定為由所述虛擬機約束的記憶體的量。
  12. 一種電腦系統,包括:一記憶體;一處理器,耦接到所述記憶體,其中所述處理器針對一虛擬機的記憶體管理執行操作,所述操作包括:設定一第一閥值;在一第一調整階段中根據一記憶體換進/再次快取錯誤檢測結果而將一氣球驅動程式的一氣球目標設定為一分配虛擬記憶體大小且將所述氣球目標逐步遞減一第一遞減值;通過檢測至少一記憶體換進或再次快取錯誤事件來產生所述記憶體換進/再次快取錯誤檢測結果;在一冷卻階段中根據所述記憶體換進/再次快取錯誤檢測結果而停止遞減所述氣球目標;以及在所述冷卻階段之後的一第二調整階段中將所述氣球目標逐步遞減第二遞減值,其中所述第二遞減值小於所述第一遞減值,且所述氣球目標不小於所述第一閥值。
  13. 如申請專利範圍第12項所述的電腦系統,其中當所述第一閥值改變時,所述處理器將所述氣球驅動程式從所述冷卻階段切換到所述第一調整階段或將所述氣球驅動程式從所述第二調整階段切換到所述第一調整階段。
  14. 如申請專利範圍第12項所述的電腦系統,其中所述處理器將所述氣球目標設定為分配到所述虛擬機的記憶體分頁的數目且將所述氣球目標逐步遞減所述第一閥值的第一百分比。
  15. 如申請專利範圍第12項所述的電腦系統,其中所述處理器將所述氣球目標遞增一開銷計數,其中所述開銷計數是根據所述至少一個記憶體換進以及再次快取錯誤事件的總數目而設定。
  16. 如申請專利範圍第12項所述的電腦系統,其中所述處理器在所述冷卻階段中將計數器設定為第二閥值且逐步遞減所述計數器。
  17. 如申請專利範圍第16項所述的電腦系統,其中當所述計數器達到零時,所述處理器將所述氣球驅動程式從所述冷卻階段切換到所述第二調整階段。
  18. 如申請專利範圍第15項所述的電腦系統,其中所述處理器將所述第一閥值更新為所述分配虛擬記憶體大小和所述開銷計數的線性組合,以及將所述氣球目標重置為所述更新的第一閥值。
  19. 如申請專利範圍第12項所述的電腦系統,其中所述處理器將所述氣球目標逐步遞減所述第一閥值的第二百分比。
  20. 如申請專利範圍第12項所述的電腦系統,其中所述處理 器根據所述記憶體換進/再次快取錯誤檢測結果而進一步將所述氣球驅動程式從所述第二調整階段交替地切換到至少一個另一冷卻階段以及至少一個第三調整階段,且當所述第一閥值改變時,將所述氣球驅動程式從所述至少一個另一冷卻階段以及所述至少一個第三調整階段中的每一者切換到所述第一調整階段。
  21. 如申請專利範圍第20項所述的電腦系統,其中所述處理器在所述至少一個另一冷卻階段中的每一者中進一步將另一計數器設定為第三閥值且逐步遞減所述另一計數器,且在所述至少一個第三調整階段中的每一者中將所述氣球目標逐步遞減第三遞減值,其中當所述另一計數器達到0時,所述處理器將所述氣球驅動程式從所述至少一個冷卻階段中的每一者切換到所述至少一個第三調整階段中的下一第三調整階段,且其中當產生所述記憶體換進/再次快取錯誤檢測結果時,所述處理器將所述氣球驅動程式從所述第三調整階段中的每一者切換到所述至少一個冷卻階段中的下一冷卻階段。
  22. 如申請專利範圍第12項所述的電腦系統,其中當所述虛擬機啟動時,所述處理器將所述氣球目標的上限設定為所述分配虛擬記憶體大小,且其中所述處理器根據由所述虛擬機約束的記憶體的量設定所述氣球目標的下限。
TW102131817A 2012-10-11 2013-09-04 虛擬機的記憶體管理方法和電腦系統 TWI507870B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261712279P 2012-10-11 2012-10-11
US13/951,474 US9069669B2 (en) 2012-10-11 2013-07-26 Method and computer system for memory management on virtual machine

Publications (2)

Publication Number Publication Date
TW201415227A TW201415227A (zh) 2014-04-16
TWI507870B true TWI507870B (zh) 2015-11-11

Family

ID=50476501

Family Applications (3)

Application Number Title Priority Date Filing Date
TW102131817A TWI507870B (zh) 2012-10-11 2013-09-04 虛擬機的記憶體管理方法和電腦系統
TW102131819A TWI505191B (zh) 2012-10-11 2013-09-04 虛擬機系統的記憶體管理方法和電腦系統
TW102132446A TWI522920B (zh) 2012-10-11 2013-09-09 虛擬機系統的記憶體管理的方法以及電腦系統

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW102131819A TWI505191B (zh) 2012-10-11 2013-09-04 虛擬機系統的記憶體管理方法和電腦系統
TW102132446A TWI522920B (zh) 2012-10-11 2013-09-09 虛擬機系統的記憶體管理的方法以及電腦系統

Country Status (2)

Country Link
US (3) US9256532B2 (zh)
TW (3) TWI507870B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032398B2 (en) * 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
US9104481B2 (en) * 2013-02-13 2015-08-11 International Business Machines Corporation Resource allocation based on revalidation and invalidation rates
US10078430B2 (en) * 2013-03-14 2018-09-18 Vmware, Inc. Providing batch operations with an auxiliary user interface
US9478274B1 (en) 2014-05-28 2016-10-25 Emc Corporation Methods and apparatus for multiple memory maps and multiple page caches in tiered memory
US9792222B2 (en) 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
US9727479B1 (en) * 2014-09-30 2017-08-08 EMC IP Holding Company LLC Compressing portions of a buffer cache using an LRU queue
CN105518741B (zh) 2014-12-23 2019-04-09 英特尔公司 用于管理虚拟图形处理器单元的装置和方法
US9910768B1 (en) * 2016-05-23 2018-03-06 Parallels IP Holdings GmbH Method for memory management for virtual machines
TWI619013B (zh) * 2016-08-24 2018-03-21 康齊科技股份有限公司 記憶體管理系統及其方法
US10169088B2 (en) 2016-11-29 2019-01-01 Red Hat Israel, Ltd. Lockless free memory ballooning for virtual machines
US10346313B1 (en) * 2017-01-21 2019-07-09 Virtuozzo International Gmbh Memory reclaim management for virtual machines
JP7007557B2 (ja) * 2017-08-24 2022-01-24 富士通株式会社 情報処理装置、プロセス管理方法およびプロセス管理プログラム
KR102558827B1 (ko) 2018-01-02 2023-07-24 삼성전자주식회사 반도체 메모리 장치, 및 이 장치를 구비하는 메모리 시스템 및 전자 장치
US10977172B2 (en) * 2018-06-03 2021-04-13 Apple Inc. Memory page reclamation in a user idle mode
CN110175075A (zh) * 2019-05-21 2019-08-27 深圳市君和睿通科技股份有限公司 安卓系统内存优化方法及装置
US11099876B2 (en) * 2019-06-19 2021-08-24 International Business Machines Corporation Self-determination for cancellation of in-progress memory removal from a virtual machine
US11436141B2 (en) * 2019-12-13 2022-09-06 Red Hat, Inc. Free memory page hinting by virtual machines
US11593170B2 (en) * 2020-03-25 2023-02-28 Red Hat, Inc. Flexible reverse ballooning for nested virtual machines
CN111666226B (zh) * 2020-06-16 2022-09-13 北京紫光展锐通信技术有限公司 操作系统内存回收的页颠簸保护方法及用户设备
CN112463778B (zh) * 2020-11-24 2021-07-23 山西广电新媒体有限公司 基于大数据和应用程序的信息处理方法及大数据服务器
CN114911725A (zh) * 2021-02-10 2022-08-16 华为技术有限公司 通信方法、装置及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200745951A (en) * 2005-10-21 2007-12-16 Vir2Us Inc Computer security method having operating system virtualization allowing multiple operating system instances to securely share single machine resources
CN101986285A (zh) * 2010-11-03 2011-03-16 华为技术有限公司 虚拟机存储空间管理方法、系统及物理主机
US20110320682A1 (en) * 2006-09-21 2011-12-29 Vmware, Inc. Cooperative memory resource management via application-level balloon
CN102460400A (zh) * 2009-06-29 2012-05-16 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
US20120124305A1 (en) * 2010-11-16 2012-05-17 Vmware, Inc. Method and system for integrating database memory management in virtual machines

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4422145A (en) 1981-10-26 1983-12-20 International Business Machines Corporation Thrashing reduction in demand accessing of a data base through an LRU paging buffer pool
US6131150A (en) 1993-10-05 2000-10-10 Digital Equipment Corporation Scaled memory allocation system
US6804754B1 (en) 1997-05-21 2004-10-12 International Business Machines Corporation Space management in compressed main memory
US6658648B1 (en) 1997-09-16 2003-12-02 Microsoft Corporation Method and system for controlling the improving of a program layout
US6681305B1 (en) 2000-05-30 2004-01-20 International Business Machines Corporation Method for operating system support for memory compression
US6854115B1 (en) 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6877081B2 (en) 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
US6516397B2 (en) 2001-04-09 2003-02-04 Hewlett-Packard Company Virtual memory system utilizing data compression implemented through a device
US6658549B2 (en) 2001-05-22 2003-12-02 Hewlett-Packard Development Company, Lp. Method and system allowing a single entity to manage memory comprising compressed and uncompressed data
US7003646B2 (en) 2002-03-27 2006-02-21 Hewlett-Packard Development Company, L.P. Efficiency in a memory management system
CA2382718C (en) 2002-04-12 2007-02-13 Ibm Canada Limited-Ibm Canada Limitee Memory balancing and optimization services
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7127560B2 (en) 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
US7380039B2 (en) 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7516291B2 (en) 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
US7500077B2 (en) 2005-12-09 2009-03-03 International Business Machines Corporation Use of region-oriented memory profiling to detect heap fragmentation and sparse memory utilization
US8141058B2 (en) 2006-06-05 2012-03-20 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8099487B1 (en) 2006-07-06 2012-01-17 Netapp, Inc. Systems and methods for determining placement of virtual machines
WO2008055269A2 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Asymmetric memory migration in hybrid main memory
US8015383B2 (en) * 2007-06-27 2011-09-06 International Business Machines Corporation System, method and program to manage virtual memory allocated by a virtual machine control program
TWI342521B (en) 2007-07-13 2011-05-21 King Yuan Electronics Co Ltd System and method for managing virtual machines
TWI356301B (en) 2007-12-27 2012-01-11 Ind Tech Res Inst Memory management system and method for open platf
US8161260B2 (en) 2009-02-09 2012-04-17 Oracle International Corporation Optimal memory allocation for guested virtual machine(s)
EP2483778B1 (en) 2009-09-30 2019-09-04 Citrix Systems, Inc. Dynamic reallocation of physical memory responsive to virtual machine events
US8484405B2 (en) 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
US8671249B2 (en) * 2011-07-22 2014-03-11 Fusion-Io, Inc. Apparatus, system, and method for managing storage capacity recovery
US20130091321A1 (en) * 2011-10-11 2013-04-11 Cisco Technology, Inc. Method and apparatus for utilizing nand flash in a memory system hierarchy
CN103136030A (zh) 2011-11-24 2013-06-05 鸿富锦精密工业(深圳)有限公司 虚拟机管理系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200745951A (en) * 2005-10-21 2007-12-16 Vir2Us Inc Computer security method having operating system virtualization allowing multiple operating system instances to securely share single machine resources
US20110320682A1 (en) * 2006-09-21 2011-12-29 Vmware, Inc. Cooperative memory resource management via application-level balloon
CN102460400A (zh) * 2009-06-29 2012-05-16 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
CN101986285A (zh) * 2010-11-03 2011-03-16 华为技术有限公司 虚拟机存储空间管理方法、系统及物理主机
US20120124305A1 (en) * 2010-11-16 2012-05-17 Vmware, Inc. Method and system for integrating database memory management in virtual machines

Also Published As

Publication number Publication date
TWI505191B (zh) 2015-10-21
TW201415227A (zh) 2014-04-16
US9256532B2 (en) 2016-02-09
US20140108764A1 (en) 2014-04-17
US9069669B2 (en) 2015-06-30
US20140108765A1 (en) 2014-04-17
TW201415369A (zh) 2014-04-16
US20140108700A1 (en) 2014-04-17
TWI522920B (zh) 2016-02-21
US9128843B2 (en) 2015-09-08
TW201415370A (zh) 2014-04-16

Similar Documents

Publication Publication Date Title
TWI507870B (zh) 虛擬機的記憶體管理方法和電腦系統
US9940228B2 (en) Proactive memory reclamation for java virtual machines
EP2588957B1 (en) Cooperative memory resource management via application-level balloon
US9183015B2 (en) Hibernate mechanism for virtualized java virtual machines
US8484405B2 (en) Memory compression policies
US7631147B2 (en) Efficient flushing of translation lookaside buffers in a multiprocessor environment
EP2449469B1 (en) Hypervisor-based management of local and remote virtual memory pages
US9547600B2 (en) Method and system for restoring consumed memory after memory consolidation
US20140012940A1 (en) Systems, Methods and Apparatus for a Virtual Machine Cache
US20130290641A1 (en) Elastic caching for java virtual machines
EP1966703B1 (en) Method and apparatus for hardware-based dynamic escape detection in managed run-time environments
US7823151B2 (en) Method of ensuring the integrity of TLB entries after changing the translation mode of a virtualized operating system without requiring a flush of the TLB
US10216536B2 (en) Swap file defragmentation in a hypervisor
KR20120058352A (ko) 하이브리드 메모리 시스템, 및 그 관리 방법
WO2013023090A2 (en) Systems and methods for a file-level cache
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US11762573B2 (en) Preserving large pages of memory across live migrations of workloads
CN103729249B (zh) 虚拟机的存储器管理的方法和计算机系统
Hwang et al. Hyperdealer: Reference-pattern-aware instant memory balancing for consolidated virtual machines
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines
EP4407472A1 (en) System and method for managing a memory hierarchy
VMware Understanding Memory Resource Management in VMware ESX 4.1