KR20220131605A - 클러스터 시스템의 메모리 통합 관리 방법 및 장치 - Google Patents
클러스터 시스템의 메모리 통합 관리 방법 및 장치 Download PDFInfo
- Publication number
- KR20220131605A KR20220131605A KR1020210036414A KR20210036414A KR20220131605A KR 20220131605 A KR20220131605 A KR 20220131605A KR 1020210036414 A KR1020210036414 A KR 1020210036414A KR 20210036414 A KR20210036414 A KR 20210036414A KR 20220131605 A KR20220131605 A KR 20220131605A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- type
- performance
- virtual machine
- physical node
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 452
- 238000000034 method Methods 0.000 title claims description 31
- 230000010354 integration Effects 0.000 title description 2
- 238000007726 management method Methods 0.000 claims description 44
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 230000005056 memory consolidation Effects 0.000 claims 1
- 230000015556 catabolic process Effects 0.000 abstract description 2
- 238000006731 degradation reaction Methods 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 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
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/45562—Creating, deleting, cloning virtual machine instances
-
- 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
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)
- Hardware Redundancy (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
네트워크로 서로 연결되어 있는 복수의 물리노드를 포함하는 클러스터 시스템의 메모리 통합 관리 장치는 상기 복수의 물리노드 중 하나의 물리노드를 새로운 가상머신을 배치할 노드로 결정하고, 상기 하나의 물리노드에 할당된 제1 타입의 메모리를 상기 새로운 가상머신이 필요한 메모리 용량만큼 상기 새로운 가상머신에게 분배하며, 상기 복수의 물리노드에 각각 할당된 제2 타입의 메모리를 통합 관리하여, 상기 복수의 가상머신에게 상기 제2 타입의 메모리를 분배한다. 이때 상기 제2 타입의 메모리는 상기 제1 타입의 메모리보다 접근 속도가 빠르다.
Description
본 발명은 클러스터 시스템의 메모리 통합 관리 방법 및 장치에 관한 것으로, 보다 상세하게는 클러스터 시스템에서 고속 네트워크로 연결된 컴퓨터 노드들에 장착된 메모리들을 통합하여 관리하는 클러스터 시스템의 메모리 통합 관리 방법 및 장치를 제공하는 것이다.
컴퓨터에서 처리되는 데이터의 양이 기하급수적으로 많아지고, 실시간으로 처리해야 하는 데이터의 양도 늘어나면서 컴퓨터에서 가장 빠른 데이터 저장소인 메모리의 용량에 대한 요구량이 늘어나고 있다. 그런데 현재 메모리로 많이 쓰이는 DRAM(Dynamic random access memory) 메모리는 기술적 한계로 인해 용량 증설에 한계가 있다. 하나의 CPU(Central processing unit)에 연결할 수 있는 메모리 개수에도 제한이 있고, DRAM의 구조와 DRAM의 성능 규격 문제로 인해 단일 DRAM의 용량 확장에도 제한이 많다.
이에 따라 메모리 확장 기술이 발전하고 있다. 메모리 확장 기술은 분할 메모리 혹은 분리 메모리(disaggregated memory)라고 불리며, 통상의 메모리를 의미하는 CPU와 직접 연결된 DRAM과는 분할 또는 분리된 장치들을 확장된 메모리 공간으로 활용하는 기술이다. 메모리의 확장을 위해서 인피니밴드 등 10Gbps 이상의 속도를 내는 고속 네트워크로 연결된 다른 컴퓨터의 DRAM을 활용하는 기술과 컴퓨터 내에 장착된 비휘발성 메모리 혹은 고성능 메모리를 활용하는 기술이 개발됐다. 하지만, DRAM은 위에서 언급한 용량 증설의 한계가 있으므로 다른 컴퓨터의 DRAM을 연결하는 데도 용량 증설의 한계가 존재하며, 다른 컴퓨터에서 유용하게 활용될 수도 있는 자원이기 때문에 메모리 확장 비용이 비싸다고 할 수 있다. 또한 비휘발성 메모리나 고성능 SSD(Solid state drive) 등은 DRAM에 비해 접근 속도가 수 십 배까지 느리기 때문에 이로 인해 응용 성능이 크게 하락될 수 있다. 또한 일반적으로 고속 네트워크로 연결된 다른 컴퓨터의 DRAM에 비해서도 느리다.
메모리 확장 기술의 문제 중 하나는 응용 성능의 변동이 크다는 것이다. 응용이 CPU와 직접 연결된 DRAM에 접근하는 비율이 높을수록 성능이 높아지지만, 확장된 메모리에 접근하는 비율에 따라 성능이 크게 하락할 수 있다. 확장된 메모리에 접근하는 비율은 응용의 메모리 접근 패턴에 따라 결정되기도 하지만, 컴퓨터 내에 장착된 DRAM 용량에 따라 달라지며, DRAM을 공유하는 다른 응용이 DRAM을 얼마나 사용하느냐에 따라서도 달라진다.
이러한 문제들을 해결하기 위해 두 가지 기술이 개발됐다.
첫 번째는 메모리 확장 기술을 사용한 시스템을 위한 메모리 프로파일링 기술이다. 이는 가상머신의 메모리 접근 패턴을 프로파일링하여 가용한 DRAM 용량과 확장된 메모리 용량에 따라 가상머신에서 수행 중인 응용의 성능 부하 정도를 계산하는 기술이다. 이 기술을 사용하면 가상머신의 성능을 일정수준 이상으로 보장하기 위해 어느 정도의 DRAM 용량이 필요한지 파악할 수 있다. 하지만 DRAM 용량이 남거나 부족할 때의 대비책은 제공되지 않는다.
두 번째는 단일 노드의 메모리 관리 기술이다. 이는 리눅스의 스왑(swap) 시스템을 기반으로 한 메모리 확장 시스템을 대상으로 각 가상머신의 스왑인(swap in) 및 스왑아웃(swap out)의 횟수에 따라 각 가상머신이 사용하는 DRAM 용량을 조절하는 방식이다. 확장된 메모리에 대한 접근 횟수가 많은 가상머신에게 더 많은 DRAM을 사용할 수 있게 하여 컴퓨터 내 가상머신의 평균 성능을 높이는 기술이다. 하지만 단일 노드에서 실행되는 가상머신들의 DRAM 용량만을 조절하므로, 조절할 수 있는 자원의 양에 한계가 있다.
본 발명이 해결하려는 과제는 클러스터 시스템에서 실행되는 복수의 가상머신이 활용할 수 있는 전체 메모리 용량을 확장하면서 메모리 확장으로 인한 성능 저하를 최소화시켜 가상머신들의 전체 처리량을 최대화할 수 있는 클러스터 시스템의 메모리 통합 관리 방법 및 장치를 제공하는 것이다.
본 발명의 한 실시 예에 따르면, 네트워크로 서로 연결되어 있는 복수의 물리노드를 포함하는 클러스터 시스템의 메모리 통합 관리 장치에서 메모리를 통합 관리하는 방법이 제공된다. 메모리 통합 관리 방법은 상기 복수의 물리노드 중 하나의 물리노드를 새로운 가상머신을 배치할 노드로 결정하는 단계, 상기 하나의 물리노드에 할당된 제1 타입의 메모리를 상기 새로운 가상머신이 필요한 메모리 용량만큼 상기 새로운 가상머신에게 분배하는 단계, 그리고 상기 복수의 물리노드에 각각 할당된 제2 타입의 메모리를 통합 관리하여, 상기 복수의 가상머신에게 상기 제2 타입의 메모리를 분배하는 단계를 포함하고, 상기 제2 타입의 메모리는 상기 제1 타입의 메모리보다 접근 속도가 빠르다.
상기 제2 타입의 메모리를 분배하는 단계는 상기 복수의 물리노드에서 실행 중인 복수의 가상머신 각각의 메모리 접근 패턴을 프로파일링하는 단계, 그리고 상기 복수의 가상머신의 프로파일링 정보를 토대로 상기 복수의 가상머신의 평균 성능을 가장 높일 수 있는 방향으로 상기 제2 타입의 메모리를 상기 복수의 가상머신에게 분배하는 단계를 포함할 수 있다.
상기 결정하는 단계는 상기 복수의 물리노드 중에서 가용한 제1 타입의 메모리의 양이 상기 새로운 가상머신이 필요한 메모리 용량보다 큰 물리노드를 선택하는 단계, 상기 선택된 물리노드 중에서 해당 물리노드에서 실행 중인 가상머신들의 평균 성능을 계산하는 단계, 그리고 상기 실행 중인 가상머신들의 평균 성능이 가장 높은 물리노드를 상기 새로운 가상머신을 배치할 노드로 결정하는 단계를 포함할 수 있다.
상기 제2 타입의 메모리를 분배하는 단계는 각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배하는 단계, 그리고 상기 클러스터 시스템 내 남는 제2 타입의 메모리를 상기 복수의 가상머신 중 적어도 하나의 가상머신에게 추가로 분배하는 단계를 포함할 수 있다.
상기 각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배하는 단계는 상기 해당 물리노드에서 실행 중인 가상머신별로 해당 가상머신의 성능보장에 필요한 만큼의 제2 타입의 메모리를 분배하는 단계, 그리고 상기 해당 물리노드에서 실행 중인 가상머신에게 분배된 제2 타입의 메모리가 상기 해당 물리노드에 할당된 제2 타입의 메모리의 용량을 초과한 경우, 상기 가상머신별로 설정된 단위용량만큼 상기 제2 타입의 메모리를 감소시켰을 때 성능이 가장 적게 줄어드는 가상머신의 제2 타입의 메모리를 상기 단위용량만큼 감소시키는 단계를 포함할 수 있다.
상기 각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배하는 단계는 상기 해당 물리노드에서 실행 중인 가상머신에게 분배된 제2 타입의 메모리가 상기 해당 물리노드에 할당된 제2 타입의 메모리의 용량을 초과하지 않을 때까지, 상기 감소시키는 단계를 반복하는 단계를 더 포함할 수 있다.
상기 추가로 분배하는 단계는 상기 복수의 물리노드에서 실행 중인 복수의 가상머신 중에서 설정된 단위용량만큼 상기 제2 타입의 메모리를 증가시켰을 때 성능이 가장 많이 증가되는 가상머신에게 상기 단위용량만큼 상기 제2 타입의 메모리를 증가시키는 단계, 그리고 상기 클러스터 시스템 내 제2 타입의 메모리가 모두 분배될 때까지 상기 증가시키는 단계를 반복하는 단계를 포함할 수 있다.
상기 제1 타입의 메모리는 상기 제2 타입의 메모리보다 큰 용량을 가질 수 있다.
상기 제2 타입의 메모리는 DRAM(Dynamic random access memory)을 포함할 수 있다.
본 발명의 다른 한 실시 예에 따르면, 네트워크로 서로 연결되어 있는 복수의 물리노드를 포함하는 클러스터 시스템에서 메모리를 통합 관리하는 장치가 제공된다. 메모리 통합 관리 장치는 고집적 메모리 분배기, 그리고 고성능 메모리 분배기를 포함한다. 상기 고집적 메모리 분배기는 상기 복수의 물리노드에 할당된 제1 타입의 메모리들을 통합 관리하며 상기 복수의 물리노드에서 각각 실행되는 가상머신에게 해당 물리노드에 할당된 상기 제1 타입의 메모리를 배분한다. 상기 고성능 메모리 분배기는 상기 복수의 물리노드에 각각 할당된 제2 타입의 메모리를 통합 관리하며 클러스터 시스템 내 복수의 가상머신의 평균 성능을 가장 높일 수 있는 방향으로 상기 복수의 가상머신에게 상기 제2 타입의 메모리를 분배한다. 이때, 상기 제2 타입의 메모리는 상기 제1 타입의 메모리보다 접근 속도가 빠르다.
상기 고집적 메모리 분배기는 상기 가상머신이 새로 생성될 때 상기 가상머신이 필요한 메모리 용량만큼 상기 제1 타입의 메모리를 분배할 수 있다.
상기 고집적 메모리 분배기는 상기 복수의 물리노드 중에서 가용한 제1 타입의 메모리의 양이 상기 새로 생성되는 가상머신이 필요한 메모리 용량보다 큰 물리노드를 선택하고, 상기 선택된 물리노드 중에서 해당 물리노드에서 실행 중인 가상머신들의 평균 성능이 가장 높은 물리노드를 상기 새로 생성되는 가상머신을 배치할 노드로 결정할 수 있다.
상기 고성능 메모리 분배기는 각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배한 후, 상기 클러스터 시스템 내 남는 제2 타입의 메모리를 상기 복수의 가상머신 중 적어도 하나의 가상머신에게 추가로 분배할 수 있다.
상기 고성능 메모리 분배기는 상기 해당 물리노드에서 실행 중인 가상머신별로 해당 가상머신의 성능보장에 필요한 만큼의 제2 타입의 메모리를 분배한 후, 상기 해당 물리노드에서 실행 중인 가상머신에게 분배된 제2 타입의 메모리가 상기 해당 물리노드에 할당된 제2 타입의 메모리의 용량을 초과하면, 상기 가상머신별로 설정된 단위용량만큼 상기 제2 타입의 메모리를 감소시켰을 때 성능이 가장 적게 줄어드는 가상머신의 제2 타입의 메모리를 상기 단위용량만큼 감소시킬 수 있다.
상기 고성능 메모리 분배기는 상기 클러스터 시스템 내 남는 제2 타입의 메모리가 존재할 때, 상기 복수의 가상머신 중에서 설정된 단위용량만큼 상기 제2 타입의 메모리를 증가시켰을 때 성능이 가장 많이 증가되는 가상머신에게 상기 단위용량만큼 상기 제2 타입의 메모리를 증가시킬 수 있다.
상기 메모리 통합 관리 장치는 상기 복수의 가상머신 각각의 메모리 접근 패턴을 프로파일링하여, 상기 복수의 가상머신의 성능 변화를 예측하는 복수의 메모리 프로파일러를 더 포함할 수 있다.
상기 복수의 물리노드 내 CPU(Central processing unit)들은 상기 제2 타입의 메모리와 직접 연결되어 있을 수 있다.
상기 고성능 메모리 분배기는 어느 하나의 물리노드에 할당된 제2 타입의 메모리를 다른 물리노드에서 실행 중인 가상노드에게 할당할 수 있다.
본 발명의 실시 예에 의하면, 클러스터 시스템의 DRAM, 비휘발성 메모리, 고성능 SSD 등을 통합 관리하여 메모리로 사용함으로써, 저비용으로 큰 규모의 메모리 확장을 가능하게 하면서도, 클러스터 시스템의 전체 DRAM을 효율적으로 사용하여 시스템의 전체적인 성능을 높일 수 있다.
도 1은 본 발명의 실시 예에 따른 클러스터 시스템의 일 예를 나타낸 도면이다.
도 2는 도 1에 도시된 고성능 메모리 분배기의 동작 방법을 나타낸 흐름도이다.
도 3은 도 3에 도시된 지역 고성능 메모리 분배 방법을 설명하는 흐름도이다.
도 4는 도 1에 도시된 고집적 메모리 분배기의 동작 방법을 설명하는 흐름도이다.
도 5는 본 발명의 실시 예에 따른 각 가상머신의 메모리 접근 방식의 일 예를 나타낸 도면이다.
도 6은 본 발명의 실시 예에 따른 가상머신의 메모리 영역들에 대한 실제 메모리 배치의 일 예를 나타낸 도면이다.
도 7은 본 발명의 다른 실시 예에 따른 메모리 통합 관리 장치를 나타낸 도면이다.
도 2는 도 1에 도시된 고성능 메모리 분배기의 동작 방법을 나타낸 흐름도이다.
도 3은 도 3에 도시된 지역 고성능 메모리 분배 방법을 설명하는 흐름도이다.
도 4는 도 1에 도시된 고집적 메모리 분배기의 동작 방법을 설명하는 흐름도이다.
도 5는 본 발명의 실시 예에 따른 각 가상머신의 메모리 접근 방식의 일 예를 나타낸 도면이다.
도 6은 본 발명의 실시 예에 따른 가상머신의 메모리 영역들에 대한 실제 메모리 배치의 일 예를 나타낸 도면이다.
도 7은 본 발명의 다른 실시 예에 따른 메모리 통합 관리 장치를 나타낸 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
이제 본 발명의 실시 예에 따른 클러스터 시스템의 메모리 통합 관리 방법 및 장치에 대하여 도면을 참고로 하여 상세하게 설명한다.
도 1은 본 발명의 실시 예에 따른 클러스터 시스템의 일 예를 나타낸 도면이다.
도 1을 참고하면, 클러스터 시스템은 복수의 물리노드(10, 20)를 네트워크를 통해 연결하여 하나의 시스템처럼 동작하도록 한다.
각 물리노드(10, 20)는 할당된 하드웨어 자원을 사용한다. 하드웨어 자원은 CPU와 메모리(13, 14, 23, 24) 등을 포함할 수 있다.
메모리(13, 23)는 CPU가 가장 빠른 속도로 접근 가능한 메모리이며, 아래에서는 고성능 메모리로 명명한다. 대부분의 서버에서는 고성능 메모리(13, 23)로 DRAM이 사용된다.
메모리(14, 24)는 CPU가 고성능 메모리(13, 23)보다 접근 가능한 속도가 느리나 용량이 고성능 메모리(13, 23)보다 큰 메모리이며, 아래에서는 고집적 메모리로 명명한다. 고집적 메모리(14, 24)는 예를 들면, 비휘발성 메모리나 고성능 SSD를 포함할 수 있다.
각 물리노드(10, 20)에는 적어도 하나의 가상머신(11, 12, 21, 22)이 실행될 수 있다.
가상머신(11, 12, 21, 22)은 해당 물리노드(10, 20) 내 하드웨어 자원을 사용하여 동작할 수 있다. 도 1에서는 설명의 편의상 2개의 물리노드(10, 20)와 각 물리노드(10, 20)에는 2개의 가상머신(11, 12, 21, 22)이 실행되는 것으로 도시하였다.
예를 들어, 물리노드(10) 상에 실행되는 가상머신(11)은 물리노드(10)의 CPU1과 CPU2를 사용할 수 있고, 물리노드(10) 상에 실행되는 가상머신(12)은 물리노드(10)의 CPU3과 CPU4를 사용할 수 있다. 물리노드(20) 상에 실행되는 가상머신(21)은 물리노드(20)의 CPU1과 CPU2를 사용할 수 있고, 물리노드(20) 상에 실행되는 가상머신(22)은 물리노드(20)의 CPU3과 CPU4를 사용할 수 있다.
본 발명의 실시 예에 따른 클러스터 시스템은 메모리 통합 관리 장치(100)를 더 포함할 수 있다.
메모리 통합 관리 장치(100)는 네트워크로 연결된 물리노드들(10, 20)의 고성능 메모리(13, 23) 및 고집적 메모리(14, 24)를 통합하여 관리함으로써, 가상머신(11, 12, 21, 22)의 메모리 확장을 제공한다. 메모리 확장은 해당 물리노드(예를 들면, 10)의 고성능 메모리뿐만 아니라 다른 물리노드(예를 들면, 20)의 고성능 메모리 또는 고집적 메모리나 해당 물리 노드(10) 내의 고집적 메모리를 활용하는 것을 의미한다.
메모리 통합 관리 장치(100)는 메모리 프로파일러(1101, 1102, 1103, 1104), 고성능 메모리 분배기(120) 및 고집적 메모리 분배기(130)를 포함할 수 있다.
메모리 프로파일러(1101, 1102, 1103, 1104)는 각 가상머신(11, 12, 21, 22)에 대응하여 구비될 수 있다.
메모리 프로파일러(1101, 1102, 1103, 1104)는 각각 해당 가상머신(11, 12, 21, 22)의 메모리 접근 패턴을 프로파일링한다. 메모리 프로파일러(1101, 1102, 1103, 1104)는 각각 가상머신(11, 12, 21, 22)이 현재 사용 중인 고성능 메모리 용량으로부터 고성능 메모리 용량을 증가시켰을 때와 감소시켰을 때 각각 확장된 메모리로의 접근 횟수를 추정하며, 이때 가상머신(11, 12, 21, 22)의 성능 변화량을 예측한다.
구체적으로, 메모리 프로파일러(1101, 1102, 1103, 1104)는 가상머신이 고성능 메모리만을 사용했을 때의 성능을 1로 나타냈을 때 메모리 확장을 사용 중인 현 시점의 성능을 수치로 계산할 수 있다. 또한 메모리 프로파일러(1101, 1102, 1103, 1104)는 가상머신이 고성능 메모리만을 사용했을 때의 성능에 비해 고성능 메모리 용량을 단위 용량(예를 들면, 1GB)만큼씩 줄여갈 때의 성능을 수치로 나타낼 수 있다. 마찬가지로, 메모리 프로파일러(1101, 1102, 1103, 1104)는 가상머신이 고성능 메모리만을 사용했을 때의 성능에 비해 고성능 메모리 용량을 단위 용량만큼씩 증가시켰을 때의 성능을 수치로 나타낼 수 있다.
고성능 메모리 분배기(120)는 클러스터 시스템 내의 고성능 메모리들(13, 23)을 통합 관리하며, 메모리 프로파일러(1101, 1102, 1103, 1104)의 프로파일링 정보를 토대로 클러스터 시스템 내 전체 가상머신(11, 12, 21, 22)의 평균 처리량을 가장 높일 수 있는 방법으로 고성능 메모리(13, 23)를 가상머신들(11, 12, 21, 22)에게 분배한다. 고성능 메모리 분배기(120)는 먼저 물리노드 별로 지역 고성능 메모리 분배를 통해 물리노드(10, 20) 내 고성능 메모리(13, 23)를 해당 물리노드(10, 20) 내 가상머신(11, 12, 21, 22)에게 분배한다. 여기서, 지역 고성능 메모리 분배는 해당 물리노드(예를 들면, 10)의 고성능 메모리(13)를 해당 물리노드(10) 내 가상머신(11, 12)에게만 할당하는 것을 의미한다. 이후, 고성능 메모리 분배기(120)는 클러스터 시스템 내 고성능 메모리가 남아 있다면, 남아 있는 고성능 메모리를 적어도 하나의 가상머신들(11, 12, 21, 22)에게 추가로 분배할 수 있다. 고성능 메모리 분배기(120)의 동작에 대해서는 도 2 및 도 3을 참고로 하여 자세하게 설명한다.
고집적 메모리 분배기(130)는 클러스터 시스템 내의 고집적 메모리(14, 24)를 통합 관리하며, 가상머신(11, 12, 21, 22)이 필요한 메모리 용량만큼의 고집적 메모리(14, 24)를 가상머신(11, 12, 21, 22)에게 분배한다. 고집적 메모리 분배기(130)는 가상머신이 새로 생성될 때에 동작한다. 고집적 메모리(14, 24)는 해당 물리노드(10, 20) 내 가상머신(11, 12, 21, 22)이 필요한 메모리 용량을 확보하기 위해 사용된다. 고집적 메모리 분배기(130)의 동작에 대해서는 도 4를 참고로 하여 자세하게 설명한다.
도 2는 도 1에 도시된 고성능 메모리 분배기의 동작 방법을 나타낸 흐름도이다.
도 2를 참고하면, 고성능 메모리 분배기(120)는 물리노드별 지역 고성능 메모리 분배 동작을 수행한다(S210).
물리노드별(10, 20)로 지역 고성능 메모리 분배가 완료되고 나면, 고성능 메모리 분배기(120)는 클러스터 시스템 내에 분배되지 않고 남아있는 고성능 메모리가 있는지 확인한다(S220). 고성능 메모리 분배기(120)는 한 물리노드 내의 가상머신이 지정된 성능을 보장하는데 필요한 고성능 메모리 용량이 적을 경우 고성능 메모리가 남을 수 있다. 예를 들면, 가끔 큰 크기의 데이터를 처리하기 위해 고용량 메모리를 가지는 가상머신을 생성한 경우, 대부분의 시간 동안에는 적은 용량의 고성능 메모리로도 충분한 성능을 낼 수 있으며, 가상머신이 유휴 상태이거나 클러스터 시스템 내에 실행 중인 가상머신의 개수가 적을 수도 있다.
고성능 메모리 분배기(120)는 클러스터 시스템 내에 남아있는 고성능 메모리가 있는 경우, 단위 용량만큼 고성능 메모리를 증가시켰을 때 성능이 가장 많이 증가하는 가상머신을 선택하고, 선택된 가상머신의 메모리를 단위 용량만큼 추가로 할당한다(S230). 여기서, '성능'은 앞서 메모리 프로파일러에서 설명한 것처럼, 가상머신이 고성능 메모리만을 사용했을 때의 성능에 대비한 가상머신이 메모리 확장을 사용했을 때의 성능을 의미한다. 이는 메모리 프로파일러를 사용해 추정될 수 있다.
다음, 고성능 메모리 분배기(120)는 클러스터 시스템 내에 분배되지 않고 남아있는 고성능 메모리가 있는지 확인하고(S220), 단계(S230)를 수행한다.
고성능 메모리 분배기(120)는 클러스터 시스템 내의 남아 있는 고성능 메모리가 없을 때까지 단계(S220, S230)를 반복하여 클러스터 시스템 내 전체 가상머신(11, 12, 21, 22)에게 고성능 메모리를 할당할 수 있다.
도 3은 도 3에 도시된 지역 고성능 메모리 분배 방법을 설명하는 흐름도이다. 도 3에서는 하나의 물리노드(10)를 예를 들어 설명하며, 설명되는 지역 고성능 메모리 분배 동작은 나머지 물리노드(20)에도 동일하게 적용될 수 있다.
도 3을 참고하면, 고성능 메모리 분배기(120)는 물리노드(10) 내 가상머신별 메모리 프로파일링 정보를 수집한다(S310). 각 가상머신(11, 12)에 대응하는 메모리 프로파일러(1101, 1102)를 통해 메모리 확장을 사용한 가상머신(11, 12)의 성능을 추정할 수 있다. 고성능 메모리 분배기(120)는 메모리 프로파일러(1101, 1102)를 통한 성능 추정치를 수집한다.
고성능 메모리 분배기(120)는 가상머신별 메모리 프로파일링 정보를 토대로 지정된 만큼의 성능을 보장하기 위해 필요한 용량의 고성능 메모리(13)를 가상머신(11, 12)에게 분배한다(S320).
고성능 메모리 분배기(120)는 물리노드(10) 내 고성능 메모리(13)가 부족한지 판단한다(S330).
고성능 메모리 분배기(120)는 물리노드(10)에 장착된 고성능 메모리(13)의 용량이 부족한 경우, 단위 용량만큼 고성능 메모리를 감소시켰을 때 물리노드 내 성능이 가장 적게 감소하는 가상머신을 선택하고(S340), 선택된 가상머신의 메모리를 단위 용량만큼 감소시킨다(S350).
고성능 메모리 분배기(120)는 물리노드(10) 내 고성능 메모리(13)가 부족한지 다시 판단하고(S330), 단계(S340, S350)를 수행한다.
메모리 분배기(120)는 단계(S330~S350)를 반복하여, 물리노드(10) 내 가상머신(11, 12)에게 분배된 고성능 메모리가 물리노드(10)에 장착된 고성능 메모리 용량을 초과하지 않도록 한다.
이를 통해 물리노드(10) 내 가상머신(11, 12)의 평균 처리량을 높일 수 있다.
도 4는 도 1에 도시된 고집적 메모리 분배기의 동작 방법을 설명하는 흐름도이다.
도 4를 참고하면, 고집적 메모리 분배기(130)는 가상머신이 새로 생성되면, 먼저 가상머신을 배치할 물리노드를 선택한다. 물리노드(10)의 가용한 고집적 메모리(14)가 가상머신이 필요로 하는 메모리 용량보다 적은 경우 해당 물리노드(10)에서 가상머신을 배치하지 않는다.
구체적으로, 가상머신을 배치할 물리노드를 선택하기 위해, 고집적 메모리 분배기(130)는 n=1, 가상머신 배치 노드=NONE 및 임계값(MAX_PERF)=0으로 초기화된다(S402). 여기서, n은 물리노드를 식별하기 위한 번호를 나타낸다.
고집적 메모리 분배기(130)는 n=1부터 n번째 물리노드에 대해 다음의 동작을 수행한다.
고집적 메모리 분배기(130)는 n이 물리노드의 개수보다 큰지 확인한다(S404). n이 물리노드의 개수보다 커졌다는 것은 클러스터 시스템 내 모든 물리노드에 대해 가상머신을 배치할 노드인지 확인하는 과정을 수행하였다는 것을 의미한다.
고집적 메모리 분배기(130)는 n번째 물리노드의 가용한 고집적 메모리 용량이 가상머신의 메모리 용량보다 작은지 확인한다(S406).
고집적 메모리 분배기(130)는 n번째 물리노드의 가용한 고집적 메모리 용량이 가상머신의 메모리 용량보다 적은 경우 해당 물리노드(10)에서 가상머신을 배치하지 않는다. 이 경우, 고집적 메모리 분배기(130)는 n=n+1로 증가시키고(S416), 단계(S404)부터 다시 수행함으로써, 다음 물리노드가 가상머신을 배치할 수 있는 노드인지 확인한다.
고집적 메모리 분배기(130)는 n번째 물리노드의 가용한 고집적 메모리 용량이 가상머신의 메모리 용량 이상이면, 해당 n번째 물리노드 내 이미 배치되어 실행 중인 가상머신에 대해 지역 고성능 메모리 분배 동작을 수행하고(S408), n번째 물리노드 내 실행 중인 가상머신들의 평균 성능을 계산한다(S410). n번째 물리노드에 대한 지역 고성능 메모리 분배 동작은 도 3에서 설명한 바와 같다. 이 과정은 새로 생성된 가상머신을 배치하려는 시점에서 메모리 프로파일링 정보를 활용하여 이미 배치되어 실행 중인 가상머신들의 평균 성능을 확인하기 위한 것이다.
고집적 메모리 분배기(130)는 n번째 물리노드 내 실행 중인 가상머신들의 평균 성능이 임계값(MAX_PERF)보다 큰지 확인한다(S412).
고집적 메모리 분배기(130)는 n번째 물리노드의 평균 성능이 임계값(MAX_PERF)보다 크면, 해당 n번째 물리노드를 가상머신 배치 노드로 갱신하고, 임계값(MAX_PERF)을 해당 n번째 물리노드의 평균 성능으로 업데이트한다(S414).
다음, 고집적 메모리 분배기(130)는 n=n+1로 증가시키고(S416), 다음 물리노드에 대해 단계(S404)를 수행하여, 다음 물리노드가 가상머신을 배치할 수 있는 노드인지 확인한다.
이렇게 하여, 클러스터 시스템 내 모든 물리노드에 대해 가상머신을 배치할 수 있는 노드인지 확인하고 나면, 실행 중인 가상머신들의 평균 성능이 가장 높은 물리노드가 가상머신 배치 노드로 선택된다. 이러한 과정을 통해 가상머신 배치 노드로 선택된 물리노드는 가상머신이 필요로 하는 메모리 용량만큼의 가용한 고집적 메모리를 보유하고 있으며, 동시에 고성능 메모리의 일부를 새로 생성된 가상머신에게 분배했을 때 클러스터 시스템 전체에서 실행 중인 가상머신들의 평균 성능에 가장 적은 영향을 끼칠 가능성이 높다.
고집적 메모리 분배기(130)는 가상머신 배치 노드로 선택된 물리노드가 존재하는지 확인한다(S418).
고집적 메모리 분배기(130)는 가상머신 배치 노드로 선택된 물리노드가 존재하면 가상머신 배치 노드로 선택된 물리노드에 새로 생성된 가상머신을 배치하여 실행시키고, 가상머신 배치 노드로 선택된 물리노드의 고집적 메모리를 새로 생성된 가상머신이 필요한 메모리 용량만큼 할당한다(S420).
고집적 메모리 분배기(130)는 가상머신 배치 노드로 선택된 노드가 존재하지 않으면, 가상머신 생성은 실패하게 된다(S422).
도 5는 본 발명의 실시 예에 따른 각 가상머신의 메모리 접근 방식의 일 예를 나타낸 도면이다.
도 5를 참고하면, 2개의 물리노드(10, 20)는 고속 네트워크로 연결되어 있고, 물리노드(10, 20)에 배치되어 있는 모든 가상머신(11, 12, 21, 22)은 메모리 통합 관리 장치(100)를 통해 자신이 배치된 물리노드(10, 20) 내의 고집적 메모리(14, 24)를 통해 필요한 메모리의 모든 용량을 확보한다. 예를 들어, 물리노드(10)에 배치되어 있는 가상머신(11, 12)은 각각 물리노드(10) 내의 고집적 메모리(14)를 통해 필요한 메모리를 모두 확보하고, 물리노드(20)에 배치되어 있는 가상머신(21, 22)은 각각 물리노드(20) 내의 고집적 메모리(24)를 통해 필요한 메모리를 모두 확보할 수 있다.
또한 물리노드(10, 20)에 배치되어 있는 가상머신(11, 12, 21, 22)의 평균 성능을 높이기 위해 고성능 메모리(13, 23)를 활용한다. 가상머신(11, 12, 21, 22)은 메모리 통합 관리 장치(100)를 통해 해당 가상머신(11, 12, 21, 22)의 성능을 보장하기 위해 필요한 만큼의 고성능 메모리(13, 23)를 확보한다. 이때 일부 가상머신은 다른 물리노드의 고성능 메모리를 할당 받을 수도 있다. 예를 들면, 물리노드(10) 내 가상머신(12)은 다른 물리노드(20)의 고성능 메모리(23)를 일부 할당 받을 수 있다.
각 물리노드(10, 20) 내의 CPU들은 연산을 할 때 자신이 직접 연결된 고성능 메모리(13, 23)에만 접근할 수 있다. 따라서, 가상머신들(11, 12, 21, 22)은 접근하려는 데이터를 자신이 배치된 물리노드(10, 20) 내의 고성능 메모리(13, 23)에 먼저 가져오고(fetch), 해당 데이터에 접근한다. 가상머신(12)이 접근하려는 데이터를 찾는 과정에서, 해당 물리노드(10) 내 고성능 메모리(13)에 데이터가 없을 경우, 우선적으로 접근 속도가 빠른 다른 물리노드(20) 내 고성능 메모리(23)에서 데이터를 찾고, 그 다음으로 해당 물리노드(10) 내 고집적 메모리(14)에서 데이터를 찾는다.
가상머신(12)이 접근하려는 데이터가 다른 물리노드(20)의 고성능 메모리(23)나 자신이 배치된 물리노드(10)의 고집적 메모리(14)에 있다면, 두 경우 모두 데이터를 물리노드(10)의 고성능 메모리(13)로 가져온 뒤에 해당 데이터에 접근한다.
이때 할당 받은 고성능 메모리(13)를 모두 사용 중이라면, 먼저 고성능 메모리(13)에 있는 데이터 중 가까운 시간 내에 다시 접근할 가능성이 가장 적은 데이터를 고성능 메모리(13)로부터 제거할 수 있다. 어느 데이터를 제거할 것인지에 대해서는 리눅스의 스왑(swap) 시스템이 사용하는 방법이나 다른 분리 메모리 혹은 분할 메모리에서 사용하는 방법 등의 통상의 방법을 사용할 수 있다.
가상머신(12)은 물리노드(10) 내의 고성능 메모리(13)로부터 데이터를 제거할 경우, 다른 물리노드(20)의 고성능 메모리(23)를 할당 받은 상태라면 다른 물리노드(20)의 고성능 메모리(23)로 데이터를 보낼 수 있다. 고성능 메모리(13)로부터 제거되어 다른 물리노드(20)의 고성능 메모리(23)로 보내는 데이터는 물리노드(10) 내의 고성능 메모리(13) 내에 있는 데이터를 제외하고 가장 접근 가능성이 높은 데이터이다. CPU가 다른 물리노드(20)의 고성능 메모리(23)로 접근하는 것이 고집적 메모리(14)에 접근하는 것보다 빠르기 때문에, 고성능 메모리(13) 내에 있는 데이터들 바로 다름으로 접근 가능성이 높은 데이터를 다른 물리노드(20)의 고성능 메모리(23)로 보낸다. 한편, 다른 물리노드(20)의 고성능 메모리(23)도 모두 사용 중이라면, 가상머신(12)은 물리노드(10) 내의 고성능 메모리(13)로부터 가장 접근 가능성이 낮은 데이터를 제거할 데이터를 선정하고, 선정된 데이터를 할당 받은 고집적 메모리(14)에 보내 후기입(Write-back)할 수 있다. 단, 고집적 메모리(14)는 가상머신(12)이 사용하는 모든 메모리 영역만큼 할당되어 있고 데이터를 제거하지 않으므로, 데이터가 고성능 메모리(13)에 페치(fetch)된 뒤 한 번도 업데이트 된 적이 없다면 고집적 메모리(14)에 해당 데이터를 후기입하지 않을 수 있다.
도 6은 본 발명의 실시 예에 따른 가상머신의 메모리 영역들에 대한 실제 메모리 배치의 일 예를 나타낸 도면이다.
도 6을 참고하면, 메모리 통합 관리 장치(100)는 가상머신1의 생성 시에 가상머신1이 필요한 메모리 용량만큼 고집적 메모리를 할당한다.
메모리 통합 관리 장치(100)는 가상노드1에게 고성능 메모리를 할당한다. 메모리 통합 관리 장치(100)는 6개, 2개, 3개의 데이터를 각각 저장할 수 있는 물리노드1의 고성능 메모리, 물리노드2의 고성능 메모리 및 물리노드3의 고성능 메모리를 가상노드1에게 할당한다.
물리노드1에서 실행 중인 가상머신1은 모두 32개의 데이터를 가지고 있다고 가정한다. 32개의 데이터는 가싱머신이 인식하는 물리적인 메모리 영역에 저장되며, 가상머신이 데이터에 접근하고자 할 때 가상머신을 관리하는 프로그램(예를 들면, 가상머신모니터 또는 하이퍼바이저)이 해당 데이터를 고성능 메모리에 이동시키고 가상머신이 인식하는 메모리 영역을 해당 고성능 메모리의 위치와 연결되도록 한다.
가상머신 1이 1번부터 9번까지의 데이터에 접근하고자 하는 경우, 가장 최근에 접근한 순서대로 1번부터 6번까지 6개의 데이터는 물리노드1의 고성능 메모리에 배치되고, 그 다음으로 최근에 접근한 7번부터 11번까지 5개의 데이터는 물리노드2와 물리노드3의 고성능 메모리에 배치된다. 이때 다른 두 물리노드2와 물리노드3의 고성능 메모리 사이의 데이터 배치 순서는 정해져 있지 않다. 도 6에서는 7번과 9번 데이터는 물리노드2의 고성능 메모리에 배치되고, 8번, 10번 및 11번 데이터는 물리노드3의 고성능 메모리에 배치된 것으로 도시하였다.
물리노드1의 고집적 메모리에는 가상머신1의 모든 데이터가 저장된다. 고성능 메모리에 있는 데이터가 업데이트될 때마다 고집적 메모리의 데이터가 업데이트되는 것은 아니다. 고성능 메모리 상의 업데이트된 데이터는 후기입 상태가 발생될 때(즉, 고성능 메모리로부터 제거될 때) 고집적 메모리로 옮겨진다. 따라서, 물리노드1, 물리노드2 및 물리노드3의 고성능 메모리에 있는 1번부터 11번까지의 데이터들은 업데이트될 수 있고, 업데이트된 1'번부터 11'번 데이터는 후기입 상태가 발생되면 고집적 메모리로 옮겨진다.
본 발명의 실시 예에 따른 메모리 통합 관리 장치(100)는 접근 속도는 느리지만 용량 확보가 용이한 고집적 메모리를 통해 가상머신에 필요한 메모리 용량을 확보해줌으로써 저비용으로 많은 용량의 메모리 확장을 가능하게 한다. 또한 메모리 통합 관리 장치(100)는 접근 속도가 빠른 고성능 메모리를 클러스터 단위로 통합하여 관리함으로써 고성능 메모리들을 효율적으로 사용하며 고성능의 메모리 확장을 가능하게 한다.
이와 같이, 본 발명의 실시 예에 따른 메모리 통합 관리 장치(100)는 두 단계의 메모리 확장을 사용한다. 1단계의 메모리 확장은 물리노드 내의 고성능 메모리 외에 한 가지 종류의 메모리를 더 활용하는 것을 나타낸다. 본 발명의 실시 예에 따르면, 물리노드 내의 고성능 메모리 외에 다른 물리노드의 고성능 메모리 또는 해당 물리노드 내의 고집적 메모리가 사용될 수 있다. 두 단계 메모리 확장은 물리노드 내의 고성능 메모리 외에 두 가지 종류의 메모리를 더 활용하는 것을 나타내며, 두 종류의 메모리는 순서를 정하여 사용될 수 있다. 본 발명의 실시 예에 따르면, 물리노드 내의 고성능 메모리 외에 다른 노드의 고성능 메모리와 해당 물리노드의 고집적 메모리가 모두 사용될 수 있다.
도 7은 본 발명의 다른 실시 예에 따른 메모리 통합 관리 장치를 나타낸 도면이다.
도 7을 참고하면, 메모리 통합 관리 장치(700)는 앞에서 설명한 본 발명의 실시 예에 따른 메모리 통합 관리 방법이 구현된 컴퓨팅 장치를 나타낼 수 있다.
메모리 통합 관리 장치(700)는 프로세서(710), 메모리(720), 입력 인터페이스 장치(730), 출력 인터페이스 장치(740), 및 저장 장치(750) 중 적어도 하나를 포함할 수 있다. 각각의 구성 요소들은 공통 버스(bus)(760)에 의해 연결되어 서로 통신을 수행할 수 있다. 또한, 각각의 구성 요소들은 공통 버스(760)가 아니라, 프로세서(710)를 중심으로 개별 인터페이스 또는 개별 버스를 통하여 연결될 수도 있다.
프로세서(710)는 AP(Application Processor), CPU(Central Processing Unit), GPU(Graphic Processing Unit) 등과 같은 다양한 종류들로 구현될 수 있으며, 메모리(720) 또는 저장 장치(750)에 저장된 명령을 실행하는 임의의 반도체 장치일 수 있다. 프로세서(710)는 메모리(720) 및 저장 장치(750) 중에서 적어도 하나에 저장된 프로그램 명령(program command)을 실행할 수 있다. 이러한 프로세서(710)는 위의 도 1 내지 도 6을 토대로 설명한 그림자 영역 검출을 위한 학습 기능 및 방법을 구현하도록 구성될 수 있다. 예를 들어, 프로세서(710)는 도 1에서 설명한 메모리 프로파일러(1101, 1102, 1103, 1104), 고성능 메모리 분배기(120) 및 고집적 메모리 분배기(130)의 적어도 일부 기능을 구현하기 위한 프로그램 명령을 메모리(720)에 저장하여, 도 1 내지 도 6을 참고로 하여 설명한 동작이 수행되도록 제어할 수 있다.
메모리(720) 및 저장 장치(750)는 다양한 형태의 휘발성 또는 비 휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리(720)는 ROM(read-only memory)(721) 및 RAM(random access memory)(722)를 포함할 수 있다. 본 발명의 실시 예에서 메모리(720)는 프로세서(710)의 내부 또는 외부에 위치할 수 있고, 메모리(720)는 이미 알려진 다양한 수단을 통해 프로세서(710)와 연결될 수 있다.
입력 인터페이스 장치(730)는 데이터를 프로세서(710)로 제공하도록 구성된다.
출력 인터페이스 장치(740)는 프로세서(710)로부터의 데이터를 출력하도록 구성된다.
또한 본 발명의 실시 예에 따른 메모리 통합 관리 방법 중 적어도 일부는 컴퓨팅 장치에서 실행되는 프로그램 또는 소프트웨어로 구현될 수 있고, 프로그램 또는 소프트웨어는 컴퓨터로 판독 가능한 매체에 저장될 수 있다.
또한 본 발명의 실시 예에 따른 메모리 통합 관리 방법 중 적어도 일부는 컴퓨팅 장치와 전기적으로 접속될 수 있는 하드웨어로 구현될 수도 있다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속하는 것이다.
Claims (20)
- 네트워크로 서로 연결되어 있는 복수의 물리노드를 포함하는 클러스터 시스템의 메모리 통합 관리 장치에서 메모리를 통합 관리하는 방법에서,
상기 복수의 물리노드 중 하나의 물리노드를 새로운 가상머신을 배치할 노드로 결정하는 단계,
상기 하나의 물리노드에 할당된 제1 타입의 메모리를 상기 새로운 가상머신이 필요한 메모리 용량만큼 상기 새로운 가상머신에게 분배하는 단계, 그리고
상기 복수의 물리노드에 각각 할당된 제2 타입의 메모리를 통합 관리하여, 상기 복수의 가상머신에게 상기 제2 타입의 메모리를 분배하는 단계
를 포함하고,
상기 제2 타입의 메모리는 상기 제1 타입의 메모리보다 접근 속도가 빠른 메모리 통합 관리 방법. - 제1항에서,
상기 제2 타입의 메모리를 분배하는 단계는
상기 복수의 물리노드에서 실행 중인 복수의 가상머신 각각의 메모리 접근 패턴을 프로파일링하는 단계, 그리고
상기 복수의 가상머신의 프로파일링 정보를 토대로 상기 복수의 가상머신의 평균 성능을 가장 높일 수 있는 방향으로 상기 제2 타입의 메모리를 상기 복수의 가상머신에게 분배하는 단계를 포함하는 메모리 통합 관리 방법. - 제1항에서,
상기 결정하는 단계는
상기 복수의 물리노드 중에서 가용한 제1 타입의 메모리의 양이 상기 새로운 가상머신이 필요한 메모리 용량보다 큰 물리노드를 선택하는 단계,
상기 선택된 물리노드 중에서 해당 물리노드에서 실행 중인 가상머신들의 평균 성능을 계산하는 단계, 그리고
상기 실행 중인 가상머신들의 평균 성능이 가장 높은 물리노드를 상기 새로운 가상머신을 배치할 노드로 결정하는 단계를 포함하는 메모리 통합 관리 방법. - 제1항에서,
상기 제2 타입의 메모리를 분배하는 단계는
각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배하는 단계, 그리고
상기 클러스터 시스템 내 남는 제2 타입의 메모리를 상기 복수의 가상머신 중 적어도 하나의 가상머신에게 추가로 분배하는 단계를 포함하는 메모리 통합 관리 방법. - 제4항에서,
상기 각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배하는 단계는
상기 해당 물리노드에서 실행 중인 가상머신별로 해당 가상머신의 성능보장에 필요한 만큼의 제2 타입의 메모리를 분배하는 단계, 그리고
상기 해당 물리노드에서 실행 중인 가상머신에게 분배된 제2 타입의 메모리가 상기 해당 물리노드에 할당된 제2 타입의 메모리의 용량을 초과한 경우, 상기 가상머신별로 설정된 단위용량만큼 상기 제2 타입의 메모리를 감소시켰을 때 성능이 가장 적게 줄어드는 가상머신의 제2 타입의 메모리를 상기 단위용량만큼 감소시키는 단계를 포함하는 메모리 통합 관리 방법. - 제5항에서,
상기 각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배하는 단계는
상기 해당 물리노드에서 실행 중인 가상머신에게 분배된 제2 타입의 메모리가 상기 해당 물리노드에 할당된 제2 타입의 메모리의 용량을 초과하지 않을 때까지, 상기 감소시키는 단계를 반복하는 단계를 더 포함하는 메모리 통합 관리 방법. - 제4항에서,
상기 추가로 분배하는 단계는
상기 복수의 물리노드에서 실행 중인 복수의 가상머신 중에서 설정된 단위용량만큼 상기 제2 타입의 메모리를 증가시켰을 때 성능이 가장 많이 증가되는 가상머신에게 상기 단위용량만큼 상기 제2 타입의 메모리를 증가시키는 단계, 그리고
상기 클러스터 시스템 내 제2 타입의 메모리가 모두 분배될 때까지 상기 증가시키는 단계를 반복하는 단계를 포함하는 메모리 통합 관리 방법. - 제1항에서,
상기 제1 타입의 메모리는 상기 제2 타입의 메모리보다 큰 용량을 가지는 메모리 통합 관리 방법. - 제1항에서,
상기 제2 타입의 메모리는 DRAM(Dynamic random access memory)을 포함하는 메모리 통합 관리 방법. - 네트워크로 서로 연결되어 있는 복수의 물리노드를 포함하는 클러스터 시스템에서 메모리를 통합 관리하는 장치로서,
상기 복수의 물리노드에 할당된 제1 타입의 메모리들을 통합 관리하며 상기 복수의 물리노드에서 각각 실행되는 가상머신에게 해당 물리노드에 할당된 상기 제1 타입의 메모리를 배분하는 고집적 메모리 분배기, 그리고
상기 복수의 물리노드에 각각 할당된 제2 타입의 메모리를 통합 관리하며 클러스터 시스템 내 복수의 가상머신의 평균 성능을 가장 높일 수 있는 방향으로 상기 복수의 가상머신에게 상기 제2 타입의 메모리를 분배하는 고성능 메모리 분배기
를 포함하며,
상기 제2 타입의 메모리는 상기 제1 타입의 메모리보다 접근 속도가 빠른 메모리 통합 관리 장치. - 제10항에서,
상기 고집적 메모리 분배기는 상기 가상머신이 새로 생성될 때 상기 가상머신이 필요한 메모리 용량만큼 상기 제1 타입의 메모리를 분배하는 메모리 통합 관리 장치. - 제11항에서,
상기 고집적 메모리 분배기는 상기 복수의 물리노드 중에서 가용한 제1 타입의 메모리의 양이 상기 새로 생성되는 가상머신이 필요한 메모리 용량보다 큰 물리노드를 선택하고, 상기 선택된 물리노드 중에서 해당 물리노드에서 실행 중인 가상머신들의 평균 성능이 가장 높은 물리노드를 상기 새로 생성되는 가상머신을 배치할 노드로 결정하는 메모리 통합 관리 장치. - 제10항에서,
상기 고성능 메모리 분배기는 각 물리노드에 할당된 제2 타입의 메모리를 해당 물리노드에서 실행 중인 가상머신들에게 각각 분배한 후, 상기 클러스터 시스템 내 남는 제2 타입의 메모리를 상기 복수의 가상머신 중 적어도 하나의 가상머신에게 추가로 분배하는 메모리 통합 관리 장치. - 제13항에서,
상기 고성능 메모리 분배기는 상기 해당 물리노드에서 실행 중인 가상머신별로 해당 가상머신의 성능보장에 필요한 만큼의 제2 타입의 메모리를 분배한 후, 상기 해당 물리노드에서 실행 중인 가상머신에게 분배된 제2 타입의 메모리가 상기 해당 물리노드에 할당된 제2 타입의 메모리의 용량을 초과하면, 상기 가상머신별로 설정된 단위용량만큼 상기 제2 타입의 메모리를 감소시켰을 때 성능이 가장 적게 줄어드는 가상머신의 제2 타입의 메모리를 상기 단위용량만큼 감소시키는 메모리 통합 관리 장치. - 제13항에서,
상기 고성능 메모리 분배기는 상기 클러스터 시스템 내 남는 제2 타입의 메모리가 존재할 때, 상기 복수의 가상머신 중에서 설정된 단위용량만큼 상기 제2 타입의 메모리를 증가시켰을 때 성능이 가장 많이 증가되는 가상머신에게 상기 단위용량만큼 상기 제2 타입의 메모리를 증가시키는 메모리 통합 관리 장치. - 제10항에서,
상기 복수의 가상머신 각각의 메모리 접근 패턴을 프로파일링하여, 상기 복수의 가상머신의 성능 변화를 예측하는 복수의 메모리 프로파일러
를 더 포함하는 메모리 통합 관리 장치. - 제10항에서,
상기 복수의 물리노드 내 CPU(Central processing unit)들은 상기 제2 타입의 메모리와 직접 연결되어 있는 메모리 통합 관리 장치. - 제17항에서,
상기 제1 타입의 메모리는 상기 제2 타입의 메모리보다 큰 용량을 가지는 메모리 통합 관리 장치. - 제17항에서,
상기 제2 타입의 메모리는 DRAM(Dynamic random access memory)을 포함하는 메모리 통합 관리 장치. - 제10항에서,
상기 고성능 메모리 분배기는 어느 하나의 물리노드에 할당된 제2 타입의 메모리를 다른 물리노드에서 실행 중인 가상노드에게 할당하는 메모리 통합 관리 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210036414A KR102591315B1 (ko) | 2021-03-22 | 2021-03-22 | 클러스터 시스템의 메모리 통합 관리 방법 및 장치 |
US17/517,284 US20220300331A1 (en) | 2021-03-22 | 2021-11-02 | Method and apparatus for memory integrated management of cluster system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210036414A KR102591315B1 (ko) | 2021-03-22 | 2021-03-22 | 클러스터 시스템의 메모리 통합 관리 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220131605A true KR20220131605A (ko) | 2022-09-29 |
KR102591315B1 KR102591315B1 (ko) | 2023-10-20 |
Family
ID=83284828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210036414A KR102591315B1 (ko) | 2021-03-22 | 2021-03-22 | 클러스터 시스템의 메모리 통합 관리 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220300331A1 (ko) |
KR (1) | KR102591315B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140078390A (ko) * | 2012-12-17 | 2014-06-25 | 삼성전자주식회사 | 가상 머신 환경에서 메모리 관리 방법 및 장치 |
KR20190042465A (ko) * | 2017-10-16 | 2019-04-24 | 한국전자통신연구원 | 분할 메모리 관리장치 및 방법 |
KR20200002581A (ko) * | 2018-06-29 | 2020-01-08 | 주식회사 멤레이 | 메모리 제어 장치 및 이를 포함하는 메모리 시스템 |
KR20200044427A (ko) * | 2018-10-19 | 2020-04-29 | 주식회사 케이티 | 클라우드에서의 노드 전원 관리 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100161909A1 (en) * | 2008-12-18 | 2010-06-24 | Lsi Corporation | Systems and Methods for Quota Management in a Memory Appliance |
US8161260B2 (en) * | 2009-02-09 | 2012-04-17 | Oracle International Corporation | Optimal memory allocation for guested virtual machine(s) |
US20110283277A1 (en) * | 2010-05-11 | 2011-11-17 | International Business Machines Corporation | Virtualization and dynamic resource allocation aware storage level reordering |
US20120047313A1 (en) * | 2010-08-19 | 2012-02-23 | Microsoft Corporation | Hierarchical memory management in virtualized systems for non-volatile memory models |
EP2911056B1 (en) * | 2012-10-17 | 2018-07-18 | Huawei Technologies Co., Ltd. | Method for reducing consumption of memory system and memory controller |
KR101694518B1 (ko) * | 2013-08-05 | 2017-01-23 | 한국전자통신연구원 | 가상 노드 배치 관리 시스템 및 방법 |
US9977618B2 (en) * | 2013-12-27 | 2018-05-22 | Intel Corporation | Pooling of memory resources across multiple nodes |
US9448833B1 (en) * | 2015-04-14 | 2016-09-20 | International Business Machines Corporation | Profiling multiple virtual machines in a distributed system |
US11474848B2 (en) * | 2019-10-24 | 2022-10-18 | Red Hat, Inc. | Fail-safe post copy migration of virtual machines |
-
2021
- 2021-03-22 KR KR1020210036414A patent/KR102591315B1/ko active IP Right Grant
- 2021-11-02 US US17/517,284 patent/US20220300331A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140078390A (ko) * | 2012-12-17 | 2014-06-25 | 삼성전자주식회사 | 가상 머신 환경에서 메모리 관리 방법 및 장치 |
KR20190042465A (ko) * | 2017-10-16 | 2019-04-24 | 한국전자통신연구원 | 분할 메모리 관리장치 및 방법 |
KR20200002581A (ko) * | 2018-06-29 | 2020-01-08 | 주식회사 멤레이 | 메모리 제어 장치 및 이를 포함하는 메모리 시스템 |
KR20200044427A (ko) * | 2018-10-19 | 2020-04-29 | 주식회사 케이티 | 클라우드에서의 노드 전원 관리 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102591315B1 (ko) | 2023-10-20 |
US20220300331A1 (en) | 2022-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487661B2 (en) | Converged memory device and operation method thereof | |
JP6730434B2 (ja) | ハイブリッドキャッシュ | |
US20180157729A1 (en) | Distributed in-memory database system and method for managing database thereof | |
CN103577345A (zh) | 提高由多个***共享的存储高速缓存灵活性的方法和结构 | |
US10545921B2 (en) | Metadata control in a load-balanced distributed storage system | |
CN102081574B (zh) | 用于加快***的唤醒时间的方法和*** | |
US10447273B1 (en) | Dynamic virtualized field-programmable gate array resource control for performance and reliability | |
US8868835B2 (en) | Cache control apparatus, and cache control method | |
KR101587579B1 (ko) | 가상화 시스템에서 메모리 조정방법 | |
US20190236001A1 (en) | Shared fabric attached memory allocator | |
US10990562B2 (en) | System and method of asymmetric system description for optimized scheduling | |
KR101140914B1 (ko) | 컴퓨팅 자원들을 제어하는 기술 | |
US20220114086A1 (en) | Techniques to expand system memory via use of available device memory | |
WO2016080953A1 (en) | Method and apparatus for data cache in converged system | |
US20200387408A1 (en) | Resolving cluster computing task interference | |
KR102591315B1 (ko) | 클러스터 시스템의 메모리 통합 관리 방법 및 장치 | |
KR20190013049A (ko) | 모놀리식 3차원 집적 기술 기반 캐시 메모리 및 이의 제어 방법 | |
CN116401043A (zh) | 一种计算任务的执行方法和相关设备 | |
US11474938B2 (en) | Data storage system with multiple-size object allocator for disk cache | |
CN115640098A (zh) | 一种虚拟机异构内存池化方法和*** | |
CN114443223A (zh) | 一种裸机磁盘管理方法、装置及介质 | |
US20210373790A1 (en) | Inference in memory | |
CN115794368A (zh) | 业务***、内存管理方法及装置 | |
WO2015161804A1 (zh) | 一种Cache分区的方法及装置 | |
KR102565873B1 (ko) | Numa 시스템에서 메모리 버스에 연결하여 사용하는 저장장치의 할당 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |