KR101330609B1 - Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process - Google Patents

Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process Download PDF

Info

Publication number
KR101330609B1
KR101330609B1 KR1020120034379A KR20120034379A KR101330609B1 KR 101330609 B1 KR101330609 B1 KR 101330609B1 KR 1020120034379 A KR1020120034379 A KR 1020120034379A KR 20120034379 A KR20120034379 A KR 20120034379A KR 101330609 B1 KR101330609 B1 KR 101330609B1
Authority
KR
South Korea
Prior art keywords
cpu
physical
virtual
virtual cpu
interrupt
Prior art date
Application number
KR1020120034379A
Other languages
Korean (ko)
Other versions
KR20130112180A (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 KR1020120034379A priority Critical patent/KR101330609B1/en
Publication of KR20130112180A publication Critical patent/KR20130112180A/en
Application granted granted Critical
Publication of KR101330609B1 publication Critical patent/KR101330609B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Abstract

본 발명은 모바일 멀티코어 가상화 시스템의 스케줄러에서 가상화 작업 스케줄링을 수행하는 방법에 관한 것으로서, 인터럽트 발생시 해당 인터럽트의 발생 위치 및 종류를 파악하는 단계, 발생된 인터럽트 처리를 위해 실행중이던 가상 CPU를 대기 큐로 이동시키거나 인터럽트 처리를 위한 가상 CPU를 도메인 0의 실행 큐에 삽입하는 단계, 미리 설정된 정책 정보에 기초하여 인터럽트 처리를 위한 가상 CPU를 할당할 물리적 CPU를 선정하는 단계 및 상기 선정된 물리적 CPU의 실행큐에 인터럽트 처리를 위한 가상 CPU를 삽입하여 상기 인터럽트 처리를 위한 가상 CPU가 최우선적으로 처리되도록 하는 단계를 포함하는 것을 특징으로 한다.
본 발명에 따르면, 2개 이상의 코어를 구비한 멀티코어 시스템에서의 인터럽트 처리 시, 멀티코어 시스템의 스케쥴러가 실시간 처리를 보장하고 할당 가능한 물리적 CPU들 중에 최적의 물리적 CPU를 선택하여 가상 CPU를 할당함으로써 기존의 방법보다 효율적으로 작업을 수행할 수 있는 효과가 있다.
The present invention relates to a method of performing a virtualization task scheduling in a scheduler of a mobile multicore virtualization system. The method includes determining a location and a type of a corresponding interrupt when an interrupt occurs, and moving a virtual CPU, which was running for the interrupt processing, to a waiting queue. Or inserting a virtual CPU for interrupt processing into an execution queue of domain 0, selecting a physical CPU to allocate a virtual CPU for interrupt processing based on preset policy information, and executing a queue of the selected physical CPU. And inserting a virtual CPU for interrupt processing into the virtual CPU for interrupt processing.
According to the present invention, when interrupt processing in a multicore system having two or more cores, the scheduler of the multicore system guarantees real-time processing and selects an optimal physical CPU among the assignable physical CPUs to allocate a virtual CPU. There is an effect that can work more efficiently than the existing method.

Description

모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법{Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process}Scheme for Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process
본 발명은 모바일 멀티코어 가상화 시스템에서 실시간 처리를 위한 스케쥴링 방법에 관한 것으로서, 보다 상세하게는 모바일 멀티코어 시스템의 스케쥴러가 특정 물리적 CPU에 대한 가상 CPU의 인터럽트 처리 시 발생된 인터럽트에 대해 최상위 우선 순위를 부여하고, 인터럽트 처리를 위한 가상 CPU를 물리적 CPU에 할당할 경우 최적의 물리적 CPU를 선택함으로써, 실시간 수행을 보장하고 보다 빠른 처리가 가능하도록 하는 기술에 관한 것이다. The present invention relates to a scheduling method for real-time processing in a mobile multicore virtualization system. More specifically, the scheduler of a mobile multicore system assigns a highest priority to an interrupt generated when an interrupt of a virtual CPU is processed for a specific physical CPU. The present invention relates to a technology for guaranteeing real-time execution and enabling faster processing by selecting an optimal physical CPU when assigning and assigning a virtual CPU for interrupt processing to a physical CPU.
임베디드 시스템의 프로세서 성능의 발전과 더불어 임베디드 시스템의 가상화에 대한 관심이 증가하고 있다. 가상화란 일반적으로 단일 호스트(host) 컴퓨터 상에 여러 개의 독립적인 운영체제를 적용시키는 것을 의미한다. 즉, 하나의 하드웨어에 가상화 머신(virtual machine monitor, VMM)을 이용하여 여러 사용자에게 다양한 서비스를 제공할 수 있으므로 비용을 절감하고 시스템 자원을 효율적으로 사용할 수 있다.With the development of processor performance in embedded systems, interest in virtualization of embedded systems is increasing. Virtualization generally means applying multiple independent operating systems on a single host computer. That is, by using a virtual machine monitor (VMM) on one hardware, various services can be provided to multiple users, thereby reducing costs and efficiently using system resources.
2개 이상의 코어 즉, 여러 개의 물리적 CPU를 구비한 멀티코어 시스템에서 여러 개의 운영체제(OS : Operating System)를 동작시키기 위해서는 가상(Virtual) CPU를 할당받아 작업을 수행하는 가상화 기술이 요구된다. 즉, 물리적 CPU를 가상화하여 여러 개의 가상 CPU를 생성하고 운영체제는 가상화 소프트웨어인 하이퍼바이저(Hypervisor) 레벨에서 스케쥴링된 가상 CPU를 이용하여 수행된다. 이러한 과정에서 가상 CPU를 운영체제에 적절하게 할당해 주기 위한 하이퍼바이저 레벨에서 동작하는 스케쥴러가 요구된다.In order to operate multiple operating systems (OSs) in a multicore system having two or more cores, that is, multiple physical CPUs, a virtualization technology that allocates a virtual CPU and performs a task is required. In other words, the virtual CPU is virtualized to create a plurality of virtual CPUs, and the operating system is performed using the virtual CPU scheduled at the hypervisor level, which is virtualization software. This requires a scheduler that operates at the hypervisor level to properly allocate the virtual CPU to the operating system.
기존의 모바일 가상화 스케쥴링 연구는 여러 개의 가상화된 CPU를 하나의 물리적 CPU에 어떻게 할당할 것인가에 관한 것이 대부분이다. 이러한 여러 개의 가상 CPU를 하나의 물리적 CPU에 할당하기 위해서는 물리적 CPU 자원을 공평하게 그리고 로드 밸런스를 적절히 유지하도록 하는 정책이 요구되며, 가상 CPU를 각 도메인별로 얼마나 많이 할당 할 것인지를 결정하기 위해 하이퍼바이저 내에 물리적 CPU 이용율을 설정하고, 스케쥴러는 이러한 이용율에 따라 각 가상 CPU를 도메인에 할당한다. Traditional mobile virtualization scheduling research is mostly about how to allocate multiple virtualized CPUs to a single physical CPU. Allocating multiple virtual CPUs to a single physical CPU requires a policy to ensure that the physical CPU resources are balanced and load balanced properly, and that the hypervisor determines how many virtual CPUs to allocate to each domain. The physical CPU utilization rate is set in the scheduler, and the scheduler allocates each virtual CPU to the domain according to this utilization rate.
따라서, 빠른 실행을 요구하는 인터럽트 처리시에도 페어니스와 로드밸런스 유지를 위한 계산이 요구되며, 이러한 계산에 따라 가장 가중치가 높은 가상 CPU를 선택하여 물리적 CPU에 할당한다. 선택된 가상 CPU는 인터럽트가 될 수도 있고 아닐 수 있으며, 가중치 계산에 따르는 지연 시간이 발생하기 때문에 실시간 처리를 보장하지 못한다. 일반적으로 분리된 I/O 드라이버 모델을 이용하는 모바일 가상화 시스템에서 게스트 도메인에서 발생한 인터럽트는 특권 모드를 수행하는 도메인 0에서 처리해야 한다. 이는 인터럽트 발생 시 도메인 0에서 다시 한번 인터럽트 관련 처리를 해야하기 때문에 더욱 늦은 처리 결과를 초래한다. 아울러 단일 프로세서에서 이러한 방식은 도메인 0에서 수행중인 가상 CPU를 대기큐로 보내고 인터럽트 처리 가상 CPU를 스케쥴링 해야 하기 때문에 2차 문맥교환이 필요하여 사실상 실시간 처리가 어렵다. Therefore, even for interrupt processing requiring fast execution, calculation for maintaining fairness and load balance is required, and the virtual CPU with the highest weight is selected and allocated to the physical CPU according to the calculation. The selected virtual CPU may or may not be interrupted, and there is a delay due to weight calculation, which does not guarantee real time processing. In a mobile virtualization system that typically uses a separate I / O driver model, interrupts that occur in the guest domain must be handled in domain 0, which performs privileged mode. This results in later processing because interrupt-related processing must be performed once again in domain 0 when an interrupt occurs. In addition, in a single processor, this method needs to send a virtual CPU running in domain 0 to the wait queue and schedule an interrupt processing virtual CPU, which requires a second context exchange, which makes virtual real-time processing difficult.
즉, 기존의 멀티코어 가상화 시스템의 스케쥴러는 특정 물리적 CPU에 대한 가상 CPU 변경(Migration) 이벤트 및 인터럽트 처리 시, 다양한 요소(도메인 별 가중치 등)을 고려하여 물리적 CPU들에 대해 할당된 가상 CPU들 중에 가장 최고의 우선 순위를 갖는 가상 CPU를 선택하여 가상 CPU 변경 이벤트가 발생된 물리적 CPU의 현재 실행중인 가상 CPU를 변경하고 있다. 이는 로드 밸런싱과 페어니스를 보장한다는 측면에서는 장점이 될 수 있으나, 비록 I/O 인터럽트와 가상 CPU 변경 이벤트를 최상위 우선 순위로 설정한다고 하여도, 물리적 CPU에 가상 CPU를 할당 할 때 다양한 요소들을 고려하기 때문에 반드시 빠른 처리가 요구되는 인터럽트 처리 가상 CPU가 물리적 CPU에 할당되지 않을 수 있으며, 다양한 요소를 고려하여 할당할 가상 CPU를 선택하므로 시간적 소요가 발생한다. 또한, 분리된 I/O 드라이버 모델을 이용할 경우, 많은 I/O 관련 인터럽트가 발생할 경우 반드시 도메인 0에서 처리해야 하기 때문에, 순간적으로 도메인 0에 대한 이용율이 증가함으로써, 도메인 0에 대한 가상 CPU의 상태들이 idle 상태로 유지 될 수 있다. 이러한 idle 상태에 있는 경우 물리적 CPU 역시 idle 상태로 유지되기 때문에, 이는 모든 I/O 인터럽트를 처리해야 하는 도메인 0에게는 적절하지 못한 방법이다. In other words, the scheduler of the existing multicore virtualization system is one of the virtual CPUs allocated to the physical CPUs in consideration of various factors (weights per domain, etc.) during virtual CPU migration and interrupt processing for a specific physical CPU. The virtual CPU with the highest priority is selected to change the currently running virtual CPU of the physical CPU where the virtual CPU change event has occurred. This can be an advantage in terms of ensuring load balancing and fairness, but considers various factors when allocating virtual CPUs to physical CPUs, even if I / O interrupts and virtual CPU change events are set to top priority. Therefore, the interrupt processing virtual CPU, which requires fast processing, may not be allocated to the physical CPU, and time is required because the virtual CPU to be allocated is selected in consideration of various factors. In addition, when using a separate I / O driver model, because many I / O related interrupts must be handled in domain 0, the utilization of domain 0 increases momentarily, and thus the state of the virtual CPU for domain 0 Can be idle. When in this idle state, the physical CPU also remains idle, which is not appropriate for domain 0, which must handle all I / O interrupts.
하지만 현재 모바일 디바이스 성능의 발전으로 멀티코어 프로세서가 모바일 디바이스 및 임베디드 디바이스에 장착되고 있으므로, 멀티 코어 프로세스를 이용하여 문맥교환을 최소화하고 빠르게 인터럽트를 처리하는 멀티코어 프로세서에서의 스케쥴링에 대한 연구가 필요한 실정이다.However, due to the development of mobile device performance, multicore processors are being installed in mobile devices and embedded devices. Therefore, the study on scheduling in multicore processors that minimizes the context exchange and quickly handles interrupts using multicore processes is required. to be.
그러나, 현재의 분리 I/O 드라이버 모델을 사용하는 가상화 시스템의 스케쥴링 알고리즘은 CPU 공평성에 포커스를 맞추고 있어 실시간 I/O를 제한된 시간 안에 처리할 수 없기 때문에, 실시간 I/O를 처리해야 하는 모바일 및 임베디드 기기에 적용하기 어려운 문제점이 있다. However, the scheduling algorithms of virtualization systems that use the current discrete I / O driver model focus on CPU fairness and cannot process real-time I / O in a limited amount of time. There is a problem that is difficult to apply to the embedded device.
따라서, 본 발명에서는 실시간 처리를 보장하도록 인터럽트 처리 가상 CPU에 최상위의 우선순위를 부여하여 페어니스와 로드밸런싱 계산에 따른 지연 없이 바로 스케쥴링이 가능하도록 하고, 여러 개의 사용 가능한 물리적 CPU 중에 가상 CPU를 할당할 때 각 코어의 공유 캐시, 마감시간(Time Slice), Idle 상태의 물리적 CPU 정보 등을 고려하여 최적의 물리적 CPU가 선택되도록 함으로써 인터럽트 관련 처리 시 실시간 응답이 떨어지는 문제를 해결하고 빠른 처리가 가능하도록 하는 것을 주된 목적으로 한다. Therefore, in the present invention, priority is given to the interrupt processing virtual CPU to ensure real-time processing so that scheduling can be performed immediately without delay due to fairness and load balancing calculation, and the virtual CPU is allocated among several available physical CPUs. In this case, the optimal physical CPU is selected by considering the shared cache of each core, time slice, and physical CPU information of the idle state. It is main purpose to do it.
상기와 같은 목적을 달성하기 위한 본 발명의 일 측면에 따르면, 인터럽트 발생시 해당 인터럽트의 발생 위치 및 종류를 파악하는 단계, 발생된 인터럽트 처리를 위해 실행중이던 가상 CPU를 대기 큐로 이동시키거나 인터럽트 처리를 위한 가상 CPU를 도메인 0의 실행 큐에 삽입하는 단계, 미리 설정된 정책 정보에 기초하여 인터럽트 처리를 위한 가상 CPU를 할당할 물리적 CPU를 선정하는 단계 및 상기 선정된 물리적 CPU의 실행큐에 인터럽트 처리를 위한 가상 CPU를 삽입하여 상기 인터럽트 처리를 위한 가상 CPU가 최우선적으로 처리되도록 하는 단계를 포함하는 것을 특징으로 하는 모바일 멀티코어 가상화 시스템의 스케줄링 방법이 제공된다.According to an aspect of the present invention for achieving the above object, the step of identifying the location and type of the interrupt when the interrupt occurs, moving the virtual CPU running for the interrupt processing to the queue or for interrupt processing Inserting a virtual CPU into an execution queue of domain 0, selecting a physical CPU to allocate a virtual CPU for interrupt processing based on preset policy information, and performing virtual processing for interrupt processing on the selected execution CPU of the physical CPU There is provided a scheduling method of a mobile multi-core virtualization system comprising inserting a CPU so that the virtual CPU for the interrupt processing is prioritized.
여기서, 상기 인터럽트 처리 후에 상기 선정된 물리적 CPU에서 실행하던 가상 CPU에 대한 응답 인터럽트를 발생하면, 대기 큐에 있던 해당 가상 CPU를 실행큐에 삽입하고 해당 가상 CPU가 최우선적으로 실행되는 것이 바람직하다.Here, if the response interrupt to the virtual CPU running in the selected physical CPU after the interrupt processing, it is preferable to insert the virtual CPU in the waiting queue to the execution queue and the virtual CPU is executed first.
그리고, 상기 정책 정보는 인터럽트 발생 이력, 캐쉬 공유 여부, 타임 슬라이스, 기수행된 가상 CPU 정보, 아이들 상태 유무 중 적어도 어느 하나를 포함할 수 있다.The policy information may include at least one of an interrupt occurrence history, cache sharing, a time slice, pre-executed virtual CPU information, and an idle state.
또한, 미리 설정된 정책 정보에 기초하여 인터럽트 처리를 위한 가상 CPU를 할당할 물리적 CPU를 선정하는 단계는 인터럽트 처리를 위한 가상 CPU를 할당할 물리적 CPU가 2개 이상인 경우, 상기 정책 정보에 기초하여 최적의 물리적 CPU를 선정하고, 나머지 물리적 CPU가 활용 가능한 상태인 경우 선정된 물리적 CPU에서 처리되지 못하고 있는 가상 CPU를 상기 나머지 물리적 CPU에 할당하는 것이 보다 바람직하다.The selecting of the physical CPU to which the virtual CPU for the interrupt processing is allocated based on preset policy information may be performed based on the policy information when there are two or more physical CPUs to which the virtual CPU for the interrupt processing is allocated. It is more preferable to select a physical CPU and to allocate a virtual CPU that is not processed by the selected physical CPU to the remaining physical CPU when the remaining physical CPU is available.
본 발명에 따르면, 2개 이상의 코어를 구비한 멀티코어 시스템에서의 인터럽트 처리 시, 멀티코어 시스템의 스케쥴러가 실시간 처리를 보장하고 할당 가능한 물리적 CPU들 중에 최적의 물리적 CPU를 선택하여 가상 CPU를 할당함으로써 기존의 방법보다 효율적으로 작업을 수행할 수 있는 효과가 있다.According to the present invention, when interrupt processing in a multicore system having two or more cores, the scheduler of the multicore system guarantees real-time processing and selects an optimal physical CPU among the assignable physical CPUs to allocate a virtual CPU. There is an effect that can work more efficiently than the existing method.
도 1 은 모바일 멀티코어 가상화 시스템의 스케쥴링 개요도이다.
도 2 는 본 발명의 일 실시 예에 따른 모바일 멀티코어 가상화 시스템의 스케쥴링 장치의 블록도이다.
도 3 은 본 발명의 일 실시예에 따른 모바일 멀티코어 가상화 시스템의 스케쥴링 방법의 흐름도이다.
도 4 는 인터럽트 발생에 따른 스케쥴링 처리 결과의 일 예를 도시한 도면이다.
1 is a scheduling overview diagram of a mobile multicore virtualization system.
2 is a block diagram of a scheduling apparatus of a mobile multicore virtualization system according to an exemplary embodiment.
3 is a flowchart of a scheduling method of a mobile multicore virtualization system according to an embodiment of the present invention.
4 is a diagram illustrating an example of a scheduling process result according to an interrupt occurrence.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In order to clearly illustrate the present invention, parts not related to the description are omitted, and similar parts are denoted by like reference characters throughout the specification.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. Throughout the specification, when a part is said to "include" a certain component, it means that it can further include other components, except to exclude other components unless otherwise stated.
어떤 구성요소가 다른 구성요소에 "접속되어" 있다거나 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 접속되어 있거나 또는 연결되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 한다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 접속되어" 있다거나 "직접 연결되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.
또한, 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
In addition, the suffix "module" and " part "for constituent elements used in the following description are given or mixed in consideration of ease of specification, and do not have their own meaning or role.
도 1 은 모바일 멀티코어 가상화 시스템의 스케쥴링 개요도이다.1 is a scheduling overview diagram of a mobile multicore virtualization system.
도 1 은 하이퍼바이저(Hypervisor)의 스케쥴러(Scheduler)에서 관리되는 물리적 CPU(P_CPU0 ~ P_CPU3), 각 물리적 CPU가 공유하고 있는 캐시(P_CPU0와 P_CPU1의 L2 Cache, P_CPU2와 P_CPU3의 L2 Cache), 가상화되어 실행 중인 운영체제(Domain 0 ~ Domain 2), 각 도메인의 수행을 위해 CPU 가상화를 위한 가상 CPU(VCPU0 ~ VCPU17), 스케쥴링을 위한 실행큐 리스트 구조를 도시하고 있다.1 is a diagram illustrating physical CPUs managed by a scheduler of a hypervisor (P_CPU0 to P_CPU3), caches shared by each physical CPU (L2 Cache of P_CPU0 and P_CPU1, L2 Cache of P_CPU2 and P_CPU3), and virtualized. It illustrates a running operating system (Domain 0 to Domain 2), a virtual CPU (VCPU0 to VCPU17) for CPU virtualization to perform each domain, and an execution queue list structure for scheduling.
스케쥴링을 위한 '실행 큐'상에는 스케쥴링 대기 순위(Priority)가 높은 순서에 따라 가상 CPU가 정렬되어 있다. 각 가상 CPU는 'Interrupt', 'Normal', 'Idle' 중 어느 하나의 스케쥴링 대기 순위(Priority)를 가지며, 같은 우선 순위 일 경우는 큐의 앞에 위치한 것이 우선 순위가 높다.In the execution queue for scheduling, the virtual CPUs are arranged in order of high scheduling priority. Each virtual CPU has a scheduling priority of any one of 'Interrupt', 'Normal', and 'Idle'. If the virtual CPU is the same priority, the virtual CPU has the highest priority.
물리적 CPU 자체가 대기(Idle) 상태인 경우 해당 물리적 CPU에 할당된 가상 CPU의 스케쥴링 대기 순위(Priority)는 'Idle'로 설정되고, I/O 작업 요청 및 리소스 락(Resource Lock)이 걸린 가상 CPU가 웨이크 업(Wake Up)될 때 해당 가상 CPU의 스케쥴링 대기 순위(Priority)는 최우선 순위인 'Interrupt‘로 설정된다.If the physical CPU itself is in an idle state, the scheduling priority of the virtual CPU assigned to that physical CPU is set to 'Idle', and the virtual CPU that has requested I / O work and resource lock When the PC wakes up, the scheduling priority of the corresponding virtual CPU is set to 'Interrupt', which is the highest priority.
도 1에서 물리적 CPU 중 P_CPU3은 도메인 0에 대한 가상 CPU를 실행하는 프로세서로서 도메인 0에 대한 오버헤드가 발생하여 현재 아이들 상태에 있는 것을 나타내고 있다.In FIG. 1, P_CPU3 among physical CPUs is a processor that executes a virtual CPU for domain 0, indicating that an overhead for domain 0 has occurred and is currently in an idle state.
각 물리적 CPU는 각각의 스케쥴링 대기 리스트인 '실행 큐'에 정렬되어 있는 가상 CPU에 의해 점유되며, 때에 따라 다른 물리적 CPU의 '실행 큐'에 있는 가상 CPU로 변경(Migration)하여 물리적 CPU를 점유시키기도 하는데, 이때 각 가상 CPU들의 페어니스(Fairness)와 로드 벨런스(Load Balance)를 보장해 주기 위한 정책이 필요하다. 본 발명에서는 이러한 페어니스와 로드 밸런스를 보장해 주기 위한 정책으로 각 실행 큐에서 수행된 가상 CPU의 개수를 통해 유지하도록 하였다. 다만, 이러한 가상 CPU의 개수를 측정할 때 실시간 처리가 요구되는 인터럽트 처리는 이러한 페어니스와 로드밸런스 정책에서 제외하는 것이 특징이다. Each physical CPU is occupied by a virtual CPU that is arranged in its own scheduling queue, the Run Queue, and sometimes occupies the physical CPU by migrating to a virtual CPU in the Run Queue of another physical CPU. In this case, a policy is required to guarantee fairness and load balance of each virtual CPU. In the present invention, the policy for ensuring fairness and load balance is maintained through the number of virtual CPUs performed in each execution queue. However, interrupt processing that requires real-time processing when measuring the number of such virtual CPUs is characterized by excluding from the fairness and load balance policies.
그 외의 다른 정책 등이 고려 될 수 있으나, 어떠한 페어니스와 로드밸런스의 정책이 고려되더라도 본 발명에서 제시하고 있는 인터럽트 처리 시 페어니스와 로드밸런스를 위한 계산 작업이 이루어지지 않는다는 것과 여러 개의 물리적 CPU 중에 최적의 물리적 CPU를 선택하여 즉시 인터럽트 가상 CPU를 할당한다는 취지에는 변함이 없다.Other policies may be considered. However, even if any fairness and load balance policies are considered, the calculation operation for fairness and load balance is not performed during interrupt processing proposed in the present invention, and among several physical CPUs. There is no change in the idea of selecting an optimal physical CPU and immediately assigning an interrupt virtual CPU.
즉, 종래기술에서 설명한 바와 같이 일반적으로 인터럽트가 발생할 경우, 분리된 I/O 드라이버 모델을 사용하는 가상화 시스템에서는 Front-End 드라이버가 위치한 게스트 도메인(Domain 1과 Domain 2)과 Back-End 드라이버가 위치한 도메인 0(Domain 0)로 분리되며, 게스트 도메인에서 발생한 I/O 관련 인터럽트는 Front-End 드라이버를 통해 도메인 0내의 Back-End 드라이버로 요청하기 때문에 이러한 I/O 관련한 인터럽트 처리는 도메인 0에서 이루어진다. 따라서, 만일 도메인 1에서 I/O 관련 인터럽트가 발생하면, 해당 물리적 CPU에서 동작하는 가상 CPU는 실행을 멈추고 인터럽트를 처리할 때까지 ‘대기 큐’에 삽입되며 도메인 0에 I/O 요청을 수행한다. 도메인 0에서는 도메인 1에서 발생한 인터럽트 처리를 위해 도메인 0의 실행 큐에 인터럽트 처리를 위한 가상 CPU를 삽입한다. 기존의 스케쥴링 방법에서 이러한 인터럽트 처리는 물리적 CPU의 페어니스와 로드 벨런스를 고려하여 스케쥴러에 의해 각 실행 큐에 존재하고 있는 가상 CPU에 대한 가중치를 계산하고 최고의 가중치 값을 갖는 가상 CPU를 선택하여 물리적 CPU를 할당하게 된다. 따라서, 가중치 계산 시간만큼 지연시간이 발생하며, 반드시 인터럽트 처리 가상 CPU가 물리적 CPU에 할당될 것이라는 보장을 할 수가 없다. 이러한 처리는 모바일 디바이스, 임베디드 디바이스와 같은 실시간 처리가 요구되는 곳에서는 사용할 수 없다는 단점을 갖고 있다. 멀티코어 프로세서는 일반적으로 2개의 코어 마다 한 개의 캐시(L2 Cache)를 공유하는 구조로 되어져 있다. 이러한 공유 캐시는 다른 장치와의 속도 차이를 극복하기 위해 사용되는 곳으로 CPU가 데이터를 처리하는 동안 미리 CPU가 필요로 하는 데이터를 저장해두는 기억 공간이다. 두 개의 코어가 자주 사용하는 데이터를 L2 Cache에 기억할수록 성능 향상을 가져올 수 있다.
In other words, as described in the related art, when an interrupt occurs in general, in a virtualization system using a separate I / O driver model, the guest domains (Domain 1 and Domain 2) where the front-end driver is located and the back-end driver are located I / O related interrupts generated in the guest domain are requested to the back-end driver in domain 0 through the front-end driver. Therefore, such I / O related interrupt processing is performed in domain 0. Therefore, if an I / O related interrupt occurs in domain 1, the virtual CPU running on that physical CPU is inserted into the 'wait queue' until it stops executing and handles the interrupt and performs an I / O request to domain 0. . In domain 0, a virtual CPU for interrupt processing is inserted into an execution queue of domain 0 for interrupt processing occurring in domain 1. In the conventional scheduling method, such interrupt processing calculates the weight of the virtual CPU existing in each run queue by the scheduler in consideration of the fairness and the load balance of the physical CPU, and selects the virtual CPU having the highest weight value to select the physical CPU. Will be assigned. Therefore, a delay occurs by the weight calculation time, and there is no guarantee that the interrupt processing virtual CPU will be allocated to the physical CPU. This process has a drawback that it cannot be used where real-time processing such as mobile devices and embedded devices is required. Multicore processors are generally designed to share one cache (L2 Cache) for every two cores. This shared cache is used to overcome speed differences with other devices. It is a storage space that stores data needed by the CPU in advance while the CPU processes the data. The more frequently two cores store data in L2 Cache, the better the performance.
도 2 는 본 발명의 일 실시 예에 따른 모바일 멀티코어 가상화 시스템의 스케쥴링 장치의 블록도이다.2 is a block diagram of a scheduling apparatus of a mobile multicore virtualization system according to an exemplary embodiment.
도 2에 도시된 바와 같이, 본 발명의 일 실시 예에 따른 모바일 멀티코어 가상화 시스템의 스케줄러(100)는 인터럽트 처리모듈(110), 가상 CPU 처리모듈(120), 프로세서 선택모듈(130) 및 프로세서 할당모듈(140)을 포함하여 구성된다.As shown in FIG. 2, the scheduler 100 of the mobile multi-core virtualization system according to an embodiment of the present invention may include an interrupt processing module 110, a virtual CPU processing module 120, a processor selection module 130, and a processor. It is configured to include an allocation module 140.
인터럽트 처리 모듈(110)은 각 가상 CPU의 실행시 발생하는 인터럽트를 감시 및 검출하고 해당 인터럽트의 종류 등을 판단한다. The interrupt processing module 110 monitors and detects interrupts generated when each virtual CPU is executed, and determines types of interrupts.
가상 CPU 처리 모듈(120)은 발생된 인터럽트를 처리하기 위해, 가상 CPU를 대기큐 및 실행큐로 이동시키고 우선 순위를 부여하는 기능을 수행한다.  The virtual CPU processing module 120 performs a function of moving and prioritizing the virtual CPU to the standby queue and the execution queue in order to process the generated interrupt.
물리적 CPU를 선택하는 프로세서 선택 모듈(130)은 선택된 가상 CPU를 각 물리적 CPU에 할당하기 위해, 어떠한 물리적 CPU에 할당할 것인지를 결정한다. The processor selecting module 130 that selects a physical CPU determines which physical CPU to allocate to assign the selected virtual CPU to each physical CPU.
프로세서 할당 모듈(140)은 선택된 프로세서에 선택된 가상 CPU를 할당한다. 프로세서 선택 모듈(130)에서 선택된 물리적 CPU들에게 가상 CPU 처리 모듈(120)에서 선택한 가상 CPU를 할당한다. The processor allocation module 140 assigns the selected virtual CPU to the selected processor. The virtual CPU selected by the virtual CPU processing module 120 is allocated to the physical CPUs selected by the processor selection module 130.
상기 각 모듈에 의해 이루어지는 모바일 멀티코어 가상화 시스템의 스케줄링의 보다 구체적인 내용은 도 3에서 보다 상세하게 설명될 것이다.
More specific details of the scheduling of the mobile multicore virtualization system made by each module will be described in more detail with reference to FIG. 3.
도 3 은 본 발명의 일 실시예에 따른 모바일 멀티코어 가상화 시스템의 스케쥴링 방법의 흐름도이다.3 is a flowchart of a scheduling method of a mobile multicore virtualization system according to an embodiment of the present invention.
도 3에 도시된 바와 같이, 인터럽트가 발생하면 단계 S10에서 해당 인터럽트의 발생 위치 및 종류를 파악한다. As shown in FIG. 3, when an interrupt occurs, the position and type of occurrence of the interrupt are determined.
발생된 인터럽트 처리를 위해 단계 S20에서는 인터럽트 종류(I/O 요청 또는 I/O 처리 결과 통보 등)에 따라 가상 CPU를 대기큐에 위치시키거나, 대기큐에 위치한 가상 CPU를 실행큐로 이동하는 작업이 수행된다. 또한, I/O 요청에 관한 인터럽트일 경우, I/O 인터럽트 처리를 위해 도메인 0이 수행되고 있는 물리적 CPU의 실행큐에 최상위의 우선순위를 갖는 인터럽트 처리 가상 CPU가 삽입된다. In step S20, the virtual CPU is placed on the standby queue or the virtual CPU located on the standby queue is moved to the execution queue according to the type of interrupt (I / O request or I / O processing result notification, etc.). This is done. In addition, in the case of an interrupt regarding an I / O request, an interrupt processing virtual CPU having the highest priority is inserted into an execution queue of a physical CPU on which domain 0 is being performed for I / O interrupt processing.
그 다음 단계 S30에서, 발생한 인터럽트를 처리하기 위해 실행가능한 프로세서가 선택되는데, 이러한 결정을 위해 다음의 표 1과 같은 물리적 CPU 정보를 이용할 수 있다.Then, in step S30, an executable processor is selected to handle the interrupt that occurred, and the physical CPU information shown in Table 1 below can be used for this determination.
Figure 112012026639968-pat00001
Figure 112012026639968-pat00001
표 1의 예시에서 CPU 필드는 멀티코어를 구성하는 물리적 CPU의 이름이며, 인터럽트 필드는 인터럽트 발생 여부에 관한 정보를 포함한다. 최근 사용한 가상 CPU 필드는 각 물리적 CPU에서 최근 수행한 가상 CPU의 정보를 가지고 있다. 상태 필드는 물리적 CPU의 현재 상태 정보를 가지며, running(실행중), waiting(대기중), Idle(유휴중)의 3가지 값으로 구성된다. 공유 캐시 필드는 각 물리적 CPU가 캐시 정보를 공유할 경우 같은 숫자값을 갖도록 구성된다. 표 1에서는 0의 값을 갖는 P_CPU0와 P_CPU1이 캐시내 정보를 상호 공유하고, 1의 값을 갖는 P_CPU2와 P_CPU3이 캐시내 정보를 상호 공유한다. 도메인 필드는 각 물리적 CPU가 수행중인 도메인에 대한 정보로써, P_CPU0과 P_CPU3은 도메인 0에 대한 가상 CPU를 실행함을 나타낸다. 실행큐 필드는 각 물리적 CPU에서 실행하기 위해 대기하고 있는 큐의 번호를 의미한다.In the example of Table 1, the CPU field is a name of a physical CPU constituting the multicore, and the interrupt field includes information on whether an interrupt has occurred. The recently used virtual CPU field contains information on the virtual CPUs recently performed by each physical CPU. The status field contains the current state of the physical CPU and consists of three values: running, waiting, and idle. The shared cache field is configured to have the same numeric value when each physical CPU shares cache information. In Table 1, P_CPU0 and P_CPU1 having a value of 0 share information in the cache, and P_CPU2 and P_CPU3 having a value of 1 share information in the cache. The domain field is information on a domain in which each physical CPU is running, and indicates that P_CPU0 and P_CPU3 execute a virtual CPU for domain 0. The run queue field represents the number of queues waiting to be executed on each physical CPU.
프로세서 선택을 위한 정책으로는 인터럽트 발생 CPU를 선택, L2 Cache를 공유하는 CPU를 선택, 마감 시간(Time Slice등)에 따른 CPU 선택, CPU에서 수행되었던 가상 CPU 정보를 이용한 선택, Idle 상태의 CPU 등이 고려될 수 있다.
Policies for processor selection include CPUs with interrupts, CPUs sharing L2 Cache, CPU selection based on deadline (Time Slice, etc.), selection using virtual CPU information executed in CPU, CPU in idle state, etc. This can be considered.
단계 S30에서 선택된 프로세서에 따라, 단계 S40과 단계 S50에서는 선택된 가상 CPU를 프로세서에 할당한다. 단계 S40은 사용가능한 프로세서가 하나일 경우 그 프로세서에 할당하는 경우이고, 단계 S50은 할당 가능한 프로세서의 개수가 2개 이상일 경우 인터럽트를 처리하기 위해 최적의 프로세서를 찾아 할당하고, 만일 다른 프로세서가 활용 가능한 상태이라면 프로세서에 가상 CPU를 할당하는 경우를 나타낸다.According to the processor selected in step S30, the selected virtual CPU is allocated to the processor in steps S40 and S50. Step S40 is a case where there is one processor available and assigns it to that processor, and step S50 finds and allocates an optimal processor to handle an interrupt when there are two or more assignable processors, and if other processors are available, The state indicates the allocation of virtual CPUs to the processor.
단계 S40과 단계 S50에 대해 보다 상술하면, 이러한 물리적 CPU의 선택 결정에는 몇 가지의 경우가 발생할 수 있다.  In more detail with respect to steps S40 and S50, several cases may occur in the selection decision of the physical CPU.
첫째로, 할당할 수 있는 물리적 CPU가 1개일 경우이다. 이러한 경우에는 최근 인터럽트가 발생한 가상 CPU를 수행한 이력이 있는 물리적 CPU가 존재하는 경우, 해당 물리적 CPU가 가상 CPU의 실행을 멈추고 실행중이던 가상 CPU를 대기큐로 이동시키고, 인터럽트 처리를 위해 물리적 CPU는 잠시 멈춘 상태로 존재한다. 따라서, 물리적 CPU는 새로운 가상 CPU를 할당 받기 위해 대기하고 있으며, 이러한 물리적 CPU에 인터럽트 처리 가상 CPU를 할당하는 경우이다.First, there is one physical CPU that can be allocated. In this case, if there is a physical CPU with a history of executing the virtual CPU that has recently interrupted, the physical CPU stops executing the virtual CPU and moves the running virtual CPU to the waiting queue. It exists in a paused state. Therefore, the physical CPU is waiting to be allocated with a new virtual CPU, and this is the case of allocating an interrupt processing virtual CPU to this physical CPU.
두 번째는 할당 가능한 물리적 CPU의 개수가 2개 이상일 경우이다. 예컨대 최근 인터럽트가 발생한 가상 CPU를 수행한 이력이 있는 물리적 CPU와 Idle 상태에 있는 물리적 CPU는 새로운 가상 CPU를 수행할 수 있다. 비록 idle 상태에 있는 물리적 CPU는 도메인의 물리적 CPU 이용율에 따라 잠시 실행을 멈추고 있지만 대응되는 도메인 변경으로 물리적 CPU를 이용할 수 있다. The second is when there are two or more physical CPUs that can be allocated. For example, a physical CPU having a history of performing a virtual CPU with a recent interrupt and a physical CPU in an idle state may execute a new virtual CPU. Although the idle physical CPUs are running for a while depending on the domain's physical CPU utilization, the corresponding domain changes can use the physical CPUs.
예컨대, 도 3에서 보여지는 물리적 CPU 정보에 따르면 현재 인터럽트가 발생한 물리적 CPU는 P_CPU1이고, P_CPU3은 Idle 상태에 있다. 따라서, 현재 사용 가능한 물리적 CPU는 waiting 상태인 P_CPU1과 Idle 상태인 P_CPU3이며, 공유캐시와 최근 사용한 가상 CPU의 정보를 고려할 때 P_CPU1에 할당하는 것이 최적이므로 해당 물리적 CPU에 할당한다. 이후 Idle 상태인 P_CPU3에 대해 비록 Idle 상태이지만 그 대상이 도메인 0에 대한 것이고, P_CPU3은 도메인 0의 P_CPU0와 같은 공유캐시를 이용할 수 있으므로, P_CPU1에서 대기 중인 가상 CPU(VCPU6)의 처리를 P_CPU3으로 변경하고 P_CPU3에서 대기중인 가상 CPU의 처리는 P_CPU1에서 처리하도록 물리적 CPU 정보를 변경한다. 다음의 표 2는 표 1에서 각각 물리적 CPU의 선택 결정이 이루어지고 난후 변경된 정보이다. For example, according to the physical CPU information shown in FIG. 3, the physical CPU on which the interrupt is currently generated is P_CPU1 and P_CPU3 is in an Idle state. Therefore, the currently available physical CPUs are P_CPU1 in the waiting state and P_CPU3 in the Idle state, and are allocated to the corresponding physical CPU because it is optimally allocated to P_CPU1 in consideration of information on the shared cache and the recently used virtual CPU. After that, for Idle state P_CPU3, even though it is Idle, but its target is for domain 0, P_CPU3 can use the same shared cache as P_CPU0 in domain 0, so the processing of waiting virtual CPU (VCPU6) in P_CPU1 is changed to P_CPU3. And the processing of the virtual CPU waiting in P_CPU3 changes the physical CPU information to process in P_CPU1. Table 2 below is information changed after the physical CPU selection decision is made in Table 1, respectively.
Figure 112012026639968-pat00002
Figure 112012026639968-pat00002
즉, P_CPU3은 도메인 0에 관한 가상 CPU를 처리하도록 설정되어 있는 상태에서 도메인 0에 관한 가상 CPU에 대한 오버헤드가 발생되어 현재 유휴상태에 있는 것이므로 도메인 0이 아닌 도메인 1 또는 도메인 2에 관한 가상 CPU를 처리하도록 하는 경우에는 오버헤드의 문제가 발생하지 않는다. 따라서, 이러한 점을 이용하여 인터럽트 처리에 있어서는 최근 인터럽트 처리 이력이 있어 인터럽트 처리가 보다 용이한 P_CPU1에서 해당 인터럽트 처리를 수행하도록 하고, 이에 따라 P_CPU1에서 처리되지 못하는 다른 가상 CPU(예를 들면, 도 4의 VCPU6, VCPU8)가 idle 상태인 P_CPU3에서 처리되도록 함으로써 인터럽트에 대한 실시간 처리성을 향상시킴과 동시에 가상 CPU 작업 처리 효율을 높일 수 있게 되는 장점이 있다.
That is, since P_CPU3 is set to process the virtual CPU for domain 0 and has an overhead for the virtual CPU for domain 0, and is currently idle, the virtual CPU for domain 1 or domain 2 is not domain 0. In the case of processing the overhead problem does not occur. Therefore, in this regard, in the interrupt processing, the interrupt processing is performed in P_CPU1, which has a recent interrupt processing history, which makes interrupt processing easier, and accordingly, another virtual CPU (for example, FIG. 4) that cannot be processed in P_CPU1. VCPU6 and VCPU8) are processed in P_CPU3, which is idle, thereby improving real-time throughput for interrupts and increasing the efficiency of virtual CPU work.
도 4 는 인터럽트 발생에 따른 스케쥴링 처리 결과의 일 예를 도시한 것으로서, 이해를 돕기 위해 물리적 CPU 정보를 기반으로 물리적 CPU(P_CPU1)에서 가상 CPU(VCPU5)를 수행하던 중 인터럽트가 발생했을 때의 물리적 CPU(P_CPU1)에서 이루어지는 일련의 처리 결과를 예시적으로 설명한 것이다. FIG. 4 is a diagram illustrating an example of a result of scheduling processing according to an interrupt occurrence, and for clarity, when an interrupt occurs while performing a virtual CPU (VCPU5) on a physical CPU (P_CPU1) based on physical CPU information, FIG. The result of a series of processing performed in the CPU P_CPU1 is described as an example.
우선, 인터럽트가 발생되면, 인터럽트 처리를 위해 물리적 CPU(P_CPU1)에서 실행중이던 가상 CPU(VCPU5)는 대기 큐로 이동하게 된다(1). First, when an interrupt is generated, the virtual CPU VCPU5, which is running on the physical CPU P_CPU1 for the interrupt processing, moves to the waiting queue (1).
그리고, 스케줄러(100)는 현재 도메인 0을 수행중인 물리적 CPU(P_CPU0)의 실행큐에 인터럽트 처리 관련 가상 CPU(VCPU18)를 삽입한다(2). The scheduler 100 inserts the interrupt processing related virtual CPU VCPU18 into the execution queue of the physical CPU P_CPU0 currently performing domain 0 (2).
스케쥴러는 즉시 가상 CPU(VCPU18)를 물리적 CPU에게 할당하기 위해 사용가능한 물리적 CPU를 도3의 물리적 CPU 정보를 이용하여 검색하고, 상술한 여러가지 요소들을 고려하여 물리적 CPU를 선택하고, 선택 결과에 따라 VCPU18을 P_CPU1에 할당한다(3-1). The scheduler retrieves the available physical CPUs using the physical CPU information of FIG. 3 to immediately allocate the virtual CPU (VCPU18) to the physical CPUs, selects the physical CPUs in consideration of the various factors described above, and according to the selection result. Is assigned to P_CPU1 (3-1).
또한, P_CPU3은 현재 Idle 상태에 있더라도 도메인 0에 의해 점유된 CPU 이므로 스케줄러(100)는 이용율을 높이기 위해 VCPU5의 인터럽트 처리 때문에 할당되지 못하고 있는 VCPU6을 P_CPU3에 할당한다(3-2). 이때 스케쥴러는 물리적 CPU 정보를 P_CPU1의 실행큐에 존재한 가상 CPU들은 P_CPU3으로 PCPU3의 실행큐에 있는 가상 CPU들을 P_CPU1에 할당하도록 변경한다. In addition, since the P_CPU3 is a CPU occupied by the domain 0 even in the current idle state, the scheduler 100 allocates the VCPU6, which is not allocated due to the interrupt processing of the VCPU5, to the P_CPU3 to increase the utilization rate (3-2). At this time, the scheduler changes the physical CPU information to allocate virtual CPUs in the execution queue of P_CPU1 to P_CPU1 as P_CPU3.
인터럽트 처리 후 VCPU5의 처리를 위해 VCPU5에 대한 응답 인터럽트가 발생하면, 대기큐 1에 있던 VCPU5가 실행큐 1로 삽입된다(4). VCPU5는 이때 최상위 우선순위(Interrupt)를 가지며, 스케쥴러에 의해 즉시 실행되어지는데 이때의 처리는 앞의 처리 방법과 같다(5). If a response interrupt to VCPU5 occurs for the processing of VCPU5 after the interrupt processing, VCPU5 in the waiting queue 1 is inserted into the execution queue 1 (4). VCPU5 has the highest priority at this time and is executed immediately by the scheduler. The processing at this time is the same as the above processing method (5).
다만 이때의 사용가능한 물리적 CPU는 P_CPU1 하나이므로, 할당되는 물리적 CPU는 P_CPU1이 된다. 마지막으로 실행 큐3에 위치한 가상 CPU는 Idle 상태가 해제될 경우 물리적 CPU 정보에 의하여 P_CPU1에 할당된다(6).
However, since the usable physical CPU is one P_CPU1, the allocated physical CPU is P_CPU1. Finally, the virtual CPU located in the execution queue 3 is allocated to P_CPU1 by physical CPU information when the idle state is released (6).
도 4에서는 인터럽트 발생에 따른 스케쥴링 처리 결과의 일 예를 설명하였으나, 이는 단지 예시적인 것으로서, 다양한 경우의 수에 대한 스케줄링이 발생될 수 있으며, 본 발명은 이러한 다양한 경우의 수에 관계없이 인터럽트가 발생하는 경우 인터럽트 처리를 위한 가상 CPU에 최상위 우선권을 부여함으로써 페어니스와 로드밸런스의 정책에 관계없이 인터럽트 처리 시 페어니스와 로드밸런스를 위한 계산 작업이 이루어지지 않는다는 것과 여러 개의 물리적 CPU 중에 최적의 물리적 CPU를 선택하여 즉시 인터럽트 가상 CPU를 할당한다는 개념을 포함하는 것이면 모두 본 발명의 기술적 사상에 포함되는 것임은 자명한 것이다.In FIG. 4, an example of a scheduling process result according to an interrupt occurrence has been described. However, this is merely an example. Scheduling for various cases may be generated, and the present invention may generate an interrupt regardless of the number of various cases. The highest priority to the virtual CPU for interrupt processing, which means that no calculations are performed for fairness and load balancing during interrupt processing regardless of the policy of fairness and load balancing, and the optimal physical CPU among multiple physical CPUs. It is obvious that all of them are included in the technical spirit of the present invention as long as they include the concept of allocating an interrupt virtual CPU immediately by selecting.
100 : 스케줄러 110 : 인터럽트 처리모듈
120 : 가상 CPU 처리모듈 130 : 프로세서 선택모듈
140 : 프로세서 할당모듈
100: scheduler 110: interrupt processing module
120: virtual CPU processing module 130: processor selection module
140: processor allocation module

Claims (4)

  1. 모바일 멀티코어 가상화 시스템의 스케줄러에서 가상화 작업 스케줄링을 수행하는 방법에 있어서,
    인터럽트 발생시 해당 인터럽트의 발생 위치 및 종류를 파악하는 단계;
    발생된 인터럽트 처리를 위해 실행중이던 가상 CPU를 대기 큐로 이동시키거나 인터럽트 처리를 위한 가상 CPU를 도메인 0의 실행 큐에 삽입하는 단계;
    미리 설정된 정책 정보에 기초하여 인터럽트 처리를 위한 가상 CPU를 할당할 물리적 CPU를 선정하는 단계;
    상기 선정된 물리적 CPU의 실행큐에 인터럽트 처리를 위한 가상 CPU를 삽입하여 상기 인터럽트 처리를 위한 가상 CPU가 최우선적으로 처리되도록 하는 단계를 포함하는 것을 특징으로 하는 모바일 멀티코어 가상화 시스템의 스케줄링 방법.
    In the method of performing virtualization job scheduling in the scheduler of the mobile multi-core virtualization system,
    Identifying the location and type of occurrence of an interrupt when an interrupt occurs;
    Moving a virtual CPU running for the generated interrupt processing to a standby queue or inserting the virtual CPU for interrupt processing into an execution queue of domain 0;
    Selecting a physical CPU to allocate a virtual CPU for interrupt processing based on preset policy information;
    And inserting a virtual CPU for interrupt processing into an execution queue of the selected physical CPU so that the virtual CPU for interrupt processing is processed first.
  2. 제 1 항에 있어서,
    상기 인터럽트 처리 후에 상기 선정된 물리적 CPU에서 실행하던 가상 CPU에 대한 응답 인터럽트를 발생하면, 대기 큐에 있던 해당 가상 CPU를 실행큐에 삽입하고 해당 가상 CPU가 최우선적으로 실행되는 것을 특징으로 하는 모바일 멀티코어 가상화 시스템의 스케줄링 방법.
    The method of claim 1,
    When the response interrupt to the virtual CPU running on the selected physical CPU after the interrupt processing, the corresponding virtual CPU in the waiting queue is inserted into the execution queue and the virtual CPU is executed first priority. Scheduling method of core virtualization system.
  3. 제 1 항에 있어서,
    상기 정책 정보는 인터럽트 발생 이력, 캐쉬 공유 여부, 타임 슬라이스, 기수행된 가상 CPU 정보, 아이들 상태 유무 중 적어도 어느 하나를 포함하는 것을 특징으로 하는 모바일 멀티코어 가상화 시스템의 스케줄링 방법.
    The method of claim 1,
    The policy information may include at least one of interrupt history, cache sharing, time slice, executed virtual CPU information, and idle state.
  4. 제 1 항에 있어서,
    미리 설정된 정책 정보에 기초하여 인터럽트 처리를 위한 가상 CPU를 할당할 물리적 CPU를 선정하는 단계는
    인터럽트 처리를 위한 가상 CPU를 할당할 물리적 CPU가 2개 이상인 경우, 상기 정책 정보에 기초하여 최적의 물리적 CPU를 선정하고, 나머지 물리적 CPU가 활용 가능한 상태인 경우 선정된 물리적 CPU에서 처리되지 못하고 있는 가상 CPU를 상기 나머지 물리적 CPU에 할당하는 것을 특징으로 하는 모바일 멀티코어 가상화 시스템의 스케줄링 방법.
    The method of claim 1,
    Selecting a physical CPU to allocate a virtual CPU for interrupt processing based on the preset policy information
    If there are two or more physical CPUs to allocate the virtual CPU for interrupt processing, the optimal physical CPU is selected based on the policy information, and if the remaining physical CPUs are available, the virtual CPUs that are not processed by the selected physical CPU are available. And a CPU is allocated to the remaining physical CPUs.
KR1020120034379A 2012-04-03 2012-04-03 Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process KR101330609B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120034379A KR101330609B1 (en) 2012-04-03 2012-04-03 Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120034379A KR101330609B1 (en) 2012-04-03 2012-04-03 Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process

Publications (2)

Publication Number Publication Date
KR20130112180A KR20130112180A (en) 2013-10-14
KR101330609B1 true KR101330609B1 (en) 2013-11-18

Family

ID=49633225

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120034379A KR101330609B1 (en) 2012-04-03 2012-04-03 Method For Scheduling of Mobile Multi-Core Virtualization System To Guarantee Real Time Process

Country Status (1)

Country Link
KR (1) KR101330609B1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102033434B1 (en) 2014-01-28 2019-10-17 한국전자통신연구원 Apparatus and method for multi core emulation based on dynamic context switching
US10158549B2 (en) * 2015-09-18 2018-12-18 Fmr Llc Real-time monitoring of computer system processor and transaction performance during an ongoing performance test
KR20170081952A (en) 2016-01-05 2017-07-13 한국전자통신연구원 Multi-core simulation system and method based on shared translation block cache
CN107102966B (en) * 2016-02-22 2020-03-13 龙芯中科技术有限公司 Multi-core processor chip, interrupt control method and controller

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120017294A (en) * 2010-08-18 2012-02-28 삼성전자주식회사 System and method of scheduling
KR20120019330A (en) * 2010-08-25 2012-03-06 삼성전자주식회사 Scheduling apparatus and method for a multicore system
KR20120068572A (en) * 2010-12-17 2012-06-27 삼성전자주식회사 Apparatus and method for compilation of program on multi core system
KR20120070303A (en) * 2010-12-21 2012-06-29 삼성전자주식회사 Apparatus for fair scheduling of synchronization in realtime multi-core systems and method of the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120017294A (en) * 2010-08-18 2012-02-28 삼성전자주식회사 System and method of scheduling
KR20120019330A (en) * 2010-08-25 2012-03-06 삼성전자주식회사 Scheduling apparatus and method for a multicore system
KR20120068572A (en) * 2010-12-17 2012-06-27 삼성전자주식회사 Apparatus and method for compilation of program on multi core system
KR20120070303A (en) * 2010-12-21 2012-06-29 삼성전자주식회사 Apparatus for fair scheduling of synchronization in realtime multi-core systems and method of the same

Also Published As

Publication number Publication date
KR20130112180A (en) 2013-10-14

Similar Documents

Publication Publication Date Title
Delimitrou et al. Hcloud: Resource-efficient provisioning in shared cloud systems
US10162658B2 (en) Virtual processor allocation techniques
Xi et al. Real-time multi-core virtual machine scheduling in xen
US9519499B2 (en) Method for dispatching central processing unit of hotspot domain virtual machine and virtual machine system
Zhang et al. Mimp: Deadline and interference aware scheduling of hadoop virtual machines
Leverich et al. Reconciling high server utilization and sub-millisecond quality-of-service
US9619287B2 (en) Methods and system for swapping memory in a virtual machine environment
US10061610B2 (en) CPU scheduler configured to support latency sensitive virtual machines
Herman et al. RTOS support for multicore mixed-criticality systems
Uhlig et al. Towards Scalable Multiprocessor Virtual Machines.
Sridharan et al. Adaptive, efficient, parallel execution of parallel programs
Gupta et al. Pegasus: Coordinated scheduling for virtualized accelerator-based systems
US9733965B2 (en) Closed-loop feedback mechanism for achieving optimum performance in a consolidated workload environment
US8667496B2 (en) Methods and systems of managing resources allocated to guest virtual machines
US20150317179A1 (en) Efficient input/output-aware multi-processor virtual machine scheduling
US9262220B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
US9086925B2 (en) Methods of processing core selection for applications on manycore processors
US8307369B2 (en) Power control method for virtual machine and virtual computer system
Lee et al. Supporting soft real-time tasks in the xen hypervisor
JP5871233B2 (en) Computer and bandwidth control method
JP6646114B2 (en) Dynamic virtual machine sizing
US8838801B2 (en) Cloud optimization using workload analysis
EP2519877B1 (en) Hypervisor-based isolation of processor cores
EP2411915B1 (en) Virtual non-uniform memory architecture for virtual machines
US9507631B2 (en) Migrating a running, preempted workload in a grid computing system

Legal Events

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

Payment date: 20161104

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171110

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181107

Year of fee payment: 6