KR20150100041A - Numa 시스템상에서 가상머신간의 통신방법 - Google Patents
Numa 시스템상에서 가상머신간의 통신방법 Download PDFInfo
- Publication number
- KR20150100041A KR20150100041A KR1020140021340A KR20140021340A KR20150100041A KR 20150100041 A KR20150100041 A KR 20150100041A KR 1020140021340 A KR1020140021340 A KR 1020140021340A KR 20140021340 A KR20140021340 A KR 20140021340A KR 20150100041 A KR20150100041 A KR 20150100041A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- node
- virtual machine
- shared memory
- virtual machines
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명의 NUMA 시스템상에서 가상머신간의 통신방법은 각각 프로세스를 실행하는 코어, 공용캐시, 메모리 제어기 및 메모리를 포함하는 복수의 노드를 구비하는 비대칭 메모리 접근(NUMA) 시스템 상에서, 가상머신간의 통신방법으로서, 상기 복수의 노드별로 메모리 접근 빈도를 모니터링하여 메모리 제어기의 부하 정보를 획득하는 단계; 상기 부하 정보에 근거하여 센더 가상머신의 노드 위치, 리시버 가상머신의 노드 위치 및 공유 메모리의 노드 위치의 조합마다 발생하는 레이턴시를 예측하여 레이턴시 예측 테이블을 생성하는 단계; 상기 레이턴시 예측 테이블을 이용하여 상기 가상머신간의 통신에 이용되는 상기 공유 메모리의 노드 위치를 선택하는 단계; 및 상기 공유 메모리를 통해 상기 가상머신간 통신을 수행하는 단계를 포함할 수 있다.
Description
본 발명은 NUMA 시스템상에서 가상머신간의 통신방법에 관한 것이다. 보다 구체적으로, NUMA 시스템상에서 NUMA 특성을 고려하여 통신 효율을 높일 수 있는 가상머신간의 통신방법에 관한 것이다.
최근 특정 CPU(Central Processing Unit)에서 접근하는 물리 메모리의 접근 시간이 어떤 코어에서 수행되는가에 따라 변하는 비대칭성을 갖는 비대칭 메모리 접근(NUMA: Non Uniform Memory Access) 시스템이 널리 이용되고 있습니다. CPU는 코어로 지칭될 수 있다. 이러한 현상은 비대칭 메모리 접근 시스템을 갖고 있는 구조적 특성에 기인한다. 비대칭 메모리 접근 시스템의 경우 지역 노드(local node)에 속한 메모리 접근을 하는 경우와 원격 노드(remote node)에 속한 메모리를 접근하는 경우에 시간 차이가 발생하기 때문이다.
현재 NUMA 아키텍처 상에서 가상화가 실행되고 있다. 가상화(Virtualization)는 하드웨어 자원(hardware)을 멀티플렉싱(multiplexing)함으로써 하나의 물리 컴퓨터 상에서 다수의 가상머신(virtual machine)을 통해 다수의 운영 시스템(OS: operating system)을 실행시킬 수 있도록 한다. 중앙 처리 장치(CPU: Central Processing Unit) 및 I/O(Input/Output) 장치는 시간 단위로 나누어 해당 시간만큼 사용하는 방식으로 여러 게스트 운영 시스템(guest OS)에 의해 공유될 수 있다.
동일한 물리 컴퓨터 상에 존재하는 복수의 가상머신 사이의 통신을 효율적으로 수행할 필요성이 있다. 종래에는 복잡한 TCP/IP 경로를 사용하여 동일한 물리 컴퓨터 상의 가상머신 사이에 통신이 수행되어 그 성능이 저하되었다. 이러한 성능 저하를 회피하기 위해서 공유 메모리를 통한 메모리 복사 기법을 이용하여 가상머신 사이에 통신을 수행하는 방식이 제안되었다. 이러한 메모리 복사 기법을 통해 종래의 복잡한 TCP/IP 경로를 제거하고 2번의 메모리 복사를 통한 효율적인 통신 수행이 가능해졌으며 통신 속도 또한 개선되었다.
하지만, 종래의 공유 메모리를 통한 가상머신 사이의 통신 방법은 NUMA 특성에 대해 전혀 고려를 하지 않고 있다. 따라서, 공유 메모리의 위치에 따라서 가상머신의 통신에 소요되는 시간이 달라지게 된다.
NUMA 특성을 고려하여 NUMA 환경에 적합한 가상머신 사이의 통신 방법을 제공할 필요성이 대두되고 있다.
본 발명은 종래의 필요성을 충족시키기 위해 안출된 것으로써, NUMA 특성을 고려하여 NUMA 환경에 적합한 가상머신 사이의 통신 방법을 제공하는 것을 목적으로 한다.
본 발명은 NUMA 시스템에서 공유메모리의 위치를 최적화함으로써 가상머신 사이의 통신 효율성을 높이는 것을 목적으로 한다.
본 발명이 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 본 발명의 기재로부터 당해 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따른 NUMA 시스템상에서 가상머신간의 통신방법은, 각각 프로세스를 실행하는 코어, 공용캐시, 메모리 제어기 및 메모리를 포함하는 복수의 노드를 구비하는 비대칭 메모리 접근(NUMA) 시스템 상에서, 가상머신간의 통신방법으로서, 상기 복수의 노드별로 메모리 접근 빈도를 모니터링하여 메모리 제어기의 부하 정보를 획득하는 단계; 상기 부하 정보에 근거하여 센더 가상머신의 노드 위치, 리시버 가상머신의 노드 위치 및 공유 메모리의 노드 위치의 조합마다 발생하는 레이턴시를 예측하여 레이턴시 예측 테이블을 생성하는 단계; 상기 레이턴시 예측 테이블을 이용하여 상기 가상머신간의 통신에 이용되는 상기 공유 메모리의 노드 위치를 선택하는 단계; 및 상기 공유 메모리를 통해 상기 가상머신간 통신을 수행하는 단계를 포함할 수 있다.
본 발명의 실시예에 따라, 상기 부하 정보를 획득하는 단계는: 상기 복수의 노드별로, 해당 노드에 포함된 상기 코어 각각에 대해 MPKI(Cache Miss Per Kilo Instruction)을 측정하여 상기 코어 각각에 대한 상기 MPKI의 합을 계산하는 단계를 포함할 수 있다.
본 발명의 실시예에 따라, 상기 공유 메모리 노드 위치를 선택하는 단계는 주기적으로 반복 수행될 수 있다.
본 발명의 실시예에 따라, 상기 공유 메모리를 통해 상기 가상머신간 통신을 수행하는 단계는: 상기 센더 가상머신이 상기 공유 메모리에 전송할 데이터를 쓰기하는 단계; 및 상기 리시버 가상머신이 상기 공유 메모리에 쓰기된 상기 데이터를 읽기하는 단계를 포함할 수 있다.
본 발명에 따르면 NUMA 특성을 고려하여 NUMA 환경에 적합한 가상머신 사이의 통신 방법을 제공할 수 있다.
또한, 본 발명에 따르면 NUMA 시스템에서 공유메모리의 위치를 최적화함으로써 가상머신 사이의 통신 효율을 높일 수 있다.
도1은 NUMA 시스템의 구성을 예시한다.
도2는 본 발명의 실시예에 따른 가상머신간 통신 방법을 수행하는 전체 시스템을 예시한다.
도3은 본 발명의 실시예에 따라, NUMA 시스템에서 노드별로 메모리 제어기의 부하 정보를 측정하는 과정을 예시한다.
도4는 본 발명의 실시예에 따른 레이턴시 예측 테이블을 예시한다.
도5는 본 발명의 실시예에 따른 가상머신간 통신 동작을 예시한다.
도2는 본 발명의 실시예에 따른 가상머신간 통신 방법을 수행하는 전체 시스템을 예시한다.
도3은 본 발명의 실시예에 따라, NUMA 시스템에서 노드별로 메모리 제어기의 부하 정보를 측정하는 과정을 예시한다.
도4는 본 발명의 실시예에 따른 레이턴시 예측 테이블을 예시한다.
도5는 본 발명의 실시예에 따른 가상머신간 통신 동작을 예시한다.
이하, 본 발명의 바람직한 실시예의 상세한 설명이 첨부된 도면들을 참조하여 설명된다. 그러나, 본 발명의 실시형태는 여러 가지의 다른 형태로 변형될 수 있으며, 본 발명의 범위가 이하 설명하는 실시형태로만 한정되는 것은 아니다. 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있으며, 도면들 중 인용부호들 및 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 인용부호들로 표시됨을 유의해야 한다. 참고로 본 발명을 설명함에 있어서 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하에서는 비대칭 메모리 접근(NUMA) 시스템에 대해서 살펴본 후 본 발명의 실시예에 따른 가상머신 사이의 통신 방법에 대해서 상세하게 알아본다.
도1은 NUMA 시스템의 구성을 예시한다. NUMA 시스템(100)은 비대칭 메모리 접속(NUMA) 시스템으로서 코어별로 메모리 접근 시간 또는 메모리 접근 레이턴시(latency)가 균등하지 않은 시스템을 지칭한다. 본 발명의 실시예에 따른 NUMA 시스템은 복수의 노드(node)를 포함할 수 있으며, 도1에서는 2개의 노드(11, 12)를 포함하는 것이 예시된다. 일반적으로 하나의 프로세서는 하나의 노드에 해당하며, 복수개의 노드는 복수개의 프로세서가 포함됨을 의미할 수 있다. 실시예에 따라 하나의 프로세서가 복수 개의 노드를 가질 수도 있다.
노드(11, 12) 당 포함되는 코어의 개수는 가변적이며 일반적으로 노드당 4~8개의 코어가 포함될 수 있다. 도1에서는 제1노드(11)에 제1코어 내지 제4코어(core1 내지 core4)가 포함되고 제2노드(12)에 제5코어 내지 제8코어(core5 내지 core8)가 포함되는 것이 예시된다.
본 발명의 NUMA 시스템(100)에서 메모리 영역은 도면부호 20 및 점선으로 구분되며 메모리 서브시스템(20)으로 지칭될 수 있다. 코어로부터의 메모리 접근 요청은 메모리 서브시스템(20)으로의 접근 요청을 의미한다.
본 발명의 실시예에 따른 NUMA 시스템(100)은 메모리 서브시스템(20) 내에 공용 캐쉬(31,32)를 포함할 수 있다. 제1공용 캐쉬(31)는 제1노드(11)에 포함된 4개의 코어에 의해 공유되고 제2공용 캐쉬(32)는 제2노드(12)에 포함된 4개의 코어에 의해 공유될 수 있다. 본 발명의 실시예에서 공용 캐쉬(31, 32)는 레벨3 캐쉬일 수 있다. 일반적으로 각각의 코어는 그 내부에 레벨1(level 1) 및 레벨2(level 2) 캐쉬를 구비한다. 또한 각 노드에는 해당 노드에 포함된 코어들끼리 공유할 수 있는 레벨3 (level 3) 캐쉬를 포함할 수 있다. 이러한 레벨3 캐쉬는 LLC(last-level chache)로도 지칭될 수 있다.
코어로부터 전달된 메모리 접근 요청은 동일 노드에 포함된 공용캐쉬(31,32)를 탐색한 뒤, 캐쉬 히트(cache hit)가 발생하는 경우 공용캐쉬(31,32)로부터 원하는 데이터를 획득한다. 이하에서 이를 일차 메모리 접근 요청으로 지칭한다.
노드(11, 12) 각각은 해당 메모리(61,62)를 포함한다. 즉, 제1노드(11)는 제1메모리(61)를 포함하고 제2노드(12)는 제2메모리(62)를 포함할 수 있다. 이때, 제1노드(11)에 대해서 제1메모리(61)는 지역 메모리이고 제2메모리(62)는 원격 메모리에 해당한다. 마찬가지로 제2노드(12)에 대해서 제2메모리(62)는 지역 메모리이고 제1메모리(61)는 원격 메모리이다. 본 발명의 실시예에서 제1메모리(61) 및 제2메모리(62)는 예컨대 일련의 DRAM(Dynamic Random-Access Memory)을 포함한 메모리 모듈인 DIMM(dual in-line memory module)일 수 있다.
공용캐쉬(31,32)에서 캐쉬 미스(cache miss)가 발생하는 경우 공용 캐쉬(31, 32)로부터 도1에 도시된 메모리 제어기(41, 42)에 실제 메모리 접근 요청이 전달된다. 여기서, 실제 메모리 접근 요청은 메모리 제어기(41, 42)를 통한 제1메모리(61) 또는 제2메모리(62)로의 접근 요청으로서, 이하에서 이차 메모리 접근 요청으로 지칭한다.
즉, 메모리 제어기(41, 42)는 동일한 노드(31, 32)에 포함된 공용캐쉬(31, 32)로부터의 이차 메모리 접근 요청에 따라 동일한 노드(31,32)에 포함된 지역 메모리(local memory)에 접근할 수 있다. 예컨대, 메모리 제어기(41,42)는 초당 대략 수 GB(giga byte)의 메모리 접근을 처리할 수 있다.
공용캐쉬(31,32)에서 캐쉬 미스(cache miss)가 발생하는 경우 동일한 노드(31, 32)에 포함되지 않은 원격 메모리로의 접근도 가능하다. 이때, 공용 캐쉬(31, 32)로부터의 이차 메모리 접근 요청은 인터커넥션(51 및 52)으로 전달될 수 있다. 예컨대, 제1공용캐쉬(31)로부터 이차 메모리 접근 요청이 제1인터커넥션(51)으로 전달되고 이후 제1버스(71)를 통해 제2노드(12)에 포함된 제2인터커넥션(52) 및 제2메모리 제어기(42)를 이용하여 제2메모리(62)로의 접근이 달성될 수 있다.
이와 마찬가지로, 제2공용캐쉬(32)로부터의 이차 메모리 접근 요청은 제2인터커넥션(52)에 전달되어, 순차적으로 제2버스(72), 제1인터커넥션(51) 및 제1메모리 제어기(41)를 통해 제1메모리(61)에 접근이 달성될 수 있다.
서로 다른 노드(11, 12)에 포함된 인터커넥션(51,52) 사이에는 버스(71,72)가 위치하며, 이때 각 버스(71,72)는 각각 단방향일 수 있다. 이에 따라 제1노드(11)와 제2노드(12) 사이에는 두 개의 버스(71,72)가 포함되어 양방향 통신이 가능할 수 있다. 하지만, 이는 단지 실시예일뿐이며 하나의 양방향 버스를 통해 제1인터커넥션(51)과 제2인터커넥션(52) 사이에 양방향 통신이 달성될 수 있다.
인터커넥션(51, 52)을 통해 원격 메모리를 접근하는 경우에는, 메모리 제어기(41,42)를 통한 지역 메모리를 접근하는 경우보다 1.5배 큰 메모리 접근 레이턴시(latency)를 가질 수 있다. 즉, 원격 메모리로의 접근시 지역 메모리로의 접근시보다 많은 시간이 소요될 수 있다. 이때, 인터커넥션(51,52) 또한 시간당 처리할 수 있는 처리 용량이 정해져있으며 일반적으로 메모리 제어기(41,42)의 처리용량에 비해 낮다.
프로세스는 코어에서의 실행 단위가 된다. 각각의 프로세스는 자신의 메모리를 임의의 메모리 영역에 가질 수 있다. 코어가 특정 프로세스를 실행할 때 코어는 해당 프로세스의 메모리를 가지고 있는 메모리 영역으로의 메모리 접근 요청을 생성한다. 프로세스와 이를 실행할 코어의 다양한 매핑(mapping)이 가능하고 프로세스의 메모리는 이주가 가능하다. 특정 시간에 하나의 프로세스는 하나의 코어를 점유하여 실행될 수 있다. 프로세스(프로세스(Process)는 일반적으로 운영체제 내에서 실행중인 응용 프로그램이나 가상화 시스템 소프트웨어의 VCPU(Vitual CPU)로 정의할 수 있다.
도1에서, 제1코어에서는 제1가상머신(VM1)의 VCPU가 실행되고, 제1메모리(61)로 메모리 접근이 수행되는 것이 예시된다. 이 경우 제1가상머신(VM1)의 노드는 제1노드라고 지칭할 수 있다. 제8코어에서는 제3가상머신(VM3)의 VCPU가 실행되고 제2메모리(62)로 메모리 접근이 수행되는 것이 예시된다. 이 경우 제3가상머신(VM3)의 노드는 제2노드로 지칭할 수 있다. 이와 대조적으로, 제1노드(11)에 위치한 제4코어에서는 제2가상머신(VM2)의 VCPU가 실행되지만 해당 VCPU의 메모리는 제2노드(12)에 위치한 제2메모리(62)인 것이 예시된다. 따라서, 제4코어는 제1인터커넥션(51), 제2인터커넥션(52) 및 제2메모리 제어기(42)를 통해 제2메모리(62)로 접근을 수행하고 있다. 이 경우에 제2가상머신(VM2)의 노드는 제2노드로 지칭할 수 있다.
도1에 도시된 바와 같은 NUMA 시스템(100)에서 원격 노드에 위치하는 메모리로의 접근시 지역 노드에 위치하는 메모리로의 접근때보다 긴 응답시간이 요구된다. 또한, 복수개의 코어들로부터의 접근 요청에 따라 공유캐쉬(31,32), 메모리 제어기(41,42) 및/또는 인터커넥션(51,52)이 동시에 처리해야 하는 업무가 충돌(contention)하는 경우 응답시간이 더욱 지연될 수 있다. 이들은 NUMA 시스템(100)의 성능을 저하시키는 큰 요인이다.
종래의 공유 메모리를 통한 가상머신 간의 통신은 NUMA 시스템(100)의 구조에 대해서는 전혀 고려를 함이 없이 공유 메모리의 위치를 설정하였다. 하지만, 가상머신 간에 통신시에 발생하는 공유 메모리에 대한 읽기 및 쓰기 동작에 소요되는 시간은 NUMA 시스템(100)의 구조에서 공유 메모리의 위치에 따라 달라질 수 있다.
따라서, 본 발명의 실시예에서는 NUMA 시스템(100)에서 발생할 수 있는 레이턴시 및/또는 충돌을 고려하여 공유 메모리를 통한 가상머신 간의 통신시에 최적화된 공유 메모리의 위치를 찾고자 한다. 보다 구체적으로 본 발명의 실시예에 따른 가상머신 간의 통신방법에서는 NUMA 시스템을 갖는 하드웨어 상에 존재하는 가상머신들이 공유 메모리를 사용해 통신할 때, NUMA 시스템상의 최적의 노드(또는 위치)에 공유 메모리를 위치시킴으로써 통신 속도를 증가시킬 수 있다.
도2에서 공유 메모리 선택 모듈(410)은 예컨대 제1노드(11) 또는 제2노드(12) 중 어느 하나르 공유 메모리의 노드 위치로 선택할 수 있다. 선택에 따라 제1노드(11)에 위치한 공유 메모리(81) 또는 제2노드(12)에 위치한 공유 메모리(82)가 가상머신간 통신시에 공유 메모리로서 이용될 수 있다.
도2는 본 발명의 실시예에 따른 가상머신간 통신 방법을 수행하는 전체 시스템을 예시한다. 도2에 도시된 바와 같이, 본 발명의 실시예에 따른 가상머신간 통신 방법을 수행하는 시스템은 도1에 도시된 바와 같은 NUMA 시스템(100) 상에 존재하는 복수의 가상머신(VM1, VM2...) 및 가상 머신 모니터(200: VMM: Virtual Machine Monitor)를 포함할 수 있다. 가상 머신 모니터(200)는 가상화 환경을 제어하는 역할을 수행할 수 있다.
도2에 도시된 바와 같이, 각각의 가상머신(310, 320)은 해당 가상머신(310, 320)에서 실행될 수 있는 어플리케이션(311, 321)을 포함하고 통신 모듈(312, 322)을 이용하여 서로 통신할 수 있다. 이때, 가상머신(310, 320) 사이의 통신은 가상 머신 모니터(200)에 의해 관장될 수 있다.
도2에 도시된 바와 같이, 본 발명의 실시예에 따른 가상머신간 통신 방법을 수행하는 시스템은 공유 메모리 선택 모듈(410)과 프로파이링 모듈(420)을 더 포함할 수 있다.
프로파일링 모듈(420: profiling module)은 NUMA 시스템(100)의 각 노드(11, 12) 내에 위치한 코어들의 메모리 접근 빈도를 모니터링하여 각 노드(11, 12)에 위치한 메모리 제어기(41, 42)의 부하 정보를 측정할 수 있다.
도3은 본 발명의 실시예에 따라, NUMA 시스템(100)에서 노드별로 메모리 제어기의 부하 정보를 측정하는 과정을 예시한다. 도2에 도시된 바와 같이, 프로파일링 모듈(420)은 각 코어별로 MPKI(Cache Miss Per Kilo Intruction), 즉, 1000개의 명령 당 캐쉬 미스율을 측정하여 실제 메모리(61, 62)에 접근하는 명령의 빈도를 측정할 수 있다. MPKI 값이 높을수록 메모리 제어기(41, 42)의 충돌 정도가 높아지게 된다. 프로파일링 모듈(420)은 MPKI를 계산할 때 하드웨어 PMU (Performance Monitoring Unit) 값을 읽어 코어별로 캐쉬 미스의 개수와 명령(instruction)의 개수를 카운트하여 사용할 수 있다.
도3에 도시된 바와 같이, 프로파일링 모듈(420)은 제1코어, 제2코어 내지 제4코어 각각에 대해서 MPKI를 15, 31 및 3으로 계산한 후 해당 노드(제1노드:11)에 대한 MPKI_SUM인 49을 도출할 수 있다. 도3에서 도시되지 않은 코어(예컨대, 코어3)의 경우 MPKI가 없는 것으로 가정되었다. 또한, 프로파일링 모듈(420)은 제5코어, 제6코어 내지 제8코어 각각에 대해서 MPKI를 27, 1 및 3으로 계산한 후 해당 노드(제2노드: 12)에 대한 MPKI_SUM을 31로 도출할 수 있다.
본 발명의 실시예에 따른 가상머신간 통신 방법에서는 각 노드별로 도출된 MPKI_sum을 이용하여 공유 메모리의 최적의 위치를 결정할 수 있다.
본 발명의 실시예에 따른 가상머신간 통신 방법을 수행할 수 있는 시스템의 공유 메모리 선택 모듈(410)은 가상머신(310, 320) 사이에 통신에 이용되는 공유 메모리의 최적의 노드 위치를 결정할 수 있다. 보다 구체적으로, 공유 메모리 선택 모듈(410)은 프로파일링 모듈(420)에서 노드별로 메모리 제어기(41,42)의 부하 정도와 실제 통신을 수행하는 가상머신들이 위치한 노드(11, 12)의 위치 정보를 사용하여, 가상머신(310, 320)들이 통신을 수행할때마다 공유 메모리가 어떠한 노드에 위치하는 것이 최적의 성능을 보장하는지를 결정할 수 있다.
도4는 본 발명의 실시예에 따른 레이턴시 예측 테이블을 예시한다. 공유 메모리 선택 모듈(410)은 프로파일링 모듈(420)에서 도4의 (a)에 도시된 바와 같은 노드별 부하량에 대한 프로파일링 정보(421)를 이용한다.
공유 메모리 선택 모듈(410)은 도4의 (b)에 도시된 바와 같은 레이턴시 예측 테이블(412)을 작성한다. 레이턴시 예측 테이블(412)은 센더(sender) 노드, 리시버(receiver) 노드, 및 공유 메모리 노드 조합마다 한 개씩 존재할 수 있으며, 각 노드의 부하값에 따라 다른 레이턴시 예측 값을 가질 수 있다. 예측되는 레이턴시값은 가상 머신간의 통신시 발생하는 메모리 복사에 해당하는 레이턴시일 수 있다.
도4에서 NUMA 시스템(100)은 제1노드 내지 제3노드를 포함하고, 통신시 정보를 전송하는 가상머신(센더)이 NUMA 시스템(100)의 제1노드에서 실행되고, 통신시 정보를 수신하는 가상머신(리시버)이 NUMA 시스템(100)의 제2노드에서 실행되고 있다고 가정한다.
도4의 (b)의 첫번째 테이블에서는 공유 메모리가 제1노드에 위치한 경우에 스루풋(throughput)을 예측한다. 이때, 초당 907.5MB의 속도가 예측된다. 도4의 (b)의 두번째 테이블에서는 공유 메모리가 제2노드에 위치한 경우에 스루풋을 예측하며, 이때, 초당 871.8MB의 속도가 예측된다. 도4의 (b)의 3번째 테이블에서는 공유 메모리가 제3노드에 위치한 경우에 스루풋을 예측하며, 이때, 초당 847.3MB의 속도가 예측된다. 여기서, 쓰루풋은 통신시 가상 머신간의 통신시 발생하는 메모리 복사에 해당하는 쓰루풋일 수 있다.
본 발명의 실시예에 따른 공유 메모리 선택 모듈(410)은 센더 가상머신과 리시버 가상머신의 노드 위치 정보와 각 노드들의 부하 정보를 이용해 공유 메모리의 위치에 따른 예상 레이턴시 값을 얻을 수 있으며, 가장 작은 레이턴시를 가질 때의 노드 위치를 공유 메모리의 위치로 선정할 수 있다. 이때, 레이턴시값과 쓰루풋은 서로 역수 관계를 가질 수 있다.
도4에 도시된 바와 같은 레이턴시 예측 테이블을 생성하는 때 시뮬레이션 및/또는 실제 실험에 따른 값을 사용할 수 있다.
본 발명의 실시예에 따른 공유 메모리 선택 모듈(410) 및/또는 프로파일링 모듈(420)은 예컨대 호스트 가상머신(400)에 포함될 수 있다. 예컨대, 호스트 가상머신(400)은 디폴트로서 하드웨어(hardware)에 직접 접근하도록 디폴트(default) 설정될 수 있는 유일한 가상머신일 수 있다. 또한, 호스트 가상머신(400)을 통해서 가상 머신 모니터(200)가 관리되고 나머지 가상머신(310, 320)이 론치(launch)될 수 있다. 예컨대, 리눅스(Linux) 환경에서 호스트 가상머신(400)은 도메인0(dom0)일 수 있으며 나머지 가상머신(310, 320)은 도메인U(domU: unprivileged domain)일 수 있다.
도5는 본 발명의 실시예에 따른 가상머신간 통신 동작을 예시한다. 도5에 도시된 바와 같이, 제1가상머신(310)과 제2가상머신(320)은 공유 메모리 선택 모듈(410)을 통해 선택된 노드에 위치한 공유 메모리를 사용하여 통신을 수행한다.
예컨대, 도2를 참조하여 통신 과정을 간단히 설명하면 아래와 같다. 공유 메모리가 위치한 노드가 제1노드(11)인 경우로 가정한다. 센더 가상머신(310)은 제1노드(11)의 제1메모리(61)에 위치한 공유 메모리(81)에 접근하여 전송할 데이터를 쓰기할 수 있다. 그 다음, 리시버 가상머신(320)은 제1노드(11)의 제1메모리(61)에 위치한 해당 공유 메모리(81)에 접근하여 센더 가상머신(310)이 쓰기한 데이터를 읽기하여 수신할 수 있다.
보다 구체적으로, 예컨대, 호스트 가상머신(400)에는 프로파일링 모듈(420)에서 획득한 프로파일링 정보(421)와 함께 가상머신 리스트(411)가 관리될 수 있다. 도5에서, 가상머신 리스트(411)에서는 제1가상머신이 제1노드에서 실행되고, 제2가상머신은 제6노드에서 실행되고, 그리고 제3가상머신은 제7노드에서 실행되는 것이 예시된다. 도5에서는 프로파일링 정보(421)와 가상머신 리스트(411)가 호스트 가상머신(400)과 같이 가상 머신 모니터(200)와 다른 장소에서 관리되는 것이 도시되나 이는 단지 예시일 뿐이며 프로파일링 정보(421)와 가상머신 리스트(411)는 가상 머신 모니터(200) 또는 별도의 메모리에 저장되어 관리되는 것도 가능하다.
본 발명의 실시예에 따른 공유 메모리 선택 모듈(410)은 프로파일링 정보(421), 가상머신 리스트(411) 및/또는 레이턴시 예측 테이블(412)을 이용하여 최적의 공유 메모리 노드(413)를 결정한다. 이때, 공유 메모리 선택 모듈(410)에 의해 선택된 최적의 공유 메모리 노드(413)에 대한 정보는 주기적으로, 예컨대 매 초마다 갱신될 수 있다. 공유 메모리 선택 모듈(410)은 최적의 공유 메모리 노드(413)에 대한 정보를 예컨대 가상 머신 모니터(200)를 통해 가상머신(310, 320)과 공유할 수 있다. 따라서, 가상머신(310, 320)들이 서로 통신을 수행할 때 공유 메모리 선택 모듈(410)에서 선택된 노드에 위치한 공유 메모리를 통해 통신을 수행할 수 있다.
이때, 공유 메모리 선택 모듈(410)에서 선택된 최적의 공유 메모리 노드(413)에 대한 정보는 주기적으로 갱신되므로 가상머신들(310, 320)이 실제 통신을 수행하는 시점에 최적의 성능을 갖도록 통신이 수행될 수 있다.
본 발명의 실시예에서, 호스트 가상머신(400)과 나머지 가상머신(310, 320)이 공유 메모리의 최적 노드에 대한 정보를 주고받을 때 가상 머신 모니터(200)에 포함된 저장소(예컨대, XenStore)가 이용될 수 있다. 또한, 가상머신(310, 320)이 상기 노드 정보를 사용하여 최적 노드에 위치한 메모리를 할당받을 때 하이퍼콜(hypercall) 기능을 이용하여 가상 머신 모니터(200)의 도움을 받을 수 있다.
이상에서 살펴본 바와 같이 본 발명의 실시예에 따른 가상머신간 통신 방법은 NUMA 구조를 가진 하드웨어 내에 존재하는 가상머신들 사이에 공유 메모리를 사용해 통신을 수행하는 상황에서, 각 NUMA 노드의 충돌 정보와 가상머신들이 위치한 노드 정보를 사용해 최적의 공유 메모리의 노드 위치를 얻을 수 있다. 이를 통해 가상머신간 통신 속도를 향상시킬 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해되어야 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: NUMA 시스템
11, 12: 노드
31, 32: 공용캐쉬
41, 42: 메모리 제어기
51, 52: 인터커넥션
61, 62: 메모리
81, 82: 공유 메모리
200: 가상 머신 모니터
310, 320: 가상머신
410: 공유 메모리 선택 모듈
420: 프로파일링 모듈
11, 12: 노드
31, 32: 공용캐쉬
41, 42: 메모리 제어기
51, 52: 인터커넥션
61, 62: 메모리
81, 82: 공유 메모리
200: 가상 머신 모니터
310, 320: 가상머신
410: 공유 메모리 선택 모듈
420: 프로파일링 모듈
Claims (4)
- 각각 프로세스를 실행하는 코어, 공용캐시, 메모리 제어기 및 메모리를 포함하는 복수의 노드를 구비하는 비대칭 메모리 접근(NUMA) 시스템 상에서, 가상머신간의 통신방법으로서,
상기 복수의 노드별로 메모리 접근 빈도를 모니터링하여 메모리 제어기의 부하 정보를 획득하는 단계;
상기 부하 정보에 근거하여 센더 가상머신의 노드 위치, 리시버 가상머신의 노드 위치 및 공유 메모리의 노드 위치의 조합마다 발생하는 레이턴시를 예측하여 레이턴시 예측 테이블을 생성하는 단계;
상기 레이턴시 예측 테이블을 이용하여 상기 가상머신간의 통신에 이용되는 상기 공유 메모리의 노드 위치를 선택하는 단계; 및
상기 공유 메모리를 통해 상기 가상머신간 통신을 수행하는 단계를 포함하는,
NUMA 시스템상에서 가상머신간의 통신방법. - 제1항에 있어서,
상기 부하 정보를 획득하는 단계는:
상기 복수의 노드별로, 해당 노드에 포함된 상기 코어 각각에 대해 MPKI(Cache Miss Per Kilo Instruction)을 측정하여 상기 코어 각각에 대한 상기 MPKI의 합을 계산하는 단계를 포함하는,
NUMA 시스템상에서 가상 머신간의 통신방법. - 제1항에 있어서,
상기 공유 메모리 노드 위치를 선택하는 단계는 주기적으로 반복 수행되는,
NUMA 시스템상에서 가상 머신간의 통신방법. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 공유 메모리를 통해 상기 가상머신간 통신을 수행하는 단계는:
상기 센더 가상머신이 상기 공유 메모리에 전송할 데이터를 쓰기하는 단계; 및
상기 리시버 가상머신이 상기 공유 메모리에 쓰기된 상기 데이터를 읽기하는 단계를 포함하는,
NUMA 시스템상에서 가상 머신간의 통신방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140021340A KR101587600B1 (ko) | 2014-02-24 | 2014-02-24 | Numa 시스템상에서 가상머신간의 통신방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140021340A KR101587600B1 (ko) | 2014-02-24 | 2014-02-24 | Numa 시스템상에서 가상머신간의 통신방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150100041A true KR20150100041A (ko) | 2015-09-02 |
KR101587600B1 KR101587600B1 (ko) | 2016-01-22 |
Family
ID=54241832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140021340A KR101587600B1 (ko) | 2014-02-24 | 2014-02-24 | Numa 시스템상에서 가상머신간의 통신방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101587600B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230100407A (ko) | 2021-12-28 | 2023-07-05 | 성균관대학교산학협력단 | Numa 구조 성능 개선 시스템, 컴퓨터 판독 가능한 기록매체, 컴퓨터 프로그램 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110091134A (ko) * | 2010-02-05 | 2011-08-11 | 한국과학기술원 | 하이브리드 메모리 관리 방법, 시스템 및 컴퓨터 판독가능매체 |
KR20130068685A (ko) * | 2011-12-16 | 2013-06-26 | 한국과학기술원 | 하이브리드 주메모리 시스템 및 이를 위한 태스크 스케줄링 방법 |
-
2014
- 2014-02-24 KR KR1020140021340A patent/KR101587600B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110091134A (ko) * | 2010-02-05 | 2011-08-11 | 한국과학기술원 | 하이브리드 메모리 관리 방법, 시스템 및 컴퓨터 판독가능매체 |
KR20130068685A (ko) * | 2011-12-16 | 2013-06-26 | 한국과학기술원 | 하이브리드 주메모리 시스템 및 이를 위한 태스크 스케줄링 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR101587600B1 (ko) | 2016-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691363B2 (en) | Virtual machine trigger | |
US9977738B2 (en) | NUMA scheduling using inter-VCPU memory access estimation | |
TWI621023B (zh) | 用於支持對經由nvme控制器、通過網路存取的遠端存儲設備的熱插拔的系統和方法 | |
US8443376B2 (en) | Hypervisor scheduler | |
Liu et al. | Optimizing virtual machine consolidation performance on NUMA server architecture for cloud workloads | |
JP6029550B2 (ja) | 計算機の制御方法及び計算機 | |
EP2857952A1 (en) | Method for processing input/output request, host, server, and virtual machine | |
KR101385827B1 (ko) | 가상화된 환경들 내의 리소스 할당 | |
US10691481B2 (en) | System and method for detection of underprovisioning of memory in virtual machines | |
JP2011065650A (ja) | ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 | |
KR101587579B1 (ko) | 가상화 시스템에서 메모리 조정방법 | |
Song et al. | Architecting flash-based solid-state drive for high-performance I/O virtualization | |
US11188365B2 (en) | Memory overcommit by speculative fault | |
TW202215223A (zh) | 用於加速器的裝置及用於處理資料的方法 | |
US10341177B2 (en) | Parallel computing system and migration method | |
KR20230162100A (ko) | 계층형 메모리 관리를 오프로드하기 위한 방법들 및 장치들 | |
US11860792B2 (en) | Memory access handling for peripheral component interconnect devices | |
CN115495433A (zh) | 一种分布式存储系统、数据迁移方法及存储装置 | |
KR101587600B1 (ko) | Numa 시스템상에서 가상머신간의 통신방법 | |
US20230185593A1 (en) | Virtual device translation for nested virtual machines | |
KR101701378B1 (ko) | 가상 머신과 파일을 공유하는 가상화 장치 및 그 방법 | |
Pickartz et al. | Virtualization in HPC-An Enabler for Adaptive Co-Scheduling? | |
US20240211293A1 (en) | Efficient queue shadowing for virtual machines | |
Ko et al. | Toward enhancing block I/O performance for virtualized hadoop cluster | |
US20230385118A1 (en) | Selective execution of workloads using hardware accelerators |
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 |