KR101765723B1 - 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법 - Google Patents

과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법 Download PDF

Info

Publication number
KR101765723B1
KR101765723B1 KR1020160056577A KR20160056577A KR101765723B1 KR 101765723 B1 KR101765723 B1 KR 101765723B1 KR 1020160056577 A KR1020160056577 A KR 1020160056577A KR 20160056577 A KR20160056577 A KR 20160056577A KR 101765723 B1 KR101765723 B1 KR 101765723B1
Authority
KR
South Korea
Prior art keywords
gpu
virtual machine
request signal
scheduler
node
Prior art date
Application number
KR1020160056577A
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 KR1020160056577A priority Critical patent/KR101765723B1/ko
Application granted granted Critical
Publication of KR101765723B1 publication Critical patent/KR101765723B1/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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법 에 관한 것으로써 GPU 인지형 스케줄러가 GPU 사용이 가능한 가상머신 생성 요청신호를 수신하는 단계; 상기 GPU 인지형 스케줄러는 GPU 관리부에게 GPU 사용이 가능한 가상머신이 탑재되어 있는 GPU 노드 탐색신호를 송신하는 단계; 상기 GPU 노드 탐색신호에 대응하여 상기 GPU 관리부는 상기 GPU 인지형 스케줄러에게 사용 가능한 GPU 노드에 관한 정보를 송신하는 단계; 상기 GPU 인지형 스케줄러는 상기 사용 가능한 GPU 노드에 관한 정보에 기반하여 할당할 GPU 노드를 결정하는 단계;를 포함한다.

Description

과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치 및 방법{apparatus and method for interaction between a coarse-grained GPU resource scheduler and a GPU aware scheduler }
본 발명은 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치 및 방법 에 관한 것으로 구체적으로는 가상화 기술을 이용하여 클라우드 시스템을 구축하는데 있어서 가상 머신들 간에 GPU를 시간적으로 공유하기 위한 스케줄링 장치 및 방법에 관한 것이다.
클라우드 컴퓨팅은 사용자가 컴퓨팅 자원, 스토리지 자원 등을 사용한 만큼 요금을 내고 빌려서 쓰는 비즈니스 모델에 기반한 것으로, 아마존 클라우드 서비스가 시작된 이래로 그 수요는 공공 시장을 중심으로 꾸준히 증가하여 아마존 이외에도 아이비엠, 마이크로소프트, 오라클, 구글 등 대형 정보기술 업체가 클라우드 컴퓨팅 사업에 뛰어 들었다. 특히 구글은 크롬을 앞세워 마이크로소프트의 윈도우 데스크탑 응용을 위협하는 동시에, 안드로이드로 모바일 시장을 적극 공략하고 있다. 국내에서도 KT Cloud가 투자대비 효율의 우월성으로 인해 사용자의 관심을 끌고 있다. 클라우드 컴퓨팅은 자원 관리의 용이성과 경제성을 위해 가상화 기술을 바탕으로 하고 있다.
가상화(virtualization) 기술이란 물리적으로 다른 시스템을 논리적으로 통합하거나 반대로 하나의 시스템을 논리적으로 분할해 자원을 효율적으로 사용케 하는 기술을 말한다. 사용자와 물리적 리소스 사이에 논리적 리소스인 가상화 레이어(virtualization layer)를 구현하여 컴퓨팅 리소스에 대한 접근 및 인프라 관리를 간소화할 수 있는 기술이다. 가상화 기술은 하나의 물리적 머신(physical machine, PM)에 서로 격리된 다수의 가상 머신(virtual machine, VM)을 생성하여 사용자에 특화된 VM을 사용자에게 제공할 수 있다. 이렇게 하여 사용자는 자신의 익숙한 컴퓨팅 환경에서 작업을 할 수 있는 동시에, 클라우드 서비스 제공자는 다수 사용자의 VM을 병합하여 하나의 PM에 할당하여 PM의 자원 낭비를 줄일 수 있다. VM은 파일로 저장되고 관리되기 때문에, 사용자는 자신의 VM을 필요 시 재개시하여 사용할 수 있다. 클라우드 서비스 제공자는 사용자에게 VM을 제공하기 때문에, VM으로부터 해제된 PM 자원의 부가적인 관리(예를 들어, 다른 VM에 해제된 PM 자원을 할당하기 전에 해당 PM 자원에 설치되었을지도 모를 맬웨어(malware)와 같은 오염을 깨끗하게 청소하는 것) 비용을 제거할 수 있다.
클라우드 컴퓨팅이 전파됨에 따라 클라우드 구축의 초기 비용을 줄이고 클라우드 서비스 간의 연동 문제를 해결하기 위해 이들 기능을 제공하는 소프트웨어 스택의 공동 개발을 추구하게 되었다. 이를 위해 NASA, Rackspace, AT&T, IBM, Intel, Ubuntu, RedHat, SUSE, HP 등 150개 이상의 기관을 중심으로 공개소스 클라우드 컴퓨팅 플랫폼으로 OpenStack을 개발하였으며, 400여 기관이 참여 하에 OpenStack 재단이 설립되어 OpenStack을 산업 표준으로 널리 보급되고 있다.
한편, GPU는 CPU에 비해 저전력 고성능 컴퓨팅이 가능하다. 현재 고성능 컴퓨팅 선진국에서는 GPU를 주계산용 자원으로 채택하고 CPU를 운영체제 및 어플리케이션의 실행 관리용 자원으로 사용하는 이질적 고성능 컴퓨팅(high-performance computing, HPC) 시스템을 개발하고 있다. 이질적 HPC 클라우드는 GPU 가상화를 필수적으로 수반한다. 이를 통해 VM은 자신이 원하는 GPU를 사용할 수 있고, 동일한 PM에서 동작하는 다수의 VM은 GPU를 공유한다. 기존의 GPU 가상화는 Dom0 또는 관리용 VM을 통해 GPU 접근을 허용하고 VM에 대한 GPU의 할당/해제를 VM의 개시/종료에 의존하고 있다. 이러한 이유로, GPU 가상화에 따른 오버헤드가 증가하고 GPU 활용이 떨어지는 단점이 있다.
위와 같은 문제점을 해결하기 위하여, 본 발명에서는 VM 간의 원활한 GPU 공유를 위해 PCIe 직접 통로(PCI express direct pass-through) 및 hot plug-in/plug-out 방식에 의한 과립형 GPU 자원 스케줄러를 제안한다.
또한 본 발명에서는 OpenStack 기반의 이질적 HPC 클라우드에서 GPU 컴퓨팅을 수행하려면, GPU가 사용 가능한 가상 머신(GPU-enabled virtual machine, GEVM)을 Nova 스케줄러가 관리할 수 있어야 한다. 이를 위해 Nova 스케줄러가 GPU 컴퓨팅 노드에 GEVM을 할당할 수 있도록, OpenStack의 Nova 스케줄러를 확장한 GPU 인지형(GPU-aware) Nova 스케줄러를 제안한다.
이와 같이 확장된 OpenStack은 VM 간의 hot plug-in/out 방식의 과립형 GPU 자원 스케줄러와 GPU 인지형 Nova 스케줄러를 제안한다.
이와 같은 목적을 달성하기 위한, 본 발명의 제 1측면에 따르면, 본 발명의 일 실시예에 따라 GPU 인지형 스케줄러가 GPU 사용이 가능한 가상머신 생성 요청신호를 수신하는 단계; 상기 GPU 인지형 스케줄러는 GPU 관리부에게 GPU 사용이 가능한 가상머신이 탑재되어 있는 GPU 노드 탐색신호를 송신하는 단계; 상기 GPU 노드 탐색신호에 대응하여 상기 GPU 관리부는 상기 GPU 인지형 스케줄러에게 사용 가능한 GPU 노드에 관한 정보를 송신하는 단계; 상기 GPU 인지형 스케줄러는 상기 사용 가능한 GPU 노드에 관한 정보에 기반하여 할당할 GPU 노드를 결정하는 단계;를 포함한다. 또한 본 발명의 제 2 측면에 따르면, GPU 사용이 가능한 가상머신 생성 요청신호를 수신하는 GPU 인지형 스케줄러;및 적어도 하나 이상의 GPU를 복수의 가상 머신들 에게 각각 할당하기 위한 GPU할당 요청 신호를 수신하고 상기 GPU 할당 요청 신호에 따라, 상기 할당 가능한 GPU를 핫 플러그 인(hot plug in) 방식으로 상기 생성된 가상머신에 할당하는 GPU 관리부;를 포함한다.
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 발명에 대한 실시예를 제공하고, 상세한 설명과 함께 본 발명의 기술적 사상을 설명한다.
도 1은 하드웨어 가상화 시스템의 구조도이다.
도 2는 GPU 가상화 시스템의 구조도이다.
도 3은 본 발명의 실시예에 따른 과립형 GPU 스케줄링 장치를 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 과립형 GPU 스케줄링 장치의 동작을 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 과립형 GPU 스케줄링 방법의 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 오픈스텍(openstack)에 있어서 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용의 구현을 설명하기 위한 도면이다.
도 7은 오픈스텍(openstack)에서 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법에 대한 흐름도이다.
본 발명의 다른 목적, 특징 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예의 구성과 그 작용을 설명하며, 도면에 도시되고 또 이것에 의해서 설명되는 본 발명의 구성과 작용은 적어도 하나의 실시 예로서 설명되는 것이며, 이것에 의해서 상기한 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.
도 1은 하드웨어 가상화 시스템의 구조도이다.
도 1에 도시된 바와 같이 기존의 하드웨어 가상화 시스템은 하드웨어(1000), 가상 머신 모니터(Virtual Machine Monitor, VMM)(1100) 및 복수의가상 머신(virtual machine)(1200, 1201, 1202)들을 포함할 수 있다.
과거 70년대 초기의 컴퓨팅 환경은 높은 하드웨어 가격으로 인해 현대의 개인용 컴퓨팅 환경을 기대하기 어려웠다. 특히 메인프레임(mainframe)을 비롯한 대형 서버들도 하드웨어 가격때문에 컴퓨팅 환경을 다양하게 구축하기 어려웠다. 이에 따라 하드웨어를 효율적으로 사용할 필요성이 대두되었다.
가상화기술(virtualization)은 이러한 요구에 맞추어 70년대 초반 IBM 370 메인프레임에서 고가의 하드웨어의 활용도를 높이기 위하여 개발된 기술이다. 그러나 컴퓨터 하드웨어 시장이 급속하게 발전함에 따라 하드웨어의 단가가 하락되었고, 고가의 하드웨어 장비를 효율적으로 사용하기 위한 가상화 기술에 대한 연구는 일단락되었다.
그런데 최근 가상화 기술은 새로운 르네상스를 맞이하고 있다. 현대의 가상화 기술은 초기 목적인 하드웨어 활용도를 높이는 것과 달리, 대형 서버 환경의 효율적인 관리와, 시스템 안정성 향상을 목적으로 하고 있다. 가상화 시스템은 낮은 이용도(utilization)를 가지는 다수의 서버를 하나로 통합(consolidation)하고,특정 서버의 이용도가 증가할 경우에는 실시간 이주 기술(live migration)을 통해 통합된 서버들을 다시 분리하는 서버 관리 기법을 적용하여 서버 환경을 효율적으로 관리할 수 있다. 또한, 가상 머신을 이용하여 고도의 운영체계들을 각각 격리(isolation)하여 활용함으로서 시스템의 안정성을 향상시킬 수 있다. 따라서 가상화 시스템을 이용하여 효율적인 하드웨어 자원 활용 및 관리 비용 감소, 에너지 절감 등의 효과를 기대할 수 있다.
상술한 가상화 기술의 목적인 대형 서버 환경의 효율적인 관리를 실현하기 위한 방안으로 하드웨어 가상화 기술이 주목을 받고 있다.하드웨어 가상화 기술은 하나의 시스템에서 다수의 가상 머신들을 제공하고, 그 내부에 독립적인 운영체계를 비롯한 소프트웨어를 동작시키기 위한 기술이다.
구체적으로는 도 1에 도시된 바와 같이, 하드웨어(1000) 위에 가상 머신 모니터(1100)를 설치하고, 가상 머신 모니터(1100)는 각각의 운영체계에 독립적인(isolated) 가상 머신들(1200, 1201, 1202)을 제공할 수 있다. 이때 가상 머신 모니터(1100)는 프로세서, 메모리, 디스크, 네트워크 등의 하드웨어(1000) 자원을 성능의 손실 없이 제공할 수 있으므로 서버 환경의 효율적인 관리가 가능하다. 또한 가상 머신 모니터(1100)는 하드웨어(1000)에 접근하는 별개의 가상 머신(1200, 1201, 1202)들을 제공하므로, 하드웨어(1000)의 오작동이 일어나더라도 시스템 전체에 영향을 주지 않고, 각각의 가상 머신(1200, 1201, 1202) 내에서 봉쇄(fault containment)되므로 시스템 전체의 안정성을 향상시킬 수 있다.
도 2는 GPU 가상화 시스템의 구조도이다.
도 2에 도시된 GPU 가상화 시스템은 하드웨어(2000), 가상 머신 모니터(2100),호스트 가상 머신(host virtual machine)(2200), 제 1 게스트 가상 머신(guest virtual machine) (2300) 및 제 2 게스트 가상 머신(2301)을 포함할 수 있다.
도 2에 도시된 바와 같이 하드웨어(2000)는 디스크, 복수의 코어들, 복수의 GPGPU(General-Purpose Graphics Processing Units, 범용 GPU)들을 포함할 수 있다.
가상 머신 모니터(2100)는 도1에서 설명한 가상 머신 모니터(1100)와 동일한 기능을 수행할 수 있다.
호스트 가상 머신(2200)은 버츄얼드라이버 및 네이티브드라이버를 포함할 수 있으며, 게스트 가상 머신들(2300, 2301)로부터의 입출력(Input Output, IO) 요청 및 장치 사용 요청을 지원할 수 있다.
제 1 게스트 가상 머신(2300) 및 제 2 게스트 가상 머신(2301)은 오픈MP(Multi-Processor), CUDA(Comepute Unified Device Architecture)라이브러리 및 GPGPU 드라이버를 포함할 수 있다.
도 2에 도시된 바와 같이, 제 1 가상 머신(2300)은 하드웨어(2000)에 포함된 GPGPU 0 또는 GPGPU 2를 사용할 수 있다. 이 경우, 제 1 가상 머신(2300)은 PCI-E(Peripheral Component Interconnect-Express) 채널을 이용한 직접 접근 방식을 이용하여 GPGPU 0 또는 GPGPU 2에 접근할 수 있다.
PCI 채널을 이용한 직접 접근(direct pass-through) 방식은 하드웨어 벤더가 가상화를 위해 제공하는 입출력 메모리 관리 장치(Input/Output Memory Management Unit, IOMMU)기술이다.
PCI 직접 접근 방식에 따르면, 도 2에 도시된 바와 같이,제 1 및 제 2 가상 머신들(2300, 2301)은 가상 머신 모니터(2100)를 거치지 않고 호스트 가상 머신(2200)에 연결된 물리적 PCI 장치 및 하드웨어(2000)에 포함된 GPGPU와 같은 장치들에게 직접 접근(access)할 수 있다. 따라서 IO(Input Output)의 가상화 오버헤드(overhead)를 최소화하여 IO 성능을 향상시킬 수 있으며, 가상 머신의 범위성(scalability)을 향상시켜, IO의 병목 현상(bottleneck)을 방지하고 확장된 환경에서도 기능 수행을 원활하게 할 수 있다.
그러나 도 2에 도시된 바와 같이, PCI 직접 접근 방식에 의한 가상화 시스템은가상 머신들(2300, 2301) 간에 GPU를 공유할 수 없다는 문제점이 있다.
구체적으로 도 2에 도시된 바와 같이 제 1 게스트 가상 머신(2300)이 부팅되어 GPGPU0을 가진 PCI 채널을 소유하게 되면, 제 1 게스트 가상 머신(2300)에서 GPGPU0을 사용하고 있는 응용 프로그램이 종료될 때까지, 제 1 게스트 가상 머신(2300)의 다른 응용 프로그램은 GPGPU2를 사용할 수 없고, 제 2 게스트 가상 머신(2301)은 GPGPU1 또는 GPGPU3을 사용할 수 없다.
따라서 본 발명에서는 상술한 문제점을 해결하기 위하여 핫 플러그(hot plug) 기능을 활용한 조립 공유(coarse-grained sharing) GPU 스케줄링(scheduling) 방법 및 장치를 제시한다.
핫 플러그(hot plug) 기능이란, 동작 중인 가상 머신에 디바이스를 추가하거나(hot plug-in), 동작 중인 가상 머신으로부터 디바이스를 제거하는(hot plug-out) 기능이다. 핫 플러그 인(hot plug-in)으로 디바이스를 가상 머신에 추가하면, 짧은 시간 안에 많은 양의 IO 작업을 수행할 수 있어 디바이스를 효율적으로 이용할 수 있다.
따라서 상술한 핫 플러그 방식을 이용하면, 제 1 게스트 가상 머신(2300)이 GPU를 사용하며 동작 중일 때에도, 제 1 게스트 가상 머신(2300)의 다른 응용 프로그램이나 제 2 게스트 가상 머신(2301)이 GPU를 사용할 수 있다.
구체적으로 본 발명의 일 실시예에 따른 조립 공유(GPU 스케줄링방법 및 장치는 제 1 게스트 가상 머신(2300)에 GPU를 할당하면 해당 응용 프로그램이 종료될때까지는 GPU의 할당을 해제하지 않지만, 응용 프로그램에서 발생한 오류 또는악의적인 의도에 따라 특정 가상 머신이 GPU를 무조건 점유하는 것을 방지하기 위하여 프리엠프션(preemption) 기능을 제공할 수 있다. 따라서 복수의 가상 머신 들이 GPU를 시간적으로 공유할 수 있으며, 전체적인 오버헤드를 낮출 수 있다. 구체적인 내용은 후술한다.
PCI 채널의 핫 플러그는 그 방식을 구현함에 있어서 표준으로 정의 되어 있으나, 메인보드의 제작회사에서 그 기능을 완벽하게 구현해두지 않는 경우가 종종 있다. 따라서, 본 발명에서는 젠(Xen)의 버전과 리눅스(Linux)의 커널에서GPU의 핫 플러그의 동작여부를 판단하기 위하여, 제 1 장비(이하 M1) 및 제 2 장비(이하 M2)를 사용하는 것을 일 실시예로 할 수 있다.본 발명의 실시예에 따른 M1 및 M2는 [표 1]에 도시된하드웨어 특징을 가질 수 있다. 특히, M1은 4개의 GPU를 사용하고, M2는 1개의 GPU를 사용하는 것을 일 실시예로 한다.
제 1 장비 (M1) 제 2 장비 (M2)
Intel Xeon E5620, 8 cores
Xen 4.0.1
Ubuntu Linux kernel 2.6.32.36
NVIDIA Quadro FX 3800, 4EA
Intel Core i7-2600 CPU, 8 cores
Xen 4.1.2
Ubuntu Linux kernel 3.2.11
NVIDIA Quadro FX 3800, 1EA
본 발명에서는 M1 및 M2에서 GPU의 핫 플러그 기능이 정상 동작하는지 확인하기 위해서 다음과 같은 확인 단계를 제시한다.
1) 가상 머신을 PCI 직접 접근(pass-through) 방식으로 GPU와 함께 부팅한다.
2) GPU가 정상적으로 동작하는지 확인하기 위한 간단한 응용 프로그램을 수행하여 결과를 확인한다.
3) GPU를 핫 플러그 아웃 시켜서 가상 머신에서 GPU를 제거한다.
4) GPU를 다시 핫 플러그 인 시켜서 가상 머신에서 GPU를 인식하는지 확인한다.
5) 상기 2)에 해당하는 절차를 반복하여 정상 동작을 확인한다.
상술한 단계에 따르는 경우, M2에서는 모든 과정에서 정상적으로 동작할 수 있다. 다만, M1에서는 과정 3)에서 가상 머신의 커널이 충돌할 경우에는 리눅스 커널을 업데이트할 수 있다.
또한 본 발명에서는 관련 커널 모듈의 연관성을 파악하고, 이들을 적용하는 것을 제안한다.
1) ACPI PCI 핫 플러그 컨트롤러 드라이버(ACPI PCI hot plug controller driver, ACPIPHP): ACPI상에서 PCI의 핫 플러그를 지원하는 역할을 담당한다.
2) PCI 스터브 드라이버(PCI stub driver, PCI_stub): 새로 생성될 PCI 디바이스를 위하여 가상의 PCI 디바이스를 할당해 두는 역할을 담당한다.
상술한 두 개의 모듈은 PCI 핫 플러그 기능을 수행할 수 있다. 상술한 커널버젼 업데이트에 따라 위의 두 모듈을 업데이트 하는 경우, M1에서도 핫 플러그 기능이 정상적으로 동작할 수 있다. 뿐만 아니라 이전의 낮은 커널 버전에서도 두 모듈을 업데이트 해주면 M1은 정상적으로 동작할 수 있다.
도 3은 본 발명의 실시예에 따른 조립 공유 GPU 스케줄링 장치를 나타낸 도면이다.
도 3에 도시된 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치는 가상 머신 모니터 기반의 조립 공유 GPU 스케줄링 장치를 나타낸다.
도 3에 도시된 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치는 가상 머신 모니터 기반의 조립 공유 GPU 스케줄링 장치를 나타낸다. 도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치는 호스트 가상 머신(3100), 게스트 가상 머신(3200), GPU 풀(GPU pool)(3300)및 가상 머신 모니터(3400)를 포함할 수 있다. 호스트 가상 머신(3100)은 GPU 관리부(GPU Administrator)(3010)을 포함할 수 있으며 게스트 가상 머신(3200)은 GPU 감독부(GPU Manager)(3020)를 포함할 수 있다.
이하에서는 도 3에 도시된 조립 공유 GPU 스케줄링 장치의 복수의 게스트 가상 머신들 중 하나의 게스트 가상 머신(3200)을 중심으로 각 블록의 동작에 대해 설명한다. 본 발명의 일 실시예에 따른 게스트 가상 머신(3200)은 복수의 응용 프로그램들을 실행할 수 있다.
GPU 관리부(3010)는 호스트 가상 머신(3100)에서 데몬 형태로 동작할 수 있다.또한, GPU 관리부(3010)는 복수의 GPGPU 또는 GPU들을 GPU 풀(3300)에 등록시킬 수 있다.
GPU 감독부(3020)는 GPU 관리부(3010)에 GPU를 할당받기 위한 GPU 할당 요청 신호를 전송할 수 있다. GPU 감독부(3020)는 응용 프로그램을 시작할 때, 해당 게스트 가상 머신의 설정 파일을 읽어 들여, 현재 자신의 호스트네임(hostname), IP 주소, GPU 관리부의의 IP 주소를 확인할 수 있다. 또한 GPU 감독부(3020)는 GPU 할당 요청 신호 또는 해제 신호를 송신함에 있어서, 설정 파일의 정보를 활용할 수 있다.
GPU 관리부(3010)는 GPU 할당 요청 신호에 따라 할당 가능한 GPU가 있는지 여부를 GPU 풀(3300)에서 확인하고, 할당 가능한 GPU가 있는 경우에는 GPU를 할당할 수 있다. GPU가 할당이 되면, GPU 풀(3300)의 관리 정보에는 게스트 가상 머신(3200)의 ID와 IP 주소가 기록될 수 있다. [표 2]는 GPU 풀(3300)의 관리 정보로서, GPU가 이용하는 PCI 채널, 가상 머신들을 식별하기 위한 ID 및 IP 어드레스, GPU 드라이버의 사용도 등을 포함할 수 있다. 이는 설계자의 의도에 따라 변경 가능한 사항이다.
# gpuconf
structgpupool_st
{
char pci[128]; // GPU PCI channel
char vmid[32]; // Virtual machine ID
char vmip[32]; // Virtual machine ip address
intmodusagecount; // Virtual machine 내에서 해당 GPU의 nvidia module 사용도
};
GPU 감독부(3020)는 GPU 관리부(3010)에 GPU의 할당을 해제하기 위한 GPU 할당 요청 신호를 전송할 수 있다.
GPU 관리부(3010)는 GPU 감독부(3020)로부터 GPU 해체 요청 신호를 수신한 경우, 해당 GPU의 할당을 해제하고 해제된 GPU를 GPU 풀(3300)에 반환할 수 있다.
도 2에서 상술한 바와 같이 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치는 핫 플러그 기능을 사용할 수 있다. 따라서 GPU 관리부(3010)는 핫 플러그인 방식으로 GPU를 게스트 가상 머신(3200)에 할당하고, 핫 플러그 아웃 방식으로 GPU의 할당을 해제할 수 있다.
본 발명의 일 실시예에 따른 GPU를 핫 플러그 인 또는 핫 플러그 아웃시키기 위한 인터페이스는 젠 인터페이스(Xen interface)가 될 수 있다. [표 3]은 젠 인터페이스에서 핫 플러그 인 또는 핫 플러그 아웃을 수행시키기 위한 명령의 일 실시예를 나타낸다.
# Hotplug in (allocation)
xmpci-attach [VMID] [GPU PCI]
# Hotplug out (Eviction)
xmpci-detach [VMID] [GPU PCI]
따라서, 상술한 방법에 의하면, GPU 관리부(3010)는 게스트 가상 머신(3200)에 할당된 GPU의 할당이 해제되고 GPU가 반납되면, 다른 게스트 가상 머신의 할당 요청이 있는 경우 해당 GPU를 할당할 수 있다. 또한, GPU 관리부(3010)는 게스트 가상 머신(3200)의 다른 응용 프로그램의 실행을 위하여 반납된 GPU를 할당할 수 있다. 또한 본 발명의 일 실시예에 따른 GPU 관리부(3100)는 게스트 가상 머신(3200)에 GPU를 할당하는 경우에도 핫 플러그 방식을 이용하여 다른 게스트 가상 머신에게 동시에 다른 GPU를 할당할 수 있다. 이 경우 다른 게스트 가상 머신의 GPU 할당 및 해제 방법은 상술한 바와 동일하다.
도 4는 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치의 동작을 나타낸 도면이다.
도 4에 도시된 바와 같이, 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치는 호스트 가상 머신에 포함된 GPU 관리부(5010), 게스트 가상 머신에 포함된 GPU 감독부(5020) 및 GPU 풀(5300)을 포함할 수 있다. GPU 관리부(5010), GPU 감독부(5020) 및 GPU 풀(5300)의 기본적인 동작은 도 2 및 도 3에서 설명한 바와 같다.
도 4는 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치에 있어서, GPU 관리부(5010) 및 GPU 감독부(5020)를 중심으로 각 블록의 구체적인 동작을 나타낸 도면이다.
도 4에 도시된 바와 같이, 본 발명의 일 실시예에 따른 GPU 관리부(5010)는 GPU 풀 초기화부(GPU Pool Init.)(5011), 매니저리스너(Manager Listener)(5012) 및 풀체커(Pool Checker)(5013)를 포함할 수 있다. 또한 본 발명의 일 실시예에 따른 GPU 감독부(5020)는 호스트 정보 초기화부(Host informationInit.)(5021), 래핑 라이브러리(Wrapping Library)(5022), 요청 전송부(Request Sender)(5023) 및 어드민리스너(Admin Listener)(5024)를 포함할 수 있다.
이하 각 블록의 동작을 설명한다.
GPU 풀 초기화부(5011)는 GPU 설정 파일에 저장된 정보를 이용하여 GPU 풀(5300)에 GPU들을 등록시킬 수 있다. 구체적으로 GPU 풀 초기화부(5011)는 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 장치에 저장된 GPU 설정 파일로부터 장착된 GPGPU들 또는 GPU들의 개수를 파악하고, 각각의 GPGPU 또는 GPU가 어떤 PCI 슬롯(slot)을 이용하는지 확인하여 GPGPU 또는 GPU를 GPU 풀(5300)에 등록시킬 수 있다.
또한 GPU 풀 초기화부(5011)는 각 GPU의 상태 정보를 보존하기 위한 자료 구조를 초기화할 수 있다. 상술한 바와 같이 GPGPU 또는 GPU가 GPU 풀(5300)에 등록되면 이들은 초기화되어 어떤 게스트 가상 머신에게도 할당되지 않은 상태가 된다. 여기에서 GPU의 상태 정보란 ‘할당 가능’ 또는 ‘사용 중’에 관한 정보를 의미한다. 구체적으로, GPU 풀 초기화부(5011)가 GPU 풀(5300)에 GPGPU 또는 GPU를 등록한 경우, 등록된 GPU는 할당 가능한 상태로 되고, 게스트 가상 머신이 GPU를 할당받아 사용하게 되면 할당된 GPU는 사용 중인 상태가 된다. 이후, 할당된 GPU가 해제되어 GPU 풀(5300)에 반납되면 GPU는 다시 할당 가능한 상태가 된다.
[표 4]는 본 발명의 일 실시예에 따른 GPU 설정 파일로서, GPU를 식별하기 위한 GPU ID와 해당 GPU가 이용할 수 있는 PCI 슬롯에 대한 정보를 포함할 수 있다. 이는 설계자의 의도에 따라 변경 가능한 사항이다.
# gpuconf
# gpu id pci slot
gpu1 0000:01:00.0
gpu2 0000:02:00.0
호스트 정보 초기화부(5021)는 게스트 가상 머신에서 호스트 정보를 구성(configuration)하여 세팅하는 과정을 수행할 수 있다. 여기서 호스트 정보란 GPU 요청 메시지를 보내기 위한 목적지(destination), 즉 호스트 가상 머신(5100)을 식별하기 위한 ID 또는 IP 어드레스 정보 등을 포함할 수 있다.
GPU 풀 초기화부(5011)에 의해 GPU들의 초기화가 완료되면, GPU 관리부(5010)는 매니저리스너(5012)와 풀체커(5013)를 위한 두 개의 스레드(thread)를 생성할 수 있다.
매니저리스너(5012)는 생성된 매니저리스너 스레드를 통해 네트워크로부터 UDP 포트를 열고 게스트 가상 머신의 GPU 감독부(5020)에서 전송하는 요청 신호를 수신하고, 수신된 요청 신호에 따라 작업을 수행할 수 있다. 도 3에서 상술한 바와 같이 본 발명의 요청 신호는 GPU 할당 요청 신호 또는 GPU 해제 요청 신호를 포함할 수 있다. 또한, GPU 할당 요청 신호 및 GPU 할당 해제 신호는 사용자의 입력 여부에 따라 사용자에 의한 GPU 할당 요청 및 해제 요청(GPU allocation and eviction request by user)신호와 래핑 라이브러리(5022)에 의한 GPU 할당 요청 및 해제 요청(GPU allocation and eviction request by wrapping library)신호로 분류될 수 있다.
사용자에 의한 GPU 할당 요청 및 해제 요청 신호는 게스트 가상 머신이 사용자로부터 입력받은 GPU 할당 및 해제 요청 신호를 의미한다.
래핑 라이브러리(5022)에 의한 GPU 할당 요청 및 해제 요청 신호는 사용자에 의한 GPU 할당 요청 및 해제 요청 신호가 없는 경우, GPU 감독부(5020)에 포함된 래핑 라이브러리(5022)가 생성한 신호를 의미한다.
GPU의 할당 및 해제 요청 신호의 송수신은 매니저리스너(5012), 래핑 라이브러리(5022) 및 요청 전송부(5023)를 통해 이루어질 수 있다.
구체적으로, GPU 감독부(5020)에 사용자의 GPU 할당 요청 및 해제 요청 신호가 입력되면, 요청 전송부(5023)는 사용자에 의한 GPU 할당 요청 및 해제 요청 신호를 호스트 가상 머신(5100)의 매니저리스너(5012)에게 전송 할 수 있다. GPU 감독부(5020)에 사용자의 GPU 할당 요청 및 해제 요청 신호가 입력되지 않는 경우에는, 래핑 라이브러리(5022)에서 GPU 할당 요청 및 해제 요청 신호를 생성하고, 생성된 GPU 할당 요청 및 해제 요청 신호를 호스트 가상 머신(5100)의 매니저리스너(5012)에게 전송할 수 있다.
이때 GPU 할당 요청 신호가 매니저리스너(5012)에게 전송된 경우, 호스트 가상 머신은 상술한 GPU의 상태 정보를 이용하여 게스트 가상 머신에게 할당할 수 있는 GPU를 GPU 풀(5300)에서 확인할 수 있고, 할당 가능한 GPU가 있는 경우에 게스트 가상 머신에게 GPU를 할당해줄 수 있다.
상술한 GPU 할당 요청 및 해제 요청에 따른 GPU의 할당 및 해제는 도 2에서 설명한 핫 플러그 방식으로 이루어질 수 있다.
따라서 상술한 방법에 의하면, GPU 관리부(5010)는 게스트 가상 머신에 할당된 GPU의 할당이 해제되고 GPU가 반납되면, 다른 게스트 가상 머신의 할당 요청이 있는 경우 해당 GPU를 할당할 수 있다. 또한, GPU 관리부(5010)는 게스트 가상 머신의 다른 응용 프로그램의 실행을 위하여 반납된 GPU를 할당할 수 있다. 또한 본 발명의 일 실시예에 따른 GPU 관리부(5010)는 게스트 가상 머신에 GPU를 할당하는 경우에도 핫 플러그 방식을 이용하여 다른 게스트 가상 머신에게 동시에 다른 GPU를 할당할 수 있다. 이 경우 다른 게스트 가상 머신의 GPU 할당 및 해제 방법은 상술한 바와 동일하다. 구체적인 내용은 후술한다.
또한 상술한 바와 같이, 본 발명에서는 GPU의 효율적인 사용을 위하여 사용되지 않는 GPU는 강제 회수할 수 있도록 하는 프리엠프션 기능을 제시한다. 본 발명의 일 실시예에 따른 프리엠프션 기능은 풀체커(5013) 및 어드민리스너(5024)에 의해 제공될 수 있다.
GPU 관리부(5010)는 GPU가 게스트 가상 머신에게 할당된 이후부터 주기적으로 할당된 GPU 사용여부를 확인하기 위한 사용도 보고 요청 신호를 전송할수 있다. 구체적으로, 풀체커(5013)는 생성된 풀체커 스레드를 통해 GPU 풀(5300)내에서 할당된 GPU들을 검색할 수 있다. 어드민리스너(5024)는 GPU의 사용 여부를 확인할 수 있다. 풀체커(5013)는 어드민리스너(5024)의 GPU 사용 여부 확인 결과를 이용하여 사용되지 않는 GPU를 강제로 회수 할 수 있다. 강제로 회수된 GPU는 GPU풀(5300)에 반납되며, 반납된 GPU는 다른 게스트 가상 머신에게 할당될 수 있다. 따라서 복수의 게스트 가상 머신들이 GPU를 시간적으로 공유할 수 있게 된다.
도 5는 본 발명의 일 실시예에 따른 조립 공유 GPU 스케줄링 방법의 흐름도이다.
구체적으로, 도 5는 도 4에서 설명한 본 발명의 조립 공유 GPU 스케줄링 장치의 실시예들의 동작을 설명한 흐름도이다.
호스트 가상 머신의 GPU 관리부는 GPU 풀에 GPU를 등록할 수 있다(S9000), GPU 관리부는 호스트 가상 머신에서 데몬 형태로 동작할 수 있다. GPU 관리부에 포함된 GPU 풀 초기화부는 GPGPGU들 또는 GPU들을 초기화된 상태 즉, 어떤 게스트 가상 머신에도 할당되지 않은 상태로 GPU 풀에 등록할 수 있다.
이후, 게스트 가상 머신은 GPU 응용 프로그램 시작시 사용자에 의한 GPU 할당 요청 신호가 입력되었는지 여부를 판단할 수 있다(S9100). 만약, 사용자에 의한 GPU 할당 요청 신호가 입력되지 않는다면, 래핑 라이브러리가 GPU를 자동으로 할당하기 위한 GPU 할당 요청 신호를 생성할 수 있다.
판단 결과, 사용자에 의한 GPU 할당 요청 신호가 입력된 경우에는, 호스트 가상 머신은 사용자에 의한 GPU 할당 요청 신호에 따라 게스트 가상 머신에게 GPU를 할당 할 수 있다(S9110). 이 경우 호스트 가상 머신은 도 2에서 설명한 핫 플러그인 방식을 이용하여 GPU를 할당할 수 있다.
판단 결과, 사용자에 의한 GPU 할당 요청 신호가 입력되지 않는 경우, 호스트 가상 머신은 게스트 가상 머신에게 GPU를 자동적으로 할당할 수 있다(S9120). 이 경우, 호스트 가상 머신은 상술한 래핑 라이브러리에서 생성한 GPU 할당 요청 신호에 따라 게스트 가상 머신에게 GPU를 자동적으로 할당할 수 있다.
이후 호스트 가상 머신은 할당된 GPU가 게스트 가상 머신에서 사용되고 있는지 여부를 판단할 수 있다(S9200). 이 경우, 호스트 가상 머신과 게스트 가상 머신은 풀체커 어드민리스너를 통해 할당된 GPU가 게스트 가상 머신에서 사용되는지 여부의 확인을 함께 수행할 수 있다.
판단 결과, 할당된 GPU가 사용되지 않는다면, 사용되지 않는 GPU는 풀체커에 의해 강제로 회수될 수 있다(S9220), 본 발명에서는 이를 프리엠프션 기능으로 호칭할 수 있으며, 프리엠프션 기능에 따르면, 복수의 게스트 가상 머신들은 하나의 GPU를 시간적으로 공유할 수 있다. 구체적인 내용은 도 8에서 설명한 바와 같다.
판단 결과, 할당된 GPU가 사용되고 있다면, 게스트 가상 머신은 GPU 응용 프로그램 종료시 사용자에 의한 GPU 해제 요청 신호가 입력되었는지 여부를 판단할 수 있다(S9210), 상술한 바와 같이, 사용자에 의한 GPU 해제 요청신호가 입력되지 않는 경우, 래핑 라이브러리는 GPU를 자동으로 해제하기 위하여 GPU 해제 요청 신호를 생성할 수 있다.
판단 결과, 사용자에 의한 GPU 해제 요청 신호가 입력된 경우, 호스트 가상 머신은 사용자에 의한 GPU 해제 요청 신호에 따라 GPU의 할당을 해제할 수 있다(S9211). 이 경우, 호스트 가상 머신은 도 2에서 설명한 핫 플러그아웃 방식을 이용하여 GPU의 할당을 해제할 수 있다. 할당이 해제된 GPU는 GPU풀에 반납될 수 있다.
판단 결과, 사용자에 의한 GPU해제 요청 신호가 입력되지 않은 경우, 호스트 가상 머신은 자동으로 GPU의 할당을 해제할 수 있다(S9212). 이 경우, 호스트 가상 머신은 상술한 래핑 라이브러리에서 생성한 GPU 해제 요청 신호에 따라 GPU의 할당을 자동적으로 해제할 수 있다. 할당이 해제된 GPU는 GPU 풀에 반납될 수 있다.
도 6은 본 발명의 일 실시예에 따른 오픈스텍(openstack)에 있어서 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용의 구현을 설명하기 위한 도면이다.
도 6에서 도시된 바와 같이, 오픈스텍(openstack)은 2010년 6월에 Rackspace사와 NASA가 시작한 클라우드 컴퓨팅 오픈소스 프로젝트이다. 서버, 스토리지, 네트워크를 가상화 환경으로 만든 IaaS(Infrastructure as a Service)형태이며 아파치 라이선스 하에 배포되고 있다. 오픈스텍은 오브젝트 스토리지 서비스(6010,Swift), 인증을 위한 아이텐티티서비스(6060,Keystone), 운영체제 이미지를 관리하는 이미지 서비스(6020,Glance), 네트워크 관리 서비스(6050,Neutron), 블록스토리지 서비스(6040,Cinder), 웹 기반 대시 보드 Horizon(6000)을 포함하고 있다. 추가적인 서비스로는 텔레미터 서비스 Ceilometer, 오케스트레이션 서비스 Heat, 데이터베이스 서비스 Trove가 있다. 오픈스텍에서 네트워킹은 SDN(Software-Defined Networking) 기술을 활용하고 있다. 따라서 스위칭, 라우팅, 로드밸런싱, 방화벽, VPN 등의 기술을 소프트웨어적으로 구성할 수 있다. 일반적으로 오픈스텍에서는 OVS(Open vSwitch)를 이용하여 스위칭을 구성하고 라우팅은 IP forwarding, ip tables, Network namespace를 이용한다.
본 발명의 일 실시예에 따른 오픈스텍(open stack)에 있어서 과립형 GPU 스케줄링 장치는 가상서버를 생성하는 노바(nova)와 관련된 모듈들을 포함할 수 있다. 오픈스텍(open stack)에 있어서 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용의 구현하기 위해서 변경되지 않는 부분은 생략하고 수정 또는 추가 등으로 변경된 부분만을 설명한다. 노바와 관련된 모듈로 변경된 부분은 구체적으로 오픈스텍(openstack)에 있어서 과립형 GPU 스케줄링 장치는 노바 에이피아이 모듈(6100,nova-api), 노바 스케줄러 모듈(6140,nova-scheduler), 노바 컴퓨팅 모듈(6170,nova-compute), 노바 데이터베이스(6180,nova-database)가 변경되었고 호라이존 모듈(6000)은 추가되었다.
노바 데이터베이스(nova-database)는 컴퓨팅 노드의 GPU 자원 모니터링 및 자원관리를 위한 테이블 및 칼럼 수정을 위한 것으로 이와 관련하여 오프스텍 상의 수정위치는 216_havana.py이다. GPU 컴퓨팅이 가능한 오픈스텍을 위해 노바 데이터베이스의 Compute_node table에 추가되어야 할 컬럼은 다음과 같다.
- Column('gpu_fan', Text): GPU fan 회전율 정보
- Column('gpu_vms', Integer): GPU 노드 구동 개수
- Column('gpu_temp', Text): GPU 온도
- Column('gpu_memory', Text): GPU 사용량
- Column('[gpu_total', Text): GPU 전체 메모리 사용량
또한 노바 데이베이스가 _convert_host_gpu_to_db_format 함수를 통해, 컴퓨팅 노드로 전달받은 GPU 정보를 해당 컴퓨팅 노드 컬럼에 저장하는 것을 수행할 수 있다. 노바 에이피아이 모듈(nova-api)은 컴퓨팅 노드로부터 전달받은 GPU와 관련된 정보를 노바 데이터베이스에 업데이트 할 수 있다. 이와 관련하여 오프스텍 상의 수정위치는 compute_node.py 및 hypervisor.py이다.
노바와 관련된 모듈은 GPU를 인식하지 못하기 때문에 노바 컴퓨팅모듈(nova-compute)은 GPU 자원을 가진 노드가 어느 것인지 알 수 있도록, 또한 이들 중에서 어느 노드에 가상머신 이미지를 개시할지 결정할 수 있다. 전술한 가상머신 이미지는 사용자에게 제공되는 이미지를 의미하며 구체적으로는 사용자가 사용하기 원하는 가상머신 상의 운영체제(OS)에 관한 이미지, 사용자가 운영체제 상에서 구동하고자 하는 어플리케이션에 관한 이미지, 사용자 설정정보에 관한 이미지 등을 포함한다. 또한 가상머신 이미지는 snapshot을 만들어 Glance 모듈에 GPU 사용이 가능한 가상머신 이미지(GPU-enabled VM 이미지(GEI))로 등록할 수 있다. 이후 사용자는 GPU-enabled VM 이미지를 이용하여 GPU-enabled VM을 계속 생성하여 사용할 수 있다.
또한 노바 컴퓨팅 모듈(nova-compute)은 컴퓨팅 노드의 GPU를 포함한 자원 사용현황의 추가적 리포팅을 할 수 있다. 이와 관련하여 노바 컴퓨팅 모듈(nova-compute)에 대한 오픈스텍 상의 수정위치는 compute_node.py 및 resource_tracker.py이다. 또한 노바 컴퓨팅 모듈(nova-compute)은 컴퓨팅 노드의 GPU지원여부를 파악할 수 있다. 이와 관련하여 노바 컴퓨팅 모듈(nova-compute)에 대한 오픈스텍 상의 수정위치는 Nova.conf이다.
호라이존 모듈(horizon)은 할당된 물리적 자원에서 개시된 GPU 사용이 가능한 가상머신 또는 가상머신 인스턴스가 제대로 동작하는지, 어떤 작업을 실행하고 있는지 등을 모니터링 할 수 있다. 이와 관련된 오픈스텍 상의 수정 위치는 create_instance.py 및 _launce_gpu_help.html이다. 호라이존 모듈(horizon)의 가상머신 인스턴스 옵션은 enable과 disable 중 하나의 값으로 설정된다. enable을 선택하면 인스턴스 생성 시 GPU 사용이 가능한 가상머신 인스턴스가 생성할 수 있다.
글랜스 모듈(6800,glance)은 GPU 사용이 가능한 가상머신 이미지를 탐색할 수 있다. 또한 글랜스 모듈은 적어도 하나 이상의 가상머신 이미지를 등록하고 관리할 수 있다. 관리자는 사용자의 요구에 따라 필요한 가상머신 이미지를 만들어서 글랜스 모듈에 등록을 할 수 있다. 또한 글랜스 모듈은 사용자의 요구에 적합한 가상머신 이미지를 찾아서 사용자에게 할당된 컴퓨팅 노드에 그 이미지를 적재할 수 있다.
노바 스케줄러 모듈은 GPU를 인식하지 못하는 것을 해결하기 위해 및 GPU관리부와 상호작용을 하기 위하여 GPU 인지형 스케줄러로 변경되었으며 이와 관련된 구체적인 설명은 도 7에서 설명한다.
도 7은 오픈스텍(openstack)에서 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치를 설명하기 위한 도면이다.
도 7에서 도시된 바와 같이, 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치는 글랜스 모듈(7030), GPU 인지형 스케줄러 모듈(7020), GPU 관리부(7040)을 포함한다. 또한 GPU 인지형 스케줄러 모듈(7020)은 노바 스케줄러 모듈(7000)과 GPU 컴퓨팅 체커 모듈(7010)을 포함한다. 오픈스텍에서 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치를 구현하기 위해 기존 오픈스텍 컨트롤러 노드(controller node) 부분에 GPU 감독부(7040)를 기설치하고 GPU 인지형 스케줄러 모듈에 종래의 노바 스케줄러 모듈(7000)외에 GPU 컴퓨팅 체커 모듈(7010)을 추가하였다. 참고로 컨트롤러 노드(controller node) 및 GPU 컴퓨팅 노드(GPU 노드, GPU compute node)는 도 6의 컨트롤러 노드 및 GPU 컴퓨팅 노드와 각각 대응된다. 또한 GPU 감독부(7040)는 도 4에서 전술한 GPU 관리부(5010)와 대응된다. 글랜스 모듈(7030)은 도 6의 글랜스 모듈(6800)과 대응된다. 또한 GPU 컴퓨팅 노드는 GPU 노드와 동일한 것을 의미한다.
GPU 인지형 스케줄러는 사용자의 요청을 받아 이에 적합한 GPU 컴퓨팅 노드(물리적 노드)를 사용자에게 할당하여 GPU 사용이 가능한 가상머신을 생성한다. 구체적으로는 GPU 인지형 스케줄러가 GPU 사용이 가능한 가상머신 생성 요청신호를 수신할 수 있다. 또한 전술한 생성 요청신호에 대응하여 GPU 인지형 스케줄러가 글랜스모듈에게 GPU 사용이 가능한 가상머신 이미지 생성 요청신호를 송신할 수 있다. 또한 GPU 인지형 스케줄러는 GPU 관리부에게 GPU 사용이 가능한 가상머신이 탑재되어 있는 GPU 노드 탐색신호를 송신할 수 있다. 또한 GPU 인지형 스케줄러는 사용 가능한 GPU 노드에 관한 정보에 기반하여 할당할 GPU 노드를 결정할 수 있다. 또한 GPU 인지형 스케줄러는 결정된 GPU 노드에 가상머신 이미지 적재 요청신호를 글랜스 모듈에게 송신할 수 있다. 또한 GPU 인지형 스케줄러는 GPU 노드에 적재된 가상머신 이미지를 구동시켜 GPU 사용이 가능한 가상머신 생성할 수 있다. 또한 GPU 인지형 스케줄러는 GPU 관리부를 통해 GPU 컴퓨팅 노드들로부터 정보를 받아서, 어느 컴퓨팅 노드에 GPU가 탑재되어 있는지, 어느 GPU 컴퓨팅 노드가 사용 가능한지 확인할 수 있다. 구체적으로는 GPU 컴퓨팅 체커는 GPU 관리부를 통해 GPU 컴퓨팅 노드들로 부터 정보를 받아서, 어느 컴퓨팅 노드에 GPU가 탑재되어 있는지, 어느 GPU 컴퓨팅 노드가 사용 가능한지 확인하여 리스트 목록정보를 생성하고 할 수 있다. GPU 컴퓨팅 체커는 전술한 생성된 리스트 목록정보를 노바 스케줄러 모듈에 전달할 수 있다. 또한 GPU 컴퓨팅 체커는 GPU 관리부로부터 GPU 컴퓨팅 노드들에 관한 정보를 수신하여 GPU를 지원하지 않는 컴퓨팅 노드를 스케줄링 리스트 목록정보에서 제외하거나 GPU자원을 사용하고 있는 컴퓨팅 노드를 확인하여, 스케줄링 리스트에서 제외하면서 업데이트를 수행할 수 있다. 또한 GPU 인지형 스케줄러는 GPU 컴퓨팅 체커와 노바 스케줄러 모듈로부터 정보를 수신하여 GPU 자원 및 자원을 사용하고 있지 않은 컴퓨팅 노드들을 스케줄링을 통한 Weight 산출 후 가상머신 또는 가상머신 인스턴스 생성한다. 이를 위해 오픈스텍에서 Nova.scheduler.manager.py위치에서 인스턴스 생성 요청 시, 적합한 호스트를 선택하는 작업을 수행하기 위해 select_destination 메소드를 호출하며, select_destinations 메소드는 요구된 인스턴스의 스펙(reqeust_spec) 및 사용자 지정 조건(filter_properties)에 따라 최적의 호스트 선택 할 수 있다.
또한 오픈스텍에서 Nova.scheduler.filter_scheduler.py_schedule() 위치에서 _get_all_host_states 내부 메소드에 의해, 오픈스텍 컨트롤러 노드와 연동되는 모든 GPU 컴퓨팅 노드 중 활성 호스트의 목록을 가져오며 filtering 및 weighting을 통해 인스턴스가 시작되는 호스트를 결정할 수 있다. 또한 GPU 인지형 스케줄러는 생성되는 가상머신 또는 가상머신 인스턴스가 일반 가상머신 일 경우 종래의 기술인 노바 스케줄러의 기존 스케줄링과 동일하게 동작할 수 있다. 이와 관련하여 오픈스텍 상의 수정위치는 host_manager.py이다.
글랜스모듈은 가상머신 이미지 생성요청신호에 대응하여 GPU 사용이 가능한 가상머신 이미지를 탐색할 수 있다. 글랜스모듈은 탐색된 GPU 사용이 가능한 가상머신 이미지를 적재 요청신호에 대응하여 GPU 노드에 적재할 수 있다.
도 2, 3, 4, 5에서 전술한 GPU 관리부는 GPU 인지형 스케줄러에게 사용 가능한 GPU 노드에 관한 정보를 송신할 수 있다. 또한 GPU 관리부는 적어도 하나 이상의 GPU를 복수의 가상 머신들 에게 각각 할당하기 위한 GPU할당 요청 신호를 수신하고 GPU 할당 요청 신호에 따라, 할당 가능한 GPU를 핫 플러그 인(hot plug in) 방식으로 생성된 가상머신에 할당할 수 있다. 또한 GPU 관리부는 할당된 GPU가 사용되는지 여부를 주기적으로 판단할 수 있다. 또한 GPU 관리부는 할당된 GPU의 할당을 해제하기 위한 GPU 해제 요청 신호를 수신하고 GPU 해제 요청 신호에 따라, GPU의 할당을 핫 플러그 아웃(hot plug out) 방식으로 해제할 수 있다. 또한 GPU 관리부는 할당된 GPU가 일정 시간동안 사용되지 않는 경우, 할당된 GPU를 강제로 회수하고 GPU풀에 반납할 수 있다. 또한 GPU 관리부는 GPU풀에 반납된 GPU를 GPU 할당 요청 신호에 따라 다시 할당할 수 있다. 또한 GPU 관리부는 GPU풀에 반납된 GPU를 재사용 가능하도록 리셋할 수 있다.
도 8은 본 발명의 일 실시예에 따른 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법에 대한 흐름도이다.
도 8을 참조하면, 본 발명의 일 실시예에 따른 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법은 GPU 인지형 스케줄러가 GPU 사용이 가능한 가상머신 생성 요청신호를 수신하는 단계;(S7000) 상기 GPU 인지형 스케줄러는 GPU 관리부에게 GPU 사용이 가능한 가상머신이 탑재되어 있는 GPU 노드 탐색신호를 송신하는 단계;(S7010) 상기 GPU 노드 탐색신호에 대응하여 상기 GPU 관리부는 상기 GPU 인지형 스케줄러에게 사용 가능한 GPU 노드에 관한 정보를 송신하는 단계;(S7020) 상기 GPU 인지형 스케줄러는 상기 사용 가능한 GPU 노드에 관한 정보에 기반하여 할당할 GPU 노드를 결정하는 단계(S7030);을 포함한다. GPU 인지형 스케줄러는 GPU 사용이 가능한 가상머신 생성 요청신호를 수신하는 단계;(S7000) GPU 인지형 스케줄러는 GPU 관리부에게 GPU 사용이 가능한 가상머신이 탑재되어 있는 GPU 노드 탐색신호를 송신하는 단계;(S7010) GPU 노드 탐색신호에 대응하여 사용 가능한 GPU 노드에 관한 정보에 기반하여 할당할 GPU 노드를 결정하는 단계(s7030);를 수행할 수 있다. 이에 대한 구체적인 설명은 도 2,3,4,5,6,7에서 전술한 바와 같다. GPU 관리부는 GPU 인지형 스케줄러에게 사용 가능한 GPU 노드에 관한 정보를 송신하는 단계;(S7020)를 수행할 수 있다. 이에 대한 구체적인 설명은 도 2,3,4,5,6,7에서 전술한 바와 같다.

Claims (20)

  1. GPU 인지형 스케줄러가 GPU 사용이 가능한 가상머신 생성 요청신호를 수신하는 단계;
    상기 GPU 인지형 스케줄러는 GPU 관리부에게 GPU 사용이 가능한 가상머신이 탑재되어 있는 GPU 노드 탐색신호를 송신하는 단계;
    상기 GPU 노드 탐색신호에 대응하여 상기 GPU 관리부는 상기 GPU 인지형 스케줄러에게 사용 가능한 GPU 노드에 관한 정보를 송신하는 단계;
    상기 GPU 인지형 스케줄러는 상기 사용 가능한 GPU 노드에 관한 정보에 기반하여 할당할 GPU 노드를 결정하는 단계;를 포함하고
    상기 GPU 관리부는 적어도 하나 이상의 GPU를 복수의 가상 머신들 에게 각각 할당하기 위한 GPU 할당 요청 신호를 수신하고 상기 GPU 할당 요청 신호에 따라, 할당 가능한 GPU를 핫 플러그 인(hot plug in) 방식으로 가상머신에 할당하는 것을 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  2. 제 1항에 있어서, 상기 수신한 가상머신 생성 요청신호에 대응하여 상기 GPU 인지형 스케줄러가 글랜스모듈에게 GPU 사용이 가능한 가상머신 이미지 생성 요청신호를 송신하는 단계;
    상기 글랜스모듈은 상기 가상머신 이미지 생성요청신호에 대응하여 GPU 사용이 가능한 가상머신 이미지를 탐색하는 단계;를 더 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  3. 제 2 항에 있어서, 상기 GPU 인지형 스케줄러는 가상머신 이미지 적재 요청신호를 상기 글랜스 모듈에게 송신하는 단계;
    상기 글랜스모듈은 상기 탐색된 가상머신 이미지를 상기 가상 머신 이미지 적재 요청신호에 대응하여 상기 결정된 GPU 노드에 적재하는 단계;
    상기 GPU 인지형 스케줄러는 상기 GPU 노드에 적재된 가상머신 이미지를 구동시켜 GPU 사용이 가능한 가상머신 생성하는 단계;를 더 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  4. 제 1항에 있어서, 상기 할당된 GPU가 사용되는지 여부를 주기적으로 판단하는 단계를 더 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  5. 제 1항에 있어서, 상기 할당된 GPU의 할당을 해제하기 위한 GPU 해제 요청 신호를 받는 단계; 및
    상기 GPU 해제 요청 신호에 따라, 상기 GPU의 할당을 핫 플러그 아웃(hot plug out) 방식으로 해제하는 단계를 더 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  6. 제 1 항에 있어서, 상기 할당된 GPU가 일정 시간동안 사용되지 않는 경우, 상기 할당된 GPU를 강제로 회수하고 GPU풀에 반납하는 단계를 더 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  7. 제 6 항에 있어서, 상기 GPU풀에 반납된 GPU를 상기 GPU 할당 요청 신호에 따라 다시 할당하는 단계를 더 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  8. 제 6 항에 있어서, 상기 GPU풀에 반납된 GPU를 재사용 가능하도록 리셋하는 단계를 더 포함하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 방법.
  9. GPU 사용이 가능한 가상머신 생성 요청신호를 수신하는 GPU 인지형 스케줄러;및
    적어도 하나 이상의 GPU를 복수의 가상 머신들 에게 각각 할당하기 위한 GPU할당 요청 신호를 수신하고 상기 GPU 할당 요청 신호에 따라, 할당 가능한 GPU를 핫 플러그 인(hot plug in) 방식으로 상기 생성된 가상머신에 할당하는 GPU 관리부;를 포함하고
    상기 GPU 인지형 스케줄러는 상기 GPU 관리부에게 GPU 사용이 가능한 가상머신이 탑재되어 있는 GPU 노드 탐색신호를 송신하고 상기 GPU 노드 탐색신호에 대응하여 상기 GPU 관리부는 상기 GPU 인지형 스케줄러에게 사용 가능한 GPU 노드에 관한 정보를 송신하는 것을 특징으로 하고,
    상기 GPU 인지형 스케줄러는 상기 사용 가능한 GPU 노드에 관한 정보에 기반하여 할당할 GPU 노드를 결정하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  10. 제 9 항에 있어서, 가상머신 이미지 생성요청신호에 대응하여 GPU 사용이 가능한 가상머신 이미지를 탐색하는 글랜스모듈을 더 포함하고,
    상기 수신한 가상머신 생성 요청신호에 대응하여 상기 GPU 인지형 스케줄러가 상기 글랜스모듈에게 GPU 사용이 가능한 가상머신 이미지 생성 요청신호를 송신하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  11. 제 10 항에 있어서, 상기 GPU 인지형 스케줄러는 가상머신 이미지 적재 요청신호를 상기 글랜스 모듈에게 송신하는 것을 특징으로 하고,
    상기 글랜스모듈은 상기 탐색된 GPU 사용이 가능한 가상머신 이미지를 상기 가상 머신 이미지 적재 요청신호에 대응하여 상기 결정된 GPU 노드에 적재하는 것을 특징으로 하고,
    상기 GPU 인지형 스케줄러는 상기 GPU 노드에 적재된 가상머신 이미지를 구동시켜 GPU 사용이 가능한 가상머신 생성하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  12. 제 9 항에 있어서, 상기 GPU 관리부는 상기 할당된 GPU가 사용되는지 여부를 주기적으로 판단하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  13. 제 9 항에 있어서, 상기 GPU 관리부는 상기 할당된 GPU의 할당을 해제하기 위한 GPU 해제 요청 신호를 받고 상기 GPU 해제 요청 신호에 따라, 상기 GPU의 할당을 핫 플러그 아웃(hot plug out) 방식으로 해제하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  14. 제 9 항에 있어서, 상기 GPU 관리부는 상기 할당된 GPU가 일정 시간동안 사용되지 않는 경우, 상기 할당된 GPU를 강제로 회수하고 GPU풀에 반납하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  15. 제 14 항에 있어서, 상기 GPU 관리부는 상기 GPU풀에 반납된 GPU를 상기 GPU 할당 요청 신호에 따라 다시 할당하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  16. 제 15 항에 있어서, 상기 GPU 관리부는 상기 GPU풀에 반납된 GPU를 재사용 가능하도록 리셋하는 것을 특징으로 하는 과립형 GPU 자원 스케줄러와 GPU 인지형 스케줄러 간의 상호작용 장치.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020160056577A 2016-05-09 2016-05-09 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법 KR101765723B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160056577A KR101765723B1 (ko) 2016-05-09 2016-05-09 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160056577A KR101765723B1 (ko) 2016-05-09 2016-05-09 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101765723B1 true KR101765723B1 (ko) 2017-08-08

Family

ID=59653129

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160056577A KR101765723B1 (ko) 2016-05-09 2016-05-09 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101765723B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102140730B1 (ko) 2019-12-17 2020-08-04 (주) 씨이랩 Gpu 기반의 딥러닝 개발 환경 제공 시스템 및 방법
CN113111025A (zh) * 2021-06-10 2021-07-13 深圳市科力锐科技有限公司 Pci设备映射方法、装置、设备及存储介质
CN117667408A (zh) * 2023-12-07 2024-03-08 北京中科大洋科技发展股份有限公司 一种gpu资源共享管理调度方法及系统
WO2024093546A1 (zh) * 2022-11-01 2024-05-10 深圳市中兴微电子技术有限公司 虚拟机的图像显示方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101401523B1 (ko) 2013-02-08 2014-06-03 한국과학기술정보연구원 복수의 가상 머신들 간 조립 공유 gpu 스케줄링 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101401523B1 (ko) 2013-02-08 2014-06-03 한국과학기술정보연구원 복수의 가상 머신들 간 조립 공유 gpu 스케줄링 방법 및 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
송태건 외 4명. ‘오픈스택 클라우드 스토리지 시스템에서 Pass-through GPU를 사용한 Erasure 코딩 성능향상 기법’. 한국정보과학회 2015 한국컴퓨터종합학술대회 논문집, 2015.06., pp.116-118.
최동훈 외 2명. ‘바이오 응용을 위한 직접 통로 기반의 GPU 가상화’. 정보처리학회논문지 소프트웨어 및 데이터 공학 제2권 제2호, 2013.02., pp.113-118.

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102140730B1 (ko) 2019-12-17 2020-08-04 (주) 씨이랩 Gpu 기반의 딥러닝 개발 환경 제공 시스템 및 방법
CN113111025A (zh) * 2021-06-10 2021-07-13 深圳市科力锐科技有限公司 Pci设备映射方法、装置、设备及存储介质
WO2024093546A1 (zh) * 2022-11-01 2024-05-10 深圳市中兴微电子技术有限公司 虚拟机的图像显示方法及装置
CN117667408A (zh) * 2023-12-07 2024-03-08 北京中科大洋科技发展股份有限公司 一种gpu资源共享管理调度方法及系统
CN117667408B (zh) * 2023-12-07 2024-05-14 北京中科大洋科技发展股份有限公司 一种gpu资源共享管理调度方法及系统

Similar Documents

Publication Publication Date Title
JP6355114B2 (ja) リソース処理方法、オペレーティング・システム、およびデバイス
KR101401523B1 (ko) 복수의 가상 머신들 간 조립 공유 gpu 스케줄링 방법 및 장치
US10509686B2 (en) Distributable computational units in a continuous computing fabric environment
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
JP5305848B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびデータ処理システムならびにコンピュータ・プログラム
US8473692B2 (en) Operating system image management
US8458413B2 (en) Supporting virtual input/output (I/O) server (VIOS) active memory sharing in a cluster environment
US10635499B2 (en) Multifunction option virtualization for single root I/O virtualization
US8201167B2 (en) On-demand allocation of virtual asynchronous services interfaces
JP2016541072A5 (ko)
US10289564B2 (en) Computer and memory region management method
GB2508983A (en) Migration of virtual machines with reassignment of hardware memory segments
KR101765723B1 (ko) 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법
US8205207B2 (en) Method of automated resource management in a partition migration capable environment
US11461120B2 (en) Methods and apparatus for rack nesting in virtualized server systems
JP2016167143A (ja) 情報処理システムおよび情報処理システムの制御方法
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20160077847A1 (en) Synchronization of physical functions and virtual functions within a fabric
US9158554B2 (en) System and method for expediting virtual I/O server (VIOS) boot time in a virtual computing environment
CN114816665B (zh) 混合编排系统及超融合架构下虚拟机容器资源混合编排方法
US8924972B2 (en) Method and system for logging into a virtual environment executing on a host
JP2012168710A (ja) 情報処理システム、情報処理方法、及び制御プログラム
US10228859B2 (en) Efficiency in active memory sharing
CN102622245A (zh) 一种sun4v架构下的虚拟机自动启动控制方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant