KR101145144B1 - 가상머신 스케줄링 방법 및 시스템 - Google Patents

가상머신 스케줄링 방법 및 시스템 Download PDF

Info

Publication number
KR101145144B1
KR101145144B1 KR1020100116863A KR20100116863A KR101145144B1 KR 101145144 B1 KR101145144 B1 KR 101145144B1 KR 1020100116863 A KR1020100116863 A KR 1020100116863A KR 20100116863 A KR20100116863 A KR 20100116863A KR 101145144 B1 KR101145144 B1 KR 101145144B1
Authority
KR
South Korea
Prior art keywords
virtual machine
node
scheduling
access
page table
Prior art date
Application number
KR1020100116863A
Other languages
English (en)
Inventor
최영리
최동훈
박상배
박동인
Original Assignee
한국과학기술정보연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술정보연구원 filed Critical 한국과학기술정보연구원
Priority to KR1020100116863A priority Critical patent/KR101145144B1/ko
Priority to PCT/KR2011/001023 priority patent/WO2012070721A1/ko
Application granted granted Critical
Publication of KR101145144B1 publication Critical patent/KR101145144B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 가상머신 스케줄링 방법 및 시스템에 관한 것으로서, 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 각각 측정하는 단계, 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고, 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하는 단계, 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 단계를 포함한다.
따라서, 본 발명에 따르면, 가상머신이 접근한 페이지 수를 이용하여 각 가상머신의 선호노드를 결정하므로, 가상머신을 수정하거나 추론하는 과정 없이 매우 정확한 결과를 측정할 수 있는 효과가 있다.

Description

가상머신 스케줄링 방법 및 시스템{Method and System for scheduling virtual machine}
본 발명은 가상머신 스케줄링 방법 및 시스템에 관한 것으로, 더욱 상세하게는 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 측정하고, 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하여 접근 페이지 수가 많은 노드 순으로 정렬한 후, 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하여 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 가상머신 스케줄링 방법 및 시스템에 관한 것이다.
비대칭 메모리(Non-Uniform Memory Access, NUMA) 시스템은 특정 CPU에서 접근하는 물리 메모리의 접근 시간이 어떠한 CPU에서 수행되는가에 따라 변하는 비대칭성을 갖고 있다. 이러한 현상은 비대칭 메모리 시스템이 갖고 있는 구조적 특성에서 기인한다. 비대칭 메모리 시스템의 경우는 과거 대칭형 프로세서(Symmetric multiprocessor, SMP)환경에서 여러 개의 CPU들을 사용하게 되고 그에 따른 메모리 확장으로 인하여, 지역 노드(local node)에 속한 메모리 접근을 하는 경우와 원격 노드(remote node)에 속한 메모리를 접근하는 시간차가 발생하게 되는 구조가 된 것이다. 이러한 문제는 현재 멀티코어 시스템에서도 동일하게 발생하게 된다.
따라서 NUMA 시스템에서 확장성(scalability)이 매우 큰 문제가 되고 있으며, 이러한 현상을 해결하기 위해서 리눅스를 비롯한 현대 운영체제들은 메모리 비대칭성을 고려한 메모리 할당 시스템과 스케줄링 시스템을 도입하고 있다.
게스트 도메인으로 사용하고 있는 리눅스가 NUMA 메모리와 스케줄링을 지원한다고 하더라도, 가상 머신 위에서 동작하고 있기 때문에 게스트 도메인은 올바른 NUMA 지원을 할 수 없게 된다.
즉, 게스트 도메인에서 하나의 core(virtual cpu)는 여러 개의 물리 CPU에서 동작을 할 수 있으며 각각의 경우에 따라 local node와 remote node를 접근하는 양상이 달라지며, 게스트 도메인들은 이러한 상황을 인지하지 못한 채 동작하게 된다.
이를 위하여 가상머신 모니터가 NUMA system 정보를 게스트 도메인들에게 가상화시켜줄 수 있는 방법이 존재하기는 하지만, 물리 메모리가 비연속적으로 사용되고 있으며 게스트 시스템의 메모리 할당이 변경되는 경우 등과 같은 상황을 명확하게 지원해야 하는 문제들이 존재한다.
또한, 컨트롤 도메인이 가상머신을 생성할 때 4GB단위로 메모리를 요청하기 때문에 가상머신은 하나의 NUMA node에서 대부분의 메모리를 할당받게 된다.
표 1은 2GB 메모리를 갖는 가상머신을 할당받았을 때 각각의 노드 별로 할당된 페이지의 수를 세본 표이다.
created memory
# of pages
node0 node1
520640 0
가상머신은 0번 노드에 해당하는 메모리로부터 모든 페이지를 할당받게 되기 때문에 1번 노드를 사용하는 CPU 쪽에서 스케줄링되게 되면 매우 심각한 메모리 접근 비용이 필요하게 된다.
따라서 종래의 스케줄링 장치는 0번 노드와 1번 노드를 번갈아 이동하면서 스케줄링하기 때문에 NUMA 시스템에서 좋지 못한 성능을 보이게 된다.
본 발명은 상기한 문제점을 해결하기 위하여 안출한 것으로, 본 발명의 목적은 NUMA(비대칭형 메모리)를 고려하여 가상머신을 물리적인 CPU에 스케줄링하는 가상머신 스케줄링 방법 및 시스템을 제공하는데 있다.
본 발명의 다른 목적은 가상머신이 접근한 페이지 수를 측정하고, 측정된 접근 페이지 수를 이용하여 각 가상머신의 선호노드를 결정할 수 있는 가상머신 스케줄링 방법 및 시스템을 제공하는데 있다.
상기 목적들을 달성하기 위하여 본 발명에 따르면, 스케줄링 장치가 가상머신을 스케줄링하는 방법에 있어서, (a) 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 각각 측정하는 단계, (b) 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고, 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하는 단계, (c) 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 단계를 포함하는 가상머신 스케줄링 방법이 제공된다.
상기 가상머신 스케줄링 방법은 상기 (a) 단계 이전에 각 가상머신의 모든 페이지 테이블 엔트리의 액세스 비트를 초기화하는 단계, 미리 정해진 샘플링 주기 동안 각 가상머신에 할당된 페이지 테이블의 엔트리를 관측하여 그 관측 결과를 수집하는 단계를 더 포함할 수 있다.
상기 (a) 단계는, 각 가상머신에 할당된 페이지 테이블의 엔트리를 검사하여 액세스 비트가 설정된 페이지 테이블 엔트리의 수를 세어 접근 페이지 수를 측정한다.
상기 (c) 단계는 각 가상머신을 접근 페이지 수를 기반으로 해당 선호 노드에 우선 순위로 스케줄링한다.
이때, 스케줄링되고자 하는 가상머신의 VCPU(Virtual CPU)수가 해당 선호노드의 CPU 수를 초과하는 경우, 상기 가상머신들을 접근 페이지 수가 많은 순으로 정렬하여 최우선 순위의 가상머신에게 상기 선호노드의 CPU를 스케줄링한다.
또한, 각 CPU의 local run queue에서 가상머신을 선택할 때 다른 CPU의 local run queue에 존재하는 동일한 선호 노드를 가지고 있는 가상머신을 검사하여 가장 접근 페이지 수가 많은 가상머신을 선택한다.
또한, 선점기법을 사용하여 해당 선호 노드에 자신보다 낮은 접근 페이지 수를 가진 가상머신이 수행되고 있다면 상기 자신보다 낮은 접근 페이지 수를 가진 가상머신을 다른 노드로 보내고, 상기 선호노드는 자신이 선점한다.
본 발명의 다른 측면에 따르면, 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 측정하는 접근 페이지 수 측정부, 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고, 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하는 선호노드 결정부, 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 스케줄링부를 포함하는 가상머신 스케줄링을 위한 스케줄링 장치가 제공된다.
상기 가상머신 스케줄링을 위한 스케줄링 장치는 각 가상머신의 모든 페이지 테이블 엔트리의 액세스 비트를 초기화하는 초기화부를 더 포함할 수 있다.
상기 접근 페이지 수 측정부는 각 가상머신에 할당된 페이지 테이블의 페이지 테이블 엔트리를 검사하여 액세스 비트가 '1"로 설정된 페이지 테이블 엔트리의 수를 세어 접근 페이지 수를 측정한다.
상기 스케줄링부는 각 가상머신을 접근 페이지 수를 기반으로 해당 선호 노드에 우선 순위로 스케줄링한다.
또한, 상기 스케줄링부는 스케줄링되고자 하는 가상머신의 VCPU(Virtual CPU)수가 해당 선호노드의 CPU 수를 초과하는 경우, 상기 가상머신들을 접근 페이지 수가 많은 순으로 정렬하여 우선 순위의 가상머신에게 상기 선호노드의 CPU를 스케줄링한다.
또한, 상기 스케줄링부는 각 CPU의 local run queue에서 가상머신을 선택할 때 다른 CPU의 local run queue에 존재하는 동일한 선호 노드를 가지고 있는 가상머신을 검사하여 가장 접근 페이지 수가 큰 가상머신을 선택한다.
또한, 상기 스케줄링부는 선점기법을 사용하여 해당 선호 노드에 자신보다 낮은 접근 페이지 수를 가진 가상머신이 수행되고 있다면 상기 자신보다 낮은 접근 페이지 수를 가진 가상머신을 다른 노드로 보내고, 상기 선호노드는 자신이 선점한다.
본 발명의 또 다른 측면에 따르면, 일정 개수의 CPU를 각각 포함하는 복수 개의 노드, 각 노드에 연결된 메모리, 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 측정하고, 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고, 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정한 후, 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 스케줄링 장치를 포함하는 가상머신 스케줄링을 위한 시스템이 제공된다.
상술한 바와 같이 본 발명에 따르면, 가상머신이 접근한 페이지 수를 이용하여 각 가상머신의 선호노드를 결정하므로, 가상머신을 수정하거나 추론하는 과정 없이 매우 정확한 결과를 측정할 수 있는 효과가 있다.
또한, 자신보다 낮은 접근 페이지 수를 갖는 가상머신의 수행이 끝나기를 기다리는 시간을 줄임으로서 성능 향상을 이룰 수 있도록 해준다.
또한, 단일 작업부하(workload)를 대상으로 하는 경우와 여러 개의 작업부하를 함께 수행하는 경우 모두 효과적으로 선호 노드를 선별하여 스케줄링함으로서 시스템의 효율을 높일 수 있다.
도 1은 본 발명의 실시예에 따른 가상머신 스케줄링을 위한 시스템을 나타낸 도면.
도 2는 페이지 테이블을 포함하는 메모리를 나타낸 도면.
도 3은 페이지 테이블 엔트리의 구조를 나타낸 도면.
도 4는 본 발명의 실시예에 따른 가상머신 스케줄링을 위한 스케줄링 장치의 구성을 개략적으로 나타낸 블럭도.
도 5는 본 발명의 실시예에 따른 가상머신 스케줄링 방법을 나타낸 흐름도.
본 발명의 전술한 목적과 기술적 구성 및 그에 따른 작용 효과에 관한 자세한 사항은 본 발명의 명세서에 첨부된 도면에 의거한 이하 상세한 설명에 의해 보다 명확하게 이해될 것이다.
도 1은 본 발명의 실시예에 따른 가상머신 스케줄링을 위한 시스템을 나타낸 도면, 도 2는 페이지 테이블을 포함하는 메모리를 나타낸 도면, 도 3은 페이지 테이블 엔트리의 구조를 나타낸 도면이다.
도 1을 참조하면, 가상머신 스케줄링을 위한 시스템은 일정 개수의 CPU를 각각 포함하는 복수 개의 socket(이하에서는 노드로 칭함)(100a, 100b), 각 노드(100a, 100b)에 연결된 메모리(200a, 200b), 가상 머신(300), 가상 머신 모니터(350)를 포함한다.
여기에서는 8개의 CPU가 두 개의 노드(100a, 100b)로 연결되어 있는 시스템을 예로 하여 설명하기로 한다.
제1 노드(100a)에는 4개의 CPU가 존재하고, 제1 메모리(200a)가 연결된다.
제2 노드(100b)에는 4개의 CPU가 존재하고, 제2 메모리(200b)가 연결된다.
상기 메모리(200a, 200b)는 가상머신별로 할당되고, 메모리(200a, 200b)에는 도 2와 같이 가상머신에 할당된 페이지 테이블(Page Table)(210)이 존재한다. 상기 페이지 테이블(210)은 프로세스의 페이지 정보를 저장하고 있는 테이블이다. 하나의 프로세스는 하나의 페이지 테이블을 가진다.
가상머신 안의 각 프로세스(process)당 가상주소 공간(virtual address space)를 갖게 되고 그 프로세스 실행 시 그 프로세스의 페이지 테이블(210)을 액세스하게 된다.
상기 페이지 테이블(210)은 페이지 번호, 해당 페이지에 할당된 물리 메모리의 시작 주소로 구성된다. 상기 시작 주소와 페이지 주소를 결합하여 물리 메모리 주소를 알 수 있다.
상기 페이지 테이블(210)은 복수 개의 페이지 테이블 엔트리(Page Table Entry, 줄여서 PTE)(215)로 구성된다.
상기 페이지 테이블 엔트리(215)에 대해 도 3을 참조하면, PTE는 페이지 기본주소(Page base address), Available for system programmer's use 비트, Global Page 비트, Page Table Attribute Index, 변경 비트(Dirty bit), 접근 비트(Accessed bit), Cache Discard 비트, Write Through 비트, User/Supervisor 비트, 읽기/쓰기 비트(Read/Write bit), 현재 비트(Present bit)로 구성된다.
상기 접근 비트(Accessed bit)는 페이지에 대한 접근이 있었는지를 나타내고, 변경 비트(Dirty bit)는 페이지 내용의 변경이 있었는지를 나타내고, 현재 비트(Present bit)는 현재 페이지에 할당된 프레임이 있는지를 나타내고, 읽기/쓰기 비트(Read/Write bit)는 읽기/쓰기에 대한 권한을 표시한다.
여기서, 상기 접근비트는 운영체제가 해당 페이지를 접근하였을 때 "1"로 값이 설정된다.
상기 가상 머신(300)은 각각의 OS에 운영되는 가상화된 시스템으로 가상 머신 모니터(350) 상의 다른 가상 머신에 의해 영향을 받지 않는 독립적인 개체이다.
즉, 상기 가상 머신(300)은 가상화 환경에서 구동 가능한 운영체제(OS)이거나 운영체제에서 지원되는 응용프로그램(Application) 또는 이들의 결합 형태일 수 있다. 가상화 환경은 중앙처리장치(CPU), 기억 장치, 입출력 등 단일 플랫폼상의 자원을 사용자가 여러 운영체제나 응용 프로그램으로 분할해 사용할 수 있는 환경이다.
상기 가상 머신 모니터(virtual machine monitor)(350)는 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 측정하고, 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하여 접근 페이지 수가 많은 노드 순으로 정렬한 후, 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하여 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링한다.
여기서, 상기 샘플링 주기는 샘플링 시간(samping window)와 샘플링 간격(samping interval)로 구성된다. 상기 샘플링 시간은 접근된 페이지 수를 관찰하는 기간이며 샘플링 간격은 다음 샘플링이 일어나기까지의 간격을 말한다.
샘플링 시간이 길어지면 길어질수록 가상 머신 모니터는 오랜 기간동안 자료를 이용하게 되는데 이 시간이 너무 길어지면 빠른 시간동안 페이지를 많이 접근하는 작업부하(workload)와 그렇지 않은 작업부하간의 차이가 줄어들 수 있기 때문에 너무 길게 설정해서는 안되며, 반대로 너무 짧은 기간 동안을 관측하면 관측 정보가 부정확해질 수 있다. 상기 샘플링 간격은 샘플링으로 인한 오버헤드를 조정하기 위한 것으로 간격이 너무 짧으면 비교적 정확한 데이터를 얻는 대신 샘플링 비용이 증가하게 되고 반대로 너무 길게 되면 샘플링 비용이 적은 대신 이전 단계의 데이터를 오랫동안 사용하게 된다.
또한, 상기 가상 머신 모니터(350)는 하나의 하드웨어 플랫폼에서 복수의 동일한 실행 환경을 제공하기 위해 제안된 기술 중 하나이다.
따라서, 상기 가상 머신 모니터(350)는 하나의 하드웨어에 독립적으로 운영되는 복수의 가상 머신을 생성하여, 복수의 가상 머신이 각 노드의 하드웨어 자원을 공유할 수 있게 한다. 여기서, 공유되는 자원에는 CPU, 메모리 등이 있을 수 있다.
상기 가상 머신 모니터(350)는 각 노드(100a, 100b)의 하드웨어 자원을 가상화함으로써 복수의 가상 머신들이 각 노드(100a, 100b)의 자원을 공유할 수 있게 한다.
가상 머신(300)에서 구동되는 OS들은 가상 머신 모니터(350)에 노드(100a, 100b)에 대한 액세스를 요청하고, 가상 머신 모니터(350)는 이러한 가상 머신(300)과 노드들(100a, 100b)을 중개한다.
즉, 가상 머신 모니터(350)는 가상 머신(300)의 OS가 각 노드(100a, 100b)의 자원에 액세스할 수 있도록 중개한다.
상기에서는 가상 머신 모니터(305)가 가상머신(300)을 스케줄링하는 것으로 설명하였으나, 가상머신(300)을 스케줄링하는 장치는 가상머신 모니터(350)내에 존재하는 장치로서, 이하에서는 가상머신을 스케줄링하는 장치를 스케줄링 장치로 칭하여 설명하기로 한다.
도 4는 본 발명의 실시예에 따른 가상머신 스케줄링을 위한 스케줄링 장치의 구성을 개략적으로 나타낸 블럭도이다.
도 4를 참조하면, 가상머신의 스케줄링을 위한 스케줄링 장치(400)는 초기화부(410), 접근 페이지 수 측정부(420), 선호노드 결정부(430), 스케줄링부(440)를 포함한다.
상기 초기화부(410)는 각 가상머신에 할당된 페이지 테이블안의 엔트리에 대해 초기화를 수행한다. 즉, 상기 초기화부(410)는 페이지 테이블 엔트리의 액세스 비트를 초기화한다.
상기 접근 페이지 수 측정부(420)는 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 측정한다.
즉, 상기 접근 페이지 수 측정부(420)는 샘플링 주기마다 각 노드에 연결된 메모리에 접근한 후, 각 가상머신에 할당된 페이지 테이블의 엔트리를 검사하여 액세스 비트가 '1"로 설정된 엔트리의 수를 세어 접근 페이지 수를 측정한다.
상기 선호 노드 결정부(430)는 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고, 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정한다.
즉, 상기 선호 노드 결정부(430)는 가상머신별로 선호노드를 결정한다.
스케줄링부(440)의 스케쥴링 방법은 다음과 같은 원칙을 기본으로 한다.
첫번째, 모든 가상 머신은 선호 노드의 CPU에서 우선 수행을 시도한다.
두번째, 만일 한 노드의 CPU 수보다 스케줄링되고자 하는 가상 머신들의 모든 VCPU수가 많다면, 그 VCPU들 중에서 각 CPU에 대한 페이지 접근 수(샘플링 결과)가 가장 많은 가상 머신의 VCPU에게 우선권을 준다.
세번째, 페이지 접근 수를 기반으로 하는 스케줄링 시에 발생할 수 있는 기아상태(Starvation)는 일반적인 가상화 시스템이나 운영체제의 스케줄러(Scheduler)의 정책을 통해 발생을 방지한다.
상기 원칙에 따른 방법의 수행을 위해서, 상기 스케줄링부(440)는 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링한다. 이때, 상기 스케줄링부(440)는 각 가상머신을 접근 페이지 수를 기반으로 해당 선호 노드에 우선 순위로 스케줄링한다.
즉, 상기 스케줄링부(440)는 스케줄링되고자 하는 가상머신의 VCPU(Virtual CPU)수가 해당 선호노드의 CPU 수를 초과하는 경우, 상기 가상머신들을 접근 페이지 수가 많은 순으로 정렬하여 최우선 순위의 가상머신에게 해당 선호노드의 CPU를 스케줄링한다.
예를 들어, 8개의 CPU가 2개의 노드에 각각 4개씩 구성되어 있고, 제1 가상머신과 제2 가상머신이 노드 0번을 선호 노드로 가지고 있는 경우, 제1 가상머신의 VCPU가 4개, 제2 가상머신의 VCPU가 2개라면 그 중 접근 페이지 수가 많은 제1 가상머신이 노드 0에 선택되고 제2 가상머신은 노드 1번에 스케줄링된다.
또한, VCPU들을 각 물리적 CPU에서 실행하는 중에 운영체제 등에 의해 상황이 변경될 수 있으므로 동적인 환경을 반영하여 상기 스케쥴링 원칙을 수행할 필요가 있다.
따라서, 상기 스케줄링부(440)는 각 CPU의 로컬 실행큐(Local Run Queue)에서 가상머신의 VCPU(Virtual CPU)를 선택할 때, 즉 로컬 실행큐에서 실행 차례가 된 VCPU를 꺼내어 실행할 때, 현재 CPU의 로컬 실행큐(Local Run Queue)뿐 만이 아니라 다른 CPU의 로컬 실행큐(Local Run Queue)에 존재하는 동일한 선호 노드를 가지고 있는 가상머신들의 VCPU들을 검사하여, 각 CPU가 속한 노드에 대해 가장 접근 페이지 수가 많은 가상머신의 VCPU를 선택한다.
실행큐(Run Queue)는 실행 가능한(Runnable) VCPU(또는 스레드)들을 관리하는 큐(Queue)형태의 선입선출형(First Input First Ouput-FIFO)의 추상적인 자료 구조로서, 운영체제에서 일반적으로 사용되는 자료 구조를 말한다. 로컬 실행큐는 복수의 CPU들 전체에 대한 실행큐가 아닌, 각 CPU에 대한 개별적인 실행큐를 의미한다.
또한, 상기 스케줄링부(440)는 선점(preemption)기법을 사용하여 상기 선호 노드에 자신보다 낮은 접근 페이지 수를 가진 가상머신이 수행되고 있다면 상기 자신보다 낮은 접근 페이지 수를 가진 가상머신을 다른 노드로 보내고, 상기 선호노드는 자신이 선점한다.
상기와 같은 상황은 샘플링을 통해 얻은 결과가 이전 단계와 바뀌었거나 접근 페이지 수가 많은 가상머신이 입출력이나 락을 얻기 위해 대기 상태로 들어갔다가 깨어났을 때 발생가능하며, 자신보다 낮은 접근 페이지 수를 갖는 가상머신의 수행이 끝나기를 기다리는 시간을 줄임으로서 성능 향상을 이룰 수 있도록 해준다.
도 5는 본 발명의 실시예에 따른 가상머신 스케줄링 방법을 나타낸 흐름도이다.
도 5를 참조하면, 스케줄링 장치는 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 각각 측정한다(S500).
상기 스케줄링 장치는 상기 S500을 수행하기 전에 각 가상머신의 모든 페이지 테이블 엔트리의 액세스 비트를 초기화하고, 미리 정해진 샘플링 주기 동안 각 페이지 테이블 엔트리를 관측하여 그 관측 결과를 수집하는 과정을 선행한다.
그런 다음 상기 스케줄링 장치는 각 가상머신에 할당된 페이지 테이블의 페이지 테이블 엔트리를 검사하여 액세스 비트가 설정된 페이지 테이블 엔트리의 수를 세어 접근 페이지 수를 측정한다.
상기 S500의 수행 후, 상기 스케줄링 장치는 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고(S502), 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정한다(S504).
상기 S504의 수행 후, 상기 스케줄링 장치는 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링한다(S506).
이때, 상기 스케줄링 장치는 각 가상머신을 접근 페이지 수를 기반으로 해당 선호 노드에 우선 순위로 스케줄링한다.
즉, 상기 스케줄링 장치는 스케줄링되고자 하는 가상머신의 VCPU(Virtual CPU)수가 해당 선호노드의 CPU 수를 초과하는 경우, 상기 가상머신들을 접근 페이지 수가 많은 순으로 정렬하여 우선 순위의 가상머신에게 상기 선호노드의 CPU를 스케줄링한다.
또한, 상기 스케줄링 장치는 각 CPU의 로컬 실행큐(Local Run Queue)에서 VCPU(Virtual CPU)를 선택할 때 현재 CPU의 로컬 실행큐(Local Run Queue)뿐 만이 아니라 다른 CPU의 로컬 실행큐(Local Run Queue)에 존재하는 동일한 선호 노드를 가지고 있는 가상머신들의 VCPU들을 검사하여, 각 CPU가 속한 노드에 대해 가장 접근 페이지 수가 많은 가상머신의 VCPU를 선택한다.
또한, 상기 스케줄링 장치는 선점(preemption)기법을 사용하여 상기 선호 노드에 자신보다 낮은 접근 페이지 수를 가진 가상머신이 수행되고 있다면 상기 자신보다 낮은 접근 페이지 수를 가진 가상머신을 다른 노드로 보내고, 상기 선호노드는 자신이 선점한다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100 : 노드 200 : 메모리
300 : 가상머신 350 : 가상머신 모니터
400 : 스케줄링 장치 410 : 초기화부
420 : 접근 페이지 수 측정부 430 : 선호노드 결정부
440 : 스케줄링부

Claims (15)

  1. 스케줄링 장치가 가상머신을 스케줄링하는 방법에 있어서,
    (a) 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 각각 측정하는 단계;
    (b) 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고, 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하는 단계; 및
    (c) 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 단계;
    를 포함하는 가상머신 스케줄링 방법.
  2. 제1항에 있어서,
    상기 (a) 단계 이전에,
    각 가상머신의 모든 페이지 테이블 엔트리의 액세스 비트를 초기화하는 단계; 및
    미리 정해진 샘플링 주기 동안 각 가상머신에 할당된 페이지 테이블의 엔트리를 관측하여 그 관측 결과를 수집하는 단계를 더 포함하는 가상머신 스케줄링 방법.
  3. 제1항에 있어서,
    상기 (a) 단계는, 각 가상머신에 할당된 페이지 테이블의 엔트리를 검사하여 액세스 비트가 설정된 페이지 테이블 엔트리의 수를 세어 접근 페이지 수를 측정하는 것을 특징으로 하는 가상머신 스케줄링 방법.
  4. 제1항에 있어서,
    상기 (c) 단계는,
    각 가상머신을 접근 페이지 수를 기반으로 해당 선호 노드에 우선 순위로 스케줄링하는 것을 특징으로 하는 가상머신 스케줄링 방법.
  5. 제4항에 있어서,
    스케줄링되고자 하는 가상머신의 VCPU(Virtual CPU)수가 해당 선호노드의 CPU 수를 초과하는 경우, 상기 가상머신들을 접근 페이지 수가 많은 순으로 정렬하여 최우선 순위의 가상머신에게 상기 선호노드의 CPU를 스케줄링하는 것을 특징으로 하는 가상머신 스케줄링 방법.
  6. 제4항에 있어서,
    각 CPU의 로컬 실행큐(Local Run Queue)에서 가상머신을 선택할 때, 실행하려는 CPU의 로컬 실행큐 및 다른 CPU의 로컬 실행큐에 존재하는 동일한 선호 노드를 가지고 있는 가상머신의 VCPU(Virtual CPU)들을 검사하여 각 CPU가 속한 노드에 대해 가장 접근 페이지 수가 큰 가상머신의 VCPU를 선택하는 것을 특징으로 하는 가상머신 스케줄링 방법.
  7. 제4항에 있어서,
    선점기법을 사용하여 해당 선호 노드에 자신보다 낮은 접근 페이지 수를 가진 가상머신이 수행되고 있다면 상기 자신보다 낮은 접근 페이지 수를 가진 가상머신을 다른 노드로 보내고, 상기 선호노드는 자신이 선점하는 것을 특징으로 하는 가상머신 스케줄링 방법.
  8. 샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 측정하는 접근 페이지 수 측정부;
    각 가상머신에 대해 접근 페이지 수를 노드별로 통합하고, 접근 페이지 수가 많은 노드 순으로 정렬하여 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하는 선호노드 결정부; 및
    각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 스케줄링부;
    를 포함하는 가상머신 스케줄링을 위한 스케줄링 장치.
  9. 제8항에 있어서,
    각 가상머신의 모든 페이지 테이블 엔트리의 액세스 비트를 초기화하는 초기화부를 더 포함하는 가상머신 스케줄링을 위한 스케줄링 장치.
  10. 제8항에 있어서,
    상기 접근 페이지 수 측정부는 각 가상머신에 할당된 페이지 테이블의 페이지 테이블 엔트리를 검사하여 액세스 비트가 '1"로 설정된 페이지 테이블 엔트리의 수를 세어 접근 페이지 수를 측정하는 것을 특징으로 하는 가상머신 스케줄링을 위한 스케줄링 장치.
  11. 제8항에 있어서,
    상기 스케줄링부는 각 가상머신을 접근 페이지 수를 기반으로 해당 선호 노드에 우선 순위로 스케줄링하는 것을 특징으로 하는 가상머신 스케줄링을 위한 스케줄링 장치.
  12. 제11항에 있어서,
    상기 스케줄링부는 스케줄링되고자 하는 가상머신의 VCPU(Virtual CPU)수가 해당 선호노드의 CPU 수를 초과하는 경우, 상기 가상머신들을 접근 페이지 수가 많은 순으로 정렬하여 우선 순위의 가상머신에게 상기 선호노드의 CPU를 스케줄링하는 것을 특징으로 하는 가상머신 스케줄링을 위한 스케줄링 장치.
  13. 제11항에 있어서,
    상기 스케줄링부는 각 CPU의 로컬 실행큐(Local Run Queue)에서 가상머신을 선택할 때, 실행하려는 CPU의 로컬 실행큐 및 다른 CPU의 로컬 실행큐에 존재하는 동일한 선호 노드를 가지고 있는 가상머신의 VCPU(Virtual CPU)들을 검사하여 각 CPU가 속한 노드에 대해 가장 접근 페이지 수가 큰 가상머신의 VCPU를 선택하는 것을 특징으로 하는 가상머신 스케줄링을 위한 스케줄링 장치.
  14. 제11항에 있어서,
    상기 스케줄링부는 선점기법을 사용하여 해당 선호 노드에 자신보다 낮은 접근 페이지 수를 가진 가상머신이 수행되고 있다면 상기 자신보다 낮은 접근 페이지 수를 가진 가상머신을 다른 노드로 보내고, 상기 선호노드는 자신이 선점하는 것을 특징으로 하는 가상머신 스케줄링을 위한 스케줄링 장치.
  15. 일정 개수의 CPU를 각각 포함하는 복수 개의 노드;
    각 노드에 연결된 메모리; 및
    샘플링 주기마다 각 가상머신에 할당된 페이지 테이블을 검사하여 접근 페이지 수를 측정하고, 각 가상머신에 대해 접근 페이지 수를 노드별로 통합하여 접근 페이지 수가 많은 노드 순으로 정렬한 후, 최우선 순위의 노드를 해당 가상머신의 선호 노드로 결정하여 각 가상머신을 상기 결정된 해당 선호 노드에 우선 순위로 스케줄링하는 스케줄링 장치;
    를 포함하는 가상머신 스케줄링을 위한 시스템.
KR1020100116863A 2010-11-23 2010-11-23 가상머신 스케줄링 방법 및 시스템 KR101145144B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100116863A KR101145144B1 (ko) 2010-11-23 2010-11-23 가상머신 스케줄링 방법 및 시스템
PCT/KR2011/001023 WO2012070721A1 (ko) 2010-11-23 2011-02-16 가상머신 스케줄링 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100116863A KR101145144B1 (ko) 2010-11-23 2010-11-23 가상머신 스케줄링 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101145144B1 true KR101145144B1 (ko) 2012-05-14

Family

ID=46146046

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100116863A KR101145144B1 (ko) 2010-11-23 2010-11-23 가상머신 스케줄링 방법 및 시스템

Country Status (2)

Country Link
KR (1) KR101145144B1 (ko)
WO (1) WO2012070721A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101432751B1 (ko) 2012-12-18 2014-08-22 서강대학교산학협력단 가상화 환경 내 하둡 맵리듀스의 부하 분산 방법 및 시스템
KR101937933B1 (ko) * 2016-11-08 2019-01-14 한국전자통신연구원 오픈 소스 소프트웨어 패키지의 안전성 정량화 장치, 최적화 장치 및 최적화 방법
KR20200075998A (ko) * 2018-12-18 2020-06-29 성균관대학교산학협력단 가상화 환경에서의 메모리 공유율 측정 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060099404A (ko) * 2005-03-08 2006-09-19 마이크로소프트 코포레이션 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US20100251234A1 (en) * 2009-03-26 2010-09-30 Microsoft Corporation Virtual non-uniform memory architecture for virtual machines
KR20100118357A (ko) * 2009-04-28 2010-11-05 인하대학교 산학협력단 분산 처리를 위한 시멘틱 컴퓨팅 기반의 동적 작업 스케줄링 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060099404A (ko) * 2005-03-08 2006-09-19 마이크로소프트 코포레이션 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US20100251234A1 (en) * 2009-03-26 2010-09-30 Microsoft Corporation Virtual non-uniform memory architecture for virtual machines
KR20100118357A (ko) * 2009-04-28 2010-11-05 인하대학교 산학협력단 분산 처리를 위한 시멘틱 컴퓨팅 기반의 동적 작업 스케줄링 시스템

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101432751B1 (ko) 2012-12-18 2014-08-22 서강대학교산학협력단 가상화 환경 내 하둡 맵리듀스의 부하 분산 방법 및 시스템
KR101937933B1 (ko) * 2016-11-08 2019-01-14 한국전자통신연구원 오픈 소스 소프트웨어 패키지의 안전성 정량화 장치, 최적화 장치 및 최적화 방법
US10430590B2 (en) 2016-11-08 2019-10-01 Electronics And Telecommunications Research Institute Apparatus for quantifying security of open-source software package, and apparatus and method for optimizing open-source software package
US10885201B2 (en) 2016-11-08 2021-01-05 Electronics And Telecommunications Research Institute Apparatus for quantifying security of open-source software package, and apparatus and method for optimizing open-source software package
KR20200075998A (ko) * 2018-12-18 2020-06-29 성균관대학교산학협력단 가상화 환경에서의 메모리 공유율 측정 방법 및 장치
KR102128418B1 (ko) * 2018-12-18 2020-07-01 성균관대학교산학협력단 가상화 환경에서의 메모리 공유율 측정 방법 및 장치

Also Published As

Publication number Publication date
WO2012070721A1 (ko) 2012-05-31

Similar Documents

Publication Publication Date Title
Liu et al. Optimizing virtual machine consolidation performance on NUMA server architecture for cloud workloads
Kannan et al. Heteroos: Os design for heterogeneous memory management in datacenter
Ahn et al. Dynamic virtual machine scheduling in clouds for architectural shared resources
US9977738B2 (en) NUMA scheduling using inter-VCPU memory access estimation
US11340945B2 (en) Memory congestion aware NUMA management
Zhao et al. CacheScouts: Fine-grain monitoring of shared caches in CMP platforms
US8719561B2 (en) Automatic configuration sampling for managing configuration parameters of a computer system
US11113093B2 (en) Interference-aware scheduling service for virtual GPU enabled systems
Liu et al. Rethinking memory management in modern operating system: Horizontal, vertical or random?
Ali et al. Performance evaluation of HPC benchmarks on VMware’s ESXi server
Hu et al. Run-time performance estimation and fairness-oriented scheduling policy for concurrent GPGPU applications
Truyen et al. Performance overhead of container orchestration frameworks for management of multi-tenant database deployments
Cheng et al. Performance-monitoring-based traffic-aware virtual machine deployment on numa systems
KR101145144B1 (ko) 가상머신 스케줄링 방법 및 시스템
Wang et al. Performance comparison between hypervisor-and container-based virtualizations for cloud users
US10922137B2 (en) Dynamic thread mapping
Gifford et al. Dna: Dynamic resource allocation for soft real-time multicore systems
Chiang et al. Enhancing inter-node process migration for load balancing on linux-based NUMA multicore systems
Cheng et al. A user-level numa-aware scheduler for optimizing virtual machine performance
Kim et al. Credit-based runtime placement of virtual machines on a single NUMA system for QoS of data access performance
US11836525B2 (en) Dynamic last level cache allocation for cloud real-time workloads
Qouneh et al. Optimization of resource allocation and energy efficiency in heterogeneous cloud data centers
Lee et al. Minimizing scheduling delay for multimedia in xen hypervisor
Qian et al. LG-RAM: Load-aware global resource affinity management for virtualized multicore systems
Shang et al. CoPlace: Effectively mitigating cache conflicts in modern clouds

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160216

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170324

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181030

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 8