KR101587579B1 - 가상화 시스템에서 메모리 조정방법 - Google Patents

가상화 시스템에서 메모리 조정방법 Download PDF

Info

Publication number
KR101587579B1
KR101587579B1 KR1020140018939A KR20140018939A KR101587579B1 KR 101587579 B1 KR101587579 B1 KR 101587579B1 KR 1020140018939 A KR1020140018939 A KR 1020140018939A KR 20140018939 A KR20140018939 A KR 20140018939A KR 101587579 B1 KR101587579 B1 KR 101587579B1
Authority
KR
South Korea
Prior art keywords
memory
node
virtual machine
nodes
page frames
Prior art date
Application number
KR1020140018939A
Other languages
English (en)
Other versions
KR20150097981A (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 한국과학기술원
Priority to KR1020140018939A priority Critical patent/KR101587579B1/ko
Publication of KR20150097981A publication Critical patent/KR20150097981A/ko
Application granted granted Critical
Publication of KR101587579B1 publication Critical patent/KR101587579B1/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 가상화 시스템에서 메모리 조정방법은 각각 프로세스를 실행하는 코어, 공용캐시, 메모리 제어기, 인터커넥션 및 메모리를 포함하는 복수의 노드를 구비하는 비대칭 메모리 접근 아키텍처 상에서, 복수의 가상 머신에 할당된 메모리를 조정하는 방법으로서, 상기 복수의 노드별로, 상기 복수의 가상 머신의 복수의 게스트 운영체제에 할당된 페이지 프레임들 중 버퍼 캐시로 사용되는 페이지 프레임들을 추출하고 데이터 접근에 대한 패턴에 따라 페이지 프레임들을 순차 패턴, 루프 패턴 및 비분류 패턴으로 분할하는 단계; 상기 복수의 노드별로, 상기 분할된 페이지 프레임들을 LRU 정책에 따라 관리하되, 상기 순차 패턴 및 상기 루프 패턴에 속하는 페이지 프레임들은 연속 페이지 프레임 단위로 관리하고 상기 비분류 패턴에 속하는 페이지 프레임은 페이지 프레임 단위로 관리하는 단계; 및 상기 프로세스를 상기 코어에 할당하는 프로세스 스케줄링 결과, 상기 복수의 노드별로 상기 메모리 제어기의 레이턴시, 및 상기 복수의 노드별로 상기 인터커넥션의 레이턴시 중 적어도 하나를 고려하여 상기 복수의 가상 머신간에 메모리 재할당을 수행하는 단계를 포함할 수 있다.

Description

가상화 시스템에서 메모리 조정방법{MEMORY BALANCING METHOD FOR VIRTUAL SYSTEM}
본 발명은 가상화 시스템에서 메모리 조정방법에 관한 것이다. 보다 구체적으로, 비대칭 메모리 접근 아키텍처상에서 복수의 가상머신 사이에 메모리 조정을 위한 메모리 재할당 기법에 관한 것이다.
가상화(Virtualization)는 하드웨어 자원(hardware)을 멀티플렉싱(multiplexing)함으로써 하나의 물리 컴퓨터 상에서 다수의 운영 시스템(OS: operating system)을 실행시킬 수 있도록 한다. 중앙 처리 장치(CPU: Central Processing Unit) 및 I/O(Input/Output) 장치는 시간 단위로 나누어 해당 시간만큼 사용하는 방식으로 여러 게스트 운영 시스템(guest OS)에 의해 공유될 수 있다.
하지만, 메모리(memory)와 같은 자원은 해당 자원을 상기와 같이 시분할 방식으로 공유하기에 오버헤드(overhead)가 매우 크므로 용량적 측면에서 배분을 통해 공유된다. 따라서, 적절한 순간에 적절한 양의 메모리를 할당하는 것이 시스템 전체적인 측면의 성능 면에서 중요한 역할을 하게 된다.
최근 특정 CPU(Central Processing Unit)에서 접근하는 물리 메모리의 접근 시간이 어떤 코어에서 수행되는가에 따라 변하는 비대칭성을 갖는 비대칭 메모리 접근(NUMA: Non Uniform Memory Access) 아키텍처가 널리 이용되고 있습니다. CPU는 코어로 지칭될 수 있다. 이러한 현상은 비대칭 메모리 접근 아키텍처가 갖고 있는 구조적 특성에 기인한다. 비대칭 메모리 접근 아키텍처의 경우 지역 노드(local node)에 속한 메모리 접근을 하는 경우와 원격 노드(remote node)에 속한 메모리를 접근하는 경우에 시간 차이가 발생하기 때문이다.
종래에는 이러한 비대칭 메모리 접근 아키텍처에서 메모리 토폴로지(topology)를 전혀 고려하지 않고 가상 머신 사이에 메모리를 조정하였으며 이러한 메모리 조정은 비대칭 메모리 접근 아키텍처를 구비하는 컴퓨터 시스템이 성능을 저해할 수 있었다.
따라서, 이러한 비대칭 메모리 접근 아키텍처를 구비한 시스템 특성 및 메모리 토폴로지를 고려하여 가상 머신 사이에 메모리를 조정 및/또는 할당함으로써 비대칭 메모리 접근 아키텍처를 구비한 시스템 전체의 성능을 향상시킬 수 있는 기법을 제공할 필요성이 대두되고 있다.
본 발명은 종래의 필요성을 충족시키기 위해 안출된 것으로써, 비대칭 메모리 접근 아키텍처 특성 및 메모리 토폴로지를 고려하여 가상 머신 사이에 메모리를 조정 및/또는 할당함으로써 비대칭 메모리 접근 아키텍처를 구비한 시스템 전체의 성능을 향상시킬 수 있는 메모리 조정 기법을 제공하기 위한 것이다.
본 발명이 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 본 발명의 기재로부터 당해 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따른 가상화 시스템에서 메모리 조정방법은 각각 프로세스를 실행하는 코어, 공용캐시, 메모리 제어기, 인터커넥션 및 메모리를 포함하는 복수의 노드를 구비하는 비대칭 메모리 접근 아키텍처 상에서, 복수의 가상 머신에 할당된 메모리를 조정하는 방법으로서, 상기 복수의 노드별로, 상기 복수의 가상 머신의 복수의 게스트 운영체제에 할당된 페이지 프레임들 중 버퍼 캐시로 사용되는 페이지 프레임들을 추출하고 데이터 접근에 대한 패턴에 따라 페이지 프레임들을 순차 패턴, 루프 패턴 및 비분류 패턴으로 분할하는 단계; 상기 복수의 노드별로, 상기 분할된 페이지 프레임들을 LRU 정책에 따라 관리하되, 상기 순차 패턴 및 상기 루프 패턴에 속하는 페이지 프레임들은 연속 페이지 프레임 단위로 관리하고 상기 비분류 패턴에 속하는 페이지 프레임은 페이지 프레임 단위로 관리하는 단계; 및 상기 프로세스를 상기 코어에 할당하는 프로세스 스케줄링 결과, 상기 복수의 노드별로 상기 메모리 제어기의 레이턴시, 및 상기 복수의 노드별로 상기 인터커넥션의 레이턴시 중 적어도 하나를 고려하여 상기 복수의 가상 머신간에 메모리 재할당을 수행하는 단계를 포함할 수 있다.
본 발명의 실시예에 따라 상기 재할당을 수행하는 단계는: 상기 복수의 노드별로 재할당이 가능한 페이지 프레임을 판단하는 단계를 포함할 수 있다.
본 발명의 실시예에 따라 상기 재할당을 수행하는 단계에서, 상기 복수의 노드 중 동일한 노드에서 상기 순차 패턴에 속한 페이지 프레임들은 상기 루프 패턴에 속한 페이지 프레임들에 비해 우선적으로 선택되고, 상기 루프 패턴에 속한 페이지 프레임들은 상기 비분류 패턴에 속한 페이지 프레임들에 비해 우선적으로 선택되어 재할당될 수 있다.
본 발명의 실시예에 따라 상기 재할당을 수행하는 단계에서, 상기 순차 패턴에 속한 페이지 프레임들은 상기 복수의 노드 중 임의의 노드에 포함된 상기 루프 패턴에 속한 페이지 프레임들에 비해 우선적으로 선택되어 재할당될 수 있다.
본 발명의 실시예에 따라 상기 재할당을 수행하는 단계는: 상기 복수의 가상 머신 중 메모리를 할당 받아야 하는 수혜 가상 머신이 속한 노드의 페이지 프레임을 상기 수혜 가상 머신이 속하지 않은 노드의 페이지 프레임에 비해 우선적으로 상기 수혜 가상 머신에 재할당하는 단계를 포함할 수 있다.
또한, 본 발명의 실시예에 따라 상기 재할당을 수행하는 단계는, 상기 복수의 노드 중 상기 수혜 가상 머신이 속한 노드를 제외한 나머지 노드 중 추가적으로 페이지 프레임을 전송할 원격 노드를 선택하는 단계를 더 포함하며, 상기 원격 노드를 선택하는 단계는: 상기 복수의 노드별로 수학식(αx MPKIlocal + βx NUMInterconn. = VALUENode#N)에 따라 획득한 상기 VALUE값이 가장 작은 노드를 선택하며,
여기서, MPKIlocal은 노드 N에 대한 1000개의 인스트럭션 당 공용캐시의 캐시 미스 값이고, NUMinterconn은 인터커넥션을 통해 노드 N으로 요청되는 메모리 접근 요청의 개수를 나타낼 수 있다.
본 발명에 따르면 비대칭 메모리 접근 아키텍처 특성 및 메모리 토폴로지를 고려하여 가상 머신 사이에 메모리를 조정 및/또는 할당함으로써 비대칭 메모리 접근 아키텍처를 구비한 시스템 전체의 성능을 향상시킬 수 있는 메모리 조정 기법을 제공할 수 있다.
도1은 가상화 시스템의 구성을 예시한다.
도2a 및 도2b는 가상화 시스템에서 메모리 조정을 예시한다.
도3은 비대칭 메모리 접근 아키텍처를 예시한다.
도4는 본 발명의 실시예에 따른 비대칭 메모리 접근 아키텍처상에서 가상화 시스템(1000)의 메모리 할당을 예시한다.
도5는 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 해결해야할 문제점의 일예를 도시한다.
도6은 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 해결해야할 문제점의 다른 예를 도시한다.
도7은 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 페이지 프레임의 분류 방법을 예시한다.
도8은 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 페이지 프레임의 관리 방법을 예시한다.
도9a는 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 하나의 노드에 포함되는 페이지 프레임들의 재할당을 위한 선택 순서를 예시한다.
도9b는 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 복수의 노드에 포함되는 페이지 프레임들의 재할당을 위한 선택 가능 양을 예시한다.
이하, 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명된다. 그러나, 본 발명의 실시형태는 여러 가지의 다른 형태로 변형될 수 있으며, 본 발명의 범위가 이하 설명하는 실시형태로만 한정되는 것은 아니다. 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있으며, 도면들 중 인용부호들 및 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 인용부호들로 표시됨을 유의해야 한다. 참고로 본 발명을 설명함에 있어서 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하, 첨부되는 도면을 참조하여 본 발명의 실시예에 따른 비대칭 메모리 접근(NUMA) 아키텍처상에서 가상화 시스템의 메모리 조정 기법을 설명한다.
도1은 가상화 시스템(1000)의 구성을 예시한다. 가상화 시스템은 단일 하드웨어(300)를 갖는 컴퓨터 시스템 상에서 복수의 가상 머신(VM: Virtual Machine: 110_1, 110_2, 110_N)을 통해서 다수의 운영 체제(OS: Operating System)를 실행시킬 수 있다. 즉, 가상화 시스템(1000)에서는 하드웨어 자원(300)을 멀티플렉싱함으로써 하나의 컴퓨터 상에서 다수의 운영체제를 실행시킬 수 있다.
도1에 도시된 바와 같이, 가상화 시스템(1000)에 포함된 가상머신(110) 각각은 자신의 운영체제인 게스트 운영체제(130)를 포함하고 있다. 가상머신(110)의 해당 게스트 운영체제(130)를 통해 실행될 수 있는 애플리케이션(120)들이 도1에 도시되어 있다. 도1 및 이하의 설명에서 도면부호100은 복수의 가상머신(110) 집합체를 지칭한다.
도1에 도시된 바와 같이, 각 가상머신(110)에는 메모리를 포함한 하드웨어 자원이 할당(140)되어 있다. 가상화 시스템(1000)에서 가상 머신 모니터(VMM: Virtual Machine Monitor)는 가상화 환경을 제어하는 역할을 수행하며, 하드웨어 자원(300)을 멀티플렉싱하여 가상머신(110) 각각의 운영체제(130)에게 자신이 컴퓨터의 자원을 독점한 것과 같은 일루젼(illusion)을 제공할 수 있다. 이와 같이 가상화 시스템을 통해 여분의 자원을 가상머신(110) 사이에 공유하도록 함으로써 자원 활용도를 개선할 수 있다. 이때, 공유되는 자원은 중앙 처리 장치(CPU: Central Processing Unit), 저장장치(storage), 네트워크(network) 및/또는 메인 메모리(main memory)를 포함할 수 있다.
도2a 및 도2b는 가상화 시스템에서 메모리 조정을 예시한다. 도2a 및 도2b는 제1가상머신(VM1:110_1) 및 제2가상머신(VM2:110_2)만을 도시한다. 도2a에 도시된 바와 같이, 임의의 시간에 각 가상머신(110)에는 실제로 요구되는 메모리의 용량보다 많은 메모리가 할당될 수 있다. 하지만, 가상머신(110)의 애플리케이션 실행 성능은 해당 가상머신(110)에 할당된 메모리의 크기에 비례하여 증가하지 않는다.
예컨대, 도2a에서 제1가상머신(110_1)에서 할당된 메모리 중 빗금으로 표시된 바와 같이 일부만 사용되고 있으나, 이에 반해, 제2가상머신(110_2)에서 할당된 메모리의 대부분이 사용되고 있다. 이러한 경우 도2b에 도시된 바와 같이, 제1가상머신(110_1)에서 사용되고 있지 않은 메모리의 일부를 제2가상머신(110_2)에 재할당함으로써 전체적인 시스템의 성능을 향상시킬 수 있다.
즉, 가상머신(110) 사이에 메모리 조정은 모든 가상머신 성능을 최대화하고, 이에 따라 전체 가상화 시스템(1000)의 성능을 향상시키는데 매우 중요한 역할을 한다.
가상 머신 모니터(200)는 특정 가상머신(예컨대, 제1가상머신(110_1))의 여분의 메모리를 메모리가 부족한 가상머신(예컨대, 제2가상머신(110_2))에 전송하여 메모리 조정을 수행할 수 있다. 이때, 종래에는 메모리 토폴로지(topology)를 전혀 고려함이 없이 메모리 조정이 수행되었다. 이에 따라 메모리 조정에도 불구하고 가상화 시스템(1000)의 전체 성능이 떨어질 수 있는 문제점이 있다.
보다 구체적으로, 실제로 사용되는 매니코어(manycore) 시스템은 비대칭 메모리 접근(NUMA: Non-Uniform Memory Access) 아키텍처를 가지는데, 종래의 가상머신(110) 사이의 메모리 조정은 모든 메모리에 대해서 동일한 메모리 접근 레이턴시(latency)를 가정하고 있는 것이다.
따라서, 본 발명에서는 비대칭 메모리 접근 아키텍처에서 메모리 토폴로지 및 그 특성을 고려하여 가상화 시스템(1000)에 포함된 가상머신(110) 사이의 메모리 조정 방법을 제안하고자 한다.
이하에서는 비대칭 메모리 접근 아키텍처(NUMA Architecture)에 대해서 살펴본 후 본 발명의 실시예에 따른 가상화 시스템(1000)에서의 메모리 조정 방법을 설명한다.
도3은 비대칭 메모리 접근 구조를 예시한다. NUMA 아키텍처(300)는 코어별로 메모리 접근 시간 또는 메모리 접근 레이턴시(latency)가 균등하지 않은 시스템을 지칭한다. 본 발명의 실시예에 따른 NUMA 아키텍처는 복수의 노드(node)를 포함할 수 있으며, 도3에서는 2개의 노드(310, 320)를 포함하는 것이 예시된다. 일반적으로 하나의 프로세스는 하나의 노드에 해당하며, 복수개의 노드는 복수개의 프로세서가 포함됨을 의미할 수 있다. 실시예에 따라 하나의 프로세스가 복수 개의 노드를 가질 수도 있다.
노드(310, 320) 당 포함되는 코어의 개수는 가변적이며 일반적으로 노드 당 4~8개의 코어가 포함될 수 있다. 도3에에서는 제1노드(310)에 제1코어 내지 제4코어(core1 내지 core4)가 포함되고 제2노드(320)에 제5코어 내지 제8코어(core5 내지 core8)가 포함되는 것이 예시된다.
본 발명의 NUMA 아키텍처(300)에서 메모리 영역은 도면부호 330 및 점선으로 구분되며 메모리 서브시스템(330)으로 지칭될 수 있다. 코어로부터의 메모리 접근 요청은 메모리 서브시스템(330)으로의 접근 요청을 의미한다.
본 발명의 실시예에 따른 NUMA 아키텍처(300)에서 메모리 서브시스템(330) 내에 공용 캐시(311, 321)를 포함할 수 있다. 제1공용 캐시(311)는 제1노드(310)에 포함된 4개의 코어에 의해 공유되고 제2공용 캐시(321)는 제2노드(320)에 포함된 4개의 코어에 의해 공유될 수 있다. 본 발명의 실시예에서 공용 캐시(311, 321)는 레벨3 캐시일 수 있다. 일반적으로 각각의 코어는 그 내부에 레벨1(L1: level 1) 및 레벨2(L2: level 2) 캐시를 구비한다. 또한 각 노드에는 해당 노드에 포함된 코어들끼리 공유할 수 있는 레벨3 (level 3) 캐시를 포함할 수 있다. 이러한 레벨3 캐시는 LLC(last-level chache)로도 지칭될 수 있다.
코어로부터 전달된 메모리 접근 요청은 동일 노드에 포함된 공용캐시(311, 321)를 탐색한 뒤, 캐시 히트(cache hit)가 발생하는 경우 공용캐시(311, 321)로부터 원하는 데이터를 획득한다. 이하에서 이를 일차 메모리 접근 요청으로 지칭한다.
노드(310, 320) 각각은 해당 메모리(314, 324)를 포함한다. 즉, 제1노드(310)는 제1메모리(314)를 포함하고 제2노드(320)는 제2메모리(324)를 포함할 수 있다. 이때, 제1노드(310)에 대해서 제1메모리(314)는 지역 메모리(local memory)이고 제2메모리(324)는 원격 메모리(remote memory)에 해당한다. 마찬가지로 제2노드(320)에 대해서 제2메모리(324)는 지역 메모리이고 제1메모리(314)는 원격 메모리이다. 본 발명의 실시예에서 제1메모리(314) 및 제2메모리(324)는 예컨대 일련의 DRAM(Dynamic Random-Access Memory)을 포함한 메모리 모듈인 DIMM(dual in-line memory module)일 수 있다.
공용캐시(311, 312)에서 캐시 미스(cache miss)가 발생하는 경우 공용 캐시(311, 321)로부터 도3에 도시된 메모리 제어기(312, 322)에 실제 메모리 접근 요청이 전달된다. 여기서, 실제 메모리 접근 요청은 메모리 제어기(312, 322)를 통한 제1메모리(314) 또는 제2메모리(324)로의 접근 요청으로서, 이하에서 이차 메모리 접근 요청으로 지칭한다.
즉, 메모리 제어기(312, 322)는 동일한 노드(310, 320)에 포함된 공용캐시(311, 321)로부터의 이차 메모리 접근 요청에 따라 동일한 노드(310,320)에 포함된 지역 메모리(local memory)에 접근할 수 있다. 예컨대, 메모리 제어기(314, 324)는 초당 대략 수 GB(giga byte)의 메모리 접근을 처리할 수 있다.
공용캐시(311,321)에서 캐시 미스(cache miss)가 발생하는 경우 동일한 노드(310, 320)에 포함되지 않은 원격 메모리로의 접근도 가능하다. 이때, 공용 캐시(311, 321)로부터의 이차 메모리 접근 요청은 인터커넥션(313, 323)으로 전달될 수 있다. 예컨대, 제1공용캐시(311)로부터 이차 메모리 접근 요청이 제1인터커넥션(313)으로 전달되고 이후 제1버스(71)를 통해 제2노드(320)에 포함된 제2인터커넥션(323) 및 제2메모리 제어기(322)를 이용하여 제2메모리(324)로의 접근이 달성될 수 있다.
이와 마찬가지로, 제2공용캐시(321)로부터의 이차 메모리 접근 요청은 제2인터커넥션(323)에 전달되어, 순차적으로 제2버스(72), 제1인터커넥션(313) 및 제1메모리 제어기(312)를 통해 제1메모리(314)에 접근이 달성될 수 있다.
서로 다른 노드(310, 320)에 포함된 인터커넥션(313, 323) 사이에는 버스(71,72)가 위치하며, 이때 각 버스(71,72)는 각각 단방향일 수 있다. 이에 따라 제1노드(310)와 제2노드(320) 사이에는 두 개의 버스(71,72)가 포함되어 양방향 통신이 가능할 수 있다. 하지만, 이는 단지 실시예일뿐이며 하나의 양방향 버스를 통해 제1인터커넥션(313)과 제2인터커넥션(323) 사이에 양방향 통신이 달성될 수 있다.
인터커넥션(313, 323)을 통해 원격 메모리를 접근하는 경우에는, 메모리 제어기(312, 322)를 통한 지역 메모리를 접근하는 경우보다 1.5배 큰 메모리 접근 레이턴시(latency)를 가질 수 있다. 즉, 원격 메모리로의 접근시 지역 메모리로의 접근시보다 많은 시간이 소요될 수 있다. 이때, 인터커넥션(313, 323) 또한 시간당 처리할 수 있는 처리 용량이 정해져있으며 일반적으로 메모리 제어기(312, 322)의 처리용량에 비해 낮다.
프로세스(Process)는 일반적으로 운영체제 내에서 실행중인 응용 프로그램이나 가상화 시스템 소프트웨어의 VCPU(Vitual CPU)로 정의할 수 있다. 프로세스는 코어에서의 실행 단위가 된다. 각각의 프로세스는 자신의 메모리를 임의의 메모리 영역에 가질 수 있다. 코어가 특정 프로세스를 실행할 때 코어는 해당 프로세스의 메모리를 가지고 있는 메모리 영역으로의 메모리 접근 요청을 생성한다. 예컨대, 제1프로세스(Proc.1)가 제1코어(Core 1)에서 실행되고, 제1프로세스의 메모리는 제1메모리(314) 또는 제2메모리(324)에 포함되어 있을 수 있다. 따라서, 제1코어가 제1프로세스를 실행할 때 제1코어는 제1메모리(314) 또는 제2메모리(324)로의 메모리 접근 요청을 생성할 수 있다.
프로세스(또는 VCPU)는 임의의 코어에서 실행될 수 있고 자신의 메모리를 임의의 노드에 포함된 메모리 영역에 구비할 수 있다. 프로세스와 이를 실행할 코어의 다양한 매핑(mapping)이 가능하고 프로세스의 메모리는 이주가 가능하다. 예컨대, 제1프로세스(Proc.1)의 메모리는 제1노드(310)의 제1메모리(314)에 포함되어 있더라도 제2노드(320)의 제2메모리(324)로 이주가 가능하다.
도3에서 NUMA 아키텍처가 8개의 프로세스(또는 VCPU) 및 8개의 코어를 포함하는 것이 예시된다. 이때, 제1프로세스(Proc.1)는 제1코어(Core1)에서, 제2프로세스(Proc.2)는 제2코어(core 2)에서,..., 제8프로세스(Proc.8)는 제8코어(Core 8)에서 실행되도록 매핑된 것이 예시되나, 이는 단지 예시일 뿐이며 임의의 프로세스는 임의의 코어에서 실행되도록 매핑될 수 있다. 특정 시간에 하나의 프로세스는 하나의 코어를 점유하여 실행될 수 있다.
도4는 본 발명의 실시예에 따른 비대칭 메모리 접근 아키텍처상에서 가상화 시스템(1000)의 메모리 할당을 예시한다. 예컨대, 제1가상머신(100_1)에서 실행되는 3개의 프로세스(VCPU1,2,3)는 모두 제1노드(310)에 포함된 코어에 할당되어 있고, 제N가상머신(100_N)에서 실행되는 3개의 프로세스(VCPU6,7,8)는 모두 제2노드(320)에 포함된 코어에 할당된 것이 예시된다. 이에 따라, 제1가상머신(100_1)에서 실행되는 3개의 프로세스(VCPU1,2,3) 모두에 대해서 제1노드(310)는 지역노드로서 제1노드(310)에 위치하는 제1메모리(314)는 지역 메모리이고 제2노드(320)는 원격노드로서 제2노드(320)에 위치하는 제2메모리(324)는 원격 메모리에 해당한다. 이와 마찬가지로, 제N가상머신(100_N)에서 실행되는 3개의 프로세스(VCPU6,7,8) 모두에 대해서 제2노드(320)에 위치하는 제2메모리(324)는 지역 메모리이고 제1노드(310)에 위치하는 제1메모리(314)는 원격 메모리에 해당한다.
이와 대조적으로, 제2가상머신(100_2)에서 실행되는 1개의 프로세스(VCPU5)는 제1노드(310)에 포함된 코어에 할당되어 있고 다른 1개의 프로세스(VCPU4)는 제2노드(320)에 포함된 코어에 할당된 것이 예시된다. 이때, 제1메모리(314)는 프로세스(VCPU5)에 대해서는 지역 메모리이지만 프로세스(VCPU4)에 대해서는 원격 메모리가 된다. 또한, 제2메모리(324)는 프로세스(VCPU4)에 대해서는 지역 메모리이지만 프로세스(VCPU5)에 대해서는 원격 메모리가 된다.
따라서, 가상화 시스템(1000)의 가상머신(110)들 사이에 메모리를 조정하기 위해서 서로 다른 메모리 접근 레이턴시를 고려해야 할 필요성이 있다. 특히, 가상머신(100)마다 원격 메모리를 접근하는지 지역 메모리를 접근하는지를 고려해야 한다.
가상화 시스템(100)에서 가상머신(100)들 사이에 메모리 조정을 수행하는 경우에, 메모리를 전송받아야 할 수혜 가상머신(beneficiary VM)을 선택하는 것 및 해당 가상머신이 얼마의 메모리를 받아야 하는지에 대해서는 이미 연구가 수행된 바 있다. 보다 구체적인 사항은 등록번호 10-1072807 (2011.10.06 등록)를 참조할 수 있다. 하지만, 메모리를 전송받아야 하는 수혜 가상머신에게 지역 메모리와 원격 메모리 중 어떤 메모리를 전송할지 및/또는 전송되어야 하는 지역 메모리와 원격 메모리의 비율에 대해서 고려할 필요가 있다. 이러한 사항은 수혜 가상머신에서 애플리케이션 실행 성능에 직접적으로 영향을 미치기 때문이다. 또한, 수혜 가상머신에 메모리를 전송할 희생 가상머신(victim VM)에 대해서 희생 가상머신이 제공해야 하는 메모리의 양 및/또는 희생 가상머신이 제공하는 지역 메모리와 원격 메모리의 비율 또한 고려해야 한다.
전술한 바와 같은 사항을 고려하여 가상 머신 모니터(200)가 가상화 시스템(1000)에서 메모리 조정을 하기 위해서 해결해야 할 문제점을 이하에서 살펴본다.
일반적으로 가상머신을 포함하지 않는 환경의 NUMA 아키텍처 상에서 메모리 제어기와 인터커넥션이 성능 오버헤드(overhead)의 주요 원인이다. NUMA 아키텍처를 기반으로 하는 가상머신을 포함하는 가상화 시스템(1000)에서 태스크(task)를 실행하는 경우에 동일한 성능 저하 요인이 작용할 수 있다.
본 발명의 실시예에 따른 가상 머신 모니터(200)가 가상화 시스템(1000)에서 메모리 조정을 하기 위해서 해결해야 할 첫번째 문제점은, NUMA 아키텍처를 포함하는 가상화 시스템(1000)에서 가상머신 사이에 메모리 조정을 수행하는 경우에 메모리 제어기와 인터커넥션에서 발생하는 충돌(contention)을 회피해야 하는 것이다.
예컨대, 수혜 가상머신(100)에게 원격 메모리 대신에 지역 메모리를 전송하는 것이 언제나 바람직한 메모리 조정은 아닐 수 있다. 수혜 가상머신(100)이 지역 메모리에 접근하기 위해서 동일한 노드에 위치한 메모리 제어기를 통과하는 때 해당 메모리 제어기에서 충돌이 발생하는 경우에는 수혜 가상머신(100)에게 원격 메모리를 접근하는 것이 더 빠를 수 있다.
예컨대, 도3에서 프로세스1(VCPU)이 수혜 가상머신(100)에서 실행되는 것으로 가정할 수 있다. 프로세서1이 할당된 코어1(core.1)에서 제1메모리(314)로 접근 요청이 발생하는 경우 제1메모리 제어기(312)를 통해 접근해야 한다. 이때, 제1메모리 제어기(312)에 충돌이 발생하여 접근 레이턴시가 증가하는 경우에는 코어1에서 제1인터커넥션(313), 제2인터커넥션(323) 및 제2메모리 제어기(322)를 통해 제2메모리(324)로 접근 레이턴시가 더 작을 수 있다.
따라서, 지역 노드(예컨대, 제1노드)에서 지역 메모리 제어기(예컨대, 312)에서의 레이턴시(A)가, 지역 인터커넥션(예컨대, 313), 원격 인터커넥션(예컨대, 323) 및 지역 메모리 제어기(예컨대, 322)에서의 레이턴시의 합(B)보다 커지는 경우에는 수혜 가상머신(100)에 원격 메모리를 전송할 때 가상화 시스템(1000)의 전체 성능이 향상될 수 있다.
도5는 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 해결해야 할 문제점의 일예를 도시한다.
본 발명의 실시예에 따른 가상 머신 모니터(200)가 가상화 시스템(100)에서 메모리 조정을 하기 위해서 해결해야 할 두번째 문제점은, 프로세스(VCPU) 스케줄링에 따른 결과를 인식해야 하는 것이다. 프로세스 스케줄러(scheduler, 미도시)는 NUMA 아키텍처 환경에서도 그 위치와 무관하게 프로세스(VCPU)를 단순히 아이들 코어(idle core)에 할당한다. 즉, 프로세스 스케줄러(미도시)는 NUMA 아키텍처에 대해서 전혀 고려하지 않고 각각의 프로세스를 아이들 코어에 할당하여 CPU 활용도를 높이는데 치중한다. NUMA 아키텍처를 고려하여 스케줄링을 수행하는 프로세스 스케줄러를 사용할 경우, 지역 노드의 CPU에 할당하는 것을 우선시하는 경향을 가진다. 하지만 스케줄러의 목적이 CPU 활용도를 높이는 것이므로 지역 노드의 CPU들이 비지(busy) 상태에 있고 원격 노드에 아이들 CPU가 존재하는 경우 원격/지역 노드에 무관하게 아이들 CPU에 태스크를 할당하는 정책을 취하게 된다. 따라서, 이러한 프로세스 스케줄러의 스케줄링 결과에 따라 가상머신에 대한 지역 메모리는 원격 메모리로 및/또는 원격 메모리는 지역 메모리로 변경될 수 있다.
도5를 참조하여 프로세스 스케줄러의 스케줄링 시나리오를 살펴본다. 도5에서 프로세스 스케줄러에 의해 VCPU4에서 수행되는 태스크#1이 코어4에 할당하고, 태스크#2는 코어3에, 태스크#3는 코어2에, 그리고 태스크#4는 코어1에 할당되어 있다. 도5에서 태스크#1 내지 태스크#4는 각각의 지역 노드에 포함된 코어에 할당된 것이 예시된다. 순차적으로 입력된 태스크 중 태스크#1이 가장 먼저 완료된다고 가정하면, 프로세스 스케줄러는 제1가상머신(VM1) 내의 VCPU에서 수행되는 태스크#5를 코어4에 할당할 것이다.
비록 태스크#5의 지역 노드는 제1노드로서 제1메모리(314)를 지역 메모리로서 접근해야 하지만, 프로세스 스케줄러의 스케줄링 결과에 따라 태스크#5를 실행하기 위해서 접근해야 하는 제1메모리(314)는 원격 메모리가 된다. 따라서, 코어4로부터의 접근 요청에 따라 제2인터커넥션(323), 제1인터커넥션(313) 및 제1메모리 제어기(312)를 통해 제1메모리(314)에 접근할 수 있다.
따라서, 본 발명의 실시예에 따른 가상 머신 모니터(200)가 가상화 시스템(100)에서 메모리를 조정할 때 프로세스 스케줄러로부터 스케줄링 결과에 대한 정보를 이용할 수 있어야 한다.
도6은 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 해결해야 할 문제점의 다른 예를 도시한다.
본 발명의 실시예에 따른 가상 머신 모니터(200)가 가상화 시스템(100)에서 메모리 조정을 하기 위해서 해결해야 할 세번째 문제점은, 인터커넥션에서 발생하는 지연을 최소화하는 것이다. 인터커넥션 오버헤드는 원격 메모리로의 접근 레이턴시를 증가시킨다. 이에 따라 원격 메모리로의 접근이 요청되는 태스크의 수행 성능이 저하될 수 있다.
도6에서는 4개의 노드(310, 320, 330, 340)가 도시된다. 여기서, 태스크B와 태스크 Y가 모두 제3메모리(334)를 접근할 필요성이 있는 경우이다. 태스크B는 제1가상머신(VM1) 내의 VCPU에서 실행되어야 하는 업무로서 제2노드(320)에 포함된 코어에 할당된다. 태스크Y는 제2가상머신(VM2) 내의 VCPU에서 실행되어야 하는 업무로서 제1노드(310)에 포함된 코어에 할당된다. 태스크B를 실행하는 코어 및 태스크Y를 실행하는 코어는 모두 제3인터커넥션(333)을 통해 제3메모리(334)로의 접근을 수행해야 한다. 따라서, 태스크 B와 태스크 Y가 동시에 실행되는 경우 제3인터커넥션(333)의 오버헤드가 발생하여 인터커넥션 오버헤드가 야기되고 있는 접근 레이턴시를 증가시키는 결과를 초래한다.
따라서, 본 발명의 실시예에 따른 가상 머신 모니터(200)가 가상화 시스템(100)에서 메모리를 조정할 때 원격 메모리의 사용을 줄여 인터커넥션의 오버헤드가 발생하는 것을 줄일 수 있어야 한다.
도7은 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 페이지 프레임의 분류 방법을 예시한다. 도7에 도시된 바와 같이, 본 발명의 실시예에 따른 가상 머신 모니터(200)는 패턴 분할부(210, 211)를 포함할 수 있다. 도7에서는 제1패턴 분할부(210)와 제2패턴 분할부(211)와 같이 각 노드마다 따로 패턴 분할부를 구비하는 것을 도시하나 이는 단지 예시일뿐이며 하나의 패턴 분할부에서 각 노드마다 패턴을 분할할 수 있다.
본 발명의 실시예에 따른 가상 머신 모니터(200)는 패턴 분할부(210, 211)을 통해 복수의 가상머신(110_1, 110_2)의 복수의 게스트 운영체제(130_1, 130_2)에 할당된 페이지 프레임(page frame) 중 버퍼 캐시(buffer cache)로 사용되는 페이지 프레임들을 추출하고, 데이터 접근에 대한 패턴에 따라서 순차 패턴(sequential pattern), 루프 패턴(loop pattern) 및 비분류 패턴(unclassified pattern)으로 분할할 수 있다. 이때, 이러한 패턴 분할은 노드(310, 320)마다 수행될 수 있다. 즉, 본 발명의 실시예에 따른 가상 머신 모니터(200)는 접근 패턴과 메모리의 소스 노드에 따라 페이지 프레임들을 분할할 수 있다.
패턴 분할부(210, 211)가 가상머신이 사용하는 메모리들 중에서 버퍼 캐시로 사용하는 페이지 프레임들만 추출하는 방법은 두가지가 있다. 하나는 게스트 운영체제(130)에서 하이퍼콜 기능(hypercall function)을 통해 페이지 캐시(page cache)로의 페이지 프레임의 삽입, 삭제 및 재사용을 가상 머신 모니터(200)에게 직접 알려주는 방식이다. 다른 하나는 "ASPLOS 2006: Geiger: Monitoring the buffer cache in a virtual machine environment"의 논문을 통해 공개된 페이지 프레임 추출 방법을 이용할 수 있다.
기존의 방식은 각 가상 머신에서 디스크 읽기(disk read)가 발생하면, 데이터를 스토리지(storage)로부터 읽어들여 버퍼 캐시에 속한 메모리에 복사한다. 이때 접근되는 메모리는 해당 스토리지의 데이터를 캐싱하게 되는 버퍼 캐시에 속한 메모리이므로, 가상 머신 모니터(200)는 이 메모리의 주소를 알아내어 관리하게 된다. 관리되는 페이지 프레임으로 새로운 데이터가 들어오게 되면 축출(eviction) 및 재사용으로 인식하거나, 디스크 읽기/쓰기 없이 사용된 페이지 프레임이 재사용되는 경우에도 축출로 인식할 수 있다.
패턴 분할부(210, 211)에서 순차 패턴, 루프 패턴 및 비분류 패턴을 구분하는 방법은 하기와 같다.
우선, 본 발명의 실시예에서 순차 패턴은 한번만 접근되는 연속적인 블록(block)(페이지 프레임)을 의미할 수 있다. 순차 패턴의 탐지는 각 가상머신(100)에서 동작하는 어플리케이션(application) 또는 파일(file) 레벨에서의 연속성을 기준으로 한다.
예컨대, 패턴 분할부(210, 211)는 어플리케이션 레벨에서의 순차 접근의 탐지를 위해서 각 가상머신(100)에서 실행되는 프로세스를 식별한다. 가상머신(100)에서 실행되는 프로세스의 구분은 각 프로세스의 페이지 테이블을 나타내는 레지스터 값(Intel Architecture의 경우 CR3 레지스터 값)의 변화를 기준으로 하며, 이를 통하여 현재 어떤 프로세스가 메모리 레퍼런스(memory reference)를 수행하고 있는지 알 수 있다. 여기서, 메모리 레퍼런스는 프로세스가 접근 명령을 내려 메모리로 쓰기 또는 메모리로부터 읽기를 수행하는 것을 의미한다.
패턴 분할부(210, 211)는 프로세스의 구별 기준인 레지스터 값과 해당 프로세스가 접근한 페이지 프레임이 담고 있는 디스크의 페이지 프레임 번호를 한 쌍으로 수집하고, 이 정보에 기초하여 각 프로세스가 버퍼 캐시에 속한 페이지 프레임들을 접근하는 순서를 추적함으로써, 해당 프로세스가 접근하는 디스크 블록의 접근 순서를 알 수 있다. 이러한 접근 순서에 기초하여 기설정된 개수 이상의 페이지 프레임들이 연속적으로 접근될 경우 해당 페이지 프레임들을 순차 패턴으로 분류할 수 있다.
또한, 패턴 분할부(210, 211)는 버퍼 캐시에 올라와 있는 페이지의 접근, 그리고 접근하고자 하는 페이지 프레임이 원하는 데이터를 담고 있지 않은 경우에 생성되는 I/O 리퀘스트(Input/Output request)를 가상 머신 모니터(200)를 통해 모니터링함으로써 블록의 연속성을 체크할 수 있다. I/O 리퀘스트의 모니터링에 대하여 설명하면 아래와 같다.
예를 들어, 임의의 한 페이지 프레임이 어느 한 게스트 운영체제(예컨대, 제1게스트 OS)의 버퍼 캐시에 소속되어 있다고 가정한다. 그러나, 실제로 해당 페이지 프레임은 다른 게스트 운영체제(예컨대, 제2게스트 OS)에 할당되어 사용되는 경우가 발생할 수 있다. 이러한 경우, 해당 게스트 운영체제(#1)는 자신에게 할당되어 있다고 생각하는 페이지 프레임으로 접근한 것이지만, 실제로 해당 페이지 프레임에 저장된 데이터는 다른 게스트 운영체제(#2)에 저장된 것이다. 따라서 해당 페이지 프레임에는 해당 게스트 운영체제(#1)를 통해 저장된 데이터가 아닌 다른 게스트 운영체제(#2)에 의해 저장된 데이터가 존재하며, 해당 게스트 운영체제(#1)를 통해 저장된 데이터는 가상 머신 모니터(200)에 의해서 교체(swap)된다. 이에 따라 교체 입출력(swap in/out)시 발생하는 I/O 리퀘스트도 함께 모니터링하여 페이지 프레임에 저장된 데이터에 대한 정보를 파악함으로써 해당 페이지 프레임의 연속성을 파악하도록 할 수 있다.
이상에서 살펴본 바와 같이, 페이지 프레임의 접근 패턴을 파악할 때 패턴 분할부(210, 211)은 페이지 프레임의 접근 패턴이 루프(loop) 형태를 가지는 경우 루프 패턴으로 분류할 수 있다. 루프 패턴으로 인식되는 시퀀스(sequence)는 순차 패턴으로 인식된 페이지 프레임 시퀀스가 특정 레퍼런스(reference) 횟수를 주기로 순차 접근을 반복 수행할 때 해당 시퀀스 및 소속 페이지 프레임들을 루프 패턴으로 분류할 수 있다. 여기서 특정 레퍼런스 횟수는 모니터링되는 버퍼캐시에 속한 페이지 프레임들로의 접근 횟수를 의미할 수 있다. 이때, 순차 패턴 및 루프 패턴으로 분류되지 않는 나머지 페이지 프레임들을 비분류 패턴으로 분류될 수 있다.
도8은 본 발명의 실시예에 따른 가상화 시스템의 메모리 조정시에 페이지 프레임의 관리 방법을 예시한다. 도8에 도시된 바와 같이 본 발명의 실시예에 따른 가상 머신 모니터(200)는 패턴 관리부(230)를 더 포함하여 패턴 분할부(210, 211)를 통해 추출 및 분류된 순차 패턴, 루프 패턴 및 비분류 패턴에 속하는 페이지 프레임들을 각각 LRU 정책(Least Recently Used strategy)에 따라 관리할 수 있다.
순차 패턴 및 루프 패턴은 여러 개의 시퀀스(sequency), 즉 연속 페이지 프레임을 이루고, 하나의 연속 페이지 프레임을 하나의 엘리먼트(element)로 보고 연속 페이지 프레임 단위로 관리할 수 있다. 예를 들어, 임의의 페이지 프레임들이 접근될 경우 해당 연속된 페이지 프레임 전체가 LRU 정책에 따라 MRU(Most Recently Used) 위치로 이동하게 된다.
즉, 도8에 예시된 바와 같이, 순차 패턴과 루프 패턴에서 횡방향으로 묶인 복수의 페이지 프레임들은 동일한 연속 페이지 프레임을 구성하고 해당 연속 페이지 프레임 중 하나라도 접근될 경우에는 해당 연속 페이지 프레임 전체가 LRU 정책에 따라 MRU 위치로 이동하게 되는 것이다.
패턴 관리부(230)는 비분류 패턴에 속하는 페이지 프레임의 경우 페이지 프레임 단위로 관리한다.
LRU 정책은 가장 오래 전에 접근되었던 연속 페이지 프레임에 속한 페이지 프레임들을 재사용 대상으로 가장 먼저 사용하기 위한 관리 방법이다. 즉, 버퍼 캐시가 페이지 프레임의 재사용을 위해 페이지 프레임을 선택할 때, 가장 오래 전에 접근되었던 연속 페이지 프레임을 대상으로 우선 선택되도록 하는 것이다. 또한, 관리 오버 헤드를 줄이기 위하여, LRU 정책은 클록 알고리즘(clock algorithm)과 같은 다른 알고리즘으로 대체될 수 있으며, 실제 가상 머신 모니터(200)에서 각 연속 페이지 프레임은 하나의 구조체의 시퀀스에 속한 모든 페이지 프레임에 대한 정보만을 담아 관리하도록 할 수 있다.
본 발명의 실시예에 따른 가상 머신 모니터(200)는 오버커밋(overcommit)된 메모리의 재할당(reallocation)을 위해서, 기본적으로 요구 페이징(demand paging)을 사용할 수 있다. 본 발명의 실시예에 따른 가상 머신 모니터(200)는 재할당 대상을 버퍼 캐시에 속한 메모리로만 한정하여 3개의 패턴으로 구분하고 이에 속하는 물리 메모리 페이지에 대해서 요구 페이징 기법을 일부 차용할 수 있다.
이때, 본 발명의 실시에에 따른 가상 머신 모니터(200)에서 패턴 관리는 각 노드마다 구분하여 수행될 수 있다.
본 발명의 실시예에 따른 가상 머신 모니터(200)는 예컨대 수혜 가상머신에게 전송할 희생 페이지 프레임을 선택하기 위한 메모리 선택부(미도시)를 더 포함할 수 있다. 본 발명의 실시예에 따른 가상 머신 모니터(200)가 메모리 조정시에 해결해야할 전술한 3가지 문제점들을 고려하여 메모리 선택부는 수혜 가상머신에게 재할당할 페이지 프레임들을 선택할 수 있다.
예컨대, 가상 머신 모니터(200)는 지역 노드에 포함된 메모리 제어기 및 인터커넥션, 원격 노드에 포함된 메모리 제어기 및 인터커넥션에서의 오버헤드, 레이턴시 및 충돌에 대한 정보를 고려하여 지역 노드에 포함된 페이지 프레임들을 선택할지 원격 노드에 포함된 페이지 프레임들을 선택할지를 결정할 수 있다. 또한, 가상 머신 모니터(200)는 프로세스 스케줄러로부터 VCPU 스케줄링에 대한 정보를 고려하여 특정 노드가 지역 노드인지 원격 노드인지를 판단할 수 있다.
본 발명의 실시에에 따른 가상 머신 모니터(200)가 하나의 노드로부터 희생 페이지 프레임을 선택하는 경우에, 도9a에 도시된 바와 같이 동일한 노드에서 순차패턴, 루프패턴 그리고 비분류 패턴 순서로 희생 페이지 프레임을 선택할 수 있다.
보다 구체적으로, 본 발명의 실시예에 따른 가상 머신 모니터(200)는 복수의 가상머신 사이에 메모리 재할당을 위하여 동일한 노드에 포함된 페이지 프레임에 대해서 순차 패턴에 속하는 연속 페이지 프레임을 LRU 정책에 따라 우선적으로 선택하고, 전송할 메모리가 부족할 경우 루프 패턴에 속하는 연속 페이지 프레임을 LRU 정책에 따라 그 다음 선택하고, 그리고 또한 부족할 경우 비분류 패턴에 속하는 페이지 프레임을 LRU 정책에 따라 마지막으로 선택하여 선택된 페이지 프레임을 메모리를 필요로 하는 수혜 가상머신으로 할당할 수 있다.
또한, 본 발명의 실시예에 따른 가상 머신 모니터(200)의 메모리 선택부는 예컨대, 희생 가상머신이 속하는 지역 노드뿐 아니라 원격 노드에 포함된 페이지 프레임들 중에서 지역 노드에 포함된 페이지 프레임들보다 나은 후보가 있는지 탐색할 수 있다.
이때, 가상 머신 모니터(200)의 메모리 선택부는 각 노드별로 동적 임계값을 찾을 수 있다. 도9b에서는, 제1노드(310)에 대한 제1임계값은 루프패턴에 속하는 선택 대상 페이지 프레임의 가치가 제2임계값으로 표현되는 제2노드(320)인 원격 노드의 다음 선택 대상 페이지 프레임의 가치와 일치하거나 더 커지는 페이지 프레임의 가치를 나타낸다. 즉, 지역 노드를 기준으로 다음 선택 대상이 되는 페이지 프레임의 가치값이 해당 노드의 제1임계값이 되고, 이의 대체 선택 대상으로 고려되는 원격 노드의 다음 선택 대상 페이지 프레임의 가치값이 제2임계값, 제3임계값…으로 가능하다. 이때, 각 노드마다 임계값은 시간에 따라 동적으로 변경될 수 있다.
본 발명의 실시예에 따른 가상 머신 모니터(200)의 메모리 선택부가 희생 가상머신이 속하는 지역 노드뿐 아니라 원격 노드에 포함된 페이지 프레임들 중에서 지역 노드에 포함된 페이지 프레임들보다 나은 후보가 있는지 탐색할 때, 본 발명의 실시에에서는 지역 노드의 루프 패턴에 포함된 모든 페이지 프레임들은 원격 노드의 순차 패턴에 포함된 임의의 페이지 프레임보다도 재할당을 위해 선택될 가능성이 낮을 수 있다. 즉, 순차 패턴에 포함된 페이지 프레임들은 임의의 노드의 루프 패턴 및 비분류 패턴에 포함된 페이지 프레임들보다 선택 우선순위가 앞설 수 있다.
따라서, 본 발명의 실시예에 따른 가상 머신 모니터(200)의 메모리 선택부는 지역노드에 포함된 모든 순차 패턴의 페이지 프레임들이 메모리 재할당을 위해 선택된 경우 원격 노드를 선택해야 한다. 이때, 원격 노드를 선택하는 방법은 하기 3단계에 따라 수행될 수 있다.
1) 본 발명의 실시예에 따른 가상 머신 모니터(200)는 최근 소정 시간 동안에, 노드별로 메모리 트래픽을 측정할 수 있다. 예컨대, 실제 인스트럭션 실행시에 작성된 각 노드별로 공용캐시(311,321) 접근 횟수에 대한 캐시 미스 횟수의 테이블 등을 이용하여, 각 노드별로 MPKI(Misses Per 1000 Intructions)를 계산할 수 있다. 즉, 각 노드별로 1000개의 인스트럭션 당 공용캐시(311, 321)의 캐시 미스의 횟수가 계산될 수 있다.
2) 본 발명의 실시예에 따른 가상 머신 모니터(200)는 하기 수학식(1)에 따라서 후속하여 선택될 원격노드를 선택할 수 있다.
αx MPKIlocal + βx NUMInterconn. = VALUENode#N 수학식(1)
여기서, MPKIlocal은 해당 노드에 대한 MPKI 값이고, NUMinterconn은 인터커넥션을 통해서 해당 노드에 포함된 메모리로 요청되는 메모리 접근 요청 수의 합이다. α 및 β는 수학식(1)에서 각 텀의 반영 가중치를 나타내며 실험을 통해서 선택될 수 있다. α 및 β는 각각 0 이상 및 1 이하의 값으로 설정될 수 있다. 이때, 각 노드별로 상기 두 개의 텀(term)을 합산한 VALUE값이 가장 작은 원격 노드가, 지역 노드에 이후에, 희생 페이지 프레임을 선택할 노드로서 선택될 수 있다.
상기 VALUE값은 각 메모리 노드가 단위 시간당 처리하는 메모리 접근 수에 의해 발생하는 노드 충돌(contention)을 나타내는 수치이다. 각 메모리 노드로 들어오는 메모리 접근 요청은 (1) 해당 노드를 지역 노드로 사용하는 코어에서의 접근 요청 (2) 이외의 코어에서 해당 메모리 노드로 들어오는 접근 요청으로 구성될 수 있다. VALUE값은 이들 메모리 접근 요청의 숫자 합을 나타내며 α 및 β값을 1로 설정할 경우 해당 메모리 노드로 요청되는 메모리 접근 요청의 총 개수를 나타낼 수 있다. 이는 일반적인 메모리 노드에서의 충돌에 의한 접근 속도 저하는 메모리 접근 횟수와 상관관계가 높은 경향에서 기인한다. 다만, α 및 β값의 설정을 통해 지역 메모리와 원격 메모리 요청의 충돌 계산의 반영 비율을 조정함으로써 조정된 충돌 추정값을 계산하도록 하여, 각 노드의 서비스 수준(충돌을 반영한 메모리 접근 속도 추정치)을 제어하는 정책을 적용시킬 수 있도록 수학식(1)이 구성된다.
예컨대, 지역 노드의 메모리 접근을 우선시하도록 하는 정책을 적용시킬 경우 α값을 크게하면 실제 충돌 값보다 크게 조정된 충돌 추정치를 얻게되어 실제 지역 노드의 서비스 수준이 계산치보다 높을 수 있다. 따라서, 해당 수식의 결과값(VALUE)은 서비스 수준 제어 정책을 반영한 각 노드의 현재 충돌 정도를 판단하는 값으로 기능할 수 있다.
즉, 수학식(1)은 메모리 조정을 위해 전송될 페이지를 고를 때 가능한 메모리 노드들 중에서 메모리 접근 요청의 수에 따른 충돌 발생으로 접근 속도가 떨어지는 현상이 더 적게 발생하는 노드를 고르기 위한 기준으로서 사용될 수 있다.
본 발명의 실시예에 따른 가상머신 모니터(200)는 전술한 바와 같은 기능을 컴퓨팅 시스템에서 수행할 수 있도록 하는 하드웨어 모듈 및/또는 소프트웨어 모듈로 구현될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해되어야 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
1000: 가상화 시스템
100: 가상머신
200: 가상 머신 모니터
300: 하드웨어, NUMA 아키텍처
130: 게스트 OS
310: 제1노드
320: 제2노드
210, 211: 패턴 분할부
230: 패턴 관리부

Claims (6)

  1. 각각 프로세스를 실행하는 코어, 공용캐시, 메모리 제어기, 인터커넥션 및 메모리를 포함하는 복수의 노드를 구비하는 비대칭 메모리 접근 아키텍처 상에서, 복수의 가상 머신 및 가상 머신 모니터를 포함하는 가상화 시스템에서 수행되는 상기 복수의 가상 머신에 할당된 메모리를 조정하는 방법으로서,
    상기 가상 머신 모니터에서, 상기 복수의 노드별로, 상기 복수의 가상 머신의 복수의 게스트 운영체제에 할당된 페이지 프레임들 중 버퍼 캐시로 사용되는 페이지 프레임들을 추출하고 데이터 접근에 대한 패턴에 따라 페이지 프레임들을 순차 패턴, 루프 패턴 및 비분류 패턴으로 분할하는 단계;
    상기 가상 머신 모니터에서, 상기 복수의 노드별로, 상기 분할된 페이지 프레임들을 LRU 정책에 따라 관리하되, 상기 순차 패턴 및 상기 루프 패턴에 속하는 페이지 프레임들은 연속 페이지 프레임 단위로 관리하고 상기 비분류 패턴에 속하는 페이지 프레임은 페이지 프레임 단위로 관리하는 단계;
    상기 가상 머신 모니터에서, 상기 프로세스를 상기 코어에 할당하는 프로세스 스케줄링 결과, 상기 복수의 노드별로 상기 메모리 제어기의 레이턴시, 및 상기 복수의 노드별로 상기 인터커넥션의 레이턴시 중 적어도 하나를 고려하여 상기 복수의 가상 머신간에 메모리 재할당을 수행하는 단계를 포함하는,
    가상화 시스템에서 메모리 조정방법.
  2. 제1항에 있어서,
    상기 재할당을 수행하는 단계는:
    상기 복수의 노드별로 재할당이 가능한 페이지 프레임을 판단하는 단계를 포함하는,
    가상화 시스템에서 메모리 조정방법.
  3. 제1항에 있어서,
    상기 재할당을 수행하는 단계에서,
    상기 복수의 노드 중 동일한 노드에서 상기 순차 패턴에 속한 페이지 프레임들은 상기 루프 패턴에 속한 페이지 프레임들에 비해 우선적으로 선택되고, 상기 루프 패턴에 속한 페이지 프레임들은 상기 비분류 패턴에 속한 페이지 프레임들에 비해 우선적으로 선택되어 재할당되는,
    가상화 시스템에서 메모리 조정방법.
  4. 제1항에 있어서,
    상기 재할당을 수행하는 단계에서,
    상기 순차 패턴에 속한 페이지 프레임들은 상기 복수의 노드 중 임의의 노드에 포함된 상기 루프 패턴에 속한 페이지 프레임들에 비해 우선적으로 선택되어 재할당되는,
    가상화 시스템에서 메모리 조정방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 재할당을 수행하는 단계는:
    상기 복수의 가상 머신 중 메모리를 할당 받아야 하는 수혜 가상 머신이 속한 노드의 페이지 프레임을 상기 수혜 가상 머신이 속하지 않은 노드의 페이지 프레임에 비해 우선적으로 상기 수혜 가상 머신에 재할당하는 단계를 포함하는,
    가상화 시스템에서 메모리 조정방법.
  6. 제5항에 있어서,
    상기 재할당을 수행하는 단계는, 상기 복수의 노드 중 상기 수혜 가상 머신이 속한 노드를 제외한 나머지 노드 중 추가적으로 페이지 프레임을 전송할 원격 노드를 선택하는 단계를 더 포함하며,
    상기 원격 노드를 선택하는 단계는:
    상기 복수의 노드별로 수학식(αx MPKIlocal + βx NUMInterconn. = VALUENode#N)에 따라 획득한 상기 VALUE값이 가장 작은 노드를 선택하며,
    여기서, MPKIlocal은 노드 N에 대한 1000개의 인스트럭션 당 공용캐시의 캐시 미스 값이고, NUMinterconn은 인터커넥션을 통해 노드 N으로 요청되는 메모리 접근 요청의 개수를 나타내며,
    여기서, α 및 β는 각각 MPKIlocal 및 NUMinterconn에 대한 가중치를 나타내며 0 이상 및 1 이하의 값을 갖는,
    가상화 시스템에서 메모리 조정방법.
KR1020140018939A 2014-02-19 2014-02-19 가상화 시스템에서 메모리 조정방법 KR101587579B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140018939A KR101587579B1 (ko) 2014-02-19 2014-02-19 가상화 시스템에서 메모리 조정방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140018939A KR101587579B1 (ko) 2014-02-19 2014-02-19 가상화 시스템에서 메모리 조정방법

Publications (2)

Publication Number Publication Date
KR20150097981A KR20150097981A (ko) 2015-08-27
KR101587579B1 true KR101587579B1 (ko) 2016-01-22

Family

ID=54059533

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140018939A KR101587579B1 (ko) 2014-02-19 2014-02-19 가상화 시스템에서 메모리 조정방법

Country Status (1)

Country Link
KR (1) KR101587579B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747469B2 (en) 2017-07-17 2020-08-18 SK Hynix Inc. Memory system and operating method of the same

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102513961B1 (ko) * 2015-11-11 2023-03-27 삼성전자주식회사 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
KR102441992B1 (ko) * 2017-11-09 2022-09-08 한국전자통신연구원 분리 메모리 관리 방법 및 장치
KR102144011B1 (ko) * 2019-02-15 2020-08-12 성균관대학교산학협력단 가상화 서비스에서 페이지 캐시 관리 방법 및 장치
KR20200116372A (ko) 2019-04-01 2020-10-12 에스케이하이닉스 주식회사 저장 장치, 컨트롤러 및 컨트롤러의 동작 방법
KR102650571B1 (ko) 2020-11-12 2024-03-26 한국전자통신연구원 역가상화 환경용 혼성 메모리 관리 장치 및 방법
CN117851291B (zh) * 2024-03-07 2024-06-21 北京象帝先计算技术有限公司 内存访问系统、电子组件及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101072807B1 (ko) * 2010-09-30 2011-10-14 한국과학기술원 가상 머신 모니터 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060184938A1 (en) * 2005-02-17 2006-08-17 Intel Corporation Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
WO2011120019A2 (en) * 2010-03-26 2011-09-29 Virtualmetrix, Inc. Fine grain performance resource management of computer systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101072807B1 (ko) * 2010-09-30 2011-10-14 한국과학기술원 가상 머신 모니터 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747469B2 (en) 2017-07-17 2020-08-18 SK Hynix Inc. Memory system and operating method of the same

Also Published As

Publication number Publication date
KR20150097981A (ko) 2015-08-27

Similar Documents

Publication Publication Date Title
KR101587579B1 (ko) 가상화 시스템에서 메모리 조정방법
US9977738B2 (en) NUMA scheduling using inter-VCPU memory access estimation
US9672158B2 (en) Asymmetric memory migration in hybrid main memory
JP4209906B2 (ja) 低消費電力メモリ管理方法及びその方法を用いた計算機
US10838864B2 (en) Prioritizing local and remote memory access in a non-uniform memory access architecture
Liu et al. Optimizing virtual machine consolidation performance on NUMA server architecture for cloud workloads
US10235290B2 (en) Hot page selection in multi-level memory hierarchies
Koller et al. Centaur: Host-side ssd caching for storage performance control
KR102028096B1 (ko) 하이퍼바이저 기반의 가상 머신 격리 장치 및 방법
US11340945B2 (en) Memory congestion aware NUMA management
US10534720B2 (en) Application aware memory resource management
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
US20210132979A1 (en) Goal-directed software-defined numa working set management
JP6042170B2 (ja) キャッシュ制御装置及びキャッシュ制御方法
US11144473B2 (en) Quality of service for input/output memory management unit
CN113010452B (zh) 一种高效且支持QoS的虚拟内存架构
KR101701378B1 (ko) 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법
Tai et al. SLA-aware data migration in a shared hybrid storage cluster
WO2015161804A1 (zh) 一种Cache分区的方法及装置
CN116710886A (zh) 精简配置的分离式存储器中的页面调度
KR101587600B1 (ko) Numa 시스템상에서 가상머신간의 통신방법
Park et al. Weight-aware cache for application-level proportional i/o sharing
Hwang et al. UniCache: Hypervisor managed data storage in RAM and flash
US11687359B2 (en) Hybrid memory management apparatus and method for many-to-one virtualization environment
Kehne et al. GPrioSwap: towards a swapping policy for GPUs

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
FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 4