KR102676385B1 - 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법 - Google Patents

가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법 Download PDF

Info

Publication number
KR102676385B1
KR102676385B1 KR1020210147801A KR20210147801A KR102676385B1 KR 102676385 B1 KR102676385 B1 KR 102676385B1 KR 1020210147801 A KR1020210147801 A KR 1020210147801A KR 20210147801 A KR20210147801 A KR 20210147801A KR 102676385 B1 KR102676385 B1 KR 102676385B1
Authority
KR
South Korea
Prior art keywords
virtual machine
cpu
performance
cores
detected
Prior art date
Application number
KR1020210147801A
Other languages
English (en)
Other versions
KR20230063015A (ko
Inventor
박준용
Original Assignee
한화시스템 주식회사
Filing date
Publication date
Application filed by 한화시스템 주식회사 filed Critical 한화시스템 주식회사
Priority to KR1020210147801A priority Critical patent/KR102676385B1/ko
Publication of KR20230063015A publication Critical patent/KR20230063015A/ko
Application granted granted Critical
Publication of KR102676385B1 publication Critical patent/KR102676385B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Abstract

본 발명의 실시 예는 주기적으로 서버의 성능 정보를 취득 또는 계산하여 주기적으로 출력하는 성능 파일 출력부; 상기 출력된 성능 정보를 저장하고, 상기 저장된 성능 정보가 미리 지정된 조건을 만족하는 경우, 성능 조정 신호를 출력하는 성능 감시부; 및 상기 성능 조정 신호가 입력되면, 가상머신의 CPU(Central Processing Unit) 성능을 조정하는 성능 조정부를 포함한다.

Description

가상화 서버에서 가상머신 CPU 자원을 관리하는 장치 및 방법{APPARATUS AND METHOD FOR MANAGING VIRTUAL MACHINE CPU RESOURCE IN VIRTUALIZATION SERVER}
본 발명은 가상화 서버에서 가상머신 CPU(Central Processing Unit) 자원을 관리하는 장치 및 방법에 관한 것이다.
가상화 기술은 하나의 물리적 서버에 여러 개의 가상머신(virtual machine : VM)을 생성하고 각 가상머신이 독립적인 개별 하드웨어를 가지고 있는 것처럼 만들어 주는 기술이다.
이와 같은 가상화 기술이 보편화되고, 하드웨어 비용이 절감되면서 가상화 기술이 적용되는 분야가 다양해졌다. 그러면서 자연스럽게 실시간 프로세싱 기반의 프로그램이 구동되는 환경 또한 가상화 기술이 쓰이게 되었다. 오피스 환경에서는 무시 될만한 성능 저하도 실시간 프로세싱 환경에서는 수용 불가능한 문제가 될 가능성이 있다.
종래기술의 문제점으로 나타날 수 있는 가장 큰 문제 중 하나는 새로운 가상머신을 가상화 환경에 추가적으로 배포할 때 발생한다. 새로운 가상머신이 가상화 환경에 추가적으로 배포되는 경우, 가상머신들 간에 CPU 사이클 경쟁이 시작됨에 따라 처음 배포된 가상머신들의 성능이 상대적으로 저하되는 문제점이 있다.
본 발명은 실시간 프로세싱 기반의 프로그램이 실행 중인 가상머신을 운용하는 가상화 환경에서 불균일 기억 장치 접근(Non-Uniform Memory Access : NUMA) 구조를 고려한 가상머신의 CPU 자원 관리 장치 및 방법을 제공한다.
본 발명은 NUMA 구조에서 가상머신 CPU 자원 관리 도구를 가상머신에 탑재하여 관리자의 개입 없이 관리 도구에 의해 자동으로 CPU 자원 할당을 조정하는 장치 및 방법을 제공한다.
본 발명의 실시 예에 따른 장치는, 주기적으로 서버의 성능 정보를 취득 또는 계산하여 주기적으로 출력하는 성능 파일 출력부; 상기 출력된 성능 정보를 저장하고, 상기 저장된 성능 정보가 미리 지정된 조건을 만족하는 경우, 성능 조정 신호를 출력하는 성능 감시부; 및 상기 성능 조정 신호가 입력되면, 가상머신의 CPU(Central Processing Unit) 성능을 조정하는 성능 조정부를 포함한다.
본 발명의 실시 예에 따른 방법은, 주기적으로 서버의 성능 정보를 취득 또는 계산하여 주기적으로 출력하는 과정; 상기 출력된 성능 정보를 저장하고, 상기 저장된 성능 정보가 미리 지정된 조건을 만족하는 경우, 성능 조정 신호를 출력하는 과정; 및 상기 성능 조정 신호가 입력되면, 가상머신의 CPU(Central Processing Unit) 성능을 조정하는 과정을 포함한다.
본 발명은 NUMA 구조에서 가상머신 CPU 자원 관리 도구가 가상머신의 CPU 자원 조정을 담담하여 관리자의 개입 없이 자동으로 리소스를 조정함으로써 가상머신의 성능 저하를 실시간으로 대응할 수 있다.
본 발명은 NUMA 구조에서 가상머신 CPU 자원 관리 도구가 가상머신의 CPU 자원 조정을 담당함으로써 관리자의 개입 없이 자동으로 리소스 조정이 가능하다. 이는 인건 비용을 절감시킬 수 있으며, 가상머신의 성능을 분석하고 튜닝하는데 드는 시간을 들이지 않아도 된다.
본 발명은 단순한 가상머신의 CPU 사용률에 의한 성능 분석 및 조정이 아니라 가상머신 간의 CPU 사이클 경쟁을 고려하여 사용자가 발견하거나 대처하기 힘든 가상화 특성에 의한 성능 저하에 대처가 가능할 수 있다.
본 발명은 가상머신 성능 저하 시 가상머신 CPU 자원을 효율적으로 관리할 수 있다.
도 1은 일반적인 가상화 서버 구성도이다.
도 2는 본 발명의 실시 예에 따른 가상화 서버 구성도이다.
도 3은 본 발명의 실시 예에 따른 가상화 서버 내 관리용 가상머신 구성도이다.
도 4는 본 발명의 실시 예에 따른 가상머신 성능 저하 시 가상머신 CPU 자원 관리 방법을 나타낸 흐름도이다.
이하, 본 발명의 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 발명에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 실시예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 발명에서, "가진다", "가질 수 있다", "포함한다", 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 발명에서, "A 또는 B", "A 또는/및 B 중 적어도 하나", 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B", "A 및 B 중 적어도 하나", 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 발명에서 사용된 "제 1", "제 2", "첫째", 또는 "둘째" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 예를 들면, 제 1 사용자 기기와 제 2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 발명에 기재된 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상술한 어떤 구성요소가 상술한 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 어떤 구성요소와 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 발명에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)", "~하는 능력을 가지는(having the capacity to)", "~하도록 설계된(designed to)", "~하도록 변경된(adapted to)", "~하도록 만들어진(made to)", 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 AP(application processor))를 의미할 수 있다.
본 발명에서 사용된 용어들은 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 발명에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 발명에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 발명에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 발명에서 정의된 용어일지라도 본 발명의 실시예들을 배제하도록 해석될 수 없다.
본 명세서에 기재된 불균일 기억 장치 접근(Non-Uniform Memory Access, NUMA)은 멀티프로세서 시스템에서 사용되고 있는 컴퓨터 메모리 설계 방법 중의 하나로, 메모리에 접근하는 시간이 메모리와 프로세서간의 상대적인 위치에 따라 달라진다. NUMA 구조에서 프로세서는 자기의 로컬 메모리에 접근할 때가 원격 메모리에 접근할 때보다 더 빠르다. 원격 메모리는 다른 프로세서에 연결되어 있는 메모리를 말하고 로컬 메모리는 자기 프로세서에 연결되어 있는 메모리를 말한다.
본 발명은 데스크톱 혹은 서버 가상화를 사용하는 가상화 환경의 성능 최적화 방법에 관한 것으로서, 보다 상세하게는 단순 사무용이 아닌 성능이 보장되어야 하는 실시간 프로세싱 기반의 프로그램이 실행 중인 가상 머신을 운용하는 가상화 환경에서 NUMA 구조를 고려한 가상 머신의 CPU 자원 관리 방안에 관한 것이다.
본 명세서에서 "사용자"와 "유저(user)"는 동일한 의미이므로 혼용하여 사용하기로 한다.
도 1은 일반적인 가상화 서버 구성도이다.
도 1을 참조하면, 가상화 서버(100)는 가상머신 관리 시스템(102), 가상머신 1~N(104-1~104-N) 등을 포함하여 구성될 수 있다.
가상화 서버 관리자는 가상화 서버(100)에서 제공하는 가상머신 관리 시스템(102)에 접속하여 가상머신을 모니터링하고 필요 시 혹은 유저의 요구 사항이 있을 경우 해당 시스템을 통하여 가상머신의 리소스를 조정한다.
가상화 서버 관리자는 서버에 필요한 개수만큼 가상머신을 만들고, CPU 및 메모리와 같은 리소스를 할당하여 유저에게 배포한다. 일종의 가상 PC를 만들어 배포하는 것과 같다. 지금까지는 그 용도가 사무직 군의 오피스 용도로 크게 사용되어 왔으며, 해당 환경에서는 성능 고려가 크게 이루어지지 않았다. 가상머신의 성능은 해당 가상머신을 사용하는 유저의 정성적인 평가에 의존하였으며, 정량적으로 관측 할만한 수치로는 운영체제 또는 가상화 플랫폼에서 제공하는 리소스 모니터의 값에 표시되는 CPU 및 메모리 사용량에 중점을 두었다. 유저가 가상머신을 사용하면서 성능 상에 문제가 있거나, 리소스가 부족하다고 판단이 될 경우, 이를 관리자에게 알려 문제를 해결해주길 기다려야 한다. 관리자는 유저로부터 성능 이슈를 보고 받으면 해당 가상머신의 리소스를 조정해야 한다. 이 때 관리자는 가상머신의 리소스를 조정할 때에 아래의 값들을 참고하여 해당 가상머신 성능에 실제로 문제가 있는지 파악하고 문제가 파악되면 서버의 아래 리소스 상태를 고려한다.
- 가상머신 평균 CPU 사용률
- 서버 CPU 코어 개수
- 가상머신 CPU 코어 개수
가상머신의 평균 CPU 사용률이 임계치 이상으로 높다면 할당된 CPU가 부족하다고 판단하여 해당 가상머신에 CPU 코어를 추가적으로 할당한다. 이 때 추가 할당한 후에 가상머신들의 CPU 코어 총 합이 서버의 CPU 코어 개수를 초과해선 안된다. 초과할 경우 시스템 운용은 가능하겠지만 또 다른 성능 저하가 초래할 가능성이 있다. 가상화 서버를 구성하는 가상머신들의 CPU 코어 개수를 정하는 것은 가상화를 구성할 때 큰 난제 중 하나이다. 보통은 가상머신에 탑재되는 프로그램에 따라 의사 결정이 이루어지지만 정확한 규정이 없어 어림잡아 여유있게 할당하거나 코어 1개를 먼저 할당하여 운용하면서 성능에 따라 그 개수를 늘려가는 것이 일반적이다.
가상화 기술이 보편화되고, 하드웨어 비용이 절감되면서 가상화 기술이 적용되는 분야가 다양해졌다. 그러면서 자연스럽게 실시간 프로세싱 기반의 프로그램이 구동되는 환경 또한 가상화 기술이 쓰이게 되었다. 오피스 환경에서는 무시 될만한 성능 저하도 실시간 프로세싱 환경에서는 수용 불가능한 문제가 될 가능성이 있다.
종래기술의 문제점으로 나타날 수 있는 가장 큰 문제 중 하나는 새로운 가상머신을 가상화 환경에 추가적으로 배포할 때 발생한다. 사용자들은 초반의 뛰어난 성능에 익숙해져 있으나 더 많은 가상머신이 배포되어 CPU 사이클 경쟁이 시작됨에 따라 처음 배포된 가상머신들은 상대적으로 성능이 저하될 것이다. 성능 저하가 발생하여 해결한 후에도 관리자들이 항상 적극적으로 가상머신들을 모니터링하고 리소스를 조정해야 하는 이유이다.
일반적으로 성능을 판단할 때, CPU 사용률을 참고한다. CPU 사용률이 높아서 성능이 저하된다면 유저는 관리자에게 추가적인 CPU 코어 할당을 요구할 것이고, 관리자는 서버의 가용한 리소스를 확인한 후 가능하다면 CPU 코어를 추가적으로 할당할 것이다. 그러나 가상화 환경이라는 특수한 환경 때문에 추가적으로 아래 사항들을 고려해야 한다.
- 가상머신 CPU 할당 지연 시간
- 서버 CPU 코어당 사용률
- 가상머신이 할당된 NUMA 노드
CPU 할당 지연 시간이란 가상머신이 실행할 준비가 되어 서버의 CPU 코어를 할당받기까지 대기하는 시간이다. 가상머신에 할당된 CPU는 가상의 CPU이므로 실제 서버의 물리적 CPU를 실시간으로 할당 받아야만 동작할 수 있다. 서버의 CPU 스케줄러는 스케줄링 알고리즘에 따라 실행중인 가상머신에 CPU를 할당하고 회수한다. 이 때 가상머신에 CPU를 할당하는데에 지연 시간이 적을수록 사용자는 가상머신을 쾌적하게 이용할 수 있다. 만약 CPU 할당 지연 시간이 임계치 이상으로 올라갈 경우 사용자가 불편함을 느낄 정도로 성능이 안좋을 것이다.
서버 CPU 코어당 사용률은 NUMA 구조에서 CPU 자원이 불균일하게 할당되었는지 판단하기 위해 사용된다. 근래의 CPU 및 메모리 구조는 메모리 접근의 효율성을 위해 CPU 소켓 단위로 노드가 나누어져 있어, 각 노드에서 동작 중인 CPU 코어가 가상머신으로 할당된다. 만약 CPU 코어 사용률 표준 편차가 작다면 모든 코어가 균일하게 이용 중이라는 의미로 볼 수 있다. 하지만 CPU 코어 사용률 표준 편차가 크다면 특정 노드의 CPU 코어만 사용량이 많아 부하 불균형이 발생했다고 볼 수가 있다. 또한 가상머신 간에 통신을 하는 등 상호연관성이 있다고 판단되면 연관된 가상머신들은 같은 NUMA 노드에서 동작하게 된다. 그렇게 되면 전체적으로 CPU 할당 능력이 충분함에도 불구하고 특정 노드의 부하만 높아지는 상황이 초래되어 가상머신의 성능을 저하시킬 수 있다. 이 상황에서 가상머신을 사용하는 유저는 운영 체제의 리소스 모니터에 CPU 사용률이 안정적으로 표시되지만 성능 저하를 체험할 것이다. 따라서 가상머신이 어느 NUMA 노드에서 동작 중인지를 아는 것이 중요하다.
결론적으로 가상화 관리자는 각 가상머신의 CPU 사용률 및 서버의 CPU 사용률을 관찰하여 가상머신에 할당한 CPU를 과다하게 사용하고 있는지 혹은 CPU 사용률은 정상이지만 가상머신 간에 CPU 사이클 경쟁에 의해 성능 저하가 발생하였는지 면밀히 관찰해야 한다. 하지만 해당 분석에는 시간과 노력이 따른다.
따라서 본 발명은 이러한 문제를 해결하고자 NUMA 구조에서 가상머신 CPU 자원 관리 도구를 가상머신에 탑재하여 관리자의 개입 없이 관리 도구에 의해 자동으로 CPU 자원 할당을 조정하는 것을 목적으로 한다.
도 2는 본 발명의 실시 예에 따른 가상화 서버 구성도이다.
도 2를 참조하면, 가상화 서버(200)는 가상머신 관리 시스템(202), 관리용 가상머신(204), 가상머신 1~N(206-1~204-N) 등을 포함하여 구성될 수 있다.
도 2의 가상화 서버는 도 1의 가상화 서버에 비해 관리용 가상머신(204)이 추가되었다.
상기 관리용 가상머신(204)는 후술될 도 3의 가상머신 CPU 자원 관리 도구(310)를 탑재하여 가상머신 1~N(206-1~204-N) 위에서 실행 될 수 있다.
도 3은 본 발명의 실시 예에 따른 가상화 서버 내 관리용 가상머신 구성도이다.
본 발명의 실시 예에 따른 NUMA 구조에서 가상머신 CPU 자원 관리 도구(310)를 탑재하여 구동시킬 관리용 가상머신(204, 300)이 하나 생성되어 있고, 해당 가상머신 위에 도구가 실행 중이다.
상기 관리용 가상머신(300)은 가상머신 CPU 자원 관리 도구(310)를 포함하여 구성될 수 있다. 도 3에서는 가상머신 CPU 자원 관리 도구(310)를 CPU 자원 관리 도구(310)로 표기했다.
본 발명의 NUMA 구조에서 가상머신 CPU 자원 관리 도구(310)는 성능 파일 출력부(312), 성능 감시부(314), 성능 조정부(316) 등을 포함하여 구성될 수 있다.
상기 성능 파일 출력부(312)는 서버의 성능 정보를 주기적으로 파일로 출력하는 역할을 수행하도록 구성될 수 있다.
상기 성능 감시부(314)는 성능 파일을 통해 성능 이슈를 감지하도록 구성될 수 있다.
상기 성능 조정부(316)는 상기 성능 감시부(314)로부터 신호를 입력받아 CPU 자원을 조정하도록 구성될 수 있다.
또한 가상머신 CPU 자원 관리 도구(310)는 서버 내의 별도의 가상머신에 탑재 되며, 이 가상머신을 "관리용 가상머신"(300)이라고 칭한다.
상기 성능 정보는 가상머신 CPU 할당 지연 시간, 가상머신 CPU 사용률, 가상머신 CPU 코어 개수, 서버 CPU 코어당 사용률, 가상머신이 할당된 NUMA 노드를 포함할 수 있다.
상기 성능 조정부는, 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 큰 경우, 상기 가상머신 CPU 코어 개수를 증가시키고,
상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우, CPU 감소 대상 가상머신 탐색에 성공했을 경우, 탐색한 가상머신 CPU 코어 개수를 감소시키고,
상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우, CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우, CPU 업그레이드를 요청하고,
상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 마이그레이션 대상 NUMA 노드 탐색에 성공한 경우, 성능 저하 가상 머신을 탐색한 NUMA 노드로 변경하고,
상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우, CPU 감소 대상 가상머신 탐색에 성공했을 경우, 탐색한 가상머신의 CPU 코어 개수를 감소시키고,
상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우, CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우, CPU 업그레이드를 요청하도록 구성될 수 있다.
상기 성능 파일 출력부(312)는 주기적으로 서버의 성능 정보를 취득 혹은 계산하여 1분에 한번씩 출력한다. 서버의 성능 정보는 아래의 정보를 포함하여야 한다.
1) 가상머신 간의 CPU 사이클 경쟁을 판단하기 위해 가상머신 CPU 할당 지연 시간을 포함한다.
2) 가상머신 내에서 CPU를 과도하게 혹은 여유있게 사용중인지 판단하기 위해 가상머신 CPU 사용률을 포함한다.
3) 가상머신의 CPU 리소스를 조정할 때에 서버의 전체 CPU 코어 개수를 초과하는지 계산하기 위해 가상머신 CPU 코어 개수를 포함한다.
4) NUMA 구조에서 노드간에 부하 불균형이 있는지 판단하기 위해 서버 CPU 코어당 사용률을 포함한다.
5) NUMA 구조에서 노드간에 부하 불균형이 있을 경우 가상머신을 마이그레이션(migration)할 NUMA 노드를 탐색하기 위해 가상머신이 할당된 NUMA 노드를 포함한다.
상기 성능 감시부(314)는 위의 성능 정보가 포함된 파일을 입력 받아 저장한다. 성능 감시부(314)는 입력된 성능 정보를 관찰하여 아래의 경우 성능 조정부(316)에 성능 조정 신호를 입력한다. 성능 조정 신호는 A와 B 신호 두가지로 나뉜다.
1) 가상머신 평균 CPU 사용률 90% 초과(A)
2) 가상머신 CPU 할당 지연 시간 1초 초과(B)
상기 성능 조정부(316)는 A 신호를 입력받으면 아래의 절차에 따라 성능을 조정한다. 해당 가상머신의 CPU 코어 개수를 원래 코어 개수의 1/2개를 추가로 할당했을 때에 전체 가상머신 CPU 코어 개수의 합을 계산한다. 서버의 코어 개수를 초과하지 않을 시에 추가 할당을 진행한다. 초과할 시에 전체적으로 가상머신 CPU 코어 개수 조정이 필요하다. 이 때 가상머신의 평균 CPU 사용률에 따라 개수를 조정해야 한다. 성능 조정부(316)는 각 가상머신 간의 평균 사용률의 비율을 계산한다. 비율이 낮은 가상머신이 가장 성능에 여유가 있으므로 비율에 반비례하게 가상머신의 코어 개수를 줄여야 한다. 이 때 CPU 코어 개수를 감소시키는 가상머신은 할당된 코어 개수가 2개 이상인 가상머신을 대상으로 한다. 평균 CPU 사용률이 낮은 가상머신부터 할당된 코어 개수가 2개라면 1개, 4개 이상이라면 2개를 감소시킨다. 이때 감소시킨 후 CPU사용률을 먼저 고려해야 한다. 성능 조정부(316)는 아래 계산식에 의해서 감소 후 CPU 사용률을 체크 한다.
(현재 CPU 코어 개수) * (평균 CPU 사용률) / (감소된 CPU 코어 개수) < 0.8
감소 후 CPU 사용률을 만족하는 가상머신을 탐색하면 성능 조정부(316)는 탐색한 가상머신의 CPU 코어 개수를 감소를 진행한다. 동일한 작업을 반복하여, 감소된 CPU 코어 개수가 성능 저하가 발생한 가상머신에 늘리고자 하는 CPU 코어 개수를 충족할 시, 성능 저하가 발생한 가상머신에 CPU 코어 개수를 늘린다.
만약 CPU 코어 개수를 줄일 수 있는 가상머신이 존재하지 않을 시, 이는 해당 서버의 리소스 조정을 통해 해결 가능한 문제가 아니라고 판단되어 CPU 업그레이드 요청 알림을 띄우게 된다. 가상화를 운용하는 관리자 및 운용자는 해당 알림을 수신 시에 가상머신 내의 프로그램을 최적화하여 CPU 사용률을 줄일 것인지, 혹은 서버의 CPU 사양을 업그레이드 할 것인지 의사결정이 필요하다.
성능 조정부(316)는 B신호를 입력받으면 아래의 절차에 따라 성능을 조정한다. 첫째로, 아래의 조건식을 만족하는 NUMA 노드를 탐색한다
(성능 저하 가상머신의 CPU 코어 개수 + NUMA 노드의 사용 중인 CPU 코어 개수) < (NUMA 노드 전체 CPU 코어 개수)
위 조건식을 만족하는 NUMA 노드가 없을 시에는 아래의 조건에 따라 탐색한다.
1) 성능 저하 가상머신을 제외한 현재 NUMA 노드의 여유 CPU 코어 개수 계산
2) 다른 NUMA 노드 중 1)의 값보다 적은 코어 수를 사용 중인 가상머신 탐색
3) 탐색된 가상머신의 코어 수를 제외하고 NUMA 노드의 여유 CPU 코어 개수가 성능 저하 가상머신 CPU 코어 개수를 충족하는지 확인
해당 조건을 충족 시에 성능 조정부(316)는 성능 저하 가상머신의 NUMA 노드와 탐색된 가상머신의 NUMA 노드를 서로 변경하도록 설정한다.
모든 조건을 만족하지 않아 마이그레이션할 NUMA 노드를 찾지 못할 경우 전체적으로 CPU 개수를 감소시켜 CPU 사이클 경쟁을 줄이도록 해야한다. 이 때 전체 가상머신의 CPU 감소 방법은 위에서 기술한 CPU 사용률에 따른 CPU 코어 개수 감소 알고리즘을 따른다.
위의 가상머신 CPU 자원 관리 도구의 동작들을 통하여 관리자의 개입없이 자동으로 가상머신들의 성능에 따라 CPU 자원이 관리되고 성능 이슈가 해결될 것이다.
도 4는 본 발명의 실시 예에 따른 가상머신 성능 저하 시 가상머신 CPU 자원 관리 방법을 나타낸 흐름도이다.
상기 성능 조정부(316)는 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우(401)), 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 큰 경우(403), 상기 가상머신 CPU 코어 개수를 증가시킨다(405).
상기 성능 조정부(316)는 상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우(401), 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우(403), CPU 감소 대상 가상머신 탐색에 성공했을 경우(407), 탐색한 가상머신 CPU 코어 개수를 감소시킨다(409).
상기 성능 조정부(316)는 상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우(401), 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우(403), CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우(407), CPU 업그레이드를 요청한다(411).
상기 성능 조정부(316)는 상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우(401), CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우(413), 마이그레이션 대상 NUMA 노드 탐색에 성공한 경우(415), 성능 저하 가상 머신을 탐색한 NUMA 노드로 변경한다(417).
상기 성능 조정부(316)는 상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우(401), 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우(413), 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우(415), CPU 감소 대상 가상머신 탐색에 성공했을 경우(419), 탐색한 가상머신의 CPU 코어 개수를 감소시킨다(421).
상기 성능 조정부(316)는 상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우(401), 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우(413), 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우(415), CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우(419), CPU 업그레이드를 요청한다(423).
가상머신 CPU 자원 관리 도구가 가상머신의 CPU 자원 조정을 담당함으로써 관리자의 개입 없이 자동으로 리소스 조정이 가능하다. 이는 인건 비용을 절감시킬 수 있으며, 가상머신의 성능을 분석하고 튜닝하는데 드는 시간을 들이지 않아도 된다. 또한 단순한 가상머신의 CPU 사용률에 의한 성능 분석 및 조정이 아니라 가상머신 간의 CPU 사이클 경쟁을 고려하여 사용자가 발견하거나 대처하기 힘든 가상화 특성에 의한 성능 저하에 대처가 가능하다.
전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명의 실시 예들은 기술적 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시 예에 의하여 본 발명의 기술적 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (6)

  1. 주기적으로 서버의 성능 정보를 취득 또는 계산하여 주기적으로 출력하는 성능 파일 출력부;
    출력된 성능 정보가 미리 지정된 조건을 만족하는 경우, 성능 조정 신호를 출력하는 성능 감시부; 및
    상기 성능 조정 신호가 입력되면, 가상머신의 CPU(Central Processing Unit) 성능을 조정하는 성능 조정부를 포함하고,
    상기 성능 파일 출력부, 성능 감시부, 성능 조정부는 가상화 서버에 포함되고, 상기 가상화 서버는 Non-Uniform Memory Access (NUMA) 기반의 서버이며,
    상기 성능 정보는, 가상머신 CPU 할당 지연 시간, 가상머신 CPU 사용률, 가상머신 CPU 코어 개수, 서버 CPU 코어당 사용률, 가상머신이 할당된 NUMA 노드를 포함하고,
    상기 성능 조정부는,
    가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 그리고 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 큰 경우, 상기 가상머신 CPU 코어 개수를 증가시키고, 또는,
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 그리고 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공했을 경우, 탐색한 가상머신 CPU 코어 개수를 감소시키고, 또는,
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 그리고 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우, CPU 업그레이드를 요청하고, 또는,
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 그리고 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 그리고 마이그레이션 대상 NUMA 노드 탐색에 성공한 경우, 성능 저하 가상 머신을 탐색한 NUMA 노드로 변경하고, 또는,
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 그리고 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 그리고 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공했을 경우, 탐색한 가상머신의 CPU 코어 개수를 감소시키고, 또는,
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 그리고 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 그리고 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우, CPU 업그레이드를 요청함을 특징으로 하는 가상화 서버에서 가상머신 CPU 자원을 관리하는 장치.
  2. 삭제
  3. 삭제
  4. 성능 파일 출력부에서, 주기적으로 서버의 성능 정보를 취득 또는 계산하여 주기적으로 출력하는 과정;
    성능 감시부에서, 출력된 성능 정보가 미리 지정된 조건을 만족하는 경우, 성능 조정 신호를 출력하는 과정; 및
    성능 조정부에서, 상기 성능 조정 신호가 입력되면, 가상머신의 CPU(Central Processing Unit) 성능을 조정하는 과정을 포함하고,
    상기 성능 파일 출력부, 성능 감시부, 성능 조정부는 가상화 서버에 포함되고, 상기 가상화 서버는 Non-Uniform Memory Access (NUMA) 기반의 서버이며,
    상기 성능 정보는, 가상머신 CPU 할당 지연 시간, 가상머신 CPU 사용률, 가상머신 CPU 코어 개수, 서버 CPU 코어당 사용률, 가상머신이 할당된 NUMA 노드를 포함하고,
    상기 성능을 조정하는 과정은,
    가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 그리고 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 큰 경우, 상기 가상머신 CPU 코어 개수를 증가시키는 과정; 또는
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 그리고 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공했을 경우, 탐색한 가상머신 CPU 코어 개수를 감소시키는 과정; 또는
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지한 경우, 그리고 상기 전체 CPU 코어 개수가 증가 후 가상 머신 총 CPU 코어 개수 보다 작거나 같은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우, CPU 업그레이드를 요청하는 과정; 또는
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 그리고 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 그리고 마이그레이션 대상 NUMA 노드 탐색에 성공한 경우, 성능 저하 가상 머신을 탐색한 NUMA 노드로 변경하는 과정; 또는
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 그리고 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 그리고 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공했을 경우, 탐색한 가상머신의 CPU 코어 개수를 감소시키는 과정; 또는
    상기 가상머신 평균 CPU 사용률이 90% 이상 가상머신을 탐지하지 않은 경우, 그리고 상기 CPU 할당 지연 시간을 1초 초과한 가상머신을 탐지한 경우, 그리고 상기 마이그레이션 대상 NUMA 노드 탐색에 성공하지 않은 경우, 그리고 CPU 감소 대상 가상머신 탐색에 성공하지 않은 경우, CPU 업그레이드를 요청하는 과정을 포함함을 특징으로 하는 가상화 서버에서 가상머신 CPU 자원을 관리하는 방법.
  5. 삭제
  6. 삭제
KR1020210147801A 2021-11-01 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법 KR102676385B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210147801A KR102676385B1 (ko) 2021-11-01 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210147801A KR102676385B1 (ko) 2021-11-01 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20230063015A KR20230063015A (ko) 2023-05-09
KR102676385B1 true KR102676385B1 (ko) 2024-06-19

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013250905A (ja) * 2012-06-04 2013-12-12 Hitachi Ltd 仮想計算機システム及び仮想計算機システムの負荷制御方法
KR101686658B1 (ko) 2014-12-17 2016-12-14 (주)에임투지 사용자 서비스 품질 기반 클라우드 오토 스케일링 장치 및 그 방법
KR101722276B1 (ko) 2009-03-26 2017-03-31 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 가상 머신들을 위한 가상 불균일 메모리 아키텍처

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101722276B1 (ko) 2009-03-26 2017-03-31 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 가상 머신들을 위한 가상 불균일 메모리 아키텍처
JP2013250905A (ja) * 2012-06-04 2013-12-12 Hitachi Ltd 仮想計算機システム及び仮想計算機システムの負荷制御方法
KR101686658B1 (ko) 2014-12-17 2016-12-14 (주)에임투지 사용자 서비스 품질 기반 클라우드 오토 스케일링 장치 및 그 방법

Similar Documents

Publication Publication Date Title
EP3507692B1 (en) Resource oversubscription based on utilization patterns in computing systems
US9571561B2 (en) System and method for dynamically expanding virtual cluster and recording medium on which program for executing the method is recorded
US9396026B2 (en) Allocating a task to a computer based on determined resources
Sampaio et al. PIASA: A power and interference aware resource management strategy for heterogeneous workloads in cloud data centers
US9875145B2 (en) Load based dynamic resource sets
JP5370946B2 (ja) リソース管理方法及び計算機システム
WO2016134542A1 (zh) 虚拟机的迁移方法、装置及设备
US10489208B1 (en) Managing resource bursting
WO2015101091A1 (zh) 一种分布式资源调度方法及装置
KR102433765B1 (ko) 네트워크 기능 가상화 시스템 상의 컴퓨팅 리소스 관리 장치 및 방법
US11438271B2 (en) Method, electronic device and computer program product of load balancing
KR20120066189A (ko) 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법
KR102469927B1 (ko) 분할 메모리 관리장치 및 방법
US10866838B2 (en) Cluster computing service assurance apparatus and method
Sohrabi et al. The effects of hotspot detection and virtual machine migration policies on energy consumption and service levels in the cloud
Sfakianakis et al. Skynet: Performance-driven resource management for dynamic workloads
Javadi et al. User-centric interference-aware load balancing for cloud-deployed applications
CN110336888B (zh) 一种服务器分配方法、装置、系统及介质
CN111418187A (zh) 云网络中的可伸缩统计和分析机制
US10754547B2 (en) Apparatus for managing disaggregated memory and method thereof
KR102187382B1 (ko) 클라우드 인프라 기반의 컨테이너 가상os 통합 모니터링 운영 방법
KR102676385B1 (ko) 가상화 서버에서 가상머신 cpu 자원을 관리하는 장치 및 방법
WO2020163120A1 (en) Efficient scaling of a container-based application in a distributed computing system
US10375161B1 (en) Distributed computing task management system and method
US9742687B2 (en) Management system and method for execution of virtual machines