KR20090122936A - 가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램 - Google Patents

가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램 Download PDF

Info

Publication number
KR20090122936A
KR20090122936A KR1020097018203A KR20097018203A KR20090122936A KR 20090122936 A KR20090122936 A KR 20090122936A KR 1020097018203 A KR1020097018203 A KR 1020097018203A KR 20097018203 A KR20097018203 A KR 20097018203A KR 20090122936 A KR20090122936 A KR 20090122936A
Authority
KR
South Korea
Prior art keywords
memory
virtual
swap
virtual machines
virtual machine
Prior art date
Application number
KR1020097018203A
Other languages
English (en)
Other versions
KR101137172B1 (ko
Inventor
스티븐 슐츠
제니아 티카스쵸
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
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 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20090122936A publication Critical patent/KR20090122936A/ko
Application granted granted Critical
Publication of KR101137172B1 publication Critical patent/KR101137172B1/ko

Links

Images

Classifications

    • 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
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

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)

Abstract

본 발명은 가상 머신 제어 프로그램에 의해 복수의 가상 머신들에 할당되는 가상 메모리의 관리이다. 가상 머신들 각각은 작업 메모리, 캐시 메모리, 및 스왑 메모리의 할당을 갖는다. 가상 머신 제어 프로그램은 가상 머신 제어 프로그램이 추가의 가상 메모리 할당을 필요로 하는지를 결정하고, 그 결과 그들 각각의 작업 메모리 및/또는 캐시 메모리 중의 일부를 스왑 메모리로 변환하도록 가상 머신들에 대해 각각의 요청들을 한다. 또 다른 시점에서, 가상 머신 제어 프로그램은, 가상 머신 제어 프로그램이 가상 메모리 할당을 덜 필요로 하는지를 결정하고, 그 결과 그들 각각의 스왑 메모리 중의 일부를 작업 메모리 및/또는 캐시 메모리로 변환하도록 가상 머신들에게 각각의 요청들을 한다.

Description

가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램{SYSTEM, METHOD AND PROGRAM TO MANAGE MEMORY OF A VIRTUAL MACHINE}
본 발명은 일반적으로 컴퓨터 시스템들과 관련되고, 더 상세하게는 가상 머신(virtual machine)의 메모리를 관리하는 것과 관련된다.
가상 머신들로 구성된 컴퓨터들은 오늘날 잘 알려져 있다. 이러한 구성에서, 하이퍼바이저(hypervisor) 프로그램은 실재(real) 컴퓨터의 물리적 리소스들(CPU, 메모리, 스토리지 및 I/O 장치들을 포함하는)을 개별적인 가상 머신들로 논리적으로 분할한다. 예를 들어, 하이퍼바이저는, 실재 RAM에 매핑(mapping)되는 가상 프라이비트 메모리(virtual private memory)의 범위와 하나 또는 그 이상의 실재 프로세서들의 시 분할 부분(time share)을 각각의 가상 머신에 할당한다. 가상 머신이 자신의 가상 프라이비트 메모리를 어드레싱(addressing)할 때, 하이퍼바이저는 가상 프라이비트 메모리 어드레스를 실재 메모리의 실재 어드레스로 변환한다. 또한 하이퍼바이저는, 그의 제어 구조들을 포함하는 하이퍼바이저 프로그램과 하이퍼바이저 프로그램에 의해 사용된 데이터를 저장하기 위해, 자신에게 가상 프라이비트 메모리를 할당한다. 알려진 IBM z/VM 운영 체계에 있어서, 하이퍼바이저 프로그램은 제어 프로그램(Control Program)("CP")으로 일컬어지며, 각각의 가상 머신은 또한 "사용자 부분(user portion)" 또는 "게스트(guest)"로도 일컬어진다.
또한 논리적 분할 프로그램이 실재 컴퓨터의 물리적 리소스들(CPU, 메모리, 스토리지 및 I/O 장치들을 포함하는)을 논리적 파티션들("LPARs")로 논리적으로 분할하고, 그런 다음 하이퍼바이저 프로그램이 각각의 LPAR을 실행하며 각각의 LPAR의 리소스들을 가상 머신들로 분할하는 것은 알려져 있다. IBM zSeries 컴퓨터에서, IBM 프로세스 리소스/리소스 매니저("PR/SM") 프로그램은 실재 컴퓨터를 LPAR들(LPARs)로 분할 또는 구분한다. 전형적으로는, 관리자는 각각의 LPAR에 대한 CPU, 메모리 및 스토리지의 양을 논리적 분할 프로그램에 특정함으로써 각각의 LPAR을 정의하는 것을 지원한다. 논리적 분할 프로그램은 특정의 실재 컴퓨터 리소스들 또는 총 컴퓨터 리소스들의 논리적 분할 부분을 각각의 LPAR에 할당할 수 있다. 각각의 LPAR에서의 가상 머신들은 마치 그들이 어떤 논리적 분할없이 실재 컴퓨터로부터 직접 구성되는 것과 같은 방법으로 동작한다.
이미 알려진 IBM z/VM 버젼 5.1의 가상 머신 운영 체계는, LPAR들 또는 분할되지 않은 실재 컴퓨터로부터 가상 머신들을 구성하는 알려진 하이퍼바이저 프로그램을 포함한다. 현재의 z/VM 5.1 운영 체계의 세부사항들은, 노스캐롤라이나주 27626-0570, 랄리(Raleigh)시, IBM 퍼블리케이션 센터, PO Box 29570에서 IBM사로부터 이용가능한 "z/VM 버젼 5 릴리스 1 개정판"(문서 번호 GC24-6-95-01)과 함께 "z/VM 버젼 5 릴리스 1 일반 정보"(문서 번호 :GC24-6095-00)라는 IBM 간행물에 개시되어 있으며, 또는 IBM 홈페이지에서 "shop/publications/order"를 추가 입력하는 경우 웹 상에 개시되어 있다. 이러한 간행물들은 본 명세서의 일부분으로서 참 조로 포함된다.
게스트 운영 체계는 각각의 가상 머신(CPU, 메모리 등에 대해 가상 머신의 분할을 사용하는)에서 실행된다. 하나 또는 그 이상의 어플리케이션들 및 미들웨어(middleware) 프로그램들(파일 매니저와 같은)은 각각의 게스트 운영 체계 상에서 실행된다. 비록 각각의 어플리케이션, 미들웨어 프로그램 및 게스트 운영 체계는 가상 머신에서 실행되고 있지만, 그들은 마치 그들 자신의 전용, 실재 컴퓨터에서 실행되고 있는 것처럼 동작한다. 각각의 가상 머신에서의 게스트 운영 체계는 리눅스(리누스 토발즈(Linus Torvalds)의 상표) 운영 체계, IBM CMS 운영 체계 또는 다른 운영 체계일 수 있다. 각각의 가상 머신 상의 각각의 게스트 운영 체계 상에서 실행되는 어플리케이션 및 미들웨어는 IBM DB2 데이터 기반의 관리 어플리케이션, IBM 웹스피어 어플리케이션, 또는 다양한 다른 프로그램들일 수 있다.
각각의 가상 머신에 대한 게스트 운영 체계, 미들웨어, 어플리케이션(들) 및 데이터는 가상 머신에 할당된 가상 프라이비트 메모리의 작업 메모리(working memory) 부분에 저장된다. 각각의 가상 머신은 또한 가상 머신에 할당된 가상 프라이비트 메모리의 캐시 메모리 부분을 포함한다. 캐시 메모리는 (디스크) 스토리지로부터 억세스된 데이터 및 관련 메타데이터를 포함한다. 메타데이터는 데이터 파일에 대한 디렉토리 및 하위 디렉토리 경로, 현재 쓰여지고 있거나 읽혀지고 있는 파일 내의 기록들의 아이덴티티들(identities), 파일의 크기, 파일에서의 기록들의 크기, 파일에서의 데이터의 유형(ASCII, EBCDIC 또는 BINARY)을 포함한다. 이러한 파일은 디스크 또는 기타 장치 상에 저장된다. 대부분의 게스트 운영 체계들은, 캐 시 메모리가 꽉 찬 경우 어느 데이터의 페이지들이 캐시 메모리에 남아 있어야 하는지 그리고 작업 메모리가 꽉 찬 경우 어느 데이터의 페이지들이 남아 있어야 하는지를 결정하기 위한 몇몇 알고리즘을 포함한다. 예를 들어, 대부분의 게스트 운영 체계들은, 캐시 메모리 내에 가상 머신에 의해 요구되는 새로운 데이터를 위한 공간이 불충분할 경우, 최근에 가장 적게 사용된 데이터를 캐시 메모리로부터 외부 스토리지로 아웃페이지(outpage)하기 위해 최근에 가장 적게 사용된 알고리즘을 사용하며, 작업 메모리 내에 가상 머신에 의해 요구되는 새로운 데이터를 위한 공간이 불충분할 경우, 최근에 가장 적게 사용된 데이터를 작업 메모리로부터 외부 스토리지로 아웃페이지하기 위해 위와 유사한 알고리즘을 사용한다.
또한 가상 머신은 RAM으로부터 가상 머신에 할당된 가상 프라이비트 메모리의 스왑(swap) 메모리 부분을 포함할 수 있다. 가상 머신의 스왑 메모리는, 데이터를 디스크 스토리지로 페이지아웃(page out) 하는 대신에 캐시 메모리 및 작업 메모리로부터 페이지아웃된 데이터를 수신 및 저장하기 위한 메모리 위치로 사용된다. 전형적인 시나리오에서, 가상 머신에 의해 요구되는 데이터(정보 또는 프로그램들)를 저장하기에 캐시 메모리 또는 작업 메모리가 불충분할 경우, 가상 머신에서의 게스트 운영 체계는 가상 머신의 캐시 메모리 또는 작업 메모리에서 최근에 가장 적게 사용된 메모리 데이터(예를 들어, 4 KB(Kilobyte) 페이지)를 식별한다. 그런 다음, 게스트 운영 체계는 가상 머신에서의 디스크 스토리지 또는 스왑 메모리에 최근에 가장 적게 사용된 메모리 페이지들을 복사할 수 있다. 게스트 운영 체계는 가상 머신의 관리자 정의 구성에 기초하여 스왑 메모리 또는 (디스크) 스토리 지로 페이지아웃할 것인지의 여부를 결정한다. 관리자는 가상 머신을 구성하여, 꽉 찰 때까지 스왑 메모리로 페이지아웃하거나 어느 곳으로든 페이지아웃하고, 그런 다음 디스크로 페이지아웃할 수 있다. 페이지아웃은 캐시 메모리 및 작업 메모리를 자유롭게(free up) 하여, 게스트 운영 체계가 다른 더 많이 요구되는 데이터의 페이지들을 스왑 메모리 또는 스토리지로부터 캐시 메모리 또는 작업 메모리로 인페이지(inpage)할 수 있도록 한다.
게스트 운영 체계로서의 리눅스 운영 체계(및 다른 운영 체계들)는, 하이퍼바이저가 리눅스 운영 체계에 할당하는 가상 프라이비트 메모리를 가상화(virtualize)한다. 자신의 가상화 프로세스에 있어서, 리눅스 운영 체계는, 하이퍼바이저가 리눅스 운영 체계에 할당하는 가상 프라이비트 메모리를 과할당(over-commit)한다. 예를 들어, 하이퍼바이저가 리눅스(또는 다른) 게스트 운영 체계를 갖는 가상 머신에 3 GB의 가상 프라이비트 메모리를 할당한다고 가정하자. 그 결과, 리눅스 게스트 운영 체계 자신은 리눅스 운영 체계 상에서 실행중인 프로세스들에 대해 6 GB를 가상으로 할당할 수 있다. 프로세스들은 전형적으로 평균하여 그들에게 할당된 것보다 더 적은 메모리를 사용하므로, 이것은 현실적이다. 그럼에도 불구하고, 장차 필요할 것이라는 어떤 가능성이 있기 때문에 리눅스 운영 체계(및 마이크로소프트의 윈도우 운영 체계)는 자신의 작업 메모리 및 캐시 메모리 내에 스테일 데이터(stale data)를 계속 유지하려는 경향이 있고, 이는 아웃페이지 및 인페이지를 감소시킬 것이다. 이 때문에, 일반적으로 심지어 리눅스 운영 체계가 페이지아웃을 위해 스왑 메모리를 사용하도록 구성되는 경우에도, 리눅스 운영 체 계는 정상 동작 동안 스왑 메모리를 이용하지 않거나 스왑 메모리를 실질적으로 덜 이용한다.
하이퍼바이저는 각각의 가상 머신이 이전의 시간 간격 동안 얼마나 많은 메모리("작업 세트(working set)"로 일컬어짐)를 사용했는지를 추적한다. 하이퍼바이저는, 하이퍼바이저 자신 및 하이퍼바이저가 이후에 생성할 수 있는 다른 가상 머신들을 위해 얼마나 많은 메모리를 이용할 수 있는지를 결정하기 위해 모든 가상 머신들의 결합된 크기의 "작업 세트들"을 사용한다. 일반적으로 하이퍼바이저 및 모든 가상 머신들이 그들 각각의 메모리 할당들 모두를 사용하지 않기 때문에, 하이퍼바이저는 이용가능한 가상 프라이비트 메모리를 하이퍼바이저 자신 및 하이퍼바이저가 이후에 생성할 수 있는 다른 가상 머신들에게 과할당(over-commit)한다.
경우에 따라서는, 하이퍼바이저는 또 다른 가상 머신을 구성하기 위해, 또는 메모리가 부족한 현재의 중요한 가상 머신에 할당하기 위해 자신의 동작을 위한 추가의 메모리를 필요로 한다. 그러한 경우, 하이퍼바이저(IBM z/VM 5.1 운영 체계에서 알 수 있는 것과 같은)는, 가상 프라이비트 메모리의 현재 할당의 일부를 자발적으로 넘겨주도록(relinquish) 여분의(excess) 가상 프라이비트 메모리를 갖는 가상 머신들에게 요청할 수 있다. 전형적으로는, 그러한 요청에 응답하여, 가상 머신들은 그들의 총 가상 프라이비트 메모리 할당의 일부를 넘겨줄 것이고, 그러면 가상 프라이비트 메모리의 나머지 할당에 기초하여 작업 메모리 및 캐시 메모리의 각각의 양을 재균형 맞출 것이다. 몇몇의 게스트 운영 체계들은, 만약 이용가능하다면, 단지 그들의 캐시 메모리로부터 가상 프라이비트 메모리를 넘겨줄 것이다. 스 왑 메모리 할당은, 설령 존재하더라도, 영향을 받지 않는다. 그러나, 이는 그들의 작업 항목들을 효과적으로 수행하기 위해 가상 머신들의 일부 또는 모두가 불충분한 양의 가상 프라이비트 메모리를 갖는 상태로 남도록 할 수 있다.
본 발명의 일 목적은 메모리의 할당을 더 잘 관리하기 위한 것이다.
본 발명의 또 다른 목적은 가상 머신들에 대한 메모리의 할당을 더 잘 관리하기 위한 것이다.
본 발명은 가상 머신 제어 프로그램에 의해 복수의 가상 머신들에 할당된 가상 메모리를 관리하기 위한 시스템, 컴퓨터 프로그램 제품 및 방법에 있다. 가상 머신들 각각은 작업 메모리, 캐시 메모리 및 스왑 메모리로 분할된 가상 프라이비트 메모리의 할당을 갖는다. 가상 머신 제어 프로그램은 그것이 추가의 가상 메모리 할당을 필요로 하는지를 결정하고, 그 결과, 가상 머신 제어 프로그램은 그들 각각의 작업 메모리 및/또는 캐시 메모리의 일부를 스왑 메모리로 변환(convert)하도록 가상 머신들에게 요청한다.
본 발명의 특징들에 따르면, 그러한 요청들 각각은 스왑 메모리로 변환할 작업 메모리 및/또는 캐시 메모리의 양을 특정(specify)한다. 복수의 가상 머신들은, 그들 각각의 가상 머신에 할당된 작업 메모리 및/또는 캐시 메모리를 각각의 가상 머신에 할당된 스왑 메모리보다 더 충분하게(fully) 이용하도록 프로그래밍되는 각각의 복수의 게스트 운영 체계들을 포함한다.
또한 본 발명은 가상 머신 제어 프로그램에 의해 복수의 가상 머신들에 할당된 가상 메모리를 관리하기 위한 시스템, 컴퓨터 프로그램 제품 및 방법에 있다. 가상 머신들 각각은 작업 메모리, 캐시 메모리 및 스왑 메모리로 분할된 가상 프라이비트 메모리의 할당을 갖는다. 가상 머신 제어 프로그램은 그것이 가상 머신 제어 프로그램에 현재 할당된 것보다 더 적은 가상 메모리 할당을 필요로 하는지를 결정하고, 그 결과, 가상 머신 제어 프로그램은, 그들 각각의 스왑 메모리의 일부를 작업 메모리 및/또는 캐시 메모리로 변환하도록 가상 머신들에게 요청한다.
본 발명의 특징들에 따르면, 그러한 요청들 각각은 작업 메모리 및/또는 캐시 메모리로 변환할 스왑 메모리의 양을 특정한다. 복수의 가상 머신들은, 그들 각각의 가상 머신에 할당된 작업 메모리 및/또는 캐시 메모리를 각각의 가상 머신에 할당된 스왑 메모리보다 더 충분하게 이용하도록 프로그래밍되는 각각의 복수의 게스트 운영 체계들을 포함한다.
도 1은 본 발명에 따른 게스트 운영 체계 및 하이퍼바이저 프로그램을 포함하는 실재 컴퓨터의 블록도이다.
도 2는 도 1의 하이퍼바이저 프로그램의 기능 및 동작의 흐름도이다.
도 3은 도 1의 게스트 운영 체계의 기능 및 동작의 흐름도이다.
이제 도면들을 참조하여 본 발명을 상세하게 설명하고자 한다. 도 1은 본 발명의 일 실시예에 따라 참조부호 10으로 지시된 컴퓨터 시스템을 보여준다. 컴퓨터 시스템(10)은 실재 CPU(23), 실재 RAM(24), 실재 I/O 장치(25), 외부 스토리 지(26), 및 외부 운영자 콘솔(27)을 갖는 실재/물리적 컴퓨터(20)를 포함한다. 본 발명의 일 실시예에서, 컴퓨터(20)는 논리적 파티션들("LPARs")로 분할되지 않는다. 그러나, 본 발명의 다른 실시예에서는, 알려진 논리적 분할 프로그램(미도시)이 컴퓨터(20)를 LPAR들로 분할하고, 이러한 LPAR 중의 하나가 도 1에서 보여진다. LPAR은 컴퓨터(20)의 실재 컴퓨터 리소스들의 실재 또는 논리적 분할이다. 예를 들어, 만약 컴퓨터(20)가 8 개의 프로세서들을 포함한다면, 논리적 분할 프로그램은 4 개의 LPAR들 각각에 2 개의 실재 프로세서들을 할당할 수 있고, 또는 논리적 분할 프로그램은 4 개의 LPAR들 사이에서 8 개의 프로세스들 모두를 시 분할(time share)할 수 있다. 논리적 분할 프로그램은 또한 상이한 LPAR들 사이에서 컴퓨터(20)의 전체 메모리를 분할하고, 각각의 LPAR에 의해 사용된 논리적 어드레스들을 실재 데이터가 저장된 실재 메모리 어드레스들로 변환한다. 예를 들어, 실재 컴퓨터(20)는 IBM zSeries 서버일 수 있으나, 본 발명은 다른 서버 컴퓨터들 또는 개인용 컴퓨터들에서 구현될 수도 있다. LPAR들로 분할된 컴퓨터(20)를 갖는 실시예에서, 논리적 분할 프로그램은 알려진 IBM 프로세서 리소스/리소스 매니저("PR/SM")(상표, tm) 프로그램일 수 있다.
하이퍼바이저 프로그램(40)은 컴퓨터(20)에서 실행하고, 컴퓨터(20)의 실재 리소스들을 가상 머신들(33, 34 및 35)(미도시된 다른 가상 머신들 뿐만 아니라)로 분할한다. 바꿔 말하면, 하이퍼바이저 프로그램(40)은, 가상 머신들(33, 34 및 35) 각각에 대한 리소스 플랫폼을 구성하고자 컴퓨터(20)의 CPU(23), 메모리(24), I/O 장치(25) 및 디스크 스토리지(26)를 논리적으로 분할하고 가상화한다.(만약 컴퓨 터(20)가 상이한 LPAR들로 분할된다면, 하이퍼바이저 프로그램(40)에 유사한 개별 하이퍼바이저 프로그램은 각각의 LPAR에서 실행되고, 각각의 LPAR을 가상 머신들로 논리적으로 분할한다.) 예를 들어, 하이퍼바이저(40)는 실재 RAM(24)에 매핑된 가상 프라이비트 메모리의 범위와 실재 프로세스(들)(23)의 시 분할을 각각의 가상 머신(33, 34 및 35)에 할당한다. 예를 들어, 하이퍼바이저(40)는 가상 머신(33)에 가상 프라이비트 메모리(133)를 할당하고, 가상 머신(34)에 가상 프라이비트 메모리(134)를 할당하며 가상 머신(35)에 가상 프라이비트 메모리(135)를 할당한다. 가상 머신(33, 34 또는 35)이 자신의 가상 프라이비트 메모리를 어드레싱하는 경우, 하이퍼바이저(40)는 가상 메모리 어드레스를 실재 메모리(24)의 실재 어드레스로 변환한다. 하이퍼바이저(40)는, 하이퍼바이저 자신 또는 또 다른 가상 머신을 위해 각각 다소의 가상 프라이비트 메모리에 대한 하이퍼바이저(40)에 의한 요구를 충족시키기 위해 각각의 가상 머신들에서의 게스트 운영 체계들에게 그들의 각각의 스왑 메모리들을 증가 또는 감소시키도록 요청할 수 있다.
게스트 운영 체계들(43, 44 및 45)은 각각의 가상 머신들(33, 34 및 35)에서 실행되고, 어플리케이션들(53, 54 및 55) 및 미들웨어(63, 64 및 65)는 각각의 게스트 운영 체계들(43, 44 및 45) 상에서 실행된다. 그러나, 각각의 게스트 운영 체계 상에서 실행 중인 다수의 어플리케이션들이 있을 수 있다. 예를 들어, 게스트 운영 체계들은 리눅스(리누스 토발즈의 상표) 운영 체계 또는 IBM CMS 운영 체계일 수 있다. 이러한 운영 체계들은, 각각의 가상 머신에서의 총 가상 프라이비트 메모리 할당이 대체로 동일하게 유지되도록, 동시적으로(concurrently) 증가되거나 감 소되는 작업 메모리 및 캐시 메모리를 보상하기 위해 가상 프라이비트 메모리를 증가 또는 감소시키고 동시적으로 스왑 메모리를 증가 또는 감소시키도록 하는 하이퍼바이저로부터의 요청들을 따르기 위해 본 발명에 따라서 변경될 수 있다. 본 발명에 따라 변경된 마이크로소프트 윈도우즈(상표) 운영 체계, 유닉스(상표) 운영 체계, 선 마이크로시스템의 솔라리스(상표) 운영 체계 또는 휴렛 패커드 HP UX 운영 체계와 같은 다른 게스트 운영 체계들이 또한 사용가능하다. 예를 들어, 어플리케이션들(53, 54 및 55)은 IBM DB2 데이터베이스 관리 어플리케이션일 수 있고, 미들웨어(63, 64 및 65)는 IBM 웹스피어 프로그램일 수 있다. 어플리케이션들(53, 54 및 55) 및 미들웨어(63, 64 및 65)의 특징은 그들이 가상 프라이비트 메모리를 이용한다는 것을 제외하고는 본 발명의 어떠한 부분을 이루는 것은 아니다. 각각의 가상 머신들(33, 34 및 35) 내의 게스트 운영 체계들(43, 44 및 45)은, 가상 프라이비트 메모리(133, 134 및 135)의 그들 각각의 할당들을 각각의 (가상의 가상의) 작업 메모리(233, 234 및 235), 캐시 메모리(333, 334 및 335) 및 스왑 메모리(433, 434 및 435)로 분할한다. 컴퓨터(10)에서의 각각의 가상 머신의 게스트 운영 체계, 미들웨어 및 어플리케이션(들) 및 그들의 데이터는 가상 머신에 할당된 각각의 작업 메모리에 저장된다. 캐시 메모리는 (디스크) 스토리지 또는 스왑 메모리로부터 억세싱된 데이터 및 관련 메타데이터를 포함한다. 메타데이터는, 데이터 파일에 대한 디렉토리 및 하위 디렉토리 경로, 현재 쓰여지거나 읽혀지고 있는 파일 내의 레코드들의 아이덴티티들, 파일의 크기, 파일에서의 레코드들의 크기, 파일에서의 데이터의 유형(ASCII, EBCDIC 또는 BINARY)을 포함한다. 이러한 파일은 디스크 또는 기타 장치 상에 저장된다. 대부분의 게스트 운영 체계들은 캐시가 꽉 차는 경우 어느 데이터의 페이지들이 캐시 메모리에 남아 있는지, 그리고 작업 메모리가 꽉 차는 경우 어느 데이터의 페이지들이 작업 메모리에 남아 있는지를 결정하기 위한 몇몇 알고리즘을 포함한다. 예를 들어, 대부분의 게스트 운영 체계들은, 가상 머신에 의해 요구되는 새로운 데이터를 위한 공간이 캐시 메모리에 불충분한 경우 캐시 메모리로부터 외부 스토리지 또는 스왑 메모리로 최근에 가장 적게 사용된 데이터를 아웃페이지하기 위해 최근에 가장 적게 사용된 알고리즘을 사용하며, 가상 머신에 의해 요구되는 새로운 데이터를 위한 공간이 작업 메모리에 불충분한 경우 작업 메모리로부터 외부 스토리지 또는 스왑 메모리로 최근에 가장 적게 사용된 데이터를 아웃페이지 하기 위해 위와 유사한 알고리즘을 사용한다. 각각의 스왑 메모리는 디스크 스토리지로 데이터를 페이지아웃하기 위한 대안으로서 캐시 메모리 및 작업 메모리로부터 페이지아웃된 데이터를 수신하고 저장하기 위해 사용된다. 스왑 메모리에 상주하는 데이터는 또한 필요에 따라 페이지인(page in)된다. 각각의 게스트 운영 체계는 가상 머신의 사용자 구성에 기초하여 스왑 메모리 또는 디스크 스토리지로 데이터를 페이지아웃할 지를 선택한다. 본 발명에서, 게스트 운영 체계들은 스왑 메모리로 데이터를 페이지아웃하고, 스왑 메모리로부터 데이터를 페이지인하도록 구성된다. 전형적인 시나리오에서, 가상 머신에 의해 요구되는 데이터(정보 또는 프로그램들)를 저장하기에 캐시 메모리 또는 작업 메모리가 불충분한 경우, 가상 머신에서의 게스트 운영 체계는 가상 머신의 캐시 메모리 또는 작업 메모리에서 최근에 가장 적게 사용된 메모리 데이터(예를 들어, 4 KB 페이지)를 식 별한다. 그러면, 게스트 운영 체계는 최근에 가장 적게 사용된 페이지들을 가상 머신의 스왑 메모리로 복사한다. 이는 가상 머신의 캐시 메모리 및 작업 메모리를 자유롭게(free-up) 하여, 각각의 게스트 운영 체계가 다른 더 많이 요구되는 데이터의 페이지들을 스왑 메모리로부터 캐시 메모리 또는 작업 메모리로 인페이지할 수 있도록 한다.
하이퍼바이저(40)는 또한 가상 프라이비트 메모리(140) 자체에 할당하고 자신의 가상 프라이비트 메모리(140)를 작업 메모리(240), 캐시 메모리(340), 스왑 메모리(440)로 분할한다. 하이퍼바이저(40)는 또한 공유 메모리(shared memory)(150)(가상 머신들(33, 34 및 35) 모두에 의해 접근가능하고 공유되는)를 할당한다.
게스트 운영 체계로서의 리눅스 운영 체계(마이크로소프트 윈도우즈 운영 체계 및 다른 운영 체계들)는, 하이퍼바이저(40)가 리눅스 운영 체계에 할당하는 가상 프라이비트 메모리를 가상화(virtualize)할 수 있다. 자신의 가상화 프로세스에 있어서, 리눅스 운영 체계는, 하이퍼바이저가 리눅스 운영 체계에 할당하는 가상 프라이비트 메모리를 과할당(over-commit)한다. 예를 들어, 하이퍼바이저가 리눅스(또는 다른) 게스트 운영 체계를 갖는 가상 머신에 3 GB의 가상 프라이비트 메모리를 할당한다고 가정하자. 그 결과, 리눅스 게스트 운영 체계 자신이 리눅스 운영 체계 상에서 실행 중인 프로세스들에게 6 GB를 가상으로 할당할 수 있다. 프로세스들은, 전형적으로는 평균하여 그들에 할당되는 것보다 훨씬 더 적은 메모리를 사용하므로, 이것은 현실적이다.
리눅스 운영 체계(및 마이크로소프트 윈도우즈 운영 체계)는, 그것이 장차 필요할 어떤 가능성이 있기 때문에 자신의 작업 메모리 및 캐시 메모리에 최근에 사용되지 않은 데이터를 유지하려는 경향이 있고, 이는 계속적인 아웃페이지 및 인페이지를 감소시킬 것이다. 이 때문에, 심지어 페이지아웃들(페이지인들)을 위해 스왑 메모리를 사용하도록 구성되는 경우에도, 리눅스 운영 체계(및 마이크로소프트 윈도우즈 운영 체계)는 전형적으로 정상 동작 동안 스왑 메모리를 사용하지 않거나 스왑 메모리를 실질적으로 덜 사용한다.
다음은, 스왑 메모리를 사용하도록 구성되는 경우 정상 동작 동안의 어떤 순간 동안에 하이퍼바이저(40) 및 게스트 운영 체계들(43, 44 및 45)에 의한 메모리 할당들의 일 예이다.
콤퍼넌트 하이퍼바이저에 의해 할당된 가상 프라이비트 메모리 하이퍼바이저에 의해 할당된 가상 프라이비트 메모리에 기초하여 게스트 운영 체계에 의해 할당된 가상의 가상 프라이비트 메모리
실재 메모리 (15 GB)
하이퍼바이저(40) 작업 메모리(240) 캐시 메모리(340) 스왑 메모리(440) 4 GB 1 GB 0.5 GB
가상 머신(33) 작업 메모리(233) 캐시 메모리(333) 스왑 메모리(433) 5 GB 2 GB 1 GB 10 GB 4 GB 2 GB
가상 머신(34) 작업 메모리(234) 캐시 메모리(334) 스왑 메모리(434) 5 GB 2 GB 1 GB 10 GB 4 GB 2 GB
가상 머신(35) 작업 메모리(235) 캐시 메모리(335) 스왑 메모리(435) 2.5 GB 1 GB 0.5 GB 5 GB 2 GB 1 GB
이러한 예에서, 컴퓨터(10)에서의 총 실재 메모리(15 GB)는 하이퍼바이저(40)에 의한 모든 가상 메모리 할당들 결합(41.5 GB)보다 실질적으로 적다. 이러한 예에서, 그들의 프로세스들에 대한 모든 게스트 운영 체계들에 의한 총 가상의 가상의(virtual virtual) 메모리 할당은 훨씬 더 크다(83 GB). 하이퍼바이저(40) 및 가상 머신들(33-35)은 전형적으로 그들 각각의 가상 메모리 할당들보다 훨씬 더 적은 가상 메모리를 사용하기 때문에, 이것은 현실적이다. 이러한 예에서 컴퓨터(10)의 모든 프로세스들에 의한 실재 메모리 소모는 보통은 8 GB와 13 GB 사이에 서 변하는 것으로 가정한다.
이러한 예에서는, 이후에 하이퍼바이저(40)는 자신을 위해 추가의 가상 프라이비트 메모리(예를 들어, 대략적으로 5 GB 추가)를 필요로 한다는 것을 가정한다.
그 결과, 하이퍼바이저(40)는 작업 메모리 및/또는 캐시 메모리를 추가의 스왑 메모리로 변환함으로써 각각의 가상 머신들(33, 34 및 35)에서의 게스트 운영 체계들(43, 44 및 45)에게 그들 각각의 스왑 메모리의 특정 양을 증가시키도록 요청한다. 예를 들어, 자신을 위해 실재 메모리의 약 5 GB를 자유롭게(free-up) 하기 위해, 하이퍼바이저(40)는 게스트 운영 체계(43)가 추가로 가상 프라이비트 메모리(즉, 작업 메모리 및/또는 캐시 메모리)의 2 GB를 스왑 메모리로 변환하도록 요청할 것이고, 하이퍼바이저(40)는 게스트 운영 체계(44)가 추가로 가상 프라이비트 메모리(즉, 작업 메모리 및/또는 캐시 메모리)의 2 GB를 스왑 메모리로 변환하도록 요청할 것이며, 하이퍼바이저(40)는 게스트 운영 체계(43)가 추가로 가상 프라이비트 메모리(즉, 작업 메모리 및/또는 캐시 메모리)의 1 GB를 스왑 메모리로 변환하도록 요청할 것이다. 이는 총 5 GB의 스왑 메모리의 증가이다. 이러한 요청들에 응답하여, 각각의 게스트 운영 체계는 그의 작업 메모리 및/또는 캐시 메모리의 특정 양을 스왑 메모리로 변환한다. (만약 어떤 게스트 운영 체계가 요청에 응하기 위한 이용가능한 작업 메모리 또는 캐시 메모리를 충분히 갖지 않는다면, 게스트 운영 체계는 단지 그것이 할 수 있는 정도로만 응할 것이다.) 각각의 게스트 운영 체계는 하이퍼바이저의 요청을 충족시키고자 얼마나 많은 현재의 작업 메모리를 스왑 메모리로 변환하는지 그리고 얼마나 많은 현재의 캐시 메모리를 스왑 메모리로 변 환하는지를 결정하기 위해, 자신의 알고리즘을 사용한다. 예를 들어, 각각의 게스트 운영 체계는 그들의 현재의 할당들에 기초하여 존재하는 작업 메모리 및 존재하는 캐시 메모리를 스왑 메모리로 비례적으로 변환하여 하이퍼바이저의 요청을 충족시킬 수 있다. 앞서의 예에서, 다음은 하이퍼바이저가 각각의 가상 메모리에게 그의 가상 프라이비트 메모리(즉, 작업 메모리 및/또는 캐시 메모리)의 특정 양을 스왑 메모리로 변환하도록 요청한 이후의 메모리 할당들이고, 각각의 가상 머신은 그의 작업 메모리 및 캐시 메모리에서의 비례적인 감소에 따른다.
콤퍼넌트 하이퍼바이저에 의해 할당된 가상 프라이비트 메모리 하이퍼바이저에 의해 할당된 가상 프라이비트 메모리에 기초하여 게스트 운영 체계에 의해 할당된 가상의 가상 프라이비트 메모리
실재 메모리 (15 GB)
하이퍼바이저(40) 작업 메모리(240) 캐시 메모리(340) 스왑 메모리(440) 7.60 GB 1.90 GB 0.95 GB
가상 머신(33) 작업 메모리(233) 캐시 메모리(333) 스왑 메모리(433) 3.57 GB 1.43 GB 3 GB 7.14 GB 2.86 GB 6 GB
가상 머신(34) 작업 메모리(234) 캐시 메모리(334) 스왑 메모리(434) 3.57 GB 1.43 GB 3 GB 7.14 GB 2.86 GB 6 GB
가상 머신(35) 작업 메모리(235) 캐시 메모리(335) 스왑 메모리(435) 1.78 GB 0.72 GB 1.5 GB 3.56 GB 1.44 GB 3 GB
이 예에서, 하이퍼바이저(40)는 그의 총 가상 프라이비트 메모리 할당을 5 GB까지 증가시켰고, 가상 머신(33)은 작업 메모리와 캐시 메모리의 결합된 2 GB를 스왑 메모리로 비례적으로 변환했으며, 가상 머신(34)은 작업 메모리와 캐시 메모리의 결합된 2 GB를 스왑 메모리로 비례적으로 변환했으며, 가상 머신(35)은 작업 메모리와 캐시 메모리의 결합된 1 GB를 스왑 메모리로 비례적으로 변환했다. 이러한 예에서, 각각의 가상 머신(33, 34 및 35)에 대한 총 가상 프라이비트 메모리 할당은, 비록 하이퍼바이저(40)에 대한 총 메모리 할당이 5 GB까지 증가하지 않더라도 변하지 않는다. 평균하여 각각의 가상 머신이 그의 각각의 스왑 메모리를 실질적으로 적게 이용할 것이나 아웃페이지를 용이하게 할 필요가 있을 경우 스왑 메모리는 각각의 가상 머신을 이용할 것이기 때문에, 이것은 실현가능하다. (본 발명의 또 다른 실시예에서, 각각의 가상 머신들은 그의 스왑 메모리의 양을 증가시킬 것이지만 그의 작업 메모리 및/또는 캐시 메모리의 양을 더 많이 감소시킬 것이다)
각각의 가상 머신에서 작업 메모리 및 캐시 메모리를 스왑 메모리로 변환함으로써, 스왑 메모리는 단지 필요시 사용될 것이기 때문에, 가상 머신들에 의해 가상 프라이비트 메모리의 전체적인 실제 이용은 더 줄어들 것이고, 한편 일반적으로 캐시 메모리 및 작업 메모리는 필요에 관계없이 실질적으로 이용된다. 이는 하이퍼바이저에게 여분의(extra) 이용가능한 메모리를 제공한다. 감소된 작업 메모리 및 캐시 메모리를 사용하는 더 많은 페이지아웃들 및 페이지인들이 있을 것이기 때문에, 각각의 가상 머신에서의 여분의 스왑 메모리는 각각의 가상 머신에서의 감소된 작업 메모리 및 캐시 메모리를 보상하려는 경향이 있고, 그래서 추가의 스왑 메모 리는 필요시 페이지아웃들 및 페이지인들을 용이하게 한다.
이 예에서는, 이후에 하이퍼바이저(40)가 자신을 위해 적은 가상 프라이비트 메모리(예를 들면, 약 5 GB 적은)를 필요로 한다고 가정한다. 그 결과, 하이퍼바이저(40)는, 각각의 가상 머신들(33, 34 및 35)에서의 게스트 운영 체계들(43, 44 및 45)에게 그들 각각의 스왑 메모리의 특정 양을 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청하고, 그에 따라 각각의 가상 머신에서의 스왑 메모리의 양을 감소시킨다. 그 결과, 각각의 게스트 운영 체계는 특정 양의 스왑 메모리를 작업 메모리 및/또는 캐시 메모리로 변환한다. 각각의 게스트 운영 체계는 자신의 알고리즘을 사용하여, 얼마나 많은 스왑 메모리의 특정 양을 작업 메모리로 변환하는지, 그리고 얼마나 많은 스왑 메모리의 특정 양을 캐시 메모리로 변환하는지를 결정한다. 앞서의 예에 있어서, 각각의 게스트 운영 체계는 그들의 현재의 할당들에 기초하여 스왑 메모리의 특정 양을 작업 메모리 및 캐시 메모리로 비례적으로 변환할 수 있다. 예를 들어, 자신의 사용을 위해 실재 메모리의 약 5 GB를 넘겨주기 위해 하이퍼바이저(40)는 게스트 운영 체계(43)가 그의 스왑 메모리의 2 GB를 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청할 것이고, 하이퍼바이저(40)는 게스트 운영 체계(44)가 스왑 메모리의 2 GB를 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청할 것이며, 하이퍼바이저(40)는 게스트 운영 체계(43)가 스왑 메모리의 1 GB를 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청할 것이다. 이는 스왑 메모리의 총 5 GB의 감소이다. 이러한 요청들에 응답하여, 각각의 게스트 운영 체계는 그의 감소된 스왑 메모리의 특정 양을 작업 메모리 및/또는 캐시 메모리로 변환 한다. 각각의 게스트 운영 체계는 하이퍼바이저의 요청을 충족시키고자 그의 현재의 작업 메모리 및 현재의 캐시 메모리를 얼마나 많이 증가시킬지를 결정하기 위해 자신의 알고리즘을 사용한다. 예를 들어, 각각의 게스트 운영 체계는 하이퍼바이저의 요청을 충족시키고자 작업 메모리 및 캐시 메모리의 현재의 할당들에 기초하여 여분의(excess) 스왑 메모리를 작업 메모리 및 캐시 메모리로 비례적으로 변환할 수 있다. 이와는 달리, 각각의 게스트 운영 체계는 작업 메모리 및 캐시 메모리의 현재의 이용에 기초하여 여분의 스왑 메모리를 작업 메모리 및 캐시 메모리로 변환할 수 있다. 이와는 달리 각각의 게스트 운영 체계는 모든 여분의 스왑 메모리를 캐시 메모리로 변환할 수 있다. 앞서의 예에서, 다음은 하이퍼바이저가 각각의 가상 메모리에게 그의 스왑 메모리의 특정 양을 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청한 이후의 메모리 할당들이고, 각각의 가상 머신은 작업 메모리 및 캐시 메모리에서의 비례적 증가에 따른다.
콤퍼넌트 하이퍼바이저에 의해 할당된 가상 프라이비트 메모리 하이퍼바이저에 의해 할당된 가상 프라이비트 메모리에 기초하여 게스트 운영 체계에 의해 할당된 가상의 가상 프라이비트 메모리
실재 메모리 (15 GB)
하이퍼바이저(40) 작업 메모리(240) 캐시 메모리(340) 스왑 메모리(440) 4 GB 1 GB 0.5 GB
가상 머신(33) 작업 메모리(233) 캐시 메모리(333) 스왑 메모리(433) 5 GB 2 GB 1 GB 10 GB 4 GB 2 GB
가상 머신(34) 작업 메모리(234) 캐시 메모리(334) 스왑 메모리(434) 5 GB 2 GB 1 GB 10 GB 4 GB 2 GB
가상 머신(35) 작업 메모리(235) 캐시 메모리(335) 스왑 메모리(435) 2.5 GB 1 GB 0.5 GB 5 GB 2 GB 1 GB
이러한 예에서, 하이퍼바이저(40)는 그의 총 가상 프라이비트 메모리 할당을 5 GB까지 감소시켰고, 가상 머신(33)은 스왑 메모리의 2 GB를 작업 메모리 및 스왑 메모리로 변환했으며, 가상 머신(34)은 스왑 메모리의 2 GB를 작업 메모리 및 캐시 메모리로 변환했으며, 가상 머신(35)은 스왑 메모리의 1 GB를 작업 메모리 및 캐시 메모리로 변환했다. 이러한 예에서, 비록 하이퍼바이저(40)에 대한 총 메모리 할당이 5 GB까지 감소되었으나, 각각의 가상 머신에 대한 총 가상 프라이비트 메모리 할당은 변하지 않는다. 평균하여 각각의 가상 머신은 스왑 메모리보다 그의 작업 메모리 및 캐시 메모리를 더 충분하게(fully) 이용하기 때문에, 이것이 현실적이다.
도 2는 하이퍼바이저(40)의 더 상세한 동작 및 기능을 나타낸다. 단계 600에서, 하이퍼바이저(40)는 자신의 가상 프라이비트 메모리(150)를 현재 총 얼마나 이용하고 있는지를 모니터링한다. 하이퍼바이저(40)는 자신의 가상 프라이비트 메모리로부터의 아웃페이지 및 인페이지의 양을 모니터링함으로써 가상 프라이비트 메모리를 현재 얼마나 이용하는지를 모니터링한다. 만약 하이퍼바이저의 가상 프라이비트 메모리가 완전히 또는 거의 완전히 이용된다면, 이용가능한 작업 메모리 및 캐시 메모리가 불충분하기 때문에 많은 양의 아웃페이지 및 인페이지가 있을 것이고, 그 반대인 경우에도 마찬가지이다. 예를 들어, 불충분한 작업 메모리 및 캐시 메모리의 경우, 소정의 간격 동안의 아웃페이지들 및 인페이지들의 수는 소정의 상위 문턱값(upper threshold)보다 더 클 것이다. 다음으로, 하이퍼바이저(40)는 자신의 가상 프라이비트 메모리(150)를 현재 이용하고 있는 총 양이 문턱값보다 더 큰지, 예를 들면, 소정의 상위 문턱값보다 더 많은 양의 아웃페이지 및 인페이지가 있는지의 여부를 결정한다(결정 604). 만약 하이퍼바이저(40)가 가상 프라이비트 메모리(150)를 현재 이용하고 있는 총 양이 소정의 문턱값을 넘어선다면(결정단계 604에서 "예(yes)" 분기), 하이퍼바이저(40)는 하이퍼바이저(40)가 필요로 하는 추가의 가상 프라이비트 메모리의 총 양을 결정한다(단계 608). 단계 608에서, 하이퍼바이저(40)는 페이지아웃들 및 페이지인들의 수에 기초하여 하이퍼바이저가 필요로 하는 가상 프라이비트 메모리의 총 양을 결정한다. 하이퍼바이저(40)에 의해 알 려지는(experienced) 페이지아웃들 및 페이지인들이 더 많으면 많을수록, 하이퍼바이저(40)에 의해 요구되는 가상 프라이비트 메모리는 더 많아진다. 다음으로, 하이퍼바이저(40)는, 각각의 가상 머신이 하이퍼바이저(40)에 의해 요구되는 가상 프라이비트 메모리의 총 추가 양에 얼마나 많은 스왑 메모리를 추가할 것인지를 결정한다. 예를 들어, 하이퍼바이저(40)는 각각의 가상 메모리에게 하이퍼바이저(40)에 의해 요구되는 총 양에 대해 동일한 양의 가상 프라이비트 메모리를 스왑 메모리로 변환하도록 요청할 수 있다. 그래서, 만약 하이퍼바이저가 가상 프라이비트 메모리의 5 GB를 필요로 하고 5 개의 가상 머신들이 있다면, 하이퍼바이저(40)는 각각의 가상 머신에게 자신의 작업 메모리 및/또는 캐시 메모리의 1 GB를 스왑 메모리로 변환하도록 요청할 수 있다. 또 다른 예로서, 가상 머신들이 우선순위가 정해지고(prioritized), 그래서 하이퍼바이저(40)는, 하이퍼바이저(40)가 더 높은 우선순위의 가상 머신들에게 스왑 메모리로 변환하도록 요청하는 것보다 더 많은 양의 작업 메모리 및/또는 캐시 메모리를 스왑 메모리로 변환하도록 더 낮은 우선순위의 가상 머신들에게 요청한다. 다음으로, 하이퍼바이저(40)는 작업 메모리 및/또는 캐시 메모리의 각각의 특정 양을 스왑 메모리로 변환하도록 가상 머신들(33, 34 및 35) 각각에 대한 요청을 보낸다(단계 630). 앞서의 예에서, 하이퍼바이저(40)는 가상 머신(33)에게 작업 메모리 및/또는 캐시 메모리의 2 GB를 스왑 메모리로 변환하도록 요청하고, 하이퍼바이저(40)는 가상 머신(34)에게 작업 메모리 및/또는 캐시 메모리의 2 GB를 스왑 메모리로 변환하도록 요청하며, 하이퍼바이저(40)는 가상 머신(35)에게 작업 메모리 및/또는 캐시 메모리의 1 GB를 스왑 메모리로 변환하도록 요청한다.
결정 단계 604를 다시 참조하면, "아니오" 분기에서는 하이퍼바이저(40)는 추가의 가상 프라이비트 메모리를 필요로 하지 않는다. 이러한 경우, 하이퍼바이저(40)는 그의 페이지아웃들 및 페이지인들의 현재의 숫자에 기초하여 하이퍼바이저(40)가 가상 프라이비트 메모리의 그의 현재의 할당의 일부를 넘겨줄 것인지의 여부를 결정한다. 만약 페이지아웃들 및 페이지인들의 숫자가 매우 낮다면, 하이퍼바이저(40)는, 페이지아웃들 및 페이지인들의 현재의 숫자가 더 높은 경우보다 가상 프라이비트 메모리의 그의 현재의 할당의 더 많은 부분을 넘겨줄 수 있다(결정 단계 620). 만약 하이퍼바이저(40)가 가상 프라이비트 메모리의 그의 현재의 할당의 일부를 넘겨주지 않는다면, 하이퍼바이저(40)는 소정의 간격 이후에 단계 600으로 돌아가서 그가 현재 총 이용하는 가상 프라이비트 메모리를 다시 모니터링한다. 그러나, 만약 하이퍼바이저(40)가 가상 프라이비트 메모리의 그의 현재의 할당의 일부를 넘겨줄 것을 결정한다면(결정 단계 620의 "예" 분기), 하이퍼바이저(40)는 하이퍼바이저(40)가 넘겨줄 추가의 가상 프라이비트 메모리의 전체 양을 결정한다(단계 622). 단계 622에서, 하이퍼바이저(40)는 위에서 설명된 것과 같이 페이지아웃들 및 페이지인들의 현재의 숫자에 기초하여 하이퍼바이저가 필요로 하지 않는 가상 프라이비트 메모리의 총 양을 결정한다. 다음으로, 하이퍼바이저(40)는 하이퍼바이저(40)에 의해 넘겨질 가상 프라이비트 메모리의 총 양에 대해 각각의 가상의 머신이 얼마나 많은 스왑 메모리를 작업 메모리 및/또는 캐시 메모리로 변환하는지를 결정한다. 예를 들어, 하이퍼바이저(40)는 하이퍼바이저에 의해 요구되지 않는 가상 프라이비트 메모리의 동일한 부분을 각각의 가상 머신에게 넘겨줄 수 있다. 이와는 달리, 하이퍼바이저(40)는 더 낮은 우선순위의 가상 머신들에게 넘겨지는 것보다 더 많은 부분의 불필요한 가상 프라이비트 메모리를 우선순위의 가상 머신들에게 넘겨줄 수 있다. 다음으로, 하이퍼바이저(40)는 메모리 및/또는 캐시 메모리에 대한 스왑 메모리의 각각의 특정 량을 변환하도록 가상 머신들(33, 34 및 35) 각각에 대한 요청을 보낸다(단계 610). 앞서의 예에서, 하이퍼바이저(40)는 가상 머신(33)에게 스왑 메모리에 대해 스왑 메모리의 2 GB를 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청하고, 하이퍼바이저(40)는 가상 머신(34)에게 스왑 메모리의 2 GB를 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청하며, 하이퍼바이저(40)는 스왑 메모리의 1 GB를 작업 메모리 및/또는 캐시 메모리로 변환하도록 요청한다.
도 3은 가상 머신들 중의 하나에서 게스트 운영 체계의 기능 및 동작을 나타낸다. (다른 가상 머신들에서의 다른 게스트 운영 체계들이 이와 유사하게 기능하고 동작할 수 있다.) 단계 700에서, 게스트 운영 체계가 시작된다. 다음으로, 게스트 운영 체계는 하이퍼바이저(40)로부터의 초기의 가상 프라이비트 메모리 할당을 나타내는 구성 파일을 읽고, 이러한 구성 파일의 내부 알고리즘을 사용하여 초기의 가상 프라이비트 메모리 할당을 작업 메모리, 캐시 메모리 및 스왑 메모리로 분할하며, 하이퍼바이저로부터 초기의 가상 프라이비트 메모리 할당을 가상화한다(단계 702). 예를 들어, 내부 알고리즘은 시스템 관리자에 의해 정의된 초기 구성에 기초하여 초기의 가상 프라이비트 메모리 할당을 작업 메모리, 캐시 메모리 및 스왑 메 모리로 분할할 수 있다. 다음으로, 게스트 운영 체계는 예를 들어 그의 어플리케이션들 및 미들웨어를 실행하기 위해, 그의 알려진 운영 체계 기능들을 수행한다(단계 704). 다음으로, 게스트 운영 체계는 게스트 운영 체계의 스왑 메모리의 양을 변경하도록 하이퍼바이저(40)로부터 요청을 받고(단계 706), 그러한 요청이 스왑 메모리의 양을 증가 또는 감소시키기 위한 것이고 그러한 요청된 양의 스왑 메모리의 증가 또는 감소인지의 여부를 결정한다(결정 단계 710). 만약 하이퍼바이저로부터의 요청이 스왑 메모리를 증가하는 것이라면(결정 단계 710의 "예" 분기), 게스트 운영 체계는 작업 메모리 및/또는 캐시 메모리에 대한 그의 총 가상 프라이비트 메모리를 특정 양까지 감소시키고, 스왑 메모리에 대한 그의 가상 프라이비트 메모리 할당을 특정 양까지 증가시킨다(단계 720). 단계 720에서, 게스트 운영 체계는 자신의 알고리즘 또는 사용자 정의 구성에 기초하여 그의 작업 메모리를 얼마나 많이 감소시킬지의 여부를 결정한다. 또한 단계 720에서, 게스트 운영 체계는 자신의 알고리즘 또는 사용자 정의 구성에 기초하여 그의 캐시 메모리를 얼마나 많이 감소시킬지의 여부를 결정한다. 예를 들면, 게스트 운영 체계는 자신의 스왑 메모리를 증가시키는 전체(full) 양까지 자신의 캐시 메모리를 감소시킬 수 있다. 또 다른 예로서, 게스트 운영 체계는 작업 메모리 및 캐시 메모리의 부족한(under) 이용의 각각의 양에 상응하는 각각각각에서 그의 작업 메모리 및 캐시 메모리를 감소시킬 수 있다. 그래서, 만약 더 많은 양의 작업 메모리가 덜 이용되는 것에 반해 더 적은 양의 캐시 메모리가 덜 이용된다면, 게스트 운영 체계는 더 많은 작업 메모리 및 더 적은 캐시 메모리(그러나 각각의 일부)를 스왑 메모리로 변환할 것이다. 710 을 다시 참조하면, 만약 하이퍼바이저로부터의 요청이 스왑 메모리를 감소시키는 것이라면(결정 단계 710의 "아니오" 분기), 게스트 운영 체계는 그의 작업 메모리 및/또는 캐시 메모리를 특정 양까지 증가시키고 그의 스왑 메모리를 특정 양까지 감소시킨다(단계 730). 단계 730에서, 게스트 운영 체계는 자신의 알고리즘 또는 사용자 정의 구성에 기초하여 그의 작업 메모리를 얼마나 많이 증가시켜야 하는지를 결정한다. 또한, 단계 730에서, 게스트 운영 체계는 자신의 알고리즘 또는 사용자 정의 구성에 기초하여 그의 캐시 메모리를 얼마나 많이 증가시켜야 하는지를 결정한다. 예를 들어, 게스트 운영 체계는 자신의 스왑 메모리를 감소시키는 전체 양까지 자신의 캐시 메모리를 증가시킬 수 있다. 또 다른 예로서, 게스트 운영 체계는 작업 메모리 및 캐시 메모리의 각각의 양에 상응하는 각각의 양에서 그의 작업 메모리 및 캐시 메모리를 증가시킬 수 있다. 그래서, 만약 많은 양의 작업 메모리가 이용되는 반면에 더 적은 양의 캐시 메모리가 이용된다면, 게스트 운영 체계는 더 많은 스왑 메모리를 작업 메모리로 변환하고 더 적은 스왑 메모리를 캐시 메모리(그러나 각각에 대해서 일부)로 변환할 것이다.
게스트 운영 체계들(43, 44 및 45)은 자기 테이프 또는 디스크, 광 매체, DVD, 반도체 메모리, 메모리 스틱 등과 같은 컴퓨터 판독가능 매체(80)로부터 컴퓨터(20)로 로딩될 수 있고, 또는 TCP/IP 어댑터 카드(84)를 통해 인터넷(82)으로부터 다운로딩될 수 있다.
하이퍼바이저 프로그램(40)은 자기 테이프 또는 디스크, 광 매체, DVD, 반도체 메모리, 메모리 스틱 등과 같은 컴퓨터 판독가능 매체(90)로부터 컴퓨터(20)로 로딩될 수 있고, 또는 TCP/IP 어댑터 카드(84)를 통해 인터넷(82)로부터 다운로딩될 수 있다.
이상에서의 설명들에 기초하여, 가상 머신의 메모리를 관리하기 위한 컴퓨터 시스템, 방법 및 프로그램이 개시되었다. 그러나, 본 발명의 범위를 벗어나지 않고서 많은 변경들 또는 대체들이 이뤄질 수 있다. 예를 들어, 하이퍼바이저(40)는, 추가 또는 그 자체를 위한 더 적은 가상 프라이비트 메모리에 직면할 경우, 스왑 메모리의 그들의 양을 변경하는 것에 더하여 하나 또는 그 이상의 가상 머신들에 대한 가상 프라이비트 메모리 할당의 총 양을 변경할 수 있다. 그러므로, 본 발명은 제한이 아니라 설명을 위해 개시된 것이며, 본 발명의 범위를 결정하기 위해 다음의 청구항들에 대한 참조가 이뤄져야 한다.

Claims (14)

  1. 가상 머신 제어 프로그램에 의해 복수의 가상 머신들에 할당된 가상 메모리를 관리하기 위한 방법으로서, 상기 가상 머신들 각각은 작업 메모리, 캐시 메모리 및 스왑 메모리로 분할된 가상 프라이비트 메모리의 할당을 가지되, 상기 방법은,
    가상 머신 제어 프로그램이 추가의 가상 메모리 할당을 필요로 하는지를 결정하고, 그 결과, 상기 가상 머신 제어 프로그램은 상기 가상 머신들에게 그들 각각의 작업 메모리 및/또는 캐시 메모리의 일부를 스왑 메모리로 변환하도록 각각의 요청들을 하는 단계; 및
    상기 가상 머신들이 그들 각각의 작업 메모리 및/또는 캐시 메모리의 일부를 스왑 메모리로 변환하도록 상기 각각의 요청들을 따르는 단계를 포함하는 가상 메모리 관리 방법.
  2. 청구항 1에 있어서, 상기 요청들 각각은 스왑 메모리로 변환할 작업 메모리 및/또는 캐시 메모리의 양을 특정하는 가상 메모리 관리 방법.
  3. 청구항 1 또는 2에 있어서, 상기 복수의 가상 머신들은, 그들 각각의 가상 머신에 할당된 스왑 메모리보다 더 충분하게(fully) 그들 각각의 가상 머신에 할당된 작업 메모리 및/또는 캐시 메모리를 이용하도록 프로그래밍되는 각각의 복수의 게스트 운영 체계들을 포함하는 가상 메모리 관리 방법.
  4. 청구항 1, 2 또는 3에 있어서, 상기 가상 머신들 각각은
    캐시 메모리를 스왑 메모리로 변환함에 의해 상기 가상 머신들 각각의 작업 메모리 및/또는 캐시 메모리의 일부를 스왑 메모리로 변환하도록 하는 상기 요청들을 따르는 가상 메모리 관리 방법.
  5. 가상 메모리를 가상 머신 제어 프로그램 및 복수의 가상 머신들에 할당하기 위한 가상 머신 제어 프로그램 제품으로서, 상기 가상 머신들 각각은 작업 메모리, 캐시 메모리 및 스왑 메모리로 분할된 가상 프라이비트 메모리의 할당을 가지며, 상기 가상 머신 제어 프로그램은,
    컴퓨터 판독가능 매체;
    상기 가상 머신 제어 프로그램이 추가의 가상 메모리 할당을 필요로 하는지를 결정하고, 그 결과, 상기 가상 머신들 각각에게 그들 각각의 작업 메모리 및/또는 캐시 메모리의 일부를 스왑 메모리로 변환하도록 각각의 요청들을 하기 위한 제1 프로그램 명령들을 포함하되,
    상기 제1 프로그램 명령들은 기능적 형태로 상기 컴퓨터 판독가능 매체 상에 저장되는 가상 머신 제어 프로그램 제품.
  6. 청구항 5에 있어서, 상기 요청들 각각은 스왑 메모리로 변환할 작업 메모리 및/또는 캐시 메모리의 양을 특정하는 가상 머신 제어 프로그램 제품.
  7. 청구항 5에 있어서, 상기 복수의 가상 머신들은 그들 각각의 가상 머신에 할당된 스왑 메모리보다 더 충분하게(fully) 그들 각각의 가상 머신에 할당된 작업 메모리 및/또는 캐시 메모리를 이용하도록 프로그래밍되는 각각의 복수의 게스트 운영 체계들을 포함하는 가상 머신 제어 프로그램 제품.
  8. 가상 메모리를 가상 머신 제어 프로그램 및 복수의 가상 머신들에 할당하기 위한 컴퓨터 시스템으로서, 상기 가상 머신들 각각은 작업 메모리, 캐시 메모리 및 스왑 메모리로 분할된 가상 프라이비트 메모리의 할당을 가지며, 상기 컴퓨터 시스템은,
    상기 가상 머신 제어 프로그램이 추가의 가상 메모리 할당을 필요로 하는지를 결정하며, 그 결과, 상기 가상 머신들에게 그들 각각의 작업 메모리 및/또는 캐시 메모리의 일부를 스왑 메모리로 변환하도록 각각의 요청들을 하기 위한 수단들을 포함하되,
    상기 가상 머신들은 그들 각각의 작업 메모리 및/또는 캐시 메모리의 일부를 스왑 메모리로 변환하도록 하는 상기 각각의 요청들을 따르는 수단들을 포함하는 컴퓨터 시스템.
  9. 청구항 8에 있어서, 상기 요청들 각각은 스왑 메모리로 변환할 작업 메모리 및/또는 캐시 메모리의 양을 특정하는 컴퓨터 시스템.
  10. 청구항 8 또는 9에 있어서, 상기 복수의 가상 머신들은
    그들 각각의 가상 머신들에 할당된 스왑 메모리보다 더 충분하게(fully), 그들 각각의 가상 머신에 할당된 작업 메모리 및/또는 캐시 메모리를 이용하도록 프로그래밍되는 각각의 복수의 게스트 운영 체계들을 포함하는 컴퓨터 시스템.
  11. 복수의 가상 머신들에 대해 가상 머신 제어 프로그램에 의해 할당된 가상 메모리를 관리하기 위한 방법으로서, 상기 가상 머신들 각각은 작업 메모리, 캐시 메모리, 및 스왑 메모리로 분할된 가상 프라이비트 메모리의 할당을 가지되, 상기 방법은,
    가상 머신 제어 프로그램이 상기 가상 머신 제어 프로그램에 현재 할당된 것보다 더 적은 가상 메모리 할당을 필요로 하는지를 결정하고, 그 결과, 상기 가상 머신 제어 프로그램은 상기 가상 머신들에게 그들 각각의 스왑 메모리의 일부를 작업 메모리 및/또는 캐시 메모리로 변환하도록 각각의 요청들을 하는 가상 메모리 관리 방법.
  12. 청구항 11에 있어서, 상기 요청들 각각은 작업 메모리 및/또는 캐시 메모리로 변환할 스왑 메모리의 양을 특정하는 가상 메모리 관리 방법.
  13. 청구항 11 또는 12에 있어서, 상기 복수의 가상 머신들은 상기 각각의 가상 머신에 할당된 스왑 메모리보다 더 충분하게(fully), 그들 각각의 가상 머신에 할당된 작업 메모리 및/또는 캐시 메모리를 이용하도록 프로그래밍되는 각각의 복수의 게스트 운영 체계들을 포함하는 가상 메모리 관리 방법.
  14. 청구항 11, 12 또는 13에 있어서, 상기 가상 머신들은 그들 각각의 스왑 메모리의 일부를 작업 메모리 및/또는 캐시 메모리로 변환하도록 하는 상기 각각의 요청들을 따르는 단계를 더 포함하는 가상 메모리 관리 방법.
KR1020097018203A 2007-06-27 2008-06-25 가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램 KR101137172B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/769,161 2007-06-27
US11/769,161 US8015383B2 (en) 2007-06-27 2007-06-27 System, method and program to manage virtual memory allocated by a virtual machine control program
PCT/EP2008/058081 WO2009000856A1 (en) 2007-06-27 2008-06-25 System, method and program to manage memory of a virtual machine

Publications (2)

Publication Number Publication Date
KR20090122936A true KR20090122936A (ko) 2009-12-01
KR101137172B1 KR101137172B1 (ko) 2012-04-19

Family

ID=39737116

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097018203A KR101137172B1 (ko) 2007-06-27 2008-06-25 가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램

Country Status (5)

Country Link
US (1) US8015383B2 (ko)
JP (1) JP5235989B2 (ko)
KR (1) KR101137172B1 (ko)
CN (1) CN101681268B (ko)
WO (1) WO2009000856A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140078390A (ko) * 2012-12-17 2014-06-25 삼성전자주식회사 가상 머신 환경에서 메모리 관리 방법 및 장치
KR101442091B1 (ko) * 2012-12-31 2014-09-25 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
US9201675B2 (en) 2012-08-30 2015-12-01 Electronics And Telecommunications Research Institute DAAS manager and DAAS client for DAAS system
WO2017082505A1 (ko) * 2015-11-11 2017-05-18 삼성전자 주식회사 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
KR20200135715A (ko) * 2019-05-24 2020-12-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 처리 방법, 장치, 기기 및 매체

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US8489562B1 (en) 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
US8885632B2 (en) 2006-08-02 2014-11-11 Silver Peak Systems, Inc. Communications scheduler
US8307115B1 (en) 2007-11-30 2012-11-06 Silver Peak Systems, Inc. Network memory mirroring
US8145871B2 (en) * 2008-06-09 2012-03-27 International Business Machines Corporation Dynamic allocation of virtual real memory for applications based on monitored usage
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US8819707B2 (en) * 2009-06-18 2014-08-26 Citrix Systems, Inc. Methods and systems for importing a device driver into a guest computing environment
EP2449469B1 (en) * 2009-06-29 2019-04-03 Hewlett-Packard Enterprise Development LP Hypervisor-based management of local and remote virtual memory pages
KR101077782B1 (ko) * 2009-12-18 2011-10-28 한국과학기술원 가상머신의 메모리 관리 시스템 및 관리 방법
US8862922B2 (en) * 2010-01-14 2014-10-14 International Business Machines Corporation Data center power adjustment
US9110806B2 (en) * 2010-03-10 2015-08-18 Microsoft Technology Licensing, Llc Opportunistic page caching for virtualized servers
US8863117B2 (en) * 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US8707300B2 (en) * 2010-07-26 2014-04-22 Microsoft Corporation Workload interference estimation and performance optimization
CN102467449A (zh) * 2010-11-16 2012-05-23 英业达股份有限公司 支持文件存取测试的大容量扇区磁盘的模拟方法
US8943259B2 (en) * 2010-11-16 2015-01-27 Vmware, Inc. Relieving memory pressure in a host using database memory management
US9086921B2 (en) 2010-11-16 2015-07-21 Vmware, Inc. Dynamic database memory management according to swap rates
US8935456B2 (en) * 2010-11-16 2015-01-13 Vmware, Inc. Method and system for integrating database memory management in virtual machines
CN102541619B (zh) * 2010-12-23 2015-09-16 国际商业机器公司 虚拟机管理装置和方法
JP5673210B2 (ja) * 2011-02-28 2015-02-18 日本電気株式会社 仮想計算機システム、仮想計算機システムのメモリ管理方法およびメモリ管理プログラム
US9015709B2 (en) 2011-03-08 2015-04-21 Rackspace Us, Inc. Hypervisor-agnostic method of configuring a virtual machine
US8943260B2 (en) * 2011-03-13 2015-01-27 International Business Machines Corporation Dynamic memory management in a virtualized computing environment
US8725963B1 (en) * 2011-04-15 2014-05-13 Parallels IP Holdings GmbH System and method for managing a virtual swap file for virtual environments
US9237127B2 (en) * 2011-05-12 2016-01-12 Airmagnet, Inc. Method and apparatus for dynamic host operating system firewall configuration
US9130991B2 (en) 2011-10-14 2015-09-08 Silver Peak Systems, Inc. Processing data packets in performance enhancing proxy (PEP) environment
US9626224B2 (en) * 2011-11-03 2017-04-18 Silver Peak Systems, Inc. Optimizing available computing resources within a virtual environment
US8990263B2 (en) * 2012-03-15 2015-03-24 International Business Machines Corporation Policy-based management of storage functions in data replication environments
JP2013196421A (ja) * 2012-03-21 2013-09-30 Nec Corp 仮想化システム、仮想サーバ、メモリ管理方法及びメモリ管理プログラム
US20130262811A1 (en) * 2012-03-27 2013-10-03 Hitachi, Ltd. Method and apparatus of memory management by storage system
US9996370B1 (en) * 2012-04-18 2018-06-12 Open Invention Network Llc Page swapping in virtual machine environment
US9027024B2 (en) 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9336147B2 (en) * 2012-06-12 2016-05-10 Microsoft Technology Licensing, Llc Cache and memory allocation for virtual machines
US9116744B2 (en) * 2012-09-07 2015-08-25 International Business Machines Corporation Resource management within a process via iterative negotiation
CN102880557B (zh) * 2012-09-13 2015-06-10 浙江金大科技有限公司 一种异构数据源的多级分布式高速缓存的查找方法
CN103729249B (zh) * 2012-10-11 2017-04-12 财团法人工业技术研究院 虚拟机的存储器管理的方法和计算机系统
US9069669B2 (en) * 2012-10-11 2015-06-30 Industrial Technology Research Institute Method and computer system for memory management on virtual machine
CN103729230B (zh) * 2012-10-11 2017-04-12 财团法人工业技术研究院 虚拟机系统的内存管理方法和计算机系统
US11669441B1 (en) * 2013-03-14 2023-06-06 Amazon Technologies, Inc. Secure virtual machine reboot via memory allocation recycling
US9323552B1 (en) 2013-03-14 2016-04-26 Amazon Technologies, Inc. Secure virtual machine memory allocation management via dedicated memory pools
US9507540B1 (en) 2013-03-14 2016-11-29 Amazon Technologies, Inc. Secure virtual machine memory allocation management via memory usage trust groups
US9817756B1 (en) * 2013-05-23 2017-11-14 Amazon Technologies, Inc. Managing memory in virtualized environments
CN103608792B (zh) * 2013-05-28 2016-03-09 华为技术有限公司 支持多核架构下资源隔离的方法及系统
JP6069515B2 (ja) * 2013-09-26 2017-02-01 株式会社日立製作所 計算機システムおよび計算機システムのメモリ割当調整方法
DE102013222167B4 (de) 2013-10-31 2024-07-11 Pfeiffer Vacuum Gmbh Vakuumpumpe
US9396014B2 (en) 2014-02-27 2016-07-19 International Business Machines Corporation Data swap in virtual machine environment
KR101709121B1 (ko) * 2014-04-09 2017-02-22 한국전자통신연구원 가상 머신 구동 방법 및 가상 머신 구동 시스템
US9052938B1 (en) 2014-04-15 2015-06-09 Splunk Inc. Correlation and associated display of virtual machine data and storage performance data
EP3140734B1 (en) 2014-05-09 2020-04-08 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
US10055146B1 (en) * 2014-12-30 2018-08-21 EMC IP Holding Company LLC Virtual machine rollback
JP6589417B2 (ja) * 2015-07-03 2019-10-16 富士通株式会社 起動制御プログラム、起動制御方法及び起動制御装置
US11669320B2 (en) 2016-02-12 2023-06-06 Nutanix, Inc. Self-healing virtualized file server
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10432484B2 (en) 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
US10481951B2 (en) * 2016-11-15 2019-11-19 Red Hat Israel, Ltd. Multi-queue device assignment for application groups
US11568073B2 (en) * 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US10257082B2 (en) 2017-02-06 2019-04-09 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows
US10771394B2 (en) 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US10481954B2 (en) * 2017-06-09 2019-11-19 Bank Of America Corporation System and method of managing computing resources
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US10901781B2 (en) 2018-09-13 2021-01-26 Cisco Technology, Inc. System and method for migrating a live stateful container
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US11200091B2 (en) * 2020-02-03 2021-12-14 Dell Products L.P. Adaptive memory optimization for thin clients
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07262093A (ja) * 1994-03-17 1995-10-13 Hitachi Ltd 記憶装置の領域再構成制御方式
US6542926B2 (en) * 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US20020016891A1 (en) * 1998-06-10 2002-02-07 Karen L. Noel Method and apparatus for reconfiguring memory in a multiprcessor system with shared memory
JP2002041304A (ja) * 2000-07-28 2002-02-08 Hitachi Ltd 論理区画の予備リソース自動付与方法及び論理区画式計算機システム
GB2381886B (en) * 2001-11-07 2004-06-23 Sun Microsystems Inc Computer system with virtual memory and paging mechanism
US7788461B2 (en) * 2004-04-15 2010-08-31 International Business Machines Corporation System and method for reclaiming allocated memory to reduce power in a data processing system
US7421533B2 (en) * 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
EP1669864B1 (en) * 2004-12-03 2010-06-02 STMicroelectronics Srl A process for managing virtual machines in a physical processing machine, corresponding processor system and computer program product therefor
US7500048B1 (en) * 2005-12-15 2009-03-03 Vmware, Inc. Transparent page sharing on commodity operating systems
US7487307B2 (en) * 2006-01-05 2009-02-03 International Business Machines Corporation Method, apparatus and program product for managing memory in a virtual computing system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201675B2 (en) 2012-08-30 2015-12-01 Electronics And Telecommunications Research Institute DAAS manager and DAAS client for DAAS system
KR20140078390A (ko) * 2012-12-17 2014-06-25 삼성전자주식회사 가상 머신 환경에서 메모리 관리 방법 및 장치
US9229651B2 (en) 2012-12-17 2016-01-05 Samsung Electronics Co., Ltd Method and apparatus for managing memory in virtual machine environment
KR101442091B1 (ko) * 2012-12-31 2014-09-25 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
WO2017082505A1 (ko) * 2015-11-11 2017-05-18 삼성전자 주식회사 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
US10817332B2 (en) 2015-11-11 2020-10-27 Samsung Electronics Co., Ltd. Electronic device having multi-operating system and method for managing dynamic memory for same
KR20200135715A (ko) * 2019-05-24 2020-12-03 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 처리 방법, 장치, 기기 및 매체

Also Published As

Publication number Publication date
CN101681268B (zh) 2012-09-26
WO2009000856A1 (en) 2008-12-31
JP5235989B2 (ja) 2013-07-10
CN101681268A (zh) 2010-03-24
US8015383B2 (en) 2011-09-06
JP2010532034A (ja) 2010-09-30
KR101137172B1 (ko) 2012-04-19
US20090006801A1 (en) 2009-01-01

Similar Documents

Publication Publication Date Title
KR101137172B1 (ko) 가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램
US10365938B2 (en) Systems and methods for managing data input/output operations in a virtual computing environment
US9405476B2 (en) Systems and methods for a file-level cache
US9390028B2 (en) Coordination between memory-saving mechanisms in computers that run virtual machines
US8996807B2 (en) Systems and methods for a multi-level cache
US8060683B2 (en) System, method and program to preserve a cache of a virtual machine
US8151032B2 (en) Direct memory access filter for virtualized operating systems
US8935456B2 (en) Method and system for integrating database memory management in virtual machines
US8135899B1 (en) Expansion of virtualized physical memory of virtual machine
US9128843B2 (en) Method and computer system for memory management on virtual machine system
US8539137B1 (en) System and method for management of virtual execution environment disk storage
CA3116380A1 (en) Faster access of virtual machine memory backed by a host computing device's virtual memory
EP2778919A2 (en) System, method and computer-readable medium for dynamic cache sharing in a flash-based caching solution supporting virtual machines
US10534720B2 (en) Application aware memory resource management
US20120047313A1 (en) Hierarchical memory management in virtualized systems for non-volatile memory models
EP2581828B1 (en) Method for creating virtual machine, virtual machine monitor and virtual machine system
US9436601B2 (en) Categorizing memory pages based on page residences
US7805723B2 (en) Runtime virtualization and devirtualization of memory by a virtual machine monitor
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
WO2013023090A2 (en) Systems and methods for a file-level cache
JP2022034455A (ja) 計算機システムおよび管理方法
US20240152462A1 (en) Centralized, scalable cache for containerized applications in a virtualized environment
US20230266992A1 (en) Processor for managing resources using dual queues, and operating method thereof
CN114860439A (zh) 一种内存分配方法、宿主机、分布式系统及程序产品

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160325

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170328

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 8