KR20140119624A - 가상 플랫폼 상의 i/o 채널 조정 방법 및 장치 - Google Patents

가상 플랫폼 상의 i/o 채널 조정 방법 및 장치 Download PDF

Info

Publication number
KR20140119624A
KR20140119624A KR1020137034172A KR20137034172A KR20140119624A KR 20140119624 A KR20140119624 A KR 20140119624A KR 1020137034172 A KR1020137034172 A KR 1020137034172A KR 20137034172 A KR20137034172 A KR 20137034172A KR 20140119624 A KR20140119624 A KR 20140119624A
Authority
KR
South Korea
Prior art keywords
vms
processing
throughput
host
thread
Prior art date
Application number
KR1020137034172A
Other languages
English (en)
Other versions
KR101559097B1 (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 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20140119624A publication Critical patent/KR20140119624A/ko
Application granted granted Critical
Publication of KR101559097B1 publication Critical patent/KR101559097B1/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
    • 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/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/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • General Factory Administration (AREA)
  • Bus Control (AREA)

Abstract

본 발명은 가상 기술 분야에 적용되는 가상 플랫폼 상의 I/O 채널 조정 방법 및 장치를 제공하며, I/O 채널 조정 방법은, 호스트가, 호스트 상에 동작하고 있는 복수의 가상 머신의 현재 평균 I/O 처리량을 계산하는 단계, 호스트가, 현재 평균 I/O 처리량에 따라 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키거나 감소시키는 단계; 및 호스트가, 복수의 VM의 전방 장치의 큐, 복수의 VM의 후방 장치의 큐 및 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 조정하는 단계를 포함한다. 본 발명에 따르면, 복수의 VM의 전방 장치와 후방 장치 사이의 I/O 채널에 의해 점유된 채널 자원이 HOST 상에 동작하고 있는 복수의 VM의 I/O 처리량에 따라 동적으로 조정된다. I/O 처리량이 감소하는 경우, 유휴 I/O 채널 자원이 해제되고, 따라서 I/O 채널자원의 낭비를 피한다; I/O 처리량이 증가하는 경우, I/O 채널의 향상된 데이터 전송 능력을 야기한다.

Description

가상 플랫폼 상의 I/O 채널 조정 방법 및 장치{METHOD AND APPARATUS FOR ADJUSTING I/O CHANNEL ON VIRTUAL PLATFORM}
본 출원은 2013년 1월 24일자로 중국 특허청에 출원된 중국 특허 출원 No. 201310027312.7, "METHOD AND APPARATUS FOR ADJUSTING I/O CHANNEL ON VIRTUAL PLATFORM"에 대해 우선권을 주장하며 그 전체는 참조로서 원용된다. 본 발명은 가상 기술 분야에 관한 것으로, 특히 가상 플랫폼 상의 I/O 채널 조정 방법 및 장치에 관한 것이다.
가상화는 서버, 네트워크, 메모리 및 저장 장치와 같은 컴퓨터 물리 자원을 추출, 전환 및 제공하여, 사용자가 본래 구성보다 더 나은 방식으로 이러한 자원들을 사용할 수 있게 한다. 이러한 자원의 새로운 가상 부분은 본래 자원의 아키텍쳐 방식, 소재지(localities) 또는 물리적 구성에 의해 제한되지 않는다. 복수의 가상 머신(VM: Virtual Machine)은 물리적으로 존재하는 호스트(HOST) 상에서 동작한다. 호스트는 모든 물리적 하드웨어 장치 및 자원을 관리하고, 복수의 사용자의 스레드(thread)에 의한 동시 사용을 위하여 전용 장치를 복수의 가상 장치로 가상화시킨다. 각 사용자가 볼 수 있는 장치는 가상 장치이고, 물리적 하드웨어 장치는 사용자에게 투명하다.
가상 환경에서, VM은 하드웨어 장치에 직접 액세스 할 수 없고, HOST가 VM을 위하여 하드웨어 장치에 연결되는 채널, 즉 I/O 채널을 제공한다. 본 발명에서, 채널은 VM 전방 장치(Front Device)와 VM 후방 디바이스(Back Device) 사이의 데이터 채널 및 후방 장치와 HOST 네이티브 장치(Native Device) 사이의 데이터 채널을 포함한다 - 여기서 VM 전방 장치는 가상 장치에서 보이는 장치이고, VM을 위해 HOST가 시뮬레이션한 장치이고, VM 후방 장치는 HOST 운영 시스템에서 VM 전방 장치에 연결된 소프트웨어 시뮬레이션 장치이고, HOST 네이티브 장치(Native Device)는 HOST 물리적 장치이다.
도 1은 종래 기술의 가상 플랫폼 상의 단순한 복수-I/O 채널 기술을 나타내며, 두 개의 가상 머신 VM1 및 VM2가 예로 사용되고, VM의 전방 장치와 후방 장치 사이에 복수의 I/O 채널(도 1에서은 예로 두 개의 I/O 채널이 사용되었음)이 도시되었다. VM의 전방 장치와 후방 장치 사이의 브리지인 데이터 처리 모듈이 데이터 복사, 데이터 필터링 또는 기타 다른 데이터 처리 서비스를 위해 사용되고, 복수의 작업 스레드를 포함한다(도 1에서는 두 개의 작업 스레드가 사용되었다). 작업 스레드의 개수는 하나의 작업 스레드에 대응하는 VM 전방 장치와 VM 후방 장치 사이의 I/O 채널 개수와 동일하다. 단일 채널(single channel)이 VM 후방 장치와 브리지(Bridge) 사이 및 브리지(Bridge)와 네이티브 장치(Native Device) 사이에 존재하고, VM 후방 장치가 단일 채널을 통해 네이티브 장치(Native Device)로 데이터를 전송한다.
본 발명자는 상술한 종래 기술이 적어도 이하의 기술적 문제점을 가지고 있는 것을 발견하였다. VM 전방 장치와 VM 후방 장치 사이의 I/O 채널의 수가 VM이 만들어진 경우에 결정되어, I/O 채널의 개수가 VM 라이프 사이클 내에서 바뀔 수 없고, 따라서 VM 전방 장치와 VM 후방 장치 사이의 I/O 채널에 의해 점유된 채널 자원이 바뀔 수 없다. VM 전방 장치와 VM 후방 장치 사이의 I/O 처리량(throughput)이 변화하는 경우, I/O 채널 자원이 조정될 수 없고, I/O 처리량이 감소하는 경우, 유휴(idle) I/O 채널 자원이 방출될 수 없고, 따라서 I/O 채널 자원의 낭비를 야기한다. I/O 처리량이 증가하는 경우, I/O 채널 자원이 증가될 수 없으며, I/O 채널의 데이터 전송 능력을 향상시킬 수 없는 것과 시스템 성능의 저하를 야기한다.
본 발명의 실시례는, 복수의 VM의 전방 장치와 후방 장치 사이의 I/O 채널 자원의 분배를 동적으로(dynamically) 조정하기 위하여, 가상 플랫폼 및 HOST 조정 장치 상의 I/O 채널 조정 방법을 제공하여, 따라서 시스템 성능을 향상시킨다.
본 발명의 제1 측면에 따르면, 본 발명이 제공하는 가상 플랫폼 상의 I/O 채널 조정 방법은, 호스트(HOST)가, 상기 호스트 상에 동작하고 있는 복수의 가상 머신(VM)의 현재 평균 I/O 처리량(throughput)을 계산하는 단계, 상기 현재 평균 I/O 처리량이 제1 문턱 값보다 많은 경우, 상기 호스트가, 상기 복수의 VM의 전방 장치(front devices)와 후방 장치(back devices) 사이의 VM 처리를 위한 작업 스레드(working thread)를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 하는 단계, 또는 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적은 경우, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 하는 단계, 및 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 호스트가, 상기 복수의 VM의 전방 장치의 큐(queue)와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하여, 상기 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널을 형성하는 단계를 포함하고, 상기 제1 문턱 값은 상기 제2 문턱 값보다 큰, 가상 플랫폼 상의 I/O 채널 조정 방법이다.
가능한 제1 구현 방식에서, 제1 측면에 관련하여, 상기 방법은, 상기 현재 평균 I/O 처리량이 상기 제1 문턱 값보다 많으면, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 단계 전에, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 I/O 처리량의 증가 및 CPU 이용의 증가를 비교하는 단계, 및 상기 I/O 처리량의 증가가 상기 CPU 이용의 증가보다 많으면, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 단계를 실행하는 단계를 더 포함한다.
가능한 제2 구현 방식에서, 제1 측면에 관련하여, 상기 방법은, 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적으면, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 단계 전에, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하는 단계, 및 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않으면, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 단계를 실행하는 단계를 더 포함한다.
가능한 제3 구현 방식에서, 제1 측면에 관련하여, 상기 방법은, 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 호스트가, 상기 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이, 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하는 단계는, 상기 호스트가, 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 작은 경우, 각 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑하는 단계, 또는 상기 호스트가, 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 많거나 같은 경우, 독점적(exclusive) 작업 스레드를 VM의 전방 장치의 큐 및 후방 장치의 큐에 맵핑하고, 적어도 두 개의 VM의 전방 장치 및 후방 장치이며 상기 독점적 작업 스레드에 대응하지 않는 공유(shared) 작업 스레드를 큐에 맵핑하는 단계를 포함하고, 상기 VM 처리를 위한 작업 스레드는 상기 독점적 작업 스레드 및 상기 공유 작업 스레드를 포함한다.
가능한 제4 구현 방식에서, 제1 측면, 또는 제1 측면의 제2 구현 방식, 또는 제3 구현 방식, 또는 제4 구현 방식에 관련하여, 상기 방법은, 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 호스트가, 상기 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계, 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하는 단계 후에, 상기 호스트가, 상기 복수의 VM의 후방 장치의 큐와 상기 호스트의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하여, 상기 복수의 VM의 후방 장치와 상기 네이티브 장치 사이에 복수의 데이터 전송 채널을 형성하는 단계를 더 포함한다.
본 발명의 제2 측면에 따르면, 본 발명이 제공하는 가상 플랫폼 상의 I/O 채널 조정 장치 호스트는, 호스트 상에 동작하고 있는 복수의 가상 머신(VM)의 현재 평균 I/O 처리량(throughput)을 계산하도록 구성되어 있는 계산 모듈, 상기 계산 모듈에 연결되어 있고, 상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제1 문턱 값보다 많은 경우, 상기 복수의 VM의 전방 장치(front devices)와 후방 장치(back devices) 사이의 VM 처리를 위한 작업 스레드(working thread)를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 하도록 구성되고, 또는 상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적은 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 하도록 구성되어 있는 처리 모듈, 및 상기 처리 모듈에 연결되어 있고, 상기 처리 모듈에 의한 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 복수의 VM의 상기 전방 장치의 큐(queue)와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 상기 복수의 VM의 상기 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하여, 상기 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널을 형성하도록 구성되어 있는 제1 조정 모듈을 포함하고, 상기 제1 문턱 값은 상기 제2 문턱 값보다 크다.
가능한 제1 구현 방식에서, 제1 측면에 관련하여, 상기 장치는, 상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 I/O 처리량의 증가 및 CPU 이용의 증가를 비교하도록 구성되어 있는 결정 모듈을 더 포함하고, 상기 처리 모듈은, 상기 I/O 처리량의 증가가 CPU 이용의 증가보다 큰 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 상기 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 되도록 추가적으로 구성되어 있다.
가능한 제2 구현 방식에서, 제1 측면에 관련하여, 상기 장치는 상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하도록 구성되어 있는 결정 모듈을 더 포함하고, 상기 처리 모듈은, 상기 결정 모듈이 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않는 것으로 결정하면, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 상기 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 되도록 추가적으로 구성되어 있다.
가능한 제3 구현 방식에서, 제1 측면, 또는 제1 측면의 제1 구현 방식, 또는 제2 구현 방식에 관련하여, 상기 장치의 상기 제1 조정 모듈은 구체적으로, 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 작은 경우, 각 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑하도록 구성되어 있거나, 또는 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 많거나 같은 경우, 독점적(exclusive) 작업 스레드를 VM의 전방 장치의 큐 및 후방 장치의 큐에 맵핑하고, 적어도 두 개의 VM의 전방 장치 및 후방 장치이며 상기 독점적 작업 스레드에 대응하지 않는 공유(shared) 작업 스레드를 큐에 맵핑하도록 구성되어 있고, 상기 VM 처리를 위한 작업 스레드는 상기 독점적 작업 스레드 및 상기 공유 작업 스레드를 포함한다.
가능한 제4 구현 방식에서,제1 측면, 또는 제1 측면의 제1 구현 방식, 또는 제2 구현 방식, 또는 제3 구현 방식에 관련하여, 상기 장치는, 상기 복수의 VM의 후방 장치의 큐와 상기 호스트의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하여, 상기 복수의 VM의 후방 장치와 상기 네이티브 장치 사이에 복수의 데이터 전송 채널을 형성하도록 구성되어 있는 제2 조정 모듈을 더 포함한다.
본 발명의 제3 측면에 따르면, 본 발명이 제공하는 호스트는, 네이티브 장치(Native Device), 상기 네이티브 장치 상에 동작하고 있는 복수의 가상 머신(VM)의 전방 장치(front devices)와 후방 장치(back devices), 상기 복수의 VM의 상기 전방 장치와 상기 후방 장치 사이의 데이터 처리 모듈, 상기 복수의 VM의 상기 후방 장치와 상기 네이티브 장치 사이의 브리지(Brideg)를 포함하는 호스트(HOST)에 있어서, 상기 데이터 처리 모듈은, 복수의 가상 머신의 현재 평균 I/O 처리량(throughput)을 계산하고, 상기 현재 평균 I/O 처리량이 제1 문턱 값보다 많은 경우, 상기 복수의 VM의 상기 전방 장치와 상기 후방 장치 사이의 VM 처리를 위한 작업 스레드(working thread)를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 하거나, 또는 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적은 경우, 상기 복수의 VM의 상기 전방 장치와 상기 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 하고, 그리고 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 복수의 VM의 전방 장치의 큐(queue)와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하여, 상기 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널을 형성하도록 구성되어 있고, 상기 제1 문턱 값은 상기 제2 문턱 값보다 크다.
가능한 제1 구현 방식에서,제3 측면에 관련하여, 상기 데이터 처리 모듈은, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 I/O 처리량의 증가 및 CPU 이용의 증가를 비교하고, 그리고 상기 I/O 처리량의 증가가 상기 CPU 이용의 증가보다 많으면, 상기 복수의 VM의 상기 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키도록 추가적으로 구성되어, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 되도록 한다.
가능한 제2 구현 방식에서,제3 측면에 관련하여, 상기 데이터 처리 모듈은, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하고, 그리고 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않으면, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키도록 추가적으로 구성되어, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 상기 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 되도록 한다.
본 발명의 실시례에서, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 증가 또는 감소 여부는 복수의 VM의 현재 평균 I/O 처리량에 따라 결정되는 것을 알 수 있다. 복수의 VM의 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, VM 처리를 위한 작업 스레드가 증가, 즉 I/O 채널 자원이 증가되어, I/O 채널의 데이터 전송 능력을 향상시키고, 복수의 VM의 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, VM 처리를 위한 작업 스레드가 감소, 즉 I/O 채널 자원이 감소하여, I/O 채널 자원의 낭비를 방지한다.
또한, HOST가 복수 VM의 후방 장치의 큐(queue) 사이 및 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정함으로써, 복수 VM의 후방 장치와 네이티브 장치(Native Device) 사이의 복수 데이터 전송 채널을 형성한다. 이렇게 함으로써 복수 VM의 전방 장치와 HOST의 네이티브 장치(Native Device)의 사이의 I/O 채널을 획득하여, 복수 VM의 전방 장치와 HOST의 네이티브 장치(Native Device)의 사이의 데이터 전송 능력을 향상시킨다.
본 발명 또는 종래 기술의 기술적 해법을 더 자세하게 설명하기 위하여, 이하 본 발명의 실시례 또는 종래 기술을 설명하기 위하여 필요한 첨부된 도면을 간단히 소개한다. 이하 첨부된 도면은 본 발명의 실시례를 나타내며, 통상의 기술자라면 창의적인 노력 없이도 첨부된 도면으로부터 기타 다른 도면을 이끌어 낼 수 있을 것이다.
도 1은 종래 기술의 가상 플랫폼 상의 단일 복수-I/O 채널 기술의 구조도이다;
도 2는 본 발명의 실시례에 따른 가상 플랫폼 상의 I/O 채널 조정 방법의 순서도이다;
도 3은 본 발명에 따른 가상 플랫폼 상의 복수의 VM의 전방 장치와 후방 장치 사이의 I/O의 작업 모드가 공유 모드인 경우의 구조도이다;
도 4는 본 발명에 따른 가상 플랫폼 상의 복수의 VM의 전방 장치와 후방 장치 사이의 I/O의 작업 모드가 하이브리드 모드인 경우의 구조도이다;
도 5는 본 발명의 실시례에 따른 가상 플랫폼 상의 I/O 채널 조정 장치의 구조도이다;
도 6은 본 발명의 실시례에 따른 가상 플랫폼 상의 I/O 채널 조정 장치의 구조도이다;
도 7은 본 발명의 실시례에 따른 호스트(HOST)의 구조도이다.
본 발명의 목적, 기술적 해법 및 효과를 더욱 이해할 수 있게 하기 위하여, 이하 본 발명의 실시례의 첨부된 도면을 참조하여 본 발명의 실시례의 기술적 해법을 명확하고 완전하게 설명한다. 설명된 실시례는 본 발명의 모든 실시례이기 보다는 일부일 뿐이다. 본 발명의 실시례에 기초하여 통상의 기술자가 창의적인 노력 없이 획득할 수 있는 모든 다른 실시례는 본 발명의 보호 범위에 속하는 것이다.
본 발명의 실시례의 상세한 설명에 소개되는 구성 요소를, 본 발명의 실시례의 이해를 돕기 위하여 여기에서 먼저 소개한다.
호스트(HOST): 관리 층으로 기능하며 하드웨어 자원을 할당하고 관리하는데 사용됨; 가상 머신을 위한, 가상 하드웨어 플랫폼 상에서 동작하는 모든 가상 머신을 위한 다양한 하드웨어 자원을 제공하는 가상 하드웨어 플랫폼, 예를 들면, 가상 처리 장치(예를 들면, VCPU), 가상 메모리, 가상 자기 디스크, 가상 네트워크 어댑터 등을 제공한다. 가상 자기 디스크는 HOST의 논리 블록 장치 또는 파일에 대응할 수 있다. 가상 머신은, 하나 이상의 가상 머신이 동작하는 HOST가 준비한 가상 하드웨어 플랫폼 상에서 동작한다.
가상 머신(VM): 가상 머신 소프트웨어를 사용함으로써 물리적 컴퓨터 상의 하나 이상의 가상 컴퓨터를 시뮬레이션하고, 운영 시스템 및 응용 프로그램이 가상 머신에 설치될 수 있고, 가상 머신은 네트워크 자원에 액세스할 수 있다. 가상 머신 상에서 동작하는 애플리케이션 프로그램에 대해, 가상 머신은 실제 컴퓨터처럼 동작한다.
데이터 처리 모듈: 본 발명에서, 데이터 처리 모듈은 VM의 전방 장치와 후방 장치 사이에 도입(introduce)되고, VM의 전방 장치와 후방 장치 사이의 데이터 전송을 처리하도록 구성되어 잇고, 작업 스레드를 사용하여 VM의 전방 장치와 후방 장치의 큐의 데이터를 처리, 즉, 처리 장치가 데이터 처리 모듈을 실현하는 특별한 기능을 가진 소프트웨어 코드 명령어를 읽는다.
네이티브 장치(Native Device): 가상 환경이 작동하는 하드웨어 플랫폼. 네이티브 장치는, 예를 들면 처리 장치를 포함할 수 있는 특정 계산 노드(예를 들면, CPU)의 네이티브 장치, 메모리와 같은 복수 유형의 하드웨어를 포함할 수 있고, 네트워크 어댑터 및 메모리와 같은 고속/저속 입/출력(I/O, Input/Output) 장치를 더 포함할 수 있다.
브리지(Bridge): VM의 후방 장치와 호스트(HOST)의 네이티브 장치(Native Device) 사이의 네트워크 연결을 구현하고 데이터 프레임을 전송하기 위한, VM의 후방 장치와 호스트(HOST)의 네이티브 장치(Native Device) 사이의 소프트웨어 또는 네트워크 장치.
도 2는 본 발명의 실시례에 따른 가상 플랫폼 상의 I/O 채널 조정 방법의 처리 방법을 나타낸 것이다. 처리 방법은 특히 이하의 단계를 포함한다.
S201. 호스트(HOST)가 HOST 상에서 동작하는 복수의 가상 머신(VM)의 현재 평균 I/O 처리량을 계산한다.
특히, HOST는 HOST 상에서 동작하는 복수의 VM의 현재 전체 I/O 처리량을 먼저 계산하고, 전체 I/O 처리량을 HOST 상에서 동작하는 VM의 개수로 나누어 복수의 VM의 현재 평균 I/O 처리량을 획득한다.
S202. HOST는 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키거나, 또는 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시킨다.
VM 처리를 위한 작업 스레드는 복수의 VM의 전방 장치와 후방 장치 사이에서 증가되어, 처리량이 증가된 후의 복수의 VM의 평균 I/O 처리량이 제1 문턱 값보다 크거나; 또는 VM 처리를 위한 작업 스레드는 복수의 VM의 전방 장치와 후방 장치 사이에서 감소되어, 처리량이 감소된 후의 복수의 VM의 평균 I/O 처리량이 제2 문턱 값보다 크다. 제1 문턱 값은 제2 문턱 값보다 크고, 제1 문턱 값은 복수의 VM의 평균 I/O 처리량의 상한 문턱 값을 나타내는 데 사용되고, 제2 문턱 값은 복수의 VM의 평균 I/O 처리량의 하한 문턱 값을 나타내는 데 사용된다. 즉, 제1 문턱 값은 VM에 의해 생성된 I/O 처리량의 상한 문턱 값, 제2 문턱 값은 VM에 의해 생성된 I/O 처리량의 하한 문턱 값을 나타낸다.
또한, 만약 복수의 VM의 현재 평균 I/O 처리량이 제1 문턱 값보다 크면, HOST가 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 단계 전에, 상기 방법은 이하를 더 포함할 수 있다.
HOST가 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 것으로부터 기인하는 I/O 처리량의 증가와 CPU 이용의 증가를 비교한다; 만약 I/O 처리량의 증가가 CPU 이용의 증가보다 크면, HOST가 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시킨다.
CPU 이용의 증가는 VM 처리를 위한 작업 스레드를 증가시키지 않는 것에 비하여 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 CPU 이용 증가이고, CPU 이용의 증가된 양 및/또는 CPU 이용 증가율로 표현될 수 있다; I/O 처리량의 증가는 VM 처리를 위한 작업 스레드를 증가시키지 않는 것에 비하여 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 I/O 처리량 증가이고, I/O 처리량의 증가된 양 및/또는 CPU 이용 증가율로 표현될 수 있다. 본 발명은 CPU 이용의 증가 및 I/O 처리량의 증가를 어떻게 비교하는지에 대해 제한하고 있지 않고, 두 개의 측정 방법이 예를 들어 제공되었다는 것이 이해되어야 할 것이다. 만약 I/O 처리량의 증가율이 CPU 이용의 증가된 양보다 크거나, I/O 처리량의 증가율이 CPU 이용의 증가율보다 크면, VM 처리를 위한 작업 스레드가 증가될 필요가 있다고 판단된다.
또한, 만약 현재 평균 I/O 처리량이 제2 문턱 값보다 작으면, HOST가 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시키는 단계 전에, 상기 방법은 이하를 더 포함할 수 있다.
HOST가 복수의 VM의 전방 장치와 후방 장치 사이의 감소된 작업 스레드에 기인하는 CPU 이용 감소가, 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정한다; 만약 복수의 VM의 전방 장치와 후방 장치 사이의 감소된 작업 스레드에 기인하는 CPU 이용 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않으면, HOST가 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 단계를 실행한다. 즉, 만약 복수의 VM의 전방 장치와 후방 장치 사이의 감소된 작업 스레드에 기인하는 CPU 이용 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되면, 작업 스레드는 감소되지 않는다.
선택적으로, 복수의 VM을 위하여 우선 순위가 세팅될 수 있고, 높은 우선 순위의 VM은 작업 스레드의 독점적인 점유를 유지하고, 전용 I/O 채널을 가지며, 높은 우선 순위의 VM에 의해 독점적으로 점유된 I/O 채널 자원은 호스트(HOST)의 전반적인 I/O 부하에 관계 없이 영향을 받지 않는다; 동일한 우선 순위의 VM에 대해, 상술한 작업 스레드 증가 또는 감소 방법이 처리를 위해 채택될 수 있다.
I/O 채널 자원은 VM 처리를 위한 작업 스레드 및 VM의 전방 장치 및 후방 장치의 큐를 포함한다는 것이 이해되어야 할 것이다.
S203. 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, HOST는 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정한다.
맵핑 관계는 이하를 포함한다. 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계, 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계. HOST는 맵핑 관계를 각각 조정하여, 복수 데이터 전송 채널이 복수의 VM의 후방 장치와 복수의 VM의 전방 장치 사이에 형성된다.
특히, HOST가 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 조정하는 것은 이하를 포함한다.
증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 HOST 상에서 동작하는 VM의 개수보다 적은 경우, HOST는 각 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑하거나, 또는 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 HOST 상에서 동작하는 VM의 개수보다 많거나 같은 경우, HOST는 독점적 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑하고, 적어도 두 개의 VM의 전방 장치 및 후방 장치이며 독점적 작업 스레드에 대응하지 않는 공유 작업 스레드를 큐에 맵핑하고, VM 처리를 위한 작업 스레드는 독점적 작업 스레드 및 공유 작업 스레드를 포함한다. 상술한 조정 모드는 각각 공유 모드 및 하이브리드 모드에 대응하며, 공유 및 하이브리드 모드는 도 3 및 도 4에 설명되어 있다.
또한, 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, HOST가 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정한 후에, 가상 플랫폼 상의 I/O 채널 조정 방법은 이하를 더 포함한다.
호스트가 복수의 VM의 후방 장치의 큐와 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하여, 복수의 VM의 후방 장치와 HOST의 네이티브 장치 사이에 복수의 데이터 전송 채널이 형성된다.
특히, 종래 기술에서, 네이티브 장치는 복수의 큐를 포함할 수 있고, 상이한 큐를 사용하여 데이터를 전송하기 위하여, VM의 후방 장치의 데이터는 네이티브 장치에 액세스할 때 큐를 선택한다. 이 기술은 네이티브 장치의 하드웨어 드라이버에 의해 구현될 수 있다. 본 발명의 VM의 후방 장치가 복수의 큐를 가진다고 가정하면, VM의 후방 장치의 복수의 큐는 네이티브 장치가 VM의 후방 장치로 브리지(Bridge)를 통해 데이터를 송신하는 경우 선택되어, VM의 후방 장치와 네이티브 장치 사이에 복수의 데이터 전송 채널이 형성될 수 있다. 따라서, 복수의 VM의 후방 장치의 큐와 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하는 것은, 실제로 네이티브 장치가 브리지(Bridge)를 통해 VM의 후방 장치로 데이터를 송신하는 경우 VM의 후방 장치의 큐를 어떻게 선택하느냐이다.
VM의 후방 장치의 큐를 어떻게 선택하느냐는, 네이티브 장치의 큐가 VM의 후방 장치의 큐가 송신한 데이터를 수신하는 경우, 큐 사이의 맵핑 관계에 따라, VM의 후방 장치의 큐가 역으로 선택되므로, VM의 후방 장치의 큐와 네이티브 장치의 큐 사이의 데이터 전송을 위한 채널이 일정하다; 또는 네이티브 장치가 데이터 흐름의 속성(예를 들면, 또 다른 속성, 또는 동일한 소스단으로부터)에 따라 VM의 후방 장치의 상이한 큐를 재선택한다. 본 발명은 상술한 선택 방법을 사용하여 복수의 VM의 후방 장치의 큐와 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정 한다.
복수의 VM의 후방 장치의 큐와 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정함으로써 복수의 데이터 전송 채널이 복수의 VM의 후방 장치와 네이티브 장치(Native Device) 사이에 형성되므로, 복수의 I/O 채널은 복수의 VM의 후방 장치와 HOST의 네이티브 장치(Native Device) 사이에 구현되어, 복수의 VM과 HOST의 네이티브 장치(Native Device) 사이의 데이터 전송능력을 향상시킨다.
본 발명의 실시례로부터, HOST가 복수의 VM의 현재 평균 I/O 처리량에 따라 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가 또는 감소시키는지 여부를 결정한다는 것을 알 수 있다; 복수의 VM의 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, VM 처리를 위한 작업 스레드를 증가, 즉 I/O 채널 자원을 증가시켜 I/O 채널의 데이터 전송 능력을 향상시킨다; 복수의 VM의 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, VM 처리를 위한 작업 스레드를 감소, 즉 I/O 채널 자원을 감소시켜 I/O 채널 자원의 낭비를 피한다.
현재 평균 I/O 처리량에 따른 증가 또는 감소 후의 I/O 채널 자원의 제한, 특히 I/O 채널 자원의 작업 스레드의 제한을 고려하면, 본 발명은 I/O 채널 자원의 작업 스레드의 개수 및 호스트(HOST) 상에서 동작하는 VM의 개수에 따라 두 개의 I/O 모드, 즉 공유 모드 및 하이브리드 모드를 설정하고, 두 개의 모드는 서로 스위칭 될 수 있고, 특정 조건이 만족되는 경우 하나의 작업 모드가 다른 작업 모드로 스위칭 될 수 있다.
공유 모드에서, VM 처리를 위한 작업 스레드의 개수가 호스트(HOST) 상에서 동작하는 VM의 개수보다 적은 경우, HOST는 복수의 VM의 전방 장치와 후방 장치 사이의 I/O 작업 모드를 공유 모드로 조정, 즉 데이터 처리 모듈의 작업 스레드가 공유 모드를 채택하여 복수의 VM의 전방 장치 및 후방 장치의 큐의 데이터를 처리하고, 특히, 데이터 처리 모듈의 작업 스레드는 각각 HOST 상에서 동작하는 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치에 대응한다.
도 3은 본 발명에 따른 가상 플랫폼 상의 복수의 VM의 전방 장치와 후방 장치 사이의 I/O의 작업 모드가 공유 모드인 경우의 구조도이고, 도 3에 도시된 바와 같이, 호스트(HOST) 상에서 동작하는 VM은 도 3에서 각각 VM1, VM2 및 VM3이고, 데이터 처리 모듈의 작업 스레드는 각각 작업 스레드 1 및 작업 스레드 2이며, 작업 스레드 1은 VM1, VM2 및 VM3의 전방 장치 및 후방 장치의 큐 1을 각각 처리하고, 작업 스레드 2는 VM1, VM2 및 VM3의 전방 장치 및 후방 장치의 큐 2를 각각 처리한다.
하이브리드 모드에서, VM 처리를 위한 작업 스레드의 개수가 호스트(HOST) 상에서 동작하는 VM의 개수보다 많거나 같은 경우, HOST는 복수의 VM의 전방 장치와 후방 장치 사이의 I/O 작업 모드를 하이브리드 모드로 조정, 즉 데이터 처리 모듈의 작업 스레드가 하이브리드 모드를 채택하여 복수의 VM의 전방 장치 및 후방 장치의 큐의 데이터를 처리하고, 특히, 데이터 처리 모듈의 작업 스레드는 두 개의 유형으로 분류될 수 있다: 독점적 작업 스레드 및 공유 작업 스레드. 독점 작업 스레드는 VM의 전방 장치의 큐 및 VM의 후방 장치의 큐의 데이터를 각각 처리하는데 사용되고, 공유 작업 스레드는 독점적 작업 스레드에 의해 처리되지 않는 적어도 두 개의 VM의 전방 장치 및 후방 장치의 큐의 데이터를 처리하는데 사용된다.
도 4는 본 발명에 따른 가상 플랫폼 상의 복수의 VM의 전방 장치와 후방 장치 사이의 I/O의 작업 모드가 하이브리드 모드인 경우의 구조도이고, 도 4에 도시된 바와 같이, 호스트(HOST) 상에서 동작하는 VM은 각각 VM1, VM2 및 VM3이고, 데이터 처리 모듈에는 독점적 작업 스레드 1, 독점적 작업 스레드 2, 독점적 작업 스레드 3 및 공유 작업 스레드 1을 포함하는 4개의 작업 스레드가 있다. 독점적 작업 스레드 1은 VM1의 전방 장치 및 후방 장치의 큐 1의 데이터를 각각 처리하고, 독점적 작업 스레드 2는 VM2의 전방 장치 및 후방 장치의 큐 1의 데이터를 각각 처리하고, 독점적 작업 스레드 3은 VM3의 전방 장치 및 후방 장치의 큐 1의 데이터를 각각 처리하고, 공유 작업 스레드 1은 VM1, VM2 및 VM3의 각 VM의 전방 장치 및 후방 장치의 큐 2의 데이터를 처리한다. 도 4는 공유 작업 스레드가 적어도 두 개의 VM의 각 VM의 전방 장치 및 후방 장치의 큐의 데이터를 처리하는 시나리오만를 도시하고 있다. 공유 작업 스레드는 또 다른 시나리오에서느 복수의 큐의 데이터를 더 처리할 수 있고, 본 발명에서는 한정되지 않는다.
또한, 도 3 및 도 4로부터, 복수의 VM의 전방 장치와 후방 장치 사이의 복수의 I/O 채널을 형성하는 것에 더하여, HOST가 복수의 VM의 후방 장치의 큐와 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정함으로써 복수의 VM의 후방 장치와 네이티브 장치(Native Device) 사이의 복수의 데이터 전송 채널을 형성할 수도 있다. 이렇게 함으로써, 복수의 VM의 전방 장치와 HOST의 네이티브 장치(Native Device) 사이의 복수의 I/O 채널이 달성되고, 복수의 VM의 전방 장치와 HOST의 네이티브 장치(Native Device) 사이의 데이터 전송 능력이 향상된다.
가상 플랫폼 상의 I/O 채널 조정 방법에 관해, 본 발명의 후술하는 실시례는 가상 플랫폼 상의 I/O 채널 조정 장치의 구조를 제공한다.
도 5는 본 발명의 실시례에 따른 가상 플랫폼 상의 I/O 채널 조정 장치(500)의 구조도이다; 조정 장치(500)은 특히 이하를 포함한다.
HOST 상에서 동작하는 복수의 가상 머신(VM)의 현재 평균 I/O 처리량을 계산하도록 구성되어 있는 계산 모듈(501);
계산 모듈(501)에 연결되어 있고, 계산 모듈(501)이 계산한 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키도록 구성되어, 작업 스레드가 증가된 후 복수의 VM의 평균 I/O 처리량이 제1 문턱 값보다 작게 되도록 하거나; 또는 계산 모듈(501)이 계산한 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키도록 구성되어, 작업 스레드가 감소된 후 복수의 VM의 평균 I/O 처리량이 제2 문턱 값보다 크게 되도록 하는, 처리 모듈(502); 및
처리 모듈(502)에 연결되어 있고, 처리 모듈(502)에 의해 증가되거나 감소된 후의 VM 처리를 위한 작업 스레드에 따라, 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 별도로 조정하도록 구성되어, 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널이 형성되도록 하는 제1 조정 모듈(503).
선택적으로, 조정 장치(500)는 이하를 더 포함한다.
계산 모듈(501)이 계산한 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 증가에 기인한 I/O 처리량 증가와 CPU 이용의 증가를 비교하도록 구성되어 있는 결정 모듈(504);
처리 모듈(502)은 만약 결정 모듈(504)이 I/O 처리량의 증가가 CPU 이용의 증가보다 크다고 결정하면, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키도록 추가적으로 구성되어, 복수의 VM의 평균 I/O 처리량이 작업 스레드가 증가된 후에 제1 문턱 값보다 작아지게 한다.
선택적으로, 조정 장치(500)는 이하를 더 포함한다.
계산 모듈(501)이 계산한 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 감소에 기인한 CPU 이용의 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하는 결정 모듈(504);
처리 모듈(502)은 만약 결정 모듈(504)이 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 감소에 기인한 CPU 이용의 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않으면, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시키도록 추가적으로 구성되어, 복수의 VM의 평균 I/O 처리량이 작업 스레드가 감소된 후에 제2 문턱 값보다 커지게 한다.
또한, 제1 조정 모듈(503)은 특히,
증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 HOST 상에서 동작하는 VM의 개수보다 작은 경우, 각 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑시키거나, 또는 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 HOST 상에서 동작하고 있는 VM의 개수보다 크거나 같은 경우, 독점적 작업 스레드를 VM의 전방 장치의 큐 및 VM의 후방 장치의 큐에 맵핑, 공유 작업 스레드를 큐에 맵핑, 적어도 두 개의 VM의 전방 장치 및 후방 장치이며 독점적 작업 스레드에 대응하지 않는 공유 작업 스레드를 큐에 맵핑하도록 추가적으로 구성되며, VM 처리를 위한 작업 스레드는 독점적 작업 스레드 및 공유 작업 스레드를 포함한다.
또한, 조정 장치(500)는 복수의 VM의 후방 장치의 큐와 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하도록 구성되어, 복수의 VM의 후방 장치와 네이티브 장치 사이에 데이터 전송 채널이 형성되도록 하는 제2 조정 모듈(505)을 더 포함한다.
제2 조정 모듈(505)이 복수의 VM의 후방 장치와 네이티브 장치 사이에 데이터 전송 채널을 형성하므로, 복수의 I/O 채널이 복수의 VM의 후방 장치와 HOST의 네이티브 장치(Native Device) 사이에 데이터 전송 채널이 형성되고, 복수의 VM과 HOST의 네이티브 장치 사이의 데이터 전송 능력이 향상된다.
상술한 실시례로부터, 가상 플랫폼 상의 I/O 채널 조정 장치가 복수의 VM의 현재 평균 I/O 처리량에 따라 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 증가 또는 감소를 결정한다는 것을 알 수 있다; 복수의 VM의 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, VM 처리를 위한 작업 스레드를 증가, 즉 I/O 채널 자원을 증가시켜 I/O 채널의 데이터 전송 능력을 향상시킨다; 복수의 VM의 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, VM 처리를 위한 작업 스레드를 감소, 즉 I/O 채널 자원을 감소시켜 I/O 채널 자원의 낭비를 피한다.
도 6은 본 발명의 실시례에 따른 가상 플랫폼 상의 I/O 채널 조정 장치(600)의 구조도이고, 조정 장치(600)는 이하를 포함한다: 예를 들면 CPU와 같은 적어도 하나의 처리 장치(601), 적어도 하나의 네트워크 인터페이스(604) 또는 또 다른 사용자 인터페이스(603), 메모리(605) 및 적어도 하나의 통신 버스(602). 통신 버스(602)는 구성 요소 간의 통신 및 연결을 구현하도록 구성되어 있다. 사용자 인터페이스(603)는 선택적으로 디스플레이, 키보드 또는 클릭 장치(예를 들면, 마우스, 트랙볼(trackball), 터치 패널 또는 터치 표시 스크린)를 포함하는 HOST(600)에 포함되어 있다. 메모리(605)는 고속 RAM 메모리를 포함하고, 예를 들면 적어도 하나의 자기 디스크 메모리와 같은 비휘발성 메모리(non-volatile memory)를 또한 포함할 수 있다. 메모리(605)는 선택적으로 처리 장치(601)로부터 멀리 떨어져 있는 적어도 하나의 메모리 장치를 포함할 수 있다. 몇몇 구현 예에서는, 메모리(605)는 하드웨어에 기초한 처리 과제 및 다양한 기본 서비스를 구현하기 위해 복수의 프로그램 및 운영 시스템(606) 을 더 포함할 수 있다.
처리 장치(601)는 특히,
HOST 상에서 동작하는 복수의 가상 머신(VM)의 현재 평균 I/O 처리량을 계산하도록 구성되어 있고;
현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키도록 구성되어, 작업 스레드가 증가된 후 복수의 VM의 평균 I/O 처리량이 제1 문턱 값보다 작게 되도록 하거나; 또는 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키도록 구성되어, 작업 스레드가 감소된 후 복수의 VM의 평균 I/O 처리량이 제2 문턱 값보다 크게 되도록 하고;
증가되거나 감소된 후의 VM 처리를 위한 작업 스레드에 따라, 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 별도로 조정하도록 구성되어, 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널이 형성되도록 한다.
또한, 만약 현재 평균 I/O 처리량이 제1 문턱 값보다 크면, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 단계를 실행하기 전에, 처리 장치(601)는 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 증가에 기인한 I/O 처리량 증가와 CPU 이용의 증가를 비교하도록 추가적으로 구성되어; 만약 I/O 처리량의 증가가 CPU 이용의 증가보다 크다고 결정하면, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 단계를 실행한다.
또한, 만약 현재 평균 I/O 처리량이 제2 문턱 값보다 작으면, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 단계를 실행하기 전에, 처리 장치(601)는 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 감소에 기인한 CPU 이용의 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하도록 추가적으로 구성되어; 만약 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 감소에 기인한 CPU 이용의 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않는다고 결정되면, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 단계를 실행하고; 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 감소에 기인한 CPU 이용의 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않으면, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 단계를 실행한다.
또한, 처리 장치(601)는 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라 복수의 VM의 전방 장치와 후방 장치의 큐 사이의 맵핑 관계 및 VM 처리를 위한 작업 스레드를 각각 별도로 조정하도록 구성되어 있는 것은, 이하를 포함한다.
증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 HOST 상에서 동작하는 VM의 개수보다 작은 경우, 각 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑시키거나, 또는 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 HOST 상에서 동작하고 있는 VM의 개수보다 크거나 같은 경우, 독점적 작업 스레드를 VM의 전방 장치의 큐 및 후방 장치의 큐에 맵핑, 적어도 두 개의 VM의 전방 장치 및 후방 장치이며 독점적 작업 스레드에 대응하지 않는 공유 작업 스레드를 큐에 맵핑하고, VM 처리를 위한 작업 스레드는 독점적 작업 스레드 및 공유 작업 스레드를 포함한다.
또한, 처리 장치(601)는 복수의 VM의 후방 장치의 큐와 HOST의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하도록 구성되어, 복수의 VM의 후방 장치와 네이티브 장치 사이에 데이터 전송 채널이 형성되도록 한다.
상술한 실시례로부터, 가상 플랫폼 상의 I/O 채널 조정 장치가 복수의 VM의 현재 평균 I/O 처리량에 따라 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 증가 또는 감소를 결정한다는 것을 알 수 있다; 복수의 VM의 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, VM 처리를 위한 작업 스레드를 증가, 즉 I/O 채널 자원을 증가시켜 I/O 채널의 데이터 전송 능력을 향상시킨다; 복수의 VM의 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, VM 처리를 위한 작업 스레드를 감소, 즉 I/O 채널 자원을 감소시켜 I/O 채널 자원의 낭비를 피한다.
본 발명의 실시례가 개시하는 방법은 처리 장치(601)에 적용될 수 있다, 바꾸어 말하면, 처리 장치(601)에 의해 구현될 수 있다는 것이 이해되어야 할 것이다. 처리 장치(601)는 집적 회로 칩일 수 있고, 명령 및 데이터 실행 능력, 신호 처리 능력을 가지고 있다. 구현 절차에서, 처리 장치(601) 내의 하드웨어 집적 논리 회로 또는 소프트웨어의 형태로의 명령을 사용하여 본 방법의 단계가 구현될 수 있다. 처리 장치는 일반적인 목적의 처리 장치(CPU), 디지털 신호 처리 장치(DSP), 주문형 집적 회로(Application-Specific Integrated Circuit: ASIC), 필드 프로그램 가능 게이트 어레이(Field Programmable Gate Array: FPGA), 또 다른 프로그램 가능 논리 요소, 이산형 게이트 또는 트랜지스터 논리 장치 및 이산형 하드웨어 요소일 수 있고, 본 발명의 실시례가 개시한 모든 방법, 단계 및 논리 블록도를 구현할 수 있다. 일반적인 목적의 처리 장치는 마이크로 처리 장치, 또는 임의의 종래의 처리 장치 등 일수 있다. 본 발명의 실시례가 개시한 방법의 단계는 하드웨어 처리 장치에 의해 직접 구현되거나, 또는 처리 장치 내의 하드웨어 및 소프트웨어 모듈을 조합함으로써 구현될 수 있다. 소프트웨어 모듈은 RAM, 플래시 메모리, ROM, 프로그램 가능 ROM, 전기적으로 삭제 가능한 프로그램 가능 메모리 및 저항과 같은 필드의 발달된(mature) 저장 장치에 위치할 수 있다. 저장 장치는 처리 장치(605)에 위치하고, 처리 장치는 메모리(605)의 정보를 읽고, 처리 장치의 하드웨어에 관한 상술한 단계를 구현한다.
도 7은 본 발명의 실시례에 따른 호스트(HOST 700)의 구조를 도시한 것이고, HOST는 이하를 포함한다: 네이티브 장치(Native Device 705), 네이티브 장치(Native Device 705) 상에서 동작하고 있는 복수의 가상 머신(VM)의 전방 장치 및 후방 장치, 및 복수의 VM의 전방 장치와 후방 장치 사이에 위치하는 데이터 처리 모듈(702), 및 복수의 VM의 후방 장치와 네이티브 장치(705) 사이에 위치하는 브리지(Bridge 704).
복수의 VM의 전방 장치는 VM1의 전방 장치(7011) 및 VM2의 전방 장치(7012)를 포함한다; 복수의 VM의 후방 장치는 VM1의 후방 장치(7031) 및 VM2의 후방 장치(7032)를 포함한다; 브리지(Bridge 704)는 VM의 후방 장치와 HOST의 네이티브 장치(Native Device) 사이에 위치한 소프트웨어 또는 네트워크 장치로, VM의 후방 장치와 호스트(HOST)의 네이티브 장치(Native Device) 사이의 네트워크 연결을 구현하고, 데이터 프레임을 전달한다; 네이티브 장치(Native Device 705)는 가상 환경이 동작중인 하드웨어 플랫폼으로, 예를 들면 계산 노드(예를 들면, CPU)의 네이티브 장치, 메모리와 같은 복수의 하드웨어를 포함할 수 있고, 네트워크 어댑터 및 메모리와 같은 고속/저속 입/출력(I/O, Input/Output) 장치를 더 포함할 수 있다.
데이터 처리 장치(702)는,
복수의 VM의 현재 평균 I/O 처리량을 계산하도록 구성되어 있고;
현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키도록 구성되어, 작업 스레드가 증가된 후 복수의 VM의 평균 I/O 처리량이 제1 문턱 값보다 크게 되도록 하거나; 또는 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키도록 구성되어, 작업 스레드가 감소된 후 복수의 VM의 평균 I/O 처리량이 제2 문턱 값보다 크게 되도록 하고;
증가되거나 감소된 후의 VM 처리를 위한 작업 스레드에 따라, 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 별도로 조정하도록 구성되어, 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널이 형성되도록 한다.
선택적으로, 데이터 처리 모듈(702)은,
복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 증가에 기인한 I/O 처리량 증가와 CPU 이용의 증가를 비교하도록 추가적으로 구성되어; 만약 I/O 처리량의 증가가 CPU 이용의 증가보다 크면, 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시켜, 작업 스레드가 증가된 후의 복수의 VM의 평균 I/O 처리량이 제1 문턱 값보다 작게 된다.
선택적으로, 데이터 처리 모듈(702)은,
복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 감소에 기인한 CPU 이용의 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하도록 추가적으로 구성되어; 만약 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 감소에 기인한 CPU 이용의 감소가 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않는다고 결정되면, 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시켜,작업 스레드가 증가된 후의 복수의 VM의 평균 I/O 처리량이 제2 문턱 값보다 크게 된다.
데이터 처리 모듈(702)가 실시례 1에 개시된 방법을 구현할 수 있다는 것이 이해되어야 할 것이며, 여기에서는 다시 설명되지 않고, 실시례1에 개시된 방법에 한정되는 것으로 해석되어서는 안된다; 데이터 처리 모듈(702)은 일반적으로 소프트웨어에 의해 구현, 즉, 프로세서가 특별한 기능을 가진 소프트웨어 코드 명령어를 해석함으로써 구현된다. 데이터 처리 유닛(702)이 소프트웨어에 의해 구현되는 것은 바람직한 구현 해법일 뿐이며, 통상의 기술자라면 데이터 처리 유닛(702)의 소프트웨어 방법을, 처리 장치(예를 들면 CPU, DSP)와 같은 하드웨어 논리 회로로 구현할 수 있을 것이며, 본 발명에서 한정되지 않는다.
상술한 실시례로부터, 호스트(HOST)가 복수의 VM의 현재 평균 I/O 처리량에 따라 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드의 증가 또는 감소를 결정한다는 것을 알 수 있다; 복수의 VM의 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, VM 처리를 위한 작업 스레드를 증가, 즉 I/O 채널 자원을 증가시켜 I/O 채널의 데이터 전송 능력을 향상시킨다; 복수의 VM의 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, VM 처리를 위한 작업 스레드를 감소, 즉 I/O 채널 자원을 감소시켜 I/O 채널 자원의 낭비를 피한다.
마지막으로, 상술한 실시례는 본 발명의 기술적 해법을 설명하기 위한 의도임이 이해되어야 할 것이다. 본 발명이 상술한 실시례와 관련하여 상세하게 설명되었으나, 통상의 기술자라면 본 발명의 실시례의 기술적 해법의 사상 및 범위를 벗어나지 않고 상술한 실시례에 기재되어 있는 기술적 특징의 변형 또는 동등한 대체물을 만들 수 있다는 것을 이해할 것이다.

Claims (13)

  1. 가상 플랫폼 상의 I/O 채널 조정 방법에 있어서,
    호스트(HOST)가, 상기 호스트 상에 동작하고 있는 복수의 가상 머신(VM)의 현재 평균 I/O 처리량(throughput)을 계산하는 단계;
    상기 현재 평균 I/O 처리량이 제1 문턱 값보다 많은 경우, 상기 호스트가, 상기 복수의 VM의 전방 장치(front devices)와 후방 장치(back devices) 사이의 VM 처리를 위한 작업 스레드(working thread)를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 하는 단계; 또는
    상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적은 경우, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 하는 단계; 및
    증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 호스트가, 상기 복수의 VM의 전방 장치의 큐(queue)와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하여, 상기 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널을 형성하는 단계
    를 포함하고,
    상기 제1 문턱 값은 상기 제2 문턱 값보다 큰, 가상 플랫폼 상의 I/O 채널 조정 방법.
  2. 제1항에 있어서,
    상기 현재 평균 I/O 처리량이 상기 제1 문턱 값보다 많으면, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 단계 전에,
    상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 I/O 처리량의 증가 및 CPU 이용의 증가를 비교하는 단계; 및
    상기 I/O 처리량의 증가가 상기 CPU 이용의 증가보다 많으면, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 단계를 실행하는 단계
    를 더 포함하는 가상 플랫폼 상의 I/O 채널 조정 방법.
  3. 제1항에 있어서,
    상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적으면, 상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시키는 단계 전에,
    상기 호스트가, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하는 단계; 및
    상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않으면, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 단계를 실행하는 단계
    를 더 포함하는 가상 플랫폼 상의 I/O 채널 조정 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 호스트가, 상기 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이, 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하는 단계는,
    상기 호스트가, 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 작은 경우, 각 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑하는 단계; 또는
    상기 호스트가, 상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 많거나 같은 경우, 독점적(exclusive) 작업 스레드를 VM의 전방 장치의 큐 및 후방 장치의 큐에 맵핑하고, 적어도 두 개의 VM의 전방 장치 및 후방 장치이며 상기 독점적 작업 스레드에 대응하지 않는 공유(shared) 작업 스레드를 큐에 맵핑하는 단계
    를 포함하고,
    상기 VM 처리를 위한 작업 스레드는 상기 독점적 작업 스레드 및 상기 공유 작업 스레드를 포함하는, 가상 플랫폼 상의 I/O 채널 조정 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 호스트가, 상기 복수의 VM의 전방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계, 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하는 단계 후에,
    상기 호스트가, 상기 복수의 VM의 후방 장치의 큐와 상기 호스트의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하여, 상기 복수의 VM의 후방 장치와 상기 네이티브 장치 사이에 복수의 데이터 전송 채널을 형성하는 단계
    를 더 포함하는 가상 플랫폼 상의 I/O 채널 조정 방법.
  6. 가상 플랫폼 상의 I/O 채널 조정 장치에 있어서,
    호스트 상에 동작하고 있는 복수의 가상 머신(VM)의 현재 평균 I/O 처리량(throughput)을 계산하도록 구성되어 있는 계산 모듈(501);
    상기 계산 모듈에 연결되어 있고, 상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제1 문턱 값보다 많은 경우, 상기 복수의 VM의 전방 장치(front devices)와 후방 장치(back devices) 사이의 VM 처리를 위한 작업 스레드(working thread)를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 하도록 구성되고; 또는 상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적은 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 하도록 구성되어 있는 처리 모듈; 및
    상기 처리 모듈에 연결되어 있고, 상기 처리 모듈에 의한 증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 복수의 VM의 상기 전방 장치의 큐(queue)와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 상기 복수의 VM의 상기 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하여, 상기 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널을 형성하도록 구성되어 있는 제1 조정 모듈
    을 포함하고,
    상기 제1 문턱 값은 상기 제2 문턱 값보다 큰, 가상 플랫폼 상의 I/O 채널 조정 장치.
  7. 제6항에 있어서,
    상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제1 문턱 값보다 큰 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 I/O 처리량의 증가 및 CPU 이용의 증가를 비교하도록 구성되어 있는 결정 모듈
    을 더 포함하고,
    상기 처리 모듈은, 상기 결정 모듈이 상기 I/O 처리량의 증가가 CPU 이용의 증가보다 크다고 결정한 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 상기 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 되도록 추가적으로 구성되어 있는, 가상 플랫폼 상의 I/O 채널 조정 장치.
  8. 제6항에 있어서,
    상기 계산 모듈이 계산한 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 작은 경우, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하도록 구성되어 있는 결정 모듈
    을 더 포함하고,
    상기 처리 모듈은, 상기 결정 모듈이 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않는 것으로 결정하면, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 상기 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 되도록 추가적으로 구성되어 있는, 가상 플랫폼 상의 I/O 채널 조정 장치.
  9. 제6항 내지 제8항 중 어느 한 항에 있어서,
    상기 제1 조정 모듈은 구체적으로,
    상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 작은 경우, 각 작업 스레드를 각 VM의 전방 장치의 큐 및 각 VM의 후방 장치의 큐에 맵핑하도록 구성되어 있거나; 또는
    상기 증가 또는 감소 후의 VM 처리를 위한 작업 스레드의 개수가 상기 호스트 상에 동작하고 있는 VM의 개수보다 많거나 같은 경우, 독점적(exclusive) 작업 스레드를 VM의 전방 장치의 큐 및 후방 장치의 큐에 맵핑하고, 적어도 두 개의 VM의 전방 장치 및 후방 장치이며 상기 독점적 작업 스레드에 대응하지 않는 공유(shared) 작업 스레드를 큐에 맵핑하도록 구성되어 있고,
    상기 VM 처리를 위한 작업 스레드는 상기 독점적 작업 스레드 및 상기 공유 작업 스레드를 포함하는, 가상 플랫폼 상의 I/O 채널 조정 장치.
  10. 제6항 내지 제9항 중 어느 한 항에 있어서,
    상기 복수의 VM의 후방 장치의 큐와 상기 호스트의 네이티브 장치(Native Device)의 큐 사이의 맵핑 관계를 조정하여, 상기 복수의 VM의 후방 장치와 상기 네이티브 장치 사이에 복수의 데이터 전송 채널을 형성하도록 구성되어 있는 제2 조정 모듈
    을 더 포함하는 가상 플랫폼 상의 I/O 채널 조정 장치.
  11. 네이티브 장치(Native Device), 상기 네이티브 장치 상에 동작하고 있는 복수의 가상 머신(VM)의 전방 장치(front devices)와 후방 장치(back devices), 상기 복수의 VM의 상기 전방 장치와 상기 후방 장치 사이의 데이터 처리 모듈, 상기 복수의 VM의 상기 후방 장치와 상기 네이티브 장치 사이의 브리지(Brideg)를 포함하는 호스트(HOST)에 있어서,
    상기 데이터 처리 모듈은,
    복수의 가상 머신의 현재 평균 I/O 처리량(throughput)을 계산하고;
    상기 현재 평균 I/O 처리량이 제1 문턱 값보다 많은 경우, 상기 복수의 VM의 상기 전방 장치와 상기 후방 장치 사이의 VM 처리를 위한 작업 스레드(working thread)를 증가시켜, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 하거나; 또는 상기 현재 평균 I/O 처리량이 제2 문턱 값보다 적은 경우, 상기 복수의 VM의 상기 전방 장치와 상기 후방 장치 사이의 VM 처리를 위한 작업 스레드를 감소시켜, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 하고; 그리고
    증가 또는 감소 후의 VM 처리를 위한 작업 스레드에 따라, 상기 복수의 VM의 전방 장치의 큐(queue)와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계 및 상기 복수의 VM의 후방 장치의 큐와 VM 처리를 위한 작업 스레드 사이의 맵핑 관계를 각각 조정하여, 상기 복수의 VM의 전방 장치와 후방 장치 사이에 복수의 데이터 전송 채널을 형성하도록 구성되어 있고,
    상기 제1 문턱 값은 상기 제2 문턱 값보다 큰, 호스트.
  12. 제11항에 있어서,
    상기 데이터 처리 모듈은,
    상기 복수의 VM의 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키는 것에 기인한 I/O 처리량의 증가 및 CPU 이용의 증가를 비교하고; 그리고
    상기 결정 모듈이 상기 I/O 처리량의 증가가 상기 CPU 이용의 증가보다 많다고 결정하면, 상기 복수의 VM의 상기 전방 장치와 후방 장치 사이의 VM 처리를 위한 작업 스레드를 증가시키도록 추가적으로 구성되어, 상기 작업 스레드가 증가된 후의 상기 복수의 VM의 평균 I/O 처리량이 상기 제1 문턱 값보다 작게 되도록 하는, 호스트.
  13. 제11항에 있어서,
    상기 데이터 처리 모듈은,
    상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되는지 여부를 결정하고; 그리고
    상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키는 것에 기인한 CPU 이용의 증가가 상기 복수의 VM의 처리량에 대응 불가능에 이르게 되지 않으면, 상기 복수의 VM의 전방 장치와 후방 장치 사이의 작업 스레드를 감소시키도록 추가적으로 구성되어, 상기 작업 스레드가 감소된 후의 상기 복수의 VM의 상기 평균 I/O 처리량이 상기 제2 문턱 값보다 크게 되도록 하는, 호스트.
KR1020137034172A 2013-01-24 2013-08-05 가상 플랫폼 상의 i/o 채널 조정 방법 및 장치 KR101559097B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310027312.7A CN103116517B (zh) 2013-01-24 2013-01-24 虚拟化平台下i/o通道的调整方法和调整装置
CN201310027312.7 2013-01-24
PCT/CN2013/080837 WO2014114072A1 (zh) 2013-01-24 2013-08-05 虚拟化平台下i/o通道的调整方法和调整装置

Publications (2)

Publication Number Publication Date
KR20140119624A true KR20140119624A (ko) 2014-10-10
KR101559097B1 KR101559097B1 (ko) 2015-10-08

Family

ID=48414901

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137034172A KR101559097B1 (ko) 2013-01-24 2013-08-05 가상 플랫폼 상의 i/o 채널 조정 방법 및 장치

Country Status (7)

Country Link
EP (1) EP2772854B1 (ko)
JP (1) JP5923627B2 (ko)
KR (1) KR101559097B1 (ko)
CN (1) CN103116517B (ko)
AU (1) AU2013273688B2 (ko)
RU (1) RU2573733C1 (ko)
WO (1) WO2014114072A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200105133A (ko) * 2019-02-28 2020-09-07 성균관대학교산학협력단 가상화기술에서 뮤텍스 객체를 이용한 소프트웨어 기반 은닉채널 구성 시스템

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100578350B1 (ko) * 2002-08-29 2006-05-11 엘지전자 주식회사 진공청소기의 집진케이스
US8819685B2 (en) 2013-01-24 2014-08-26 Huawei Technologies Co., Ltd. Method and apparatus for adjusting I/O channel on virtual platform
CN103116517B (zh) * 2013-01-24 2016-09-14 华为技术有限公司 虚拟化平台下i/o通道的调整方法和调整装置
WO2015168946A1 (zh) * 2014-05-09 2015-11-12 华为技术有限公司 快速输入输出报文处理方法、装置及系统
WO2016101282A1 (zh) * 2014-12-27 2016-06-30 华为技术有限公司 一种i/o任务处理的方法、设备和系统
TWI648637B (zh) * 2017-11-30 2019-01-21 財團法人工業技術研究院 於平台部署與操作行動作業系統的系統及其方法
CN109240802B (zh) * 2018-09-21 2022-02-18 北京百度网讯科技有限公司 请求处理方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132518A (ja) * 2000-10-25 2002-05-10 Fujitsu Ltd 仮想計算機システムおよび仮想計算機間の入出力装置交換方法
US7788665B2 (en) * 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device
US8443398B2 (en) * 2006-11-01 2013-05-14 Skyfire Labs, Inc. Architecture for delivery of video content responsive to remote interaction
CN101499021A (zh) 2008-01-31 2009-08-05 国际商业机器公司 在多个虚拟机上动态分配资源的方法和装置
US8387059B2 (en) * 2008-07-02 2013-02-26 International Business Machines Corporation Black-box performance control for high-volume throughput-centric systems
US9152464B2 (en) * 2010-09-03 2015-10-06 Ianywhere Solutions, Inc. Adjusting a server multiprogramming level based on collected throughput values
JP2012234425A (ja) * 2011-05-06 2012-11-29 Canon Inc 画像処理装置及び画像処理方法
WO2012103728A1 (zh) * 2011-06-30 2012-08-09 华为技术有限公司 热点域虚拟机cpu调度方法及虚拟机系统
CN102508718B (zh) * 2011-11-22 2015-04-15 杭州华三通信技术有限公司 一种虚拟机负载均衡方法和装置
CN102591702B (zh) * 2011-12-31 2015-04-15 华为技术有限公司 虚拟化处理方法及相关装置和计算机系统
CN103116517B (zh) * 2013-01-24 2016-09-14 华为技术有限公司 虚拟化平台下i/o通道的调整方法和调整装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200105133A (ko) * 2019-02-28 2020-09-07 성균관대학교산학협력단 가상화기술에서 뮤텍스 객체를 이용한 소프트웨어 기반 은닉채널 구성 시스템

Also Published As

Publication number Publication date
AU2013273688B2 (en) 2015-08-06
WO2014114072A1 (zh) 2014-07-31
EP2772854A4 (en) 2014-11-19
AU2013273688A1 (en) 2014-08-07
EP2772854A1 (en) 2014-09-03
KR101559097B1 (ko) 2015-10-08
JP2015513732A (ja) 2015-05-14
JP5923627B2 (ja) 2016-05-24
RU2573733C1 (ru) 2016-01-27
CN103116517B (zh) 2016-09-14
CN103116517A (zh) 2013-05-22
EP2772854B1 (en) 2018-10-24

Similar Documents

Publication Publication Date Title
KR101559097B1 (ko) 가상 플랫폼 상의 i/o 채널 조정 방법 및 장치
US8819685B2 (en) Method and apparatus for adjusting I/O channel on virtual platform
US10552222B2 (en) Task scheduling method and apparatus on heterogeneous multi-core reconfigurable computing platform
US10452605B2 (en) Method and apparatus for task scheduling on heterogeneous multi-core reconfigurable computing platform
US9983899B2 (en) Network resource configuration for a virtual machine
US8782657B2 (en) Dynamic creation and destruction of IO resources based on actual load and resource availability
WO2017143548A1 (zh) 用于应用自动化部署的方法和云管理节点
US9697031B2 (en) Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register
KR102433765B1 (ko) 네트워크 기능 가상화 시스템 상의 컴퓨팅 리소스 관리 장치 및 방법
EP2881860A1 (en) Method for implementing an interrupt between virtual processors, related device, and system
US8949286B2 (en) Dynamic record management for systems utilizing virtual storage access method (VSAM) data sets with a corresponding VSAM control block structure
KR102563165B1 (ko) 메모리 액세스 요청 스케줄링 방법, 장치, 기기 및 저장 매체
US10613606B2 (en) Wireless component state based power management
US20130219386A1 (en) Dynamic allocation of compute resources
CN114900699A (zh) 视频编解码卡虚拟化方法、装置、存储介质及终端
US10990519B2 (en) Multi-tenant cloud elastic garbage collector
US20220318057A1 (en) Resource Management for Preferred Applications
US10877790B2 (en) Information processing apparatus, control method and storage medium
KR20130051076A (ko) 응용프로그램 스케줄링 방법 및 장치
US20170351525A1 (en) Method and Apparatus for Allocating Hardware Acceleration Instruction to Memory Controller
CN106775925B (zh) 一种虚拟机cpu的限额处理方法和装置
CN111158905A (zh) 调整资源的方法和装置
JP2016071886A (ja) スケジューラコンピューティング装置、それを含む分散コンピューティングシステムのデータノード、及びその方法
CN111538559B (zh) 一种虚拟机迁移方法、装置、电子设备及其存储介质
WO2023173961A1 (zh) 一种内存分配方法及相关产品

Legal Events

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

Payment date: 20180920

Year of fee payment: 4