KR101878297B1 - 락 홀더 선점 회복 방법 및 장치 - Google Patents

락 홀더 선점 회복 방법 및 장치 Download PDF

Info

Publication number
KR101878297B1
KR101878297B1 KR1020120022971A KR20120022971A KR101878297B1 KR 101878297 B1 KR101878297 B1 KR 101878297B1 KR 1020120022971 A KR1020120022971 A KR 1020120022971A KR 20120022971 A KR20120022971 A KR 20120022971A KR 101878297 B1 KR101878297 B1 KR 101878297B1
Authority
KR
South Korea
Prior art keywords
vcpu
lock
information
pcpu
lhp
Prior art date
Application number
KR1020120022971A
Other languages
English (en)
Other versions
KR20130101877A (ko
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 KR1020120022971A priority Critical patent/KR101878297B1/ko
Priority to PCT/KR2013/001725 priority patent/WO2013133586A1/ko
Priority to US14/383,532 priority patent/US9916172B2/en
Publication of KR20130101877A publication Critical patent/KR20130101877A/ko
Application granted granted Critical
Publication of KR101878297B1 publication Critical patent/KR101878297B1/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
    • 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Studio Devices (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

상술한 과제를 달성하기 위해 본 발명의 일 실시 예에 따르는 스케줄링 방법은 가상 CPU(Virtual CPU, vCPU)의 및 이를 구동하는 OS를 포함하는 가상장치(Virtual Machine)의 동작에서 상기 vCPU의 동작상태 정보와 상기 OS의 락(Lock) 정보를 획득하는 획득단계, 및 상기 동작상태 정보 및 상기 락 정보를 기반으로 상기 vCPU가 Lock Holder Preemption(LHP)상태인지 판단하는 판단단계를 포함하는 것을 특징으로 한다. 본 발명의 일 실시 예에 따르면 VM을 사용하는 시스템 상에서 LHP를 정확하고,용이하게 파악할 수 있다. 또한 vCPU의 연산이 할당되는 pCPU를 스케줄링 기법을 통해 조절함으로써 시스템 상에서 코어의 숫자가 증가하는 경우에도 확장성을 지원할 수 있다. 또한 각 vCPU별로 연산을 조절하고, 락의 해제를 기다리는 락 컨텐더(lock contender) vCPU에게 할당된 시간 분량(time quantum)을 이용하여 락 홀더(lock holder)의 임계구역(critical section)의 수행을 지속시킴으로써 기존 기술의 VM간 공평성 저해 문제를 해결할 수 있다.

Description

락 홀더 선점 회복 방법 및 장치 {METHOD AND APPARATUS FOR RECOVERING LOCK HOLDER PREEMPTION}
본 발명은 가상 장치(Virtual Machine)를 이용하는 시스템에서 가장 장치 모니터(Virtual Machine Monitor, VMM) 및 OS간의 자료구조 공유를 통해 락 홀더 선점(Lock Holder Preemption, LHP)를 감지 하고 LHP를 해소하기 위한 스케줄링을 제공하는 방법 및 장치에 관한 것이다.
가상화(Virtualization)는 하드웨어 시스템을 추상화하여 사용자에게 여러 개의 가상 하드웨어 시스템을 제공하는 기술이다. 가상화의 핵심 기술인 가상 머신 모니터(Virtual Machine Monitor, VMM)는 물리적 하드웨어와 OS 사이에 위치하며 가상의 하드웨어 자원을 상위 계층에 제공한다. VMM이 제공하는 가상의 하드웨어를 가상 머신(Virtual Machine, VM)이라고 하며 VM을 이용하는 OS를 게스트 OS(guest OS)라고 부른다. 물리적 하드웨어 상의 각 CPU를 physical CPU(pCPU)라고 부르고, VM에게 제공되는 가상의 CPU를 virtual CPU(vCPU)라고 부른다.
기존의 가상화 기술은 멀티코어 상에서 복수의 게스트 OS가 spin lock을 사용할 때 코어 개수 증가에 따른 확장성(scalability)이 떨어지는 문제가 있었다. Spin lock은 critical section의 길이가 매우 짧아서 lock을 획득하기 위해 blocking하는 것보다 busy-waiting하는 것이 보다 유리할 때 많이 사용된다. 그런데 임의의 spin lock을 획득한 vCPU가 다른 vCPU에 의해 선점(preemption)당하면 동일한 lock을 획득하려는 다른 vCPU들은 선점 기간 동안 busy-waiting을 해야 한다. 이는 통상 수~수십 ㎲에 불과한 waiting 시간을 수십 ㎳로 증가시켜 CPU 자원의 불필요한 낭비와 성능 저하를 초래한다. 이 같은 현상을 Lock Holder Preemption (LHP) 문제라고 한다.
이를 해결하기 위해 제공되는 스케쥴링 기법이 있었으나, 자원의 파편화(fragmentation)를 초래하고 프로세스간의 공평성(fairness)가 떨어지는 문제가 있었다. 이에 시스템 자원을 충분히 활용하고 프로세스간의 공평성을 가질 수 있는 방법이 요구된다.
본 발명은 상술한 문제점을 해결하기 위하여 제안된 것으로 VM에서 LHP를 용이하게 감지하고, 스케줄링 기법을 통해서 LHP를 해결하는 방법을 제공하는데 그 목적이 있다.
상술한 과제를 달성하기 위해 본 발명의 일 실시 예에 따르는 스케줄링 방법은 가상 CPU(Virtual CPU, vCPU)의 및 이를 구동하는 OS를 포함하는 가상장치(Virtual Machine)의 동작에서 상기 vCPU의 동작상태 정보와 상기 OS의 락(Lock) 정보를 획득하는 획득단계, 및 상기 동작상태 정보 및 상기 락 정보를 기반으로 상기 vCPU가 Lock Holder Preemption(LHP)상태인지 판단하는 판단단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 다른 측면에 따르면, 가상 CPU(vCPU) 및 상기 vCPU를 통해 연산을 수행하는 OS(operating system)을 포함하는 가상장치(Virtual Machine), 상기 가상장치가 필요한 연산을 수행하는 물리 CPU(pCPU)를 포함하는 물리장치(Physical Machine), 상기 가상장치 및 상기 물리장치와 연결되는 가상 머신 모니터(Virtual machine monitor,VMM), 상기 가상장치 및 상기 VMM과 연결되며 데이터를 저장할 수 있는 메모리부; 및 상기 가상장치, VMM 및 메모리부와 연결되어 동작을 제어할 수 있는 제어부를 포함하며 상기 메모리부는 상기 vCPU의 동작상태 정보 및 상기 OS의 락 정보를 저장하며, 상기 제어부가 상기 메모리부에 저장된 정보를 기반으로 상기 vCPU가 Lock Holder Preemption(LHP)상태인지 판단하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따르면 VM을 사용하는 시스템 상에서 LHP를 정확하고,용이하게 파악할 수 있다. 또한 vCPU의 연산이 할당되는 pCPU를 스케줄링 기법을 통해 조절함으로써 시스템 상에서 코어의 숫자가 증가하는 경우에도 확장성을 지원할 수 있다.
또한 각 vCPU별로 연산을 조절하고, 락의 해제를 기다리는 락 컨텐더(lock contender) vCPU에게 할당된 시간 분량(time quantum)을 이용하여 락 홀더(lock holder)의 임계구역(critical section)의 수행을 지속시킴으로써 기존 기술의 VM간 공평성 저해 문제를 해결할 수 있다.
또한 LHP가 발생하지 않는 경우guest OS와 VMM 사이에 모드 변환을 수행하지 않음으로, 시스템에서 과도한 런타임 오버헤드가 발생하지 않는 특징이 있다.
도 1은 실시예에 따른 VM 및 물리적 하드웨어를 나타내는 도면이다.
도 2는 vCPU의 상태정보의 데이터 구조를 나타내는 도면이다.
도 3은 락홀더와 락컨텐터들의 데이터 구조를 나타내는 도면이다.
도 4는 vCPU가 획득한 락을 표시하는 데어터 구조를 나타내는 도면이다.
도 5는 실시예에 따른 스케줄링 방법을 나타내는 순서도이다.
도 6은 실시예에 따른 LHP판단 방법과 스케줄링 방법을 나타내는 순서도이다.
도 7은 실시예에 따른 LHP가 일어난 경우와 그렇지 않은 경우를 pCPU의 동작으로 나타내는 타이밍 도이다.
도 8을 다른 실시예에 따른 LHP 판단 방법과 스케줄링 방법을 나타내는 순서도이다.
도 9는 다른 실시예에 따른 LHP가 일어난 경우와 그렇지 않은 경우를 pCPU의 동작으로 나타내는 타이밍 도이다.
도 10은 LHP 발생시 스케줄링을 통해 연산을 조절하는 것을 pCPU의 동작으로 나타내는 타이밍도이다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
이하, 본 발명의 실시 예들에 의하여 VM에서 LHP를 감지하고 해소하기 위한 방법 및 장치를 설명하기 위해 도면을 참조하여 설명하도록 한다.
도 1은 실시예에 따른 VM(Virtual Machine) 및 물리적 하드웨어를 나타내는 도면이다.
도 1을 참조하면 실시예는 1개 이상의 VM(110, 120)을 포함할 수 있다. 각각의 VM은 애플리케이션(112,122), OS(114, 124) 및 가상 CPU(Virtual CPU, vCPU)(116,126)을 포함할 수 있다. OS(114,124)는 vCPU(116,126)상에서 실행되며, 애플리케이션(112,122)이 실행될 수 있도록 필요한 연산을 vCPU(116,126)에 할당할 수 있다. 이와 같은 구성을 가짐으로써 단일의 하드웨어에서 복수개의 가상적인 하드웨어의 실행이 가능하게 되므로 물리 컴퓨터를 다중화(multiplex)할 수 있게 된다.
실시예는 1개 이상의 물리 CPU (physical CPU, pCPU)(142,144)를 포함하는 물리 장치(140) 및 상기 VM(110,120)과 상기 물리 장치(140)을 연결하며 각 VM(142, 144)에 필요한 연산을 상기 물리 CPU(142,144)에 할당하는 역할을 할 수 있는 가장 머신 모니터(Virtual Machine Monitor,VMM)(130)을 포함할 수 있다. 상기 VMM(130)은 이외에도 VM(110,120) 필요한 물리적 자원을 할당 할 수 있다.
실시예는 상기 VM(110, 120) 및 VMM(130)과 연결되며 각각의 동작 정보를 수신하고 각 동작을 제어할 수 있는 제어부(150)를 더 포함할 수 있다. 도면에 도시된 바와 같이 별도의 제어부(150)를 가질 수도 있으며, 각 VM(110,120) 및 VMM(130)에 각각 제어부를 가지고 상기 별도의 제어부들 사이에 통신을 통해서도 본 발명이 실시될 수 있음을 밝히는 바이다.
상기 제어부(150)는 상기 VM(110,120)과 연결되며, 상기 OS(114,124)를 통해 특정 락을 획득하고 있는 vCPU의 정보, 특정 락에 대해 락의 해제를 기다리고 있는 vCPU의 집합 및 특정 vCPU가 획득하고 있는 락의 집합 중 하나 이상을 포함하는 정보를 수신할 수 있다.
또한 상기 제어부(150)은 상기 VMM(130)과 연결되며, 상기 VMM(130)을 통해 각 vCPU가 현재 동작하고 있는 상태 매핑 정보를 수신할 수 있다. vCPU의 동작은 동작(running) 또는 선점(preempted)중 하나일 수 있으며 이를 저장하는 자료구조에 대해서는 후술하도록 한다.
상기 제어부(150)는 상기 VM(110,120) 및 상기 VMM(130)으로부터 수신한 정보를 연결된 저장부(160)에 저장할 수 있다. 상기 저장부(160)는 별도로 상기 제어부(150)와 연결되어 구성될 수 있으며, 실시예에 따라 상기 제어부(150) 내부에 위치할 수 있다.
실시예에서는 각 VM(110,120)과 VMM(130)이 제어부(150)을 통해서 연결되고 수행되고 있는 프로세스의 락 정보 및 vCPU의 동작 정보를 공유하는 자료구조를 가짐으로써 락 홀더 선점(Lock Holder Preemption,LHP) 상태를 정확하게 감지하고 이를 해결하기 위한 스케줄링 방법을 제공할 수 있다. LHP 파악 및 스케줄링 방법은 후술하도록 한다.
도 2는 vCPU의 상태정보의 데이터 구조를 나타내는 도면이다.
도 1 및 도 2를 참조하면 실시 예에서 상기 vCPU의 상태정보(200)는 각 vCPU의 ID(210, 220)별로 두개의 상태값을 가질 수 있는 비트맵으로 이루어 질 수 있다. 각 vCPU의 ID는 숫자로 이루어질 수 있고 도면상에는 총 32개의 vCPU의 상태에 대해서 표시한 비트맵이 도시된다. 각 비트맵의 상태는 vCPU가 현재 동작되어 있는지 선점되어 있는지를 나태낼 수 있으며 본 실시예에서 비트맵에서 해당 ID가 가지는 값이 0일 경우 vCPU가 동작 중이고, 1일 경우 vCPU가 선점되었음을 나타낼 수 있다. 그러나 상기와 같이 할당 된 값은 실시예에 따라 다르게 구성될 수 있다.
상기와 같은 vCPU의 상태정보는 VMM(130)에 의해 기록될 수 있다. 상기 VMM(130)은 상기 VM(110,120)이 vCPU에 할당한 연산을 상기 물리 장치(140)에 포함되는 pCPU(142,144)에 할당하고, 이를 통해 현재 vCPU의 상태 정보가 동작중인지 선점되었는지를 파악할 수 있다. 상기 vCPU의 상태정보를 제어부(150)에 전송하여 상기 저장부(160)에 저장할 수 있다.
도 3은 락 홀더(Lock Holder)와 락 컨텐터들(Lock Contenders)의 데이터 구조를 나타내는 도면이다.
도1 및 도 3을 참조하면, 실시 예에서 락은 각각의 락 아이디(300)을 가질 수 있으며, 홀더와 컨텐더들은 해시 테이블(310,330) 상에서 기록될 수 있다.
홀더 값의 경우 락 아이디(300)을 락 홀더 vCPU로 매핑하게 되고, 컨텐더들은 락 아이디(300)을 락 컨텐더 vCPU로 매핑 한다.
락 아이디(300)가 x인 락의 경우 해시(Hash)값(305)를 구하여 각 테이블에 기록될 수 있다. 실시 예에서 락 아이디(300)의 해시 값(305)는 1번 테이블(315)에 대응되고, 상기 1번 테이블(315)에 락 아이디(320)값 안에 홀더 정보와 컨텐더 정보들을 기록 할 수 있다.
해시 테이블(310,330) 내부에는 락 아이디(335) 및 해당 락을 획득하려는 vCPU의 목록(340)을 포함하는 정보가 기록될 수 있다. 상기 vCPU의 목록(340) 내부에 최초로 획득한 vCPU(345)가 상기 락 아이디(335)를 가지는 락을 획득한 홀더 vCPU이고 상기 홀더 vCPU 하위의 vCPU들(350)이 상기 락이 해제되기를 기다리는 컨텐더 vCPU이다.
락 아이디(300)에 대한 홀더 및 컨텐더의 정보는 OS(114,124)에 의해 획득 되어 저장부(160)에 기록 될 수 있으며 상기 기록된 락 관련 정보를 VMM(130)이 참조할 수 있다.
이와 같이 락에 관련된 정보를 기록 함으로써 VMM(130)이 해당 락과 관련된 vCPU에 관한 정보를 용이하고 정확하게 얻을 수 있다.
도 4는 vCPU가 획득한 락을 표시하는 데어터 구조를 나타내는 도면이다.
vCPU의 집합(400)에서 각 vCPU 아이디(405)별로 획득하고 있는 락(410,415,420)을 테이블에 저장한다. 락 테이블은 vCPU를 해당 vCPU가 획득한 락의 집합으로 매핑한다. 이 정보는 OS(114),124)에 의해 기록되고, VMM(130)이 이를 읽어서 사용할 수 있다.
1개의 vCPU는 복수개의 락을 획득할 수 있으며 이와 같이 vCPU가 획득한 락의 정보를 기록 함으로써 LHP파악을 용이하고 정확하게 할 수 있다.
도 5는 실시예에 따른 스케줄링 방법을 나타내는 순서도이다.
5를 참조하면 실시예는 단계 510에서 vCPU의 동작상태 정보와 OS의 락 정보를 확득할 수 있다.
상기 vCPU의 동작상태 정보는 해당 vCPU가 동작(running)중인지 선점(preempted)되었는지를 나타내는 정보를 포함할 수 있다. 이 정보는 VMM에 의해 기록 될 수 있다.
상기 OS의 락 정보는 해당 락을 획득하고 있는 락 홀더 정보, 획득된 락이 해제되기를 기다리는 컨텐더 목록 정보 및 vCPU가 획득하고 있는 락 목록 정보 중 하나 이상을 포함할 수 있다. 이 정보는 OS에 의해 기록될 수 있다.
단계 520에서 단계 510에서 획득한 vCPU의 동작상태 정보 및 락 정보를 기반으로 LHP인지 판단할 수 있다. LHP의 판단은 OS 또는 VMM 양쪽 모두에서 이루어질 수 있다. 구체적인 판단 방법에 대해서는 후술하도록 한다.
단계 530에서 LHP가 발생하였을 경우 LHP에 대한 조치를 하기 위해 단계 540으로 넘어가고, LHP가 발생하지 않은 경우 판단을 종료하고 통상의 프로세스를 수행한다.
단계 540에서는 LHP가 발생하였을 경우 vCPU가 수행하는 연산을 다른 pCPU에 할당하는 작업을 한다. 이는 VMM에 의해 이루어질 수 있으며, LHP가 발생한 경우 생길 수 있는 프로세스의 효율 저하, 자원이 파편화, 공평성을 해결할 수 있다. 상기 할당작업의 경우 자세한 프로세스에 대해서는 후술하도록 한다.
도 6은 실시예에 따른 LHP판단 방법과 스케줄링 방법을 나타내는 순서도이다.
도 6을 참고하면 단계 610에서 특정 vCPU가 획득한 락을 찾는다. 상기 특정 vCPU는 VMM에서 상기 특정 vCPU를 선점할 필요가 있을 경우 해당 결정되게 된다. vCPU가 획득한 락은 VMM이 도 4에서 설명한 데이터 구조를 통해 찾을 수 있다.
단계 620에서 상기 특정 vCPU가 획득한 락이 없을 경우 LHP가 일어나지 않았으므로 판단을 종료하고 계속 통상의 프로세스를 수행한다.
상기 특정 vCPU가 획득한 락이 있는 경우 단계 630에서 VMM은 상기 특정 vCPU가 획득한 락의 해제를 기다리는 다른 vCPU가 있는지 찾는다. 상기 락의 해제를 기다리는 다른 vCPU는 VMM이 도 3에서 설명한 컨텐더에서 찾을 수 있다.
단계 640에서 락의 해제를 기다리는 다른 vCPU가 없는 경우 LHP는 발생하지 않았으므로 판단을 종료하고 계속 통상의 프로세스를 수행한다.
락의 해제를 기다리는 다른 vCPU가 있는 경우 단계 650에서 락의 해제를 기다리는 다른 vCPU의 동작 상태 정보를 찾는다. 상기 락의 해제를 기다리는 다른 vCPU의 동작상태는 도 2에서 설명한 데이터 구조 또는 VMM이 직접 vCPU가 pCPU에 할당된 상태를 감지 함으로써 파악 할 수 있다.
단계 660에서 락의 해제를 기다리는 다른 vCPU의 동작 상태가 선점(preempted) 된 경우 LHP는 발생하지 않음으로 판단을 종료하고 계속 통상의 프로세스를 수행한다.
락의 해제를 기다리는 다른 vCPU의 동작 상태가 동작(running)일 경우 LHP가 발생한 것으로 판단하고 단계 670으로 진행한다.
단계 670에서는 LHP가 발생하였으므로 이를 해결하기 위해 락을 획득한 vCPU가 수행하는 연산을 다른 pCPU로 할당하는 이전(migration)을 수행할 수 있다. 상기 연산을 이전할 다른 pCPU를 결정하는 방법에 대해서는 후술할 것이며, 바람직하게는 상기 락의 해제를 기다리는 다른 vCPU의 연산이 수행되는 pCPU로 이전될 수 있다.
도 7은 실시예에 따른 LHP가 일어난 경우와 그렇지 않은 경우를 pCPU의 동작으로 나타내는 타이밍 도이다.
도 7을 참조하면, 제1블록(702)의 경우 해당 pCPU에서 vCPU 0이 수행하는 연산을 실행하고 있음을 나타내고, 제2블록(704)의 경우 해당 pCPU에서 vCPU 1이 수행하는 연산을 실행하고 있음을 나타낸다.
도 7의 (A)에서 pCPU 0(710) 및 pCPU 1(720)에서 실행되는 vCPU의 연산을 표시하고 있다.
pCPU 0(710)에서 vCPU 0이 수행하는 연산이 실행되고 있고, 715에서 vCPU 0은 락 아이디가 A인 락을 획득하고, 임계 구역(critical section)을 수행한다. vCPU 0이 락 A를 획득하였으므로 락 A의 락 홀더는 vCPU 0이다.
pCPU 1(720)에서 vCPU 1이 수행하는 연산이 실행되고 있고, 725에서 vCPU 1은 락 아이디가 A인 락을 획득하려고 시도한다. 그러나 이미 715에서 vCPU 0이 A에 대한 락을 획득한 상태이기 때문에 vCPU 1은 락의 해제를 기다리며 spinning한다.
730에서 vCPU 0이 선점되게 될 경우 락 A를 획득하고 있는 락 홀더인 vCPU 0 이 선점되었고, vCPU 1의 상태 정보가 running이므로 LHP가 발생한 것으로 판단할 수 있다.
도 7의 (B)에서 pCPU 0(740) 및 pCPU 1(720)에서 실행되는 vCPU의 연산을 표시하고 있다.
pCPU 0(740)에서 vCPU 0에서 수행하는 연산이 실행되고 있고, 745에서 vCPU 0은 락 아이디가 B인 락을 획득하고, 임계 구역을 수행한다. vCPU 0 이 락 B를 획득하였으므로 락 B의 락 홀더는 vCPU 0이다.
pCPU 1(750)에서 vCPU 1에서 수행되는 연산이 실행되고 있고, 755에서 vCPU 1은 락 아이디가 A인 락을 획득하려고 시도한다. 실시 예에서 락 B를 획득한 vCPU가 없으므로 vCPU 1은 락 A를 획득할 수 있다.
760에서 vCPU 0dl 선점되게 될 경우에도 락 B에 대한 컨텐더가 없으르로 LHP가 발생하지 않는다.
도 8을 다른 실시예에 따른 LHP 판단 방법과 스케줄링 방법을 나타내는 순서도이다.
도 8을 참조하면, 단계 810에서 guest OS가 특정 vCPU가 수행하는 연산과 관련된 특정 락 획득을 시도한다. 상기 guest OS는 각각의 VM 상에서 동작하는 OS를 지칭한다.
단계 820에서 상기 특정 락의 획득을 성공한 경우 LHP가 발생하지 않았으므로 판단을 종료하고 통상의 프로세스를 수행한다.
상기 특정 락의 획득을 실패 한 경우 단계 830에서 상기 guest OS는 획득을 실패한 락의 락 홀더 CPU를 찾는다. 락 홀더 CPU는 도 3에서 설명한 데이터 구조를 통해 찾을 수 있다.
단계 840에서는 단계 830에서 찾은 락 홀더 CPU의 동작 상태를 판단한다. 상기 락 홀더 CPU의 동작 상태는 도 2에서 설명한 데이터 구조에서 찾을 수 있다. 상기 락 홀더 CPU의 동작 상태가 running일 경우 LHP는 발생하지 않았으므로 판단을 종료하고 통상의 프로세스를 실행할 수 있다.
상기 락 홀더 CPU의 동작 상태가 preempted일 경우 LHP가 발생하였으므로 다음 단계로 진행한다.
단계 850에서는 LHP가 발생하였으므로 이를 해결하기 위해 락을 획득한 vCPU가 수행하는 연산을 다른 pCPU로 할당하는 이전(migration)을 수행할 수 있다. 상기 연산을 이전할 다른 pCPU를 결정하는 방법에 대해서는 후술할 것이며, 바람직하게는 상기 락의 해제를 기다리는 다른 vCPU의 연산이 수행되는 pCPU로 이전될 수 있다.
도 9는 다른 실시예에 따른 LHP가 일어난 경우와 그렇지 않은 경우를 pCPU의 동작으로 나타내는 타이밍 도이다.
도 9을 참조하면, 제1블록(902)의 경우 해당 pCPU에서 vCPU 0이 수행하는 연산을 실행하고 있음을 나타내고, 제2블록(904)의 경우 해당 pCPU에서 vCPU 1이 수행하는 연산을 실행하고 있음을 나타낸다.
도 9의 (A)에서 pCPU 0(910) 및 pCPU 1(920)에서 실행되는 vCPU의 연산을 표시하고 있다.
pCPU 0(910)에서 vCPU 0이 수행하는 연산이 실행되고 있고, 915에서 vCPU 0은 락 아이디가 A인 락을 획득하고 임계 구역을 수행한다. vCPU 0이 락 A를 획득하였으므로 락 A의 락 홀더는 vCPU 0이다. 임계 구역의 수행을 마친 vCPU 0은 917에서 선점되게 된다.
vCPU 1은 925에서 아이디가 A인 락을 획득하려고 시도한다. 그러나 이미 915에서 vCPU 0이 A이 대한 락을 획득한 상태이기 때문에 vCPU 1은 락의 해제를 기다리면 spinning한다. 이와 같이 vCPU 1이 락 A를 획득하는 것을 실패한 경우, VMM은 락 A에 대한 홀더 정보를 찾는다. 실시 예에서 락 A에 대한 홀더는 vCPU 0이다. 이 때 vCPU 0의 동작 상태 정보를 찾는다. 실시 예에서 vCPU 0 은 선점된 상태이므로 상기와 같은 경우 LHP가 발생하게 된다.
도 9의 (B)에서 pCPU 0(930) 및 pCPU 1(940)에서 실행되는 vCPU의 연산을 표시하고 있다.
pCPU 0(930)에서 vCPU 0이 수행하는 연산이 실행되고 있고, 935에서 vCPU 0은 락 아이디가 B인 락을 획득하고 임계 구역을 수행한다. vCPU 0이 락 B를 획득하였으므로 락 B의 락 홀더는 vCPU 0이다. 임계 구역의 수행을 마친 vCPU 0은 937에서 선점되게 된다.
vCPU 1은 945에서 아이디가 A인 락을 획득하려고 시도한다. 이때 락 A를 획득한 vCPU가 없기 때문에 vCPU 1은 락 A를 획득하고 LHP는 발생하지 않게 된다.
도 10은 LHP 발생시 스케줄링을 통해 연산을 조절하는 것을 pCPU의 동작으로 나타내는 타이밍도이다.
도 10을 참조하면 제1블록(1002)은 해당 pCPU에서 vCPU 0이 수행하는 연산을 실행하고 있음을 나타내고, 제2블록(1004)은 해당 pCPU에서 vCPU 1이 수행하는 연산을 실행하고 있음을 나타내고, 제3블록(1006)은 해당 pCPU에서 vCPU 2가 수행하는 연산을 실행하고 있음을 나타낸다. 또한 pCPU 0(1010) 및 pCPU 1(1050)에서 실행되는 각 vCPU의 연산을 표시하고 있다.
실시 예에서 vCPU 0은 락 A를 획득하였고, vCPU 1은 락 A에 대한 컨텐더이다.
1020에서 vCPU 0은 pCPU 0(1010)에서 연산이 실행되며, 임계구역도 수행되고 있다. 1030에서 vCPU 2가 vCPU 0을 선점하게 된다. 이와 같이 vCPU 2에 의한 선점이 일어나면 pCPU 0(1010)에서 vCPU 2가 수행하는 연산을 실행한다.
vCPU 1은 1060에서 락 A가 해제 되지 않았으므로 락이 해제 되기를 spinning 하면서 기다리게 되고, 실시예에서 LHP가 발생하게 된다.
VMM은 스스로 LHP 발생사실을 감지하거나 OS로부터 하이퍼 콜을 받음으로써 LHP가 발생하였음을 감지할 수 있다. 이 경우 pCPU 0(1010)에서 실행되던 vCPU 0의 연산을 락 A의 컨텐더인 vCPU 1이 spinning하고 있는 pCPU 1(1050)로 이전(migration)하여 실행한다(1070).
이와 같이 pCPU 1(1050)으로 이전하여 vCPU 0의 임계 구역의 수행이 완료되면 OS는 하이퍼콜을 통해 락 A가 릴리즈 되었음을 VMM에게 알리고 이를 통지 받은 VMM은 1080에서 락 컨텐더인 vCPU를 스케줄링 한다.
또한 pCPU 0(1010)에서 vCPU 0(1040)이 수행하는 연산을 실행 할 수 있다.
이와 같이 LHP가 일어날 경우 해당 락의 홀더를 이전하여 해당 락의 컨텐더가 spinning하고 있는 pCPU에서 연산을 실행하게 함으로써 대기 시간이 짧아지고, 연산의 효율이 향상되는 효과가 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
110, 120 : 가상장치 112, 122 : 애플리케이션
114, 124 : OS 116, 126 : 가상 CPU
130 : 가상 장치 모니터 140 : 물리장치
142, 144 : 물리 CPU 150 : 제어부
160 : 저장부

Claims (14)

  1. 가상 CPU(Virtual CPU, vCPU) 및 이를 구동하는 OS(operating system)를 포함하는 가상장치(Virtual Machine) 및 적어도 두개의 물리적 CPU(pCPU)를 포함하는 물리 장치(Physical Machine)을 포함하는 연산장치의 스케쥴링 방법에 있어서,
    락 홀더(lock holder) 관련 정보 및 락 컨텐더(lock contender) 관련 정보를 포함하며 상기 vCPU에 대응하는 상기 OS의 락(Lock) 정보 및 상기 vCPU의 동작상태 정보를 획득하는 단계; 및
    상기 동작상태 정보 및 상기 락 정보를 기반으로 제1락에 대한 락홀더인 상기 vCPU가 Lock Holder Preemption(LHP)상태인지 판단하는 단계; 및
    상기 판단 결과 상기 vCPU가 LHP 상태일 경우, 제1pCPU에서 실행되고 있는 상기 vCPU에 관련된 연산을 제2pCPU로 이전(migrate)하는 단계를 포함하고,
    상기 제2pCPU는 상기 제2pCPU에 스피닝(spinning)하는 vCPU를 기반으로 결정되고,
    상기 스피닝 하는 vCPU는 상기 제1락의 컨텐더 vCPU이고, 상기 컨텐더 vCPU가 동작(running) 상태일 때 상기 vCPU가 LHP 상태인 것으로 판단되고,
    상기 이전하는 단계는 상기 컨텐더 vCPU에게 할당된 시간 분량(time quantum)내에 수행되는 것을 특징으로 하는 스케줄링 방법.
  2. 제1항에 있어서,
    상기 동작상태 정보는 vCPU가 동작(running)중인지, 선점(preempted)되었는지를 지정하는 비트맵 형식으로 된 상태정보를 포함하고,
    상기 락 정보는 락을 획득하고 있는 vCPU, 락의 해제를 기다리는 vCPU의 목록 및 vCPU가 획득하고 있는 락의 목록 중 적어도 하나를 포함하는 것을 특징으로 하는 스케줄링 방법.
  3. 제1항에 있어서,
    상기 획득하는 단계는,
    상기 가상장치 및 물리적 CPU(pCPU)와 연결되는 가상 머신 모니터(Virtual Machine Monitor,VMM)가 vCPU의 동작상태 정보를 획득하는 단계; 및
    상기 OS가 상기 OS의 락 정보를 획득하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
  4. 제1항에 있어서,
    상기 판단하는 단계는,
    상기 vCPU가 획득하고 있는 락을 찾는 단계;
    상기 vCPU가 획득하고 있는 락의 해제를 기다리는 vCPU를 찾는 단계; 및
    상기 락의 해제를 기다리는 vCPU의 동작상태 정보를 찾는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
  5. 제1항에 있어서,
    상기 판단하는 단계는,
    특정 vCPU가 특정 락의 획득을 실패 할 경우 상기 획득 실패 한 락을 감지 하는 단계;
    상기 획득 실패한 락을 획득하고 있는 다른 vCPU를 찾는 단계; 및
    상기 락을 획득하고 있는 다른 vCPU의 동작상태 정보를 찾는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
  6. 삭제
  7. 삭제
  8. 가상 CPU(vCPU) 및 상기 vCPU를 통해 연산을 수행하는 OS(operating system)을 포함하는 가상장치(Virtual Machine);
    상기 가상장치가 필요한 연산을 수행하는 물리 CPU(pCPU)를 포함하는 물리장치(Physical Machine);
    상기 가상장치 및 상기 물리장치와 연결되는 가상 머신 모니터(Virtual machine monitor,VMM);
    상기 가상장치 및 상기 VMM과 연결되며 데이터를 저장할 수 있는 메모리부; 및
    상기 가상장치, VMM 및 메모리부와 연결되어 동작을 제어할 수 있는 제어부를 포함하며
    상기 제어부는 락 홀더(lock holder) 관련 정보 및 락 컨텐더(lock contender) 관련 정보를 포함하며 상기 vCPU에 대응하는 상기 OS의 락(Lock) 정보 및 상기 vCPU의 동작상태 정보를 획득하고, 상기 동작상태 정보 및 상기 락 정보를 기반으로 제1락에 대한 락홀더인 상기 vCPU가 Lock Holder Preemption(LHP)상태인지 판단하고, 상기 판단 결과 상기 vCPU가 LHP 상태일 경우, 제1pCPU에서 실행되고 있는 상기 vCPU에 관련된 연산을 제2pCPU로 이전(migrate)하고,
    상기 제2pCPU는 상기 제2pCPU에 스피닝(spinning)하는 vCPU를 기반으로 결정되고,
    상기 스피닝 하는 vCPU는 상기 제1락의 컨텐더 vCPU이고, 상기 컨텐더 vCPU가 동작(running) 상태일 때 상기 vCPU가 LHP 상태인 것으로 판단되고,
    상기 이전하는 단계는 상기 컨텐더 vCPU에게 할당된 시간 분량(time quantum)내에 수행되는 것을 특징으로 하는 연산장치.
  9. 제8항에 있어서,
    상기 동작상태 정보는 vCPU가 동작(running)중인지, 선점(preempted)되었는지를 지정하는 비트맵 형식으로 된 상태정보를 포함하고,
    상기 락 정보는, 락을 획득하고 있는 vCPU, 락의 해제를 기다리는 vCPU의 목록 및 vCPU가 획득하고 있는 락의 목록 중 적어도 하나를 포함하는 것을 특징으로 하는 연산장치
  10. 제8항에 있어서,
    상기 VMM이 상기 vCPU의 동작 상태 정보를 획득하고,
    상기 OS가 상기 OS의 락 정보를 획득하는 것을 특징으로 하는 연산장치.
  11. 제8항에 있어서,
    상기 제어부는 상기 vCPU가 획득하고 있는 락을 찾고, 상기 획득하고 있는 락의 해제를 기다리는 vCPU를 찾고, 상기 락의 해제를 기다리는 vCPU의 동작상태 정보를 찾는 것을 특징으로 하는 연산장치.
  12. 제8항에 있어서,
    상기 제어부는 상기 vCPU가 특정 락의 획득을 실패할 경우 상기 획득 실패 한 락을 감지 하고, 상기 획득 실패한 락을 획득하고 있는 다른 vCPU를 찾고, 상기 락을 획득하고 있는 다른 vCPU의 동작상태 정보를 찾는 것을 특징으로 하는 연산장치.
  13. 삭제
  14. 삭제
KR1020120022971A 2012-03-06 2012-03-06 락 홀더 선점 회복 방법 및 장치 KR101878297B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120022971A KR101878297B1 (ko) 2012-03-06 2012-03-06 락 홀더 선점 회복 방법 및 장치
PCT/KR2013/001725 WO2013133586A1 (ko) 2012-03-06 2013-03-05 락 홀더 선점 회복 방법 및 장치
US14/383,532 US9916172B2 (en) 2012-03-06 2013-03-05 Method and apparatus for recovering lock holder preemption

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120022971A KR101878297B1 (ko) 2012-03-06 2012-03-06 락 홀더 선점 회복 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130101877A KR20130101877A (ko) 2013-09-16
KR101878297B1 true KR101878297B1 (ko) 2018-08-07

Family

ID=49117009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120022971A KR101878297B1 (ko) 2012-03-06 2012-03-06 락 홀더 선점 회복 방법 및 장치

Country Status (3)

Country Link
US (1) US9916172B2 (ko)
KR (1) KR101878297B1 (ko)
WO (1) WO2013133586A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103473135B (zh) * 2013-09-23 2016-08-24 中国科学技术大学苏州研究院 虚拟化环境下自旋锁lhp现象的处理方法
CN103729242B (zh) * 2013-12-19 2017-02-08 华为技术有限公司 一种自旋锁抢占调度算法选择方法及装置
US9280375B1 (en) 2014-04-30 2016-03-08 Google Inc. Dynamically adjustable virtual machine
WO2017107091A1 (en) * 2015-12-23 2017-06-29 Intel IP Corporation Virtual cpu consolidation to avoid physical cpu contention between virtual machines
CN105955796B (zh) * 2016-04-22 2018-12-07 华中科技大学 一种云平台上高性能并行应用的调度方法及系统
US10445126B2 (en) * 2017-02-21 2019-10-15 Red Hat, Inc. Preloading enhanced application startup
WO2018179149A1 (ja) * 2017-03-29 2018-10-04 三菱電機株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
US11126474B1 (en) * 2017-06-14 2021-09-21 Amazon Technologies, Inc. Reducing resource lock time for a virtual processing unit
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10817347B2 (en) * 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US10592281B1 (en) 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit
CN113836161B (zh) * 2021-09-30 2023-11-03 紫光云技术有限公司 一种利用数据库锁实现定时任务原子性的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230972A1 (en) * 2002-10-24 2004-11-18 International Business Machines Corporation Management of locks in a virtual machine environment
US20060277551A1 (en) 2005-06-06 2006-12-07 Accapadi Jos M Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US20100005465A1 (en) 2006-11-24 2010-01-07 Nec Corporation Virtual machine location system, virtual machine location method, program, virtual machine manager, and server
US20110119667A1 (en) * 2009-11-16 2011-05-19 Srinivasan Kattiganehalli Y Monitoring spin locks in virtual machines in a computing system environment

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060271542A1 (en) * 2005-05-25 2006-11-30 Harris Steven T Clustered object state using logical actions
US7487279B2 (en) * 2007-01-23 2009-02-03 International Business Machines Corporation Achieving both locking fairness and locking performance with spin locks
US7500037B2 (en) * 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
EP2323035B1 (en) * 2009-11-16 2019-04-17 Red Bend Software Scheduling system
KR101686082B1 (ko) * 2010-07-22 2016-12-28 삼성전자주식회사 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230972A1 (en) * 2002-10-24 2004-11-18 International Business Machines Corporation Management of locks in a virtual machine environment
US20060277551A1 (en) 2005-06-06 2006-12-07 Accapadi Jos M Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US20100005465A1 (en) 2006-11-24 2010-01-07 Nec Corporation Virtual machine location system, virtual machine location method, program, virtual machine manager, and server
US20110119667A1 (en) * 2009-11-16 2011-05-19 Srinivasan Kattiganehalli Y Monitoring spin locks in virtual machines in a computing system environment

Also Published As

Publication number Publication date
WO2013133586A1 (ko) 2013-09-12
US20150033228A1 (en) 2015-01-29
US9916172B2 (en) 2018-03-13
KR20130101877A (ko) 2013-09-16

Similar Documents

Publication Publication Date Title
KR101878297B1 (ko) 락 홀더 선점 회복 방법 및 장치
EP3036625B1 (en) Virtual hadoop manager
US10255005B2 (en) Systems and methods of disk storage allocation for virtual machines
US10216758B2 (en) Multi-tenant production and test deployments of Hadoop
US9235435B2 (en) Direct memory access filter for virtualized operating systems
US9342360B2 (en) Workload migration between virtualization softwares
JP5459811B2 (ja) 仮想ストレージ移行のための方法およびシステム、ならびに仮想マシンモニタ
US9244715B2 (en) Virtualization processing method and apparatuses, and computer system
US10481932B2 (en) Auto-scaling virtual switches
US20090327576A1 (en) Direct Memory Access Filter for Virtualized Operating Systems
US20170371777A1 (en) Memory congestion aware numa management
US9841983B2 (en) Single click host maintenance
US20140298326A1 (en) Asynchronous unmap of thinly provisioned storage for virtual machines
US9021497B1 (en) Adjusting pause-loop exiting window values
EP2395430B1 (en) Virtual computer allocation method, allocation program, and information processing device having a virtual computer environment
US10061528B2 (en) Disk assignment for multiple distributed computing clusters in a virtualized computing environment
Ahn et al. Accelerating critical OS services in virtualized systems with flexible micro-sliced cores
JP2016038888A (ja) 情報処理システム、情報処理方法及び情報処理プログラム
CN109739612B (zh) 虚拟机进程的调度方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant