KR102650571B1 - 역가상화 환경용 혼성 메모리 관리 장치 및 방법 - Google Patents
역가상화 환경용 혼성 메모리 관리 장치 및 방법 Download PDFInfo
- Publication number
- KR102650571B1 KR102650571B1 KR1020200151106A KR20200151106A KR102650571B1 KR 102650571 B1 KR102650571 B1 KR 102650571B1 KR 1020200151106 A KR1020200151106 A KR 1020200151106A KR 20200151106 A KR20200151106 A KR 20200151106A KR 102650571 B1 KR102650571 B1 KR 102650571B1
- Authority
- KR
- South Korea
- Prior art keywords
- page
- memory
- request
- nvram
- dram
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 174
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims abstract description 10
- 238000007726 management method Methods 0.000 claims description 34
- 238000013507 mapping Methods 0.000 claims description 16
- 238000013508 migration Methods 0.000 claims description 8
- 230000005012 migration Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 7
- 230000001186 cumulative effect Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims 2
- 238000005516 engineering process Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000003672 processing method Methods 0.000 description 4
- 239000010410 layer Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- 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
-
- 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
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
역가상화 환경용 혼성 메모리 관리 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 DRAM 및 NVRAM이 공존하는 혼성 메모리가 탑재되는 복수의 물리노드들과, 복수의 물리 노드들의 자원들이 가상화되는 가상 머신과, 복수의 물리 노드들 각각의 자원을 가상 머신의 형태로 추상화시키는 복수의 물리 노드들 각각에 상응하는 하이퍼바이저들을 포함하는 역가상화 기반 다중 노드 컴퓨팅 시스템에서의 메모리 관리 장치에 있어서, 하이퍼바이저에 구현되어 혼성 메모리를 관리하되, 적어도 하나의 프로그램이 기록된 메모리 및 프로그램을 실행하는 프로세서를 포함하며, 프로그램은, 원격 물리 노드로부터의 페이지 관련 요청을 혼성 메모리를 참조하여 처리한 후, 처리 결과를 원격 물리 노드에 응답하는 원격 요청 서비스 모듈, 가상 머신으로부터의 내부 페이지 폴트 요청을 로컬 또는 원격 물리 노드의 혼성 메모리를 참조하여 처리한 후, 처리 결과를 가상 머신에 응답하는 내부 요청 서비스 모듈 및 내부 요청 서비스 모듈로부터 요청된 신규 추가된 페이지의 혼성 메모리에서의 배치 위치 문의 요청에 응답하는 데이터 배치 모듈을 포함한다.
Description
기재된 실시예는 다수의 컴퓨팅 노드가 결합하여 하나의 가상 머신으로 추상화되는 역가상화 환경에서 노드 내에 다양한 특성의 메모리가 탑재된 혼성 메모리의 관리 기술에 관한 것이다.
메모리 기술의 발전에 힘입어 기존 DRAM 기반의 메인 메모리 뿐만 아니라 다양한 종류의 메모리 기술이 이미 상용화되었거나 상용화를 앞두고 있다. 대표적으로 상변화 메모리(Phase Change Memory, PRAM), 스핀주입자반전 자기저항메모리(Spin Transfer Torque-Magnetoresistive RAM, STT-MRAM) 등이 있으며, 인텔의 3D Xpoint 제품군은 상변화 메모리 기술을 기반으로 하고 있다.
이와 같은 차세대 메모리 기술의 공통적인 특징은 비휘발성(Non-volatility)을 들 수 있으며, 이는 전원이 꺼졌을 때 데이터가 소멸되는 DRAM과는 달리 데이터가 그대로 보존되는 특성을 말한다. 하지만 성능, 특히 접근 지연 시간(Access Latency)의 경우 DRAM에 비해 떨어지는 경향이 있으며, 그 중에서도 쓰기 지연 시간의 성능 차이는 매우 극심하다. 따라서 비휘발성 메모리는 단독으로 사용되는 경우는 드물고 기존 DRAM과 함께 혼성 메모리의 형태로 사용되는 경우가 대부분이다.
기존의 가상화 기술은 단일 컴퓨팅 노드의 자원을 파티셔닝하여 다수의 가상 머신의 형태로 보여지도록 하는 것이었으나, 최근 응용프로그램의 컴퓨팅 및 메모리 자원 요구량이 급격히 증가함에 따라 기존 가상화와는 반대로 다수의 컴퓨팅 자원을 결합하여 하나의 가상 머신의 형태로 추상화하는 역가상화 기술이 등장하여 주목받고 있다. 역가상화 기술 적용시 기존의 응용프로그램은 물리적 노드 경계를 넘어 병렬로 실행될 수 있으며, 이러한 과정에서 노드 간 메모리 공유가 필연적으로 발생하게 된다. 뿐만 아니라, 게스트 운영체제 코드 역시 다수의 노드에서 병렬로 실행되며 이로 인한 메모리 공유 작업의 효율적인 처리가 가능해야 한다. 기존 가상화와 마찬가지로 역가상화 역시 각 노드의 자원을 추상화하는 가상 머신 관리자(하이퍼바이저)가 존재하며, 노드 간 메모리 공유 및 관리 역시 가상 머신 관리자가 일반적으로 담당하게 된다.
현재까지 공개된 역가상화 기술은 노드별 단일 계층 메모리, 즉 DRAM만 탑재된 시스템을 가정하여 설계 및 구현되어 있다. 비휘발성 메모리 등이 포함된 혼성 메모리가 탑재된 시스템은 메모리 데이터의 노드 내 메모리 계층별 이동, 복제 및 관리를 추가적으로 고려해야 하는 관계로 이를 정확히 인지하여 동작하는 최적화된 메모리 관리자가 지원되어야 한다. 따라서, 노드 간 그리고 노드 내 혼성 메모리의 다중 메모리 계층을 모두 인지 및 고려하여 최적의 성능을 보장 가능한 새로운 메모리 관리 소프트웨어(SW) 기술이 필요하다.
기재된 실시예는 다양한 특성의 메모리가 탑재된 혼성 메모리 기반의 컴퓨팅 노드가 다수 결합하여 하나의 가상 머신으로 추상화되는 역가상화 환경에서 노드 간, 노드 내 다중 메모리 계층 간 메모리 데이터를 효율적으로 관리하여 성능, 메모리 용량, 에너지 사용량 등 효과적인 최적화가 가능하도록 지원하는 데 그 목적이 있다.
실시예에 따른 DRAM 및 NVRAM이 공존하는 혼성 메모리가 탑재되는 복수의 물리노드들과, 복수의 물리 노드들의 자원들이 가상화되는 가상 머신과, 복수의 물리 노드들 각각의 자원을 가상 머신의 형태로 추상화시키는 복수의 물리 노드들 각각에 상응하는 하이퍼바이저들을 포함하는 역가상화 기반 다중 노드 컴퓨팅 시스템에서의 메모리 관리 장치에 있어서, 하이퍼바이저에 구현되어 혼성 메모리를 관리하되, 적어도 하나의 프로그램이 기록된 메모리 및 프로그램을 실행하는 프로세서를 포함하며, 프로그램은, 원격 물리 노드로부터의 페이지 관련 요청을 혼성 메모리를 참조하여 처리한 후, 처리 결과를 원격 물리 노드에 응답하는 원격 요청 서비스 모듈, 가상 머신으로부터의 내부 페이지 폴트 요청을 로컬 또는 원격 물리 노드의 혼성 메모리를 참조하여 처리한 후, 처리 결과를 가상 머신에 응답하는 내부 요청 서비스 모듈 및 내부 요청 서비스 모듈로부터 요청된 신규 추가된 페이지의 혼성 메모리에서의 배치 위치 문의 요청에 응답하는 데이터 배치 모듈을 포함한다.
이때, 원격 서비스 요청 모듈은, 원격 노드로부터 메모리 요청에 따라, 해당 원격 노드에 저장된 페이지 데이터에 대한 읽기 요청인지 또는 무효화 요청인지를 판별하는 단계 및 판별 결과에 따라 선택적으로, 혼성 메모리를 참조하여 해당 페이지를 읽은 후 요청한 원격 노드에게 페이지를 전송하는 단계 또는 혼성 메모리를 참조하여 해당 페이지를 무효화한 후 요청한 원격 노드에게 완료되었음을 네트워크로 통보하는 단계를 중 하나를 수행할 수 있다.
이때, 내부 요청 서비스 모듈은, 가상 머신으로부터 내부 페이지 폴트가 발생하면, 해당 폴트가 읽기 혹은 쓰기인지를 확인하는 단계 및 확인 결과를 따라 선택적으로, 내부 페이지 폴트가 읽기 요청일 경우 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 데이터 배치 모듈에게 해당 신규 페이지에 대한 혼성 메모리 배치 및 저장 요청하는 단계 또는 내부 페이지 폴트가 쓰기 요청일 경우 쓰기 요청이 발생된 데이터를 해당 페이지에 기록하고, 다른 노드에 존재하는 페이지 사본을 모두 무효화하도록 요청하는 단계 중 하나를 수행할 수 있다.
이때, 내부 요청 서비스 모듈은, 내부 페이지 폴트가 쓰기 요청일 경우, 해당 페이지가 혼성 메모리에 이미 존재하는지를 판단하는 단계 및 해당 페이지가 혼성 메모리에 존재하지 않을 경우, 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 데이터 배치 모듈에게 해당 신규 페이지에 대한 혼성 메모리 배치 및 저장 요청하는 단계를 더 수행할 수 있다.
이때, 데이터 배치 모듈은, 내부 요청 서비스 모듈로부터 신규 페이지에 대한 배치 요청이 발생하면, DRAM 영역에 신규 페이지를 할당 가능한 여유 공간에 신규 페이지를 할당하는 단계, 할당된 신규 페이지에 대한 사용자 주소 공간으로의 매핑을 수행하는 단계, 내부 요청 서비스 모듈에게 배치 요청 처리 완료를 통보하는 단계를 수행할 수 있다.
이때, 데이터 배치 모듈은, DRAM 영역에 신규 페이지를 할당 가능한 여유 공간이 존재하지 않을 경우, NVRAM 영역에 여유 공간이 존재하는지 확인하는 단계, NVRAM에 여유 공간에 DRAM에 존재하는 기존 페이지들 중 NVRAM 영역으로 이동시킬 Victim 페이지를 선정하는 단계 및 선정된 Victim 페이지는 NVRAM의 여유 공간으로 이동한 후, 물리 주소 변경에 따른 해당 페이지의 매핑을 재수행하는 단계를 더 포함할 수 있다.
이때, Victim 페이지를 선정하는 단계는, LRU(Least Recently Used) 또는 LFU(Least Frequently Used)를 기준으로 선정할 수 있다.
이때, 데이터 배치 모듈은, NVRAM에도 여유 공간이 존재하지 않을 경우, 메모리 부족을 선언하는 단계를 포함할 수 있다.
이때, 데이터 배치 모듈은, 재배치 작업이 시작됨에 따라, N개의 DRAM 여유 공간 페이지수가 존재할 경우, DRAM으로 이주 대상 NVRAM 페이지를 N개 선정하는 단계 및 선정된 NVRAM 페이지들을 DRAM으로 이주시킨 후 해당 페이지에 대한 매핑을 재수행하는 단계를 수행할 수 있다.
이때, 데이터 배치 모듈은, DRAM 여유 공간이 존재하지 않을 경우, NVRAM 이주 대상 DRAM 페이지를 M 개 선정하는 단계, 선정된 M 개의 DRAM 페이지들에 대해 NVRAM 이주를 진행하는 단계를 수행한 후, DRAM으로 이주 대상 NVRAM 페이지를 N개 선정하는 단계 및 선정된 NVRAM 페이지들을 DRAM으로 이주시킨 후 해당 페이지에 대한 매핑을 재수행하는 단계를 수행할 수 있다.
이때, 데이터 배치 모듈은, 이주 대상 NVRAM 페이지를 N개 선정하는 단계 또는 이주 대상 DRAM 페이지를 M 개 선정하는 단계에서, 최근 접근 빈도 및 누적 접근 횟수 등을 고려한 MRU(Most Recently Used), MFU(Most Frequently Used)를 기준으로 선정할 수 있다.
실시예에 따른 DRAM 및 NVRAM이 공존하는 혼성 메모리가 탑재되는 복수의 물리노드들과, 복수의 물리 노드들의 자원들이 가상화되는 가상 머신과, 복수의 물리 노드들 각각의 자원을 가상 머신의 형태로 추상화시키는 복수의 물리 노드들 각각에 상응하는 하이퍼바이저들을 포함하는 역가상화 기반 다중 노드 컴퓨팅 시스템에서 하이퍼바이저에 구현되는 메모리 관리 장치에 의한 역가상화 환경용 혼성 메모리 관리 방법은, 원격 노드로부터 메모리 요청에 따라, 해당 원격 노드에 저장된 페이지 데이터에 대한 읽기 요청인지 또는 무효화 요청인지를 판별하는 단계 및 판별 결과에 따라 선택적으로, 혼성 메모리를 참조하여 해당 페이지를 읽은 후 요청한 원격 노드에게 페이지를 전송하는 단계 또는 혼성 메모리를 참조하여 해당 페이지를 무효화한 후 요청한 원격 노드에게 완료되었음을 네트워크로 통보하는 단계를 중 하나를 수행할 수 있다.
실시예에 따른 DRAM 및 NVRAM이 공존하는 혼성 메모리가 탑재되는 복수의 물리노드들과, 복수의 물리 노드들의 자원들이 가상화되는 가상 머신과, 복수의 물리 노드들 각각의 자원을 가상 머신의 형태로 추상화시키는 복수의 물리 노드들 각각에 상응하는 하이퍼바이저들을 포함하는 역가상화 기반 다중 노드 컴퓨팅 시스템에서 하이퍼바이저에 구현되는 메모리 관리 장치에 의한 역가상화 환경용 혼성 메모리 관리 방법은, 가상 머신으로부터 내부 페이지 폴트가 발생하면, 해당 폴트가 읽기 혹은 쓰기인지를 확인하는 단계 및 확인 결과를 따라 선택적으로, 내부 페이지 폴트가 읽기 요청일 경우 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 신규 페이지를 혼성 메모리에 배치 및 저장하는 단계 또는 내부 페이지 폴트가 쓰기 요청일 경우 쓰기 요청이 발생된 데이터를 해당 페이지에 기록하고, 원격 물리 노드에 존재하는 페이지 사본을 모두 무효화하도록 요청하는 단계 중 하나를 수행할 수 있다.
이때, 무효화하도록 요청하는 단계는, 내부 페이지 폴트가 쓰기 요청일 경우, 해당 페이지가 혼성 메모리에 이미 존재하는지를 판단하는 단계 및 해당 페이지가 혼성 메모리에 존재하지 않을 경우, 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 신규 페이지를 대한 혼성 메모리 배치 및 저장하는 단계를 더 포함할 수 있다.
이때, 신규 페이지를 혼성 메모리에 배치 및 저장함에 있어, DRAM 영역에 신규 페이지를 할당 가능한 여유 공간에 신규 페이지를 할당하는 단계 및 할당된 신규 페이지에 대한 사용자 주소 공간으로의 매핑을 수행하는 단계를 더 포함할 수 있다.
이때, 신규 페이지를 혼성 메모리에 배치 및 저장함에 있어, DRAM 영역에 신규 페이지를 할당 가능한 여유 공간이 존재하지 않을 경우, NVRAM 영역에 여유 공간이 존재하는지 확인하는 단계, NVRAM에 여유 공간에 DRAM에 존재하는 기존 페이지들 중 NVRAM 영역으로 이동시킬 Victim 페이지를 선정하는 단계 및 선정된 Victim 페이지는 NVRAM의 여유 공간으로 이동한 후, 물리 주소 변경에 따른 해당 페이지의 매핑을 재수행하는 단계를 더 포함할 수 있다.
이때, Victim 페이지를 선정하는 단계는, LRU(Least Recently Used) 또는 LFU(Least Frequently Used)를 기준으로 선정할 수 있다.
이때, 신규 페이지를 혼성 메모리에 배치 및 저장함에 있어, NVRAM에도 여유 공간이 존재하지 않을 경우, 메모리 부족을 선언하는 단계를 포함할 수 있다.
실시예에 따라, DRAM과 NVRAM이 공존하는 혼성 메모리를 탑재한 다수의 노드를 결합한 형태의 역가상화 시스템에서 효율적인 메모리 관리를 통한 최적화된 성능을 기대할 수 있다. 사용자 응용프로그램은 코드 수정 없이 분산 혼성 메모리를 활용할 수 있으며, 접근 패턴을 고려하여 혼성 메모리의 계층별 할당 및 페이지 이동 등을 통해 NVRAM으로 인한 성능 하락을 최소화하는 동시에 NVRAM의 높은 집적도에 기반한 대규모의 메모리 공간을 활용할 수 있다.
도 1은 본 발명이 적용될 역가상화 기반 다중 노드 컴퓨팅 시스템의 계층별 구조도이다.
도 2는 실시예에 따른 메모리 관리자의 구현 예시도이다.
도 3은 실시예에 따른 메모리 관리자의 개략적인 내부 구성 블록도이다.
도 4는 실시예에 따른 원격 노드 메모리 요청 처리 방법을 설명하기 위한 순서도이다.
도 5는 실시예에 따른 내부 노드 메모리 요청 처리 방법을 설명하기 위한 순서도이다.
도 6은 도 5의 신규 페이지에 대한 혼성 메모리로의 배치 요청 처리 단계(S540)를 상세히 설명하기 위한 순서도이다.
도 7은 실시예에 따른 혼성 메모리에 저장된 기존 페이지들에 대한 배치 단계를 설명하기 위한 순서도이다.
도 8은 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
도 2는 실시예에 따른 메모리 관리자의 구현 예시도이다.
도 3은 실시예에 따른 메모리 관리자의 개략적인 내부 구성 블록도이다.
도 4는 실시예에 따른 원격 노드 메모리 요청 처리 방법을 설명하기 위한 순서도이다.
도 5는 실시예에 따른 내부 노드 메모리 요청 처리 방법을 설명하기 위한 순서도이다.
도 6은 도 5의 신규 페이지에 대한 혼성 메모리로의 배치 요청 처리 단계(S540)를 상세히 설명하기 위한 순서도이다.
도 7은 실시예에 따른 혼성 메모리에 저장된 기존 페이지들에 대한 배치 단계를 설명하기 위한 순서도이다.
도 8은 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 8을 참조하여 실시예에 따른 장치 및 방법이 상세히 설명된다.
도 1은 본 발명이 적용될 역가상화 기반 다중 노드 컴퓨팅 시스템의 계층별 구조도이다.
도 1을 참조하면, 물리 노드들(HW)(110-1, 110-2) 각각에는 휘발성 메모리인 DRAM(111)과 비휘발성 메모리인 NVRAM(112)가 공존하는 혼성 메모리가 탑재된다.
물리 노드들(110-1, 110-2) 각각의 상부에는 노드별 호스트 운영체제(Host OS)(120-1, 120-2)가 실행된다.
하이퍼바이저(Hypervisor)(130-1, 130-2)는 물리 노드들(110-1, 110-2) 각각의 자원을 가상 머신의 형태로 추상화시킨다.
알 실시예에 따라, 하이퍼바이저(130-1, 130-2)는 도 1에 도시된 바와 같이 호스트 운영체제(120-1, 120-2)상에서 실행될 수 있는데, 이를 'Type-2 가상화'라 칭한다.
다른 실시예에 따라, 하이퍼바이저(130-1, 130-2)는 호스트 운영체제 없이 단독으로 하드웨어 상에서 직접 실행될 수 있는데, 이를 'Type-1 가상화'라 칭한다.
가상 머신(Virtual Machine)(140)은 다중 물리 노드들(110-1, 110-2)의 자원을 함께 아우르는 형태로 추상화되어, 그 위에서 단독의 게스트 운영체제(Guest OS)(150)가 동작된다.
응용프로그램(Application)(160)은 게스트 운영체제(150)에서 실행된다.
이때, 일 실시예에 따라, 응용프로그램(160)은 단일 프로세스의 형태로 단일 물리 노드에서 수행될 수도 있다.
또한, 다른 실시에에 따라, 응용프로그램(160)은 도 1에 도시된 바와 같이 복수의 쓰레드(161)가 병렬로 실행되는 형태로 구현될 수도 있다. 이럴 경우, 하나의 프로세스에 속한 다수의 쓰레드가 단일 물리 노드의 경계를 넘어서 여러 노드 상에서 병렬로 실행될 수도 있다.
한편, 다수의 물리 노드들(110-1, 110-2)은 네트워크로 연결되어 메모리 공유 등 노드 간 통신이 가능하다.
물리 노드들(110-1, 110-2)은 각각에 탑재된 혼성 메모리의 DRAM(111)과 NVRAM(112)은 모두 고유의 물리 주소에 매핑되어, 이를 통해 각 노드의 메모리 참조가 이루어질 수 있다.
이를 위해, 실시예에 따라 각 노드에 메모리 관리자가 존재하고, 메모리 관리자는 원격 노드로부터 메모리 참조 요청이 있을 경우, 이에 대한 서비스를 수행한다.
도 2는 실시예에 따른 메모리 관리자의 구현 예시도이다.
도 2를 참조하면, 메모리 관리자(200-1, 200-2)는 물리 노드들(110-1, 110-2) 각각에 상응하는 하이버바이저(130-1, 130-2) 내에 구현될 수 있다. 이러한 메모리 관리자(200-1, 200-2)는 물리 노드들(110-1, 110-2) 간의 메모리 관리, 혼성 메모리의 계층별 관리 및 데이터 이동을 처리할 수 있다.
도 3은 실시예에 따른 메모리 관리자의 개략적인 내부 구성 블록도이다.
도 3을 참조하면, 실시예에 따른 메모리 관리자(200)는 크게 데이터 배치 모듈(210), 내부 요청 서비스 모듈(220) 및 원격 요청 서비스 모듈(230)을 포함한다.
원격 요청 서비스 모듈(230)은, 역가상화 시스템 내의 원격 노드(301)로부터 전달된 페이지 관련 요청에 대하여 혼성 메모리(110)를 참조하여 요청을 처리하고, 처리한 결과로 원격 노드(301)에 응답한다. 이러한 원격 요청 서비스 모듈(230)의 상세 동작에 대해 도 4를 참조하여 후술하기로 한다.
내부 요청 서비스 모듈(220)은, 가상 머신(140)으로부터 전달된 내부 페이지 폴트 요청에 대해 로컬 노드의 혼성 메모리(110)를 참조하거나, 원격 노드(301)에 요청하여 처리한 후 가상 머신 요청에 대해 응답한다. 이러한 내부 요청 서비스 모듈(220)의 상세 동작에 대해 도 5를 참조하여 후술하기로 한다.
데이터 배치 모듈(210)은, 신규 추가된 페이지를 혼성 메모리(110)의 DRAM과 NVRAM 중 어디에 위치시킬 것인지에 대한 내부 요청 서비스 모듈(220)의 요청에 대하여 판단하고 응답한다. 이러한 데이터 배치 모듈(210)의 상세 동작에 대해 도 6을 참조하여 후술하기로 한다.
또한, 데이터 배치 모듈(210)은, 필요시 주기적으로 혼성 메모리에 이미 저장되어 있는 페이지들을 재배치하는 기능을 담당한다. 이러한 데이터 배치 모듈(210)의 상세 동작에 대해 도 7을 참조하여 후술하기로 한다.
도 4는 실시예에 따른 원격 노드 메모리 요청 처리 방법을 설명하기 위한 순서도이다.
도 4를 참조하면, 원격 요청 서비스 모듈(230)은 원격 노드(301)로부터 메모리 요청이 전달(S410)됨에 따라, 해당 노드에 저장된 페이지 데이터에 대한 읽기 요청인지, 무효화 요청인지를 판단한다(S420).
S420의 판단 결과 원격 메모리 요청이 읽기 요청일 경우, 원격 요청 서비스 모듈(230)은 혼성 메모리(110)를 참조하여 해당 페이지를 읽은(S430) 후에, 독출된 해당 페이지를 원격 노드(301)로 전송한다(S440).
반면, S420의 판단 결과 원격 메모리 요청이 무효화 요청일 경우, 원격 요청 서비스 모듈(230)은 혼성 메모리(110)를 참조하여 해당 페이지를 무효화한(S450) 후에, 무효화 완료 결과를 원격 노드(301)로 통보한다(S460).
도 5는 실시예에 따른 내부 노드 메모리 요청 처리 방법을 설명하기 위한 순서도이다.
도 5를 참조하면, 가상 머신(140)으로부터 내부 페이지 폴트가 발생하면(S510), 내부 요청 서비스 모듈(220)은 해당 폴트가 읽기 혹은 쓰기에 대한 것인지 확인한다(S520).
S520의 확인 결과 내부 페이지 폴트가 읽기 요청일 경우, 내부 요청 서비스 모듈(220)은 해당 페이지의 최신 사본을 가지고 있는 원격 노드(301)에게 페이지 데이터를 요청하여, 네트워크를 통해 요청된 페이지를 획득한다(S530).
그런 후, 내부 요청 서비스 모듈(220)은 데이터 배치 모듈(210)에게 해당 신규 페이지에 대한 혼성 메모리 배치 및 저장을 요청한다(S540). 신규 페이지에 대한 혼성 메모리 배치 및 저장을 요청에 따른 데이터 배치 모듈(210)의 동작은 도 6을 참조하여 후술하기로 한다.
그 후, 내부 요청 서비스 모듈(220)은 페이지 폴트를 발생시킨 가상 머신(140)에게 해당 폴트에 대한 처리가 완료되었음을 통보(S560)한 후, 종료한다.
한편, S520의 확인 결과 내부 페이지 폴트가 쓰기 요청일 경우, 내부 요청 서비스 모듈(220)은 해당 페이지가 혼성 메모리에 이미 존재하는지 여부를 먼저 확인한다(S570). S570이 수행되는 이유는 쓰기 작업에 적용되는 실제 데이터 크기가 페이지 단위 크기보다 작을 수 있으므로 해당 페이지가 메모리에 존재하지 않는다면 외부 요청을 통해 페이지를 가져와야 하기 때문이다.
즉, S570의 확인 결과 해당 페이지가 혼성 메모리에 이미 존재하지 않을 경우, 내부 요청 서비스 모듈(220)은 S530 내지 S5550을 수행한 후, S580으로 진행한다.
S570의 확인 결과 해당 페이지가 혼성 메모리에 이미 존재하거나, S530 내지 S550이 수행된 이후에, 내부 요청 서비스 모듈(220)은 쓰기 요청이 발생된 데이터를 해당 페이지에 쓰기를 수행한다(S580). 이때, 페이지의 데이터가 변경되었기 때문에 원격 노드에 존재하는 페이지 사본을 모두 무효화시켜야 한다.
따라서 내부 요청 서비스 모듈(220)은 페이지 사본을 가진 원격 노드들에게 해당 페이지의 무효화 요청을 네트워크를 통해 전송한 후(S590), 가상 머신(140)에게 폴트 처리 완료를 통보한(S550) 후, 종료한다.
도 6은 도 5의 신규 페이지에 대한 혼성 메모리로의 배치 요청 처리 단계(S540)를 상세히 설명하기 위한 순서도이다.
내부 서비스 요청 모듈(220)로부터 신규 페이지에 대한 배치 요청이 발생하면(S610), 데이터 배치 모듈(210)은 DRAM 영역에 신규 페이지를 할당 가능한 여유 공간이 존재하는지의 여부를 확인한다(S620). 이때, DRAM을 우선적으로 고려하는 이유는 NVRAM 대비 접근 성능이 우월하기 때문이다.
S620의 확인 결과 여유 공간이 존재할 경우, 데이터 배치 모듈(210)은 해당 여유 공간에 신규 페이지를 할당(S630)하고, 할당 페이지에 대한 사용자 주소 공간으로의 매핑을 수행한다(S640).
그런 후, 데이터 배치 모듈(210)은 내부 요청 서비스 모듈(220)에게 배치 요청 처리 완료를 통보한 후(S650) 종료한다.
반면, S620의 확인 결과 여유 공간이 존재하지 않을 경우, 데이터 배치 모듈(210)은 NVRAM 영역에 여유 공간이 존재하는지 확인한다(S660).
S660의 확인 결과 NVRAM 영역에 여유 공간이 존재할 경우, 데이터 배치 모듈(210)은 DRAM에 존재하는 기존 페이지들 중 NVRAM 영역으로 이동시킬 Victim 페이지를 선정한다(S670).
이때, Victim 페이지를 선정하는 기준은 시스템에 따라 다양할 수 있으며, 대표적인 정책으로 LRU(Least Recently Used), LFU(Least Frequently Used) 등이 있을 수 있다.
데이터 배치 모듈(210)은 선정된 Victim 페이지를 NVRAM의 여유 공간으로 이동시킨 후, 물리 주소 변경에 따른 해당 페이지의 매핑을 재수행하고(S680), S630으로 진행하여 Victim 페이지가 이주함에 따라 생기게 된 DRAM 여유 공간에 신규 페이지를 할당하고, S640 내지 S650 단계를 수행한다.
이와 같이, 신규 페이지를 항상 DRAM 영역에 할당하는 이유는 페이지 데이터의 시간 지역성(Temporal Locality)을 고려하기 때문이다.
한편, S660의 확인 결과 NVRAM 영역에 여유 공간이 존재하지 않을 경우, 더 이상 신규 페이지를 메모리에 추가할 수 없는 상태이므로 데이터 배치 모듈(210)은메모리 부족(Out-of-Memory)을 선언한 후(S680) 종료한다.
도 7은 실시예에 따른 혼성 메모리에 저장된 기존 페이지들에 대한 배치 단계를 설명하기 위한 순서도이다.
이는 현재는 DRAM에 존재하지만 접근 빈도가 떨어지는 페이지들을 NVRAM으로 이주시키고 가까운 미래에 접근될 것으로 예측되는 NVRAM 페이지들을 미리 DRAM으로 옮김으로써 메모리 접근 성능을 향상시키는 것을 목적으로, 미리 정해진 일정 주기마다 수행될 수 있다. 그러나, 이러한 주기는 변경 설정될 수도 있다.
혼성 메모리에 저장된 기존 페이지들에 대한 재배치 작업이 시작(S710)됨에 따라, 데이터 배치 모듈(210)은 우선 DRAM에 여유 공간이 존재하는지 여부를 확인한다(S720).
S720의 확인 결과 DRAM에 여유 공간이 존재할 경우, 데이터 배치 모듈(210)은 DRAM의 여유 공간의 페이지수가 N일 경우(S730), DRAM으로 이주 대상 NVRAM 페이지를 N개 선정한다(S740).
이때, 선정 기준은 상기한 신규 페이지 배치시 Victim 페이지 선정과 마찬가지로 시스템에 따라 다양하게 지정할 수 있으며, 최근 접근 빈도 및 누적 접근 횟수 등을 고려한 MRU(Most Recently Used), MFU(Most Frequently Used) 등의 활용이 가능하다.
데이터 배치 모듈(210)은 선정된 NVRAM 페이지들을 DRAM으로 이주시킨 후 해당 페이지에 대한 매핑을 재수행(S750)한 후 종료한다.
반면, S720의 확인 결과 DRAM에 여유 공간이 존재하지 않을 경우, 데이터 배치 모듈(210)은 NVRAM 이주 대상 DRAM 페이지를 M개 선정한다(S760).
이때, M 값은 시스템에 미리 지정된 값으로 시스템 상황에 따라 변경 가능하며, 선정 기준은 상기한 NVRAM 페이지 선정 기준과 동일하게 최근 접근 빈도 또는 누적 횟수 등을 고려하여 다양하게 적용될 수 있다.
그런 후, 데이터 배치 모듈(210)은 선정된 M 개의 DRAM 페이지들에 대해 NVRAM 이주를 진행한 후 마찬가지로 이동된 페이지들의 매핑을 재수행한다(S780).
그리고, 데이터 배치 모듈(210)은 전술한 바와 같이 생성된 M개의 DRAM 여유 공간에 대해 전술한 S730 내지 S750의 NVRAM 페이지 이주를 동일하게 수행한 후 종료한다. 이때, N 값은 M과 동일하다.
도 8은 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
실시예에 따른 역가상화 환경용 혼성 메모리 관리 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.
컴퓨터 시스템(1000)은 버스(1120)를 통하여 서로 통신하는 하나 이상의 프로세서(1110), 메모리(1200), 사용자 인터페이스 입력 장치(1400), 사용자 인터페이스 출력 장치(1300) 및 스토리지(1500)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1610)에 연결되는 네트워크 인터페이스(1600)를 더 포함할 수 있다. 프로세서(1110)는 중앙 처리 장치 또는 메모리(1200)나 스토리지(1500)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1200) 및 스토리지(1500)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1200)는 ROM(1200)이나 RAM(1202)을 포함할 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
110-1, 110-2 : 물리 노드 111 : DRAM
112 : NVRAM 120-1, 120-2 : 호스트 운영체제
130-1, 130-2 : 하이퍼바이저 140 : 가상 머신
150 : 게스트 운영체제 160 : 응용 프로그램
200 : 메모리 관리자 210 : 데이터 배치 모듈
220 : 내부 요청 서비스 모듈 230 : 원격 요청 서비스 모듈
112 : NVRAM 120-1, 120-2 : 호스트 운영체제
130-1, 130-2 : 하이퍼바이저 140 : 가상 머신
150 : 게스트 운영체제 160 : 응용 프로그램
200 : 메모리 관리자 210 : 데이터 배치 모듈
220 : 내부 요청 서비스 모듈 230 : 원격 요청 서비스 모듈
Claims (18)
- DRAM 및 NVRAM이 공존하는 혼성 메모리가 탑재되는 복수의 물리노드들과, 복수의 물리 노드들의 자원들이 가상화되는 가상 머신과, 복수의 물리 노드들 각각의 자원을 가상 머신의 형태로 추상화시키는 복수의 물리 노드들 각각에 상응하는 하이퍼바이저들을 포함하는 역가상화 기반 다중 노드 컴퓨팅 시스템에서의 메모리 관리 장치에 있어서,
하이퍼바이저에 구현되어 혼성 메모리를 관리하되,
적어도 하나의 프로그램이 기록된 메모리; 및
프로그램을 실행하는 프로세서를 포함하며,
프로그램은,
원격 물리 노드로부터의 페이지 관련 요청을 혼성 메모리를 참조하여 처리한 후, 처리 결과를 원격 물리 노드에 응답하는 원격 요청 서비스 모듈;
가상 머신으로부터의 내부 페이지 폴트 요청을 로컬 또는 원격 물리 노드의 혼성 메모리를 참조하여 처리한 후, 처리 결과를 가상 머신에 응답하는 내부 요청 서비스 모듈; 및
내부 요청 서비스 모듈로부터 요청된 신규 추가된 페이지의 혼성 메모리에서의 배치 위치 문의 요청에 응답하는 데이터 배치 모듈을 포함하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제1 항에 있어서, 원격 서비스 요청 모듈은,
원격 노드로부터 메모리 요청에 따라, 해당 원격 노드에 저장된 페이지 데이터에 대한 읽기 요청인지 또는 무효화 요청인지를 판별하는 단계; 및
판별 결과에 따라 선택적으로, 혼성 메모리를 참조하여 해당 페이지를 읽은 후 요청한 원격 노드에게 페이지를 전송하는 단계; 또는
혼성 메모리를 참조하여 해당 페이지를 무효화한 후 요청한 원격 노드에게 완료되었음을 네트워크로 통보하는 단계를 중 하나를 수행하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제1 항에 있어서, 내부 요청 서비스 모듈은,
가상 머신으로부터 내부 페이지 폴트가 발생하면, 해당 폴트가 읽기 혹은 쓰기인지를 확인하는 단계; 및
확인 결과를 따라 선택적으로, 내부 페이지 폴트가 읽기 요청일 경우 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 데이터 배치 모듈에게 해당 신규 페이지에 대한 혼성 메모리 배치 및 저장 요청하는 단계; 또는
내부 페이지 폴트가 쓰기 요청일 경우 쓰기 요청이 발생된 데이터를 해당 페이지에 기록하고, 다른 노드에 존재하는 페이지 사본을 모두 무효화하도록 요청하는 단계 중 하나를 수행하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제3 항에 있어서, 내부 요청 서비스 모듈은,
내부 페이지 폴트가 쓰기 요청일 경우, 해당 페이지가 혼성 메모리에 이미 존재하는지를 판단하는 단계; 및
해당 페이지가 혼성 메모리에 존재하지 않을 경우, 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 데이터 배치 모듈에게 해당 신규 페이지에 대한 혼성 메모리 배치 및 저장 요청하는 단계를 더 수행하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제4 항에 있어서, 데이터 배치 모듈은,
내부 요청 서비스 모듈로부터 신규 페이지에 대한 배치 요청이 발생하면, DRAM 영역에 신규 페이지를 할당 가능한 여유 공간에 신규 페이지를 할당하는 단계;
할당된 신규 페이지에 대한 사용자 주소 공간으로의 매핑을 수행하는 단계;
내부 요청 서비스 모듈에게 배치 요청 처리 완료를 통보하는 단계를 수행하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제5 항에 있어서, 데이터 배치 모듈은,
DRAM 영역에 신규 페이지를 할당 가능한 여유 공간이 존재하지 않을 경우, NVRAM 영역에 여유 공간이 존재하는지 확인하는 단계;
NVRAM에 여유 공간에 DRAM에 존재하는 기존 페이지들 중 NVRAM 영역으로 이동시킬 Victim 페이지를 선정하는 단계; 및
선정된 Victim 페이지는 NVRAM의 여유 공간으로 이동한 후, 물리 주소 변경에 따른 해당 페이지의 매핑을 재수행하는 단계를 더 포함하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제6 항에 있어서, Victim 페이지를 선정하는 단계는,
LRU(Least Recently Used) 또는 LFU(Least Frequently Used)를 기준으로 선정하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제6 항에 있어서, 데이터 배치 모듈은,
NVRAM에도 여유 공간이 존재하지 않을 경우, 메모리 부족을 선언하는 단계를 포함하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제1 항에 있어서, 데이터 배치 모듈은,
재배치 작업이 시작됨에 따라, N개의 DRAM 여유 공간 페이지수가 존재할 경우, DRAM으로 이주 대상 NVRAM 페이지를 N개 선정하는 단계; 및
선정된 NVRAM 페이지들을 DRAM으로 이주시킨 후 해당 페이지에 대한 매핑을 재수행하는 단계를 수행하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제9 항에 있어서, 데이터 배치 모듈은,
DRAM 여유 공간이 존재하지 않을 경우, NVRAM 이주 대상 DRAM 페이지를 M 개 선정하는 단계; 및
선정된 M 개의 DRAM 페이지들에 대해 NVRAM 이주를 진행하는 단계를 수행한 후,
DRAM으로 이주 대상 NVRAM 페이지를 N개 선정하는 단계; 및
선정된 NVRAM 페이지들을 DRAM으로 이주시킨 후 해당 페이지에 대한 매핑을 재수행하는 단계를 수행하는, 역가상화 환경용 혼성 메모리 관리 장치. - 제10 항에 있어서, 데이터 배치 모듈은,
이주 대상 NVRAM 페이지를 N개 선정하는 단계 또는 이주 대상 DRAM 페이지를 M 개 선정하는 단계에서,
최근 접근 빈도 및 누적 접근 횟수 등을 고려한 MRU(Most Recently Used), MFU(Most Frequently Used)를 기준으로 선정하는, 역가상화 환경용 혼성 메모리 관리 장치. - DRAM 및 NVRAM이 공존하는 혼성 메모리가 탑재되는 복수의 물리노드들과, 복수의 물리 노드들의 자원들이 가상화되는 가상 머신과, 복수의 물리 노드들 각각의 자원을 가상 머신의 형태로 추상화시키는 복수의 물리 노드들 각각에 상응하는 하이퍼바이저들을 포함하는 역가상화 기반 다중 노드 컴퓨팅 시스템에서 하이퍼바이저에 구현되는 메모리 관리 장치에 의한 역가상화 환경용 혼성 메모리 관리 방법에 있어서,
원격 노드로부터 메모리 요청에 따라, 해당 원격 노드에 저장된 페이지 데이터에 대한 읽기 요청인지 또는 무효화 요청인지를 판별하는 단계; 및
판별 결과에 따라 선택적으로, 혼성 메모리를 참조하여 해당 페이지를 읽은 후 요청한 원격 노드에게 페이지를 전송하는 단계; 또는
혼성 메모리를 참조하여 해당 페이지를 무효화한 후 요청한 원격 노드에게 완료되었음을 네트워크로 통보하는 단계를 중 하나를 수행하는, 역가상화 환경용 혼성 메모리 관리 방법. - DRAM 및 NVRAM이 공존하는 혼성 메모리가 탑재되는 복수의 물리노드들과, 복수의 물리 노드들의 자원들이 가상화되는 가상 머신과, 복수의 물리 노드들 각각의 자원을 가상 머신의 형태로 추상화시키는 복수의 물리 노드들 각각에 상응하는 하이퍼바이저들을 포함하는 역가상화 기반 다중 노드 컴퓨팅 시스템에서 하이퍼바이저에 구현되는 메모리 관리 장치에 의한 역가상화 환경용 혼성 메모리 관리 방법에 있어서,
가상 머신으로부터 내부 페이지 폴트가 발생하면, 해당 폴트가 읽기 혹은 쓰기인지를 확인하는 단계; 및
확인 결과를 따라 선택적으로, 내부 페이지 폴트가 읽기 요청일 경우 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 신규 페이지를 혼성 메모리에 배치 및 저장하는 단계; 또는
내부 페이지 폴트가 쓰기 요청일 경우 쓰기 요청이 발생된 데이터를 해당 페이지에 기록하고, 원격 물리 노드에 존재하는 페이지 사본을 모두 무효화하도록 요청하는 단계 중 하나를 수행하는, 역가상화 환경용 혼성 메모리 관리 방법. - 제13 항에 있어서, 무효화하도록 요청하는 단계는,
내부 페이지 폴트가 쓰기 요청일 경우, 해당 페이지가 혼성 메모리에 이미 존재하는지를 판단하는 단계; 및
해당 페이지가 혼성 메모리에 존재하지 않을 경우, 해당 페이지의 최신 사본을 가지고 있는 원격 노드에게 페이지 데이터를 요청하고, 요청된 페이지가 네트워크를 통해 전송되면 신규 페이지를 대한 혼성 메모리 배치 및 저장하는 단계를 더 포함하는, 역가상화 환경용 혼성 메모리 관리 방법. - 제14 항에 있어서,
신규 페이지를 혼성 메모리에 배치 및 저장함에 있어, DRAM 영역에 신규 페이지를 할당 가능한 여유 공간에 신규 페이지를 할당하는 단계; 및
할당된 신규 페이지에 대한 사용자 주소 공간으로의 매핑을 수행하는 단계를 더 포함하는, 역가상화 환경용 혼성 메모리 관리 방법. - 제15 항에 있어서,
신규 페이지를 혼성 메모리에 배치 및 저장함에 있어, DRAM 영역에 신규 페이지를 할당 가능한 여유 공간이 존재하지 않을 경우, NVRAM 영역에 여유 공간이 존재하는지 확인하는 단계;
NVRAM에 여유 공간에 DRAM에 존재하는 기존 페이지들 중 NVRAM 영역으로 이동시킬 Victim 페이지를 선정하는 단계; 및
선정된 Victim 페이지는 NVRAM의 여유 공간으로 이동한 후, 물리 주소 변경에 따른 해당 페이지의 매핑을 재수행하는 단계를 더 포함하는, 역가상화 환경용 혼성 메모리 관리 방법. - 제16 항에 있어서, Victim 페이지를 선정하는 단계는,
LRU(Least Recently Used) 또는 LFU(Least Frequently Used)를 기준으로 선정하는, 역가상화 환경용 혼성 메모리 관리 방법. - 제16 항에 있어서,
신규 페이지를 혼성 메모리에 배치 및 저장함에 있어, NVRAM에도 여유 공간이 존재하지 않을 경우, 메모리 부족을 선언하는 단계를 포함하는, 역가상화 환경용 혼성 메모리 관리 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200151106A KR102650571B1 (ko) | 2020-11-12 | 2020-11-12 | 역가상화 환경용 혼성 메모리 관리 장치 및 방법 |
US17/524,441 US11687359B2 (en) | 2020-11-12 | 2021-11-11 | Hybrid memory management apparatus and method for many-to-one virtualization environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200151106A KR102650571B1 (ko) | 2020-11-12 | 2020-11-12 | 역가상화 환경용 혼성 메모리 관리 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220064713A KR20220064713A (ko) | 2022-05-19 |
KR102650571B1 true KR102650571B1 (ko) | 2024-03-26 |
Family
ID=81454522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200151106A KR102650571B1 (ko) | 2020-11-12 | 2020-11-12 | 역가상화 환경용 혼성 메모리 관리 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11687359B2 (ko) |
KR (1) | KR102650571B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101038167B1 (ko) | 2008-09-09 | 2011-05-31 | 가부시끼가이샤 도시바 | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9020801B2 (en) | 2003-08-11 | 2015-04-28 | Scalemp Inc. | Cluster-based operating system-agnostic virtual computing system |
KR20150089747A (ko) | 2014-01-28 | 2015-08-05 | 한국전자통신연구원 | 원격 직접 메모리 접근 지원 네트워크를 통한 고속 접근 보장 방법 |
KR101587579B1 (ko) | 2014-02-19 | 2016-01-22 | 한국과학기술원 | 가상화 시스템에서 메모리 조정방법 |
KR20160109848A (ko) * | 2015-03-13 | 2016-09-21 | 한국전자통신연구원 | 가상화 장치 및 이를 이용한 물리 메모리 관리 방법 |
US11240334B2 (en) * | 2015-10-01 | 2022-02-01 | TidalScale, Inc. | Network attached memory using selective resource migration |
US9971511B2 (en) * | 2016-01-06 | 2018-05-15 | Samsung Electronics Co., Ltd. | Hybrid memory module and transaction-based memory interface |
US20170242822A1 (en) | 2016-02-18 | 2017-08-24 | Samsung Electronics Co., Ltd. | Dram appliance for data persistence |
KR20170127666A (ko) * | 2016-05-12 | 2017-11-22 | 한국전자통신연구원 | 원격 메모리 제공 시스템 및 이의 페이지 폴트 처리 방법 |
US10705747B2 (en) * | 2018-03-21 | 2020-07-07 | Micron Technology, Inc. | Latency-based storage in a hybrid memory system |
US10853119B2 (en) * | 2018-11-29 | 2020-12-01 | Shanghai Jiao Tong University | GiantVM for resource aggregation |
US11507409B2 (en) * | 2020-01-22 | 2022-11-22 | Vmware, Inc. | Object-based load balancing approaches in distributed storage system |
-
2020
- 2020-11-12 KR KR1020200151106A patent/KR102650571B1/ko active IP Right Grant
-
2021
- 2021-11-11 US US17/524,441 patent/US11687359B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101038167B1 (ko) | 2008-09-09 | 2011-05-31 | 가부시끼가이샤 도시바 | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20220147462A1 (en) | 2022-05-12 |
US11687359B2 (en) | 2023-06-27 |
KR20220064713A (ko) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10365938B2 (en) | Systems and methods for managing data input/output operations in a virtual computing environment | |
EP2449469B1 (en) | Hypervisor-based management of local and remote virtual memory pages | |
US9672158B2 (en) | Asymmetric memory migration in hybrid main memory | |
US9405476B2 (en) | Systems and methods for a file-level cache | |
US8996807B2 (en) | Systems and methods for a multi-level cache | |
US9612966B2 (en) | Systems, methods and apparatus for a virtual machine cache | |
US10339056B2 (en) | Systems, methods and apparatus for cache transfers | |
US11150962B2 (en) | Applying an allocation policy to capture memory calls using a memory allocation capture library | |
JP2019057151A (ja) | メモリシステムおよび制御方法 | |
JP2022539950A (ja) | ストレージシステム、メモリ管理方法、および管理ノード | |
US10802972B2 (en) | Distributed memory object apparatus and method enabling memory-speed data access for memory and storage semantics | |
WO2013023090A2 (en) | Systems and methods for a file-level cache | |
KR102650571B1 (ko) | 역가상화 환경용 혼성 메모리 관리 장치 및 방법 | |
WO2020024588A1 (en) | A distributed memory object architecture | |
JP7524443B2 (ja) | メモリシステムおよび制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |