KR20150114911A - 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치 - Google Patents
다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치 Download PDFInfo
- Publication number
- KR20150114911A KR20150114911A KR1020150046740A KR20150046740A KR20150114911A KR 20150114911 A KR20150114911 A KR 20150114911A KR 1020150046740 A KR1020150046740 A KR 1020150046740A KR 20150046740 A KR20150046740 A KR 20150046740A KR 20150114911 A KR20150114911 A KR 20150114911A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- processors
- scheduling
- group
- packet
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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 load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치가 개시된다. 다중 프로세싱 장치는 복수의 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 프로세서 그룹으로 그룹핑하고, 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하면, 플로우를 기 지정된 프로세서 그룹 또는 프로세서에 할당하며, 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 않으면, 플로우를 위한 새로운 프로세서 그룹을 생성하여 할당한다.
Description
본 발명은 다중 스케줄링 방법 및 그 장치에 관한 것으로서, 보다 상세하게는 패킷을 병렬처리하는 다중 프로세싱 환경에서 스케줄링하는 방법 및 그 장치에 관한 것이다.
다중 프로세싱 시스템은 복수 개의 CPU(Central Processing Unit) 코어(core)를 이용하여 복수 개의 프로세스를 병렬처리한다. 그러나 다중 프로세싱의 경우, CPU 코어간에 부하를 균등하게 분포시키는 문제, CPU 코어들간 공유하는 자원의 충돌, 캐시 효율성 저하 등의 문제점이 있다.
특히 패킷을 병렬처리하는 다중 프로세싱 시스템의 경우, 패킷 처리 효율을 높이기 위해서는 동일한 플로우에 속한 패킷을 동일한 CPU에서 처리하도록 하며 CPU에 대한 플로우 친화도(flow affintity)를 유지하는 것이 바람직하나, 이 경우 특정 CPU에 부하가 과중 되어 전체 CPU간에 부하 분포의 불균형이 발생할 수 있으며, 이로 인하여 다중 프로세싱 시스템의 전체 처리 효율이 낮아질 수 있는 문제점이 있다.
이를 해결하기 위해서는 CPU 사이의 부하분산(load balancing)을 주기적으로 수행하여야 하나, 이 경우 플로우를 처리하는 CPU가 부하분산 과정에서 바뀌어 플로우 친화도가 낮아지며, 패킷의 처리 순서가 뒤바뀌어 패킷 순위 재처리(Packet re-ordering)의 과정이 필요한 이유 등으로 다중 프로세싱 시스템의 패킷 처리 효율이 낮아지는 문제점이 있다.
이와 같이, 다중 프로세싱 시스템의 처리 효율을 높이기 위하여 플로우 친화도를 높이고 적절한 부하분산이 필요하나 양자는 서로 상충하므로 이를 적절히 보완할 필요가 있다.
본 발명이 이루고자 하는 기술적 과제는, 패킷 병렬 처리를 수행하는 다중 프로세싱 환경에서 플로우 친화도(flow affinity)와 부하분산(load balancing)의 상충성을 완화시키고 전체 프로세서들의 사용 효율을 증가시키는 스케줄링 방법 및 그 장치를 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 스케줄링 방법의 일 예는, 다중 프로세싱 장치에서의 스케줄링 방법에 있어서, 복수의 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 프로세서 그룹으로 그룹핑하는 단계; 및 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하면, 상기 플로우를 기 지정된 프로세서 그룹 또는 프로세서에 할당하는 단계; 및 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 않으면, 상기 플로우를 위한 새로운 프로세서 그룹을 생성하여 할당하는 단계;를 포함한다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 스케줄링 방법의 일 예는, 다중 프로세싱 장치에서의 스케줄링 방법에 있어서, 복수의 프로세서들의 부하상태나 처리용량 또는 수신 패킷의 속성을 기초로 단일 스케줄링 또는 다중 스케줄링을 결정하는 단계; 상기 단일 스케줄링의 경우에, 복수의 프로세서들 중 하나를 스케줄러로 지정하는 단계; 및 상기 다중 스케줄링의 경우에, 복수의 프로세서들을 적어도 둘 이상의 프로세서 그룹으로 그룹핑하고, 각각의 프로세서 그룹 내 프로세서들 중 하나를 각각의 프로세서 그룹의 스케줄러로 지정하는 단계;를 포함한다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 스케줄링 방법의 일 예는, 다중 프로세싱 환경에서의 스케줄링 방법에 있어서, 하나 이상의 큐를 가상머신별로 그룹핑하는 단계; 수신한 딥패킷의 목적지 가상머신과 딥플로우를 식별하는 단계; 및 상기 목적지 가상머신과 딥플로우를 기초로 상기 수신한 딥패킷을 해당하는 큐에 할당하는 단계;를 포함한다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 스케줄링 장치의 일 예는, 복수의 프로세서들의 부하상태나 처리용량 또는 수신 패킷의 속성을 기초로 단일 스케줄링 또는 다중 스케줄링을 결정하는 정책판단부; 및 상기 단일 스케줄링의 경우에 복수의 프로세서들 중 하나를 스케줄러로 지정하고, 상기 다중 스케줄링의 경우에 복수의 프로세서들을 적어도 둘 이상의 프로세서 그룹으로 그룹핑하고 각 프로세서 그룹별 스케줄러를 지정하는 스케줄러지정부;를 포함한다.
본 발명에 따르면, 플로우 친화도와 부하 분산의 상충성을 완화하여 병렬 처리의 성능을 향상시킬 수 있다. 또한 동적으로 지정되는 복수 개의 스케줄러를 이용함으로써 패킷 스케줄링과 큐잉에 따른 대기시간(latency)을 감소할 수 있다. 또한 복수 개의 스케줄러를 통해 트래픽 속성에 따른 다양한 스케줄링 알고리즘을 용이하게 적용할 수 있다.
도 1은 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 장치의 일 예를 도시한 도면,
도 2는 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 방법의 일 예를 도시한 도면,
도 3은 본 발명에 따른 다중 스케줄링을 위한 분류 정책의 일 예를 도시한 도면,
도 4는 본 발명에 따른 다중 스케줄링 방법이 적용된 다중 프로세싱 장치의 일 예의 구성을 도시한 도면,
도 5는 본 발명에 따른 다중스케줄링부의 상세 구성의 일 예를 도시한 도면,
도 6은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 일 예를 도시한 흐름도,
도 7은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 다른 일 예를 도시한 흐름도,
도 8은 본 발명에 따른 다중 프로세싱 환경에서 프로세서 그룹 내 스케줄러로 지정된 프로세서의 스케줄링 방법의 일 예를 도시한 흐름도,
도 9는 본 발명에 따른 다중 스케줄링을 위한 프로세서 그룹핑의 일 예를 도시한 도면,
도 10은 본 발명에 따른 다중 스케줄링을 위하여 프로세서를 동적으로 그룹핑하는 방법의 일 예를 도시한 도면,
도 11은 본 발명에 따른 다중 프로세싱을 위한 네트워크 인터페이스 장치를 포함한 시스템의 개략적인 구조의 일 예를 도시한 도면,
도 12는 본 발명에 따른 NIC의 자원을 동적으로 설정하는 방법의 일 예를 도시한 도면,
도 13은 본 발명에 따른 NIC의 일 실시예의 구성을 도시한 도면,
도 14는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 일 예를 도시한 도면,
도 15는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 다른 일 예를 도시한 도면,
도 16은 본 발명에 사용되는 딥패킷의 일 예를 도시한 도면, 그리고,
도 17은 본 발명에 따른 가상 머신 환경을 위한 패킷 처리 방법의 일 예를 도시한 흐름도이다.
도 2는 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 방법의 일 예를 도시한 도면,
도 3은 본 발명에 따른 다중 스케줄링을 위한 분류 정책의 일 예를 도시한 도면,
도 4는 본 발명에 따른 다중 스케줄링 방법이 적용된 다중 프로세싱 장치의 일 예의 구성을 도시한 도면,
도 5는 본 발명에 따른 다중스케줄링부의 상세 구성의 일 예를 도시한 도면,
도 6은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 일 예를 도시한 흐름도,
도 7은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 다른 일 예를 도시한 흐름도,
도 8은 본 발명에 따른 다중 프로세싱 환경에서 프로세서 그룹 내 스케줄러로 지정된 프로세서의 스케줄링 방법의 일 예를 도시한 흐름도,
도 9는 본 발명에 따른 다중 스케줄링을 위한 프로세서 그룹핑의 일 예를 도시한 도면,
도 10은 본 발명에 따른 다중 스케줄링을 위하여 프로세서를 동적으로 그룹핑하는 방법의 일 예를 도시한 도면,
도 11은 본 발명에 따른 다중 프로세싱을 위한 네트워크 인터페이스 장치를 포함한 시스템의 개략적인 구조의 일 예를 도시한 도면,
도 12는 본 발명에 따른 NIC의 자원을 동적으로 설정하는 방법의 일 예를 도시한 도면,
도 13은 본 발명에 따른 NIC의 일 실시예의 구성을 도시한 도면,
도 14는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 일 예를 도시한 도면,
도 15는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 다른 일 예를 도시한 도면,
도 16은 본 발명에 사용되는 딥패킷의 일 예를 도시한 도면, 그리고,
도 17은 본 발명에 따른 가상 머신 환경을 위한 패킷 처리 방법의 일 예를 도시한 흐름도이다.
이하에서, 첨부된 도면들을 참조하여 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법 및 그 장치에 대해 상세히 살펴본다.
도 1은 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 장치의 일 예를 도시한 도면이다.
도 1을 참조하면, 다중 프로세서 장치(100)는 패킷 식별부(105), 패킷전달부(140), 패킷할당테이블(130), 메모리(104), 복수 개의 큐(110,112,114), 복수 개의 프로세서(120,122,124) 및 제어부(150)를 포함한다.
패킷식별부(105)는 유무선 네트워크 또는 다른 기기로부터 패킷을 수신하고, 수신한 패킷의 플로우(flow)를 식별한다. 또한 패킷식별부(105)는 수신한 패킷 플로우에 할당된 프로세서가 존재하는지 패킷할당테이블(130)을 참조하여 파악한다.
패킷할당테이블(130)은 패킷 플로우별로 각각 할당된 프로세서의 정보를 포함한다. 예를 들어, 패킷할당테이블(130)은 제1플로우와 제2플로우를 처리하기 위한 프로세서로 제1프로세서가 할당되어 있고, 제3플로우를 처리하기 위한 프로세서로 제2프로세서가 할당되어 있다는 정보를 포함한다. 패킷할당테이블(130)에 저장되는 정보는 이후 살필 스케줄러에 의해 생성되고 갱신된다.
메모리(104)는 패킷식별부(105)가 수신한 패킷을 저장한다. 이때 메모리(104)는 패킷식별부(105)에 의해 파악된 패킷의 플로우 정보, 패킷할당테이블(130)을 참조하여 파악한 프로세서 정보 등을 함께 저장할 수 있다.
패킷전달부(140)는 메모리(104)에 저장된 패킷들을 해당 프로세서의 큐에 전달한다. 패킷전달부(140)는 메모리에 저장된 패킷을 순서대로 프로세서 큐에 전달하거나, QoS(Quality of Service), 우선순위(prioirty) 등 다양한 조건 등을 고려하여 비순차적으로 패킷을 프로세서의 큐에 전달할 수도 있다.
큐(110,112,114)는 각 프로세서가 처리할 패킷을 메모리(104)로부터 전달받아 저장한다. 본 실시 예에서 큐(110,112,114)는 프로세서(120,122,124)마다 각각 하나씩 존재하는 것으로 도시하였으나, 반드시 이에 한정되는 것은 아니며 하나의 프로세서에 두 개 이상의 큐가 존재하거나, 또는 하나의 큐를 두 개 이상의 프로세서가 공유할 수 있다. 또는 큐(110,112,114)는 도 11 내지 도 17에 개시된 방법을 통해 그룹핑될 수 있다.
또한 큐(110,112,114)는 선입선출(FIFO) 구조이나, 반드시 이에 한정되는 것은 아니며, 후입선출(LIFO) 또는 우선순위(priority) 기반 출력 등 다양한 형태의 구조로 구현될 수 있는 등 각 프로세서에서 처리할 패킷을 저장할 수 있는 형태이면 된다.
패킷할당테이블(130)에 패킷 플로우 정보가 존재하지 아니한 경우에, 제어부(150)는 복수 개의 프로세서들 중 하나를 스케줄러로 지정한 후 인터럽트 요청 신호를 전송한다. 인터럽트 요청 신호를 수신한 프로세서는 패킷을 처리할 프로세서를 선택하고 패킷할당테이블에 관련 정보를 저장한다.
복수 개의 프로세서(120,122,124)는 각각 패킷을 처리한다. 또한 다중 프로세싱 시스템의 효율과 제조비용의 절감 등을 고려하여 패킷 스케줄링을 위한 별도의 스케줄러를 구비하지 아니하고, 복수 개의 프로세서 중 하나(예를 들어, 프로세서1(120))를 스케줄러로 활용할 수 있다. 복수 개의 프로세서 중 하나를 스케줄러로 활용하는 방법에 대해서는 도 2를 참조하여 살펴본다. 물론 본 실시 예에서 복수 개의 프로세서 외에 별도의 스케줄러를 구비하여 구현할 수도 있다.
도 2는 본 발명에 따른, 단일 스케줄링을 수행하는 다중 프로세싱 방법의 일 예를 도시한 도면이다.
도 1 및 도 2를 함께 참조하면, 패킷식별부(105)는 수신한 패킷을 분석하여 패킷 플로우를 식별한다(S200, S210). 패킷식별부(105)는 패킷할당테이블(130)을 참조하여, 플로우를 처리할 프로세서의 정보가 존재하는지 파악한다(S220). 패킷과 해당 패킷의 플로우 정보, 프로세서 정보 등은 메모리(104)에 저장된다.
패킷할당테이블(130)에 플로우를 처리할 프로세서의 정보가 존재하는 경우(S230), 패킷전달부(140)는 패킷을 해당 프로세서의 큐에 전달한다(S260). 예를 들어, 패킷식별부(105)에 의해 수신 패킷이 제1플로우로 식별되고, 패킷할당테이블(130)에 제1플로우를 처리할 프로세서로 제2프로세서가 할당되어 있다면, 패킷전달부(140)는 패킷을 제2프로세서(122)의 큐(112)로 전달한다.
반면, 패킷할당테이블(130)에 플로우를 처리할 프로세서의 정보가 존재하지 아니하면(즉, 새로운 플로우인 경우)(S230), 제어부(150)는 복수 개의 프로세서 중 스케줄러로 지정된 프로세서에게 인터럽트 요청신호를 전달한다(S240). 제어부(150)는 복수 개의 프로세서들 중 현재 부하가 가장 적은 프로세서를 스케줄러로 지정하거나, 기 설정된 스케줄러 결정 알고리즘을 통하여 스케줄러를 지정하거나, 기 설정된 프로세서를 스케줄러로 지정할 수 있다. 본 실시 예의 경우 프로세서1(120)이 스케줄러로 지정되어 있다.
인터럽트 요청신호를 수신한 프로세서(120)는 이전 수행하던 작업을 중단하고, 스케줄링 동작을 수행한다(S250). 예를 들어, 스케줄러로 지정된 프로세서(120)는 새로운 플로우를 처리할 프로세서를 선택하고(S250), 선택한 프로세서에 대한 정보를 패킷할당테이블(130)에 저장한다(S260). 스케줄러로 지정된 프로세서에 인터럽트 요청이 전달되어 있는 경우, 그 인터럽트가 해제될 때까지 새로 입력되는 패킷 처리를 위한 인터럽트 요청은 불허된다.
또한, 스케줄러로 지정된 프로세서(120)는 프로세서들의 부하 불균형이 일정 수준 이상인 경우 등의 특정 이벤트가 발생하는 경우 또는 주기적으로 종래의 여러 부하분산(load balancing) 알고리즘을 적용하여 각 프로세서간의 부하재분산(re-balancing)을 시도할 수 있다.
도 1,2의 경우, 하나의 스케줄러(120)가 선택되어 해당 작업을 수행하는 동안 시스템으로부터 새로운 인터럽트가 허용되지 않으며, 요청되어 있는 인터럽트가 해제될 때까지 다른 새로운 플로우에 대한 처리가 지연된다. 또한 부하 불균형을 해소하기 위한 부하재분산을 복수 개의 프로세서들 전체에 대해 수행하므로, 플로우 친화도와 부하분포간의 상충성이 더 심화되는 문제점이 있다. 이는 도 4의 다중 스케줄링을 통해 완화될 수 있다.
도 3은 본 발명에 따른 다중 스케줄링을 위한 분류 정책의 일 예를 도시한 도면이다.
도 3을 참조하면, 분류 정책은 복수 개의 프로세서들을 그룹으로 분할하기 위한 정책을 포함한다. 도 4에서 살펴보겠지만, 다중 스케줄링의 경우 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 나누어 각 그룹별로 스케줄링을 수행한다. 이를 위해서는 복수 개의 프로세서들을 그룹으로 나누기 위한 정책이 필요하다.
분류 정책의 일 예로, 도 3에 도시된 바와 같이 패킷 플로우 기반의 정책이 있다. 패킷 플로우를 계층적으로 나눌 수 있는 속성을 기반으로 플로우를 두 그룹 A,B로 분할할 수 있다. 이 경우, 복수 개의 프로세서들은 현재 처리하고 있는 플로우가 어떤 그룹에 속하는지에 따라 두 그룹으로 분할될 수 있다.
또 다른 예로, 각 프로세서들의 부하를 기반으로 하는 분류 정책이 있다. 각 그룹별 부하 분포가 고르게 될 수 있도록 프로세서들을 기 설정된 그룹 수에 따라 분할할 수 있다.
복수 개의 프로세서들을 그룹으로 분할하기 위한 분류 정책은 복수일 수 있다. 예를 들어, 제1 정책은 복수 개의 프로세서들을 플로우 기반으로 두 개의 그룹으로 분할하는 정책이고, 제2 정책은 복수 개의 프로세서들을 플로우 기반으로 세 개의 그룹으로 분할하는 정책이고, 제3 정책은 복수 개의 프로세서들을 부하정도에 따라 적어도 둘 이상의 그룹으로 분할하는 정책일 수 있다.
본 발명은 도 3의 실시 예에 한정되는 것은 아니며, 이 외 각 프로세서들을 분할하기 위한 다양한 분류 정책을 적용할 수 있다. 분류 정책은 미리 설정되어 있으며, 사용자가 별도의 입출력 인터페이스를 통해 분류 정책을 갱신할 수 있다. 도 4에서는 다중 스케줄링을 위하여 복수 개의 프로세서들을 나누는 기준, 즉 분류 정책이 기 설정되어 있다고 가정한다.
도 4는 본 발명에 따른 다중 스케줄링 방법이 적용된 다중 프로세싱 장치의 일 예의 구성을 도시한 도면이다.
도 4를 참조하면, 다중 프로세싱 장치(400)는 패킷식별부(410), 패킷전달부(480), 패킷할당테이블(420), 다중스케줄링부(430), 메모리(440), 복수 개의 큐(450) 및 복수 개의 프로세서(460,462,464,466,470,472,474)를 포함한다.
패킷식별부(410), 패킷전달부(480), 패킷할당테이블(420), 메모리(440), 복수 개의 큐(450)와 프로세서(460,462,464,466,470,472,474) 등은 도 1에서 설명한 구성과 기능을 모두 포함한다. 따라서 본 실시 예는 도 1과 동일한 구성과 기능에 대한 중복 설명은 생략하고, 본 실시예에 따른 다중스케줄링을 위하여 필요한 구성과 기능 위주로 설명한다.
다중스케줄링부(430)는 부하분포 상태, 트래픽 속성, 트래픽 처리 용량 등 다중 프로세싱 시스템의 상태 정보를 기초로 단일 스케줄링을 수행할지 다중 스케줄링을 수행할지를 결정한다. 예를 들어, 다중스케줄링부(430)는 단일 스케줄링을 수행하다가 다중 스케줄링으로 변경하거나, 그 반대로 다중 스케줄링을 수행하다가 단일 스케줄링으로 변경할 수 있다.
다중스케줄링부(430)는 도 3과 같은 분류 정책이 다수 개 존재하는 경우, 상태 정보를 기초로 어떤 분류 정책을 적용할지 결정할 수 있다. 다중스케줄링부(430)는 다중 스케줄링을 수행할 것으로 결정하면, 분류 정책에 따라 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 분류하고, 각 그룹별로 스케줄링을 수행할 스케줄러를 지정한다. 다중스케줄링부의 상세 구성은 도 5에 도시되어 있다.
예를 들어, 도 4의 예와 같이, 다중스케줄링부(430)는 7개의 프로세서들을 두 개의 프로세서 그룹(제1그룹:프로세서1~4, 제2그룹:프로세서5~7)으로 분할하고, 각 그룹 내 하나의 프로세서(466,474)를 기 설정된 스케줄러 결정 알고리즘에 의하여 스케줄러로 지정한다. 다중스케줄링부(430)에서 프로세서들을 그룹별로 분할하게 되면 패킷할당테이블(420)에 프로세서 그룹에 대한 정보를 저장할 수 있다.
예를 들어, 도 3과 같이 플로우 기반으로 프로세서들을 그룹핑하는 경우에, 다중스케줄링부(430)는 플로우가 어느 그룹에 속하는지에 대한 정보를 패킷할당테이블(420)에 저장한다. 새로 수신한 패킷 플로우에 대한 정보가 패킷할당테이블(420)에 존재하지 아니한 경우, 패킷식별부(410)는 새로운 플로우가 어떤 그룹에 속하는지 파악하고 해당 패킷과 해당 패킷에 대한 식별정보를 메모리(440)에 저장한다. 다중스케줄링부(430)는 부하 정도 또는 기 설정된 스케줄러 결정 알고리즘에 의하여 해당 그룹 내에 해당 패킷을 처리할 스케줄러를 지정하고, 지정된 스케줄러에게 해당 패킷을 처리하도록 인터럽트 요청신호를 전송한다. 스케줄러로 지정된 프로세서는, 도 1에서 설명한 바와 같이, 해당 플로우를 처리할 그룹 내 프로세서를 선택하는 등의 스케줄링 동작을 수행한다.
예를 들어, 도 3의 그룹핑 정책에 의해 플로우 그룹 A(300)에 대해 프로세서1~4를 포함하는 프로세서 제1그룹(490)이 할당되어 있고, 플로우 그룹 B(310)에 대해 프로세서5~7을 포함하는 프로세서 제2그룹(495)이 할당되어 있다고 하자. 수신한 패킷의 플로우가 플로우 그룹 A(300)에 속하면, 다중스케줄링부(430)는 프로세서 제1그룹(490)에 속한 프로세서들 중 하나를 스케줄러로 지정하여 해당 그룹(490) 내 스케줄링 동작이 수행될 수 있도록 한다. 이때 프로세서 제2그룹(495)은 제1그룹(490)의 스케줄링 동작 여부와 무관하게 새로운 패킷의 처리 또는 스케줄링 동작을 수행할 수 있어 전체 프로세서의 처리 효율이 향상된다. 다시 말해, 프로세서 제1그룹(490)과 프로세서 제2그룹(495)의 스케줄링 동작이 병렬로 수행될 수 있다.
또 다른 예로, 다중 스케줄링에 있어서, 프로세서들의 그룹핑은 프로세서의 부하나 여러 정책 등에 따라 수시로 변경될 수 있으며, 그룹핑되지 아니한 프로세서들을 새로운 수신 패킷의 플로우를 위한 프로세서 그룹으로 새롭게 그룹핑할 수 있다. 이에 대해서는 도 9 및 도 10에서 다시 설명한다.
도 5는 본 발명에 따른 다중스케줄링부의 상세 구성의 일 예를 도시한 도면이다.
도 5를 참조하면, 다중스케줄링부(430)는 정책판단부(500), 그룹분할부(510), 스케줄러지정부(520)를 포함한다.
정책판단부(500)는 다중 프로세싱 환경의 여러 상태 정보, 예를 들어, 부하분포상태, 트래픽 속성, 트래픽 처리 용량 등의 정보를 이용하여 단일 스케줄링 또는 다중 스케줄링을 결정한다. 또한 정책판단부(500)는 다중 스케줄링을 수행하는 경우 복수 개의 프로세서들을 어떻게 분할할지, 또는 분할된 그룹별 어떤 정책을 적용할지를 결정한다.
예를 들어, 정책 판단부(500)는 다중 프로세싱 장치의 전체 트래픽 처리 용량이 일정 수준 이하인 경우에 다중 스케줄링을 수행할 것으로 결정하고, 분류 정책으로 도 3과 같은 플로우 기반의 정책을 선택할 수 있다.
그룹분할부(510)는 정책판단부(500)에 의해 결정된 분류 정책에 따라 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 분할한다.
스케줄러지정부(520)는 부하 정도 또는 기 설정된 스케줄러 선택 알고리즘에 의하여 각 그룹 내 프로세서들 중 하나를 스케줄러로 지정한다. 예를 들어, 스케줄러지정부(520)는 각 그룹별로 부하가 가장 적은 프로세서를 스케줄러로 지정할 수 있다. 이외 특정 프로세서를 스케줄러로 고정하거나 다른 여러 선택 방법을 적용하여 동적으로 스케줄러를 지정할 수 있다.
도 6은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 일 예를 도시한 흐름도이다.
도 4 및 도 6을 함께 참조하면, 다중스케줄링부(430)는 트래픽 용량이나, 플로우 속성, 부하 분포 상태 등 여러 상태 정보를 파악한다(S600). 이러한 상태 정보를 기초로 다중스케줄링부(430)는 단일 스케줄링을 수행할지 아니면 다중스케줄링을 수행할지 여부를 판단한다(S610). 단일 스케줄링을 수행하는 경우, 다중 스케줄링부(430)는 복수 개의 프로세서들 중 하나를 스케줄러로 지정한다. 다중 스케줄링을 수행하는 경우, 다중스케줄링부(430)는 분류 정책에 따라 복수 개의 프로세서들을 적어도 둘 이상의 그룹으로 분할하고(S620), 각 그룹별로 스케줄러로 동작할 프로세서를 지정한다(S630). 각 그룹별로 지정된 프로세서는 도 1과 같이, 인터럽트 요청 신호에 따라 해당 패킷에 대한 스케줄링 작업을 하되, 전체 프로세서들을 대상으로 스케줄링을 수행하는 것이 아니라 자신이 속한 그룹 내 프로세서들에 대해서만 스케줄링을 수행한다. 따라서, 둘 이상으로 분할된 각 그룹은 그룹별로 지정된 스케줄러에 의하여 독립적으로 동시에 스케쥴링 작업이 수행 가능하다. 다시 말해, 각 그룹별 스케줄러는 다중스케줄링부(430)로부터 각각 인터럽트 신호를 수신하며, 다른 그룹의 스케줄러에 대한 인터럽트의 해제 여부와 관계없이 패킷 처리를 위한 프로세서의 선택 등과 같은 스케줄링 작업을 수행할 수 있다. 그리고 분할된 각 그룹은 필요에 따라 독립적으로 서로 다른 정책 또는 알고리즘이 적용될 수 있다.
도 7은 본 발명에 따른 다중 프로세싱 환경에서의 다중 스케줄링 방법의 다른 일 예를 도시한 흐름도이다. 도 7은 앞서 살핀 다중스케줄링부에 의해 복수 개의 프로세서들이 그룹핑되어 있는 경우를 가정한다.
도 4 및 도 7을 참조하면, 패킷식별부(410)는 패킷을 수신하면(S700), 패킷을 분석하여 플로우를 식별한다(S710). 패킷할당테이블(420)에 해당 플로우에 대한 정보가 존재하는 경우에(S730), 패킷식별부(410)는 새로운 플로우가 어떤 그룹에 속하는지 등을 파악하고 해당 패킷과 해당 패킷에 대한 식별정보를 메모리(440)에 저장한다. 다중스케줄링부(430)는 해당 스케줄러에게 해당 패킷을 처리하도록 인터럽트 요청신호를 전송한다.
패킷할당테이블(420)에 해당 플로우에 대한 정보가 존재하지 아니한 경우에(S730), 다중스케줄링부(430)는 분류 정책을 참조하여 플로우가 속한 그룹을 파악한다(S740). 예를 들어, 프로세서 그룹이 도 3과 같은 플로우 기반으로 나누어지는 경우, 다중스케줄링부(430)는 플로우를 계층적으로 구분하는 상위 속성을 기준으로 새롭게 인식한 플로우가 어느 그룹에 속하는지 파악한다. 또 다른 예로서, 프로세서 그룹이 부하 분포에 따라 나누어지는 경우, 다중스케줄링부(430)는 부하가 상대적으로 낮은 그룹을 새롭게 인식한 플로우가 속하는 그룹으로 선택할 수 있다.
다중스케쥴링부(430)는 새로운 플로우가 어떤 그룹에 속하는지 파악한 후, 부하 정도 또는 기 설정된 스케줄러 결정 알고리즘을 이용하여 해당 그룹 내에 해당 패킷을 처리할 스케줄러를 지정하고, 지정된 스케쥴러에게 해당 패킷을 처리하도록 인터럽트 요청신호를 전송한다.
인터럽트 신호를 수신한 프로세서는 스케줄러로 동작하며, 새로운 플로우를 처리할 프로세서를 선택하고, 관련 정보를 패킷할당테이블(420)에 저장한다(S750, S760)).
예를 들어, 도 4를 다시 참조하면, 새로운 플로우가 프로세서1~4로 구성된 그룹에 할당되는 경우, 다중스케줄링부(430)는 스케줄러로 지정된 프로세서4(466)에게 인터럽트 신호를 전송한다. 프로세서4(466)는 기 지정된 프로세서 결정 알고리즘에 의하여 해당 패킷을 처리할 프로세서로 프로세서1(460)을 선택하고 해당 정보를 패킷할당테이블(420)에 저장한다. 이후 동일 플로우의 패킷이 수신된 경우에 패킷전달부(480)는 해당 패킷을 프로세서1(460)에 전달한다.
도 8은 본 발명에 따른 다중 프로세싱 환경에서 프로세서 그룹 내 스케줄러로 지정된 프로세서의 스케줄링 방법의 일 예를 도시한 흐름도이다.
도 8을 참조하면, 복수의 프로세서는 인터럽트 신호를 수신하기 이전에는 일반적인 플로우 처리 과정 등을 수행한다(S800). 새롭게 수신한 패킷의 플로우에 할당된 프로세서 그룹 또는 프로세서가 존재하면, 다중스케줄링부(430)는 기 지정된 프로세서 그룹 또는 프로세서에 플로우를 할당한다. 새롭게 수신한 패킷의 플로우에 할당된 프로세서 그룹 또는 프로세서가 존재하지 아니하면, 다중스케줄링부(430)는 새로운 패킷의 플로우를 위한 프로세서 그룹을 생성한 후 새롭게 생성한 프로세서 그룹 내 어느 하나의 프로세서에게 인터럽트 신호를 전송한다(S810).
인터럽트 신호를 수신한 프로세서는 이전에 수행하던 동작을 멈추고(S820), 새로운 패킷 플로우를 어떤 프로세서에게 할당할지를 결정하는 스케줄링 동작을 수행한 후(S830), 인터럽트 신호 수신 전에 수행하던 동작을 다시 재개한다(S840). 다중스케줄링부(430)는 인터럽트 신호를 프로세서 그룹별로 각각 전송할 수 있으며, 따라서 각 프로세서 그룹은 동시에 각각 스케줄링 동작을 수행할 수 있다.
도 9는 본 발명에 따른 다중 스케줄링을 위한 프로세서 그룹핑의 일 예를 도시한 도면이다.
도 9를 참조하면, 다중스케줄링부(430)는 단일 스케줄링의 경우에는 복수의 프로세서들(900) 중 어느 하나를 스케줄러로 지정하며, 다중 스케줄링의 경우에는 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 그룹(910,920)으로 그룹핑하고 각 그룹별 스케줄러를 지정한다.
다중스케줄링부(430)는 프로세서들의 부하 상태나 기 설정된 여러 가지 정책에 따라 새로운 프로세서 그룹을 생성하거나 기존 프로세서 그룹을 갱신할 수 있다.
예를 들어, 다중 스케줄링의 경우, 다중스케줄링부(430)는 복수의 프로세서들을 프로세서1~3의 제1그룹(910), 프로세서4~5의 제2그룹(920)의 두 그룹으로 그룹핑되고 나머지 프로세서들을 그룹핑하지 아니할 수 있다.
다중 스케줄링 동작 중에, 새로운 프로세서 그룹의 생성이 필요한 경우에, 다중스케줄링부(430)는 현재 그룹핑되지 아니한 프로세서들 전체 또는 그 일부를 그룹핑하여 새로운 프로세서 그룹을 생성하거나 기존 프로세서 그룹들을 변경하여 새로운 프로세서 그룹을 생성할 수 있다.
또 다른 예로, 다중스케줄링부(430)는 다중 스케줄링 동작 중에 이미 그룹핑되어 있는 그룹, 예를 들어, 프로세서1~3의 제1그룹(910)과 프로세서4~5의 제2그룹(920)에 새로운 프로세서를 추가하거나 그룹 내 프로세서 중 일부를 그룹에서 제외하는 등의 갱신 동작을 수행할 수 있다.
도 10은 본 발명에 따른 다중 스케줄링을 위하여 프로세서를 동적으로 그룹핑하는 방법의 일 예를 도시한 도면이다.
도 10을 참조하면, 다중스케줄링부(430)는 수신한 패킷의 플로우를 위한 새로운 프로세서 그룹이 필요하거나, 이전 프로세서 그룹의 변경이 필요하면, 프로세서 그룹을 새롭게 생성하거나 기존 프로세서 그룹을 갱신한다(S1000). 예를 들어, 새롭게 수신한 패킷의 플로우에 할당된 프로세서 그룹이나 프로세서가 존재하지 아니한 경우에, 다중스케줄링부(430)는 프로세서들 중 그룹핑되지 아니한 프로세서들 전체나 그 일부를 새로운 프로세서 그룹으로 생성한다. 또 다른 예로, 프로세서 그룹 내 부하 정도 또는 전체 프로세서 부하 정도가 일정 수준에 이르거나 기 설정된 정책에 따라, 다중스케줄링부(430)는 프로세서 그룹 전체를 다시 새롭게 구성하거나, 특정 프로세서 그룹에 새로운 프로세서를 추가하거나 그룹 내 기존 프로세서 중 적어도 하나를 그룹에서 제외할 수 있다.
다중스케줄링부(430)는 생성 또는 갱신된 프로세서 그룹 내 어느 하나의 프로세서를 스케줄러로 지정한다(S1010). 각 그룹 내 어느 하나의 프로세서는 항상 스케줄러로 동작하는 것이 아니라 도 8에서 설명한 바와 같이 인터럽트 신호를 수신한 경우에만 스케줄러로 동작하고, 스케줄링 동작이 완료되면 다른 일반적인 프로세서와 동일한 동작을 수행한다.
지금까지는 주로 복수 개의 프로세서들을 그룹핑하여 스케줄링하는 방법에 대해 살펴보았으나, 이하에서는 주로 복수 개의 프로세서와 연결된 큐들을 그룹핑하여 스케줄링하는 방법에 대해 살펴본다. 도 1~10의 기술적 구성이 도 11~17의 기술적 구성에 부가되거나 반대로 도 11~17의 구성이 도 1~10의 구성에 부가될 수 있다. 다시 말해, 도 1~10에서 설명한 복수 개의 프로세서의 그룹핑과 도 11~17에서 설명할 복수 개의 큐의 그룹핑이 동시에 수행될 수도 있다. 다중 프로세싱 장치는 네트워크 인터페이스 장치로 구현될 수 있다.
도 11은 본 발명에 따른 다중 프로세싱을 위한 네트워크 인터페이스 장치를 포함한 시스템의 개략적인 구조의 일 예를 도시한 도면이다.
도 11을 참조하면, 네트워크 인터페이스 장치는 네트워크 인터페이스 카드(Network Interface Card, NIC)(1100)로 구현된다. 다만 네트워크 인터페이스 장치는 네트워크 인터페이스 카드(1100)에 반드시 한정되는 것은 아니며, 서버 내외에서 하드웨어 또는 소프트웨어 등의 다양한 형태로 구현될 수 있다. 설명의 편의를 위하여 이하, 네트워크 인터페이스 장치를 NIC로 표현한다.
서버(1120)는 복수 개의 가상 머신(1150,1152,1154)과, 가상 스위치(1140) 및 연결슬롯(1130)을 포함한다. 가상 스위치(1140)는 NIC(1100)를 통해 수신한 패킷을 목적지 가상 머신으로 전달한다. 연결슬롯(130)은 NIC(1100)와 서버(1120)를 연결하는 인터페이스이며, 일 예로 PCIe(Peripheral Component Interconnect Express)로 구현될 수 있다. 이 경우, NIC(1100)는 PCIe 슬롯에 탈부착될 수 있다.
NIC(1100)는 네트워크(1110)로부터 수신한 패킷의 상위 계층의 트래픽 특성을 분석하여 플로우를 식별하고, 식별한 플로우를 다중 프로세서를 통해 병렬 처리한다. 여기서 패킷은 복수의 가상 머신에 전달될 수 있도록 종래의 다양한 터널링과 같은 기법 등을 이용하여 가상 네트워크 계층(Layer) 정보를 인캡슐레이션(encapsulation)한 패킷을 의미한다. 이하에서는 본 실시 예에서 사용되는 가상 네트워크 계층 정보를 인캡슐레이션한 패킷을 딥패킷이라고 한다. 또한 딥패킷의 가상 네트워크 계층 정보를 이용하여 파악한 플로우를 딥플로우라하고 명칭한다.
딥플로우는 딥패킷의 물리적 네트워크 프레임을 제거한 가상머신간 네트워크 프레임에서의 상위 계층(vL3 이상) 트래픽 속성에 따라 분류된 가상 환경에서의 특정 트래픽으로 정의할 수 있다. 딥플로우는 기 설정된 여러 정책에 따라 분류되고 식별될 수 있다. 예를 들어, 패킷분석부(1310)는 가상 머신의 TCP 플로우를 딥플로우로 식별할 수 있다. 딥패킷의 구조에 대해서는 도 16을 참조하여 설명한다.
NIC(1100)는 수신한 딥패킷을 병렬 처리하기 위한 복수 개의 큐와 복수 개의 프로세서들을 포함하며, 큐의 크기와 개수 등은 고정되거나, 딥플로우에 관한 정보, 서버의 가상화 환경 정보, 프로세서들의 부하 등에 따라 동적으로 변경될 수 있다.
도 12는 본 발명에 따른 NIC의 자원을 동적으로 설정하는 방법의 일 예를 도시한 도면이다.
도 11 및 도 12를 함께 참조하면, NIC(1100)가 서버(1120)의 연결슬롯(1130)에 부착되어 서버(1120)와 연결되는 경우(S1200), NIC(1100)는 서버(1120)로부터 가상 머신의 수를 포함한 가상화 환경 정보를 수신한다(S1210). NIC(1100)는 딥플로우에 관한 정보, 수신한 가상화 환경 정보 또는 프로세서의 부하분포 등에 따라 큐의 크기와 개수, 큐 그룹의 생성 등 자원을 동적으로 설정한다(S1220).
예를 들어, NIC(1100)가 서버(1120)로부터 가상 머신이 4개라는 가상화 환경 정보를 수신하는 경우, NIC(1100)는 12개의 큐를 각 가상 머신별로 3개씩 할당할 수 있다. 또 다른 예로, NIC(1100)는 딥플로우에 관한 정보를 기초로 딥플로우를 두 개의 그룹으로 분할하고 각 그룹에 6개의 큐를 할당할 수 있다. 가상 머신별 할당되는 큐의 개수나 각 큐의 크기 등은 기 설정된 규칙에 따라 다양하게 설정될 수 있다.
도 13은 본 발명에 따른 NIC의 일 실시예의 구성을 도시한 도면이다.
도 13을 참조하면, NIC(1100)는 패킷수신부(1300), 패킷분석부(1310), 메모리(1320), 복수 개의 큐(1330), 복수 개의 프로세서(1340), 스케줄러(1350), 모니터링부(1360) 및 큐 관리부(1370)를 포함한다. 패킷수신부(1300) 등을 포함한 각 구성요소 사이의 연결선은 본 발명의 이해를 돕기 위한 하나의 예일 뿐이며, 큐 관리부(1370)와 모니터링부(1360) 사이의 연결, 스케줄러(1350)와 복수 개의 큐(1330) 사이의 연결 등 다양한 연결 관계가 설정될 수 있음은 물론이다.
패킷수신부(1300)는 외부 네트워크에서 일반적인 이더넷 프레임으로 인식되도록 종래의 다양한 터널링과 같은 방법 등을 통해 인캡슐레이션된 딥패킷을 수신하면 이를 디캡슐레이션하여 물리적 네트워크에 해당하는 헤더 부분을 제거하고 가상화 환경에서의 데이터 패킷 프레임을 복원한다.
패킷분석부(1310)는 디캡슐레이션된 딥패킷의 딥플로우를 식별한다. 딥플로우를 식별하기 위해서는 가상화 환경에서의 데이터링크계층(vL2 레이어)만이 아니라 네트워크계층(vL3 레이어) 이상의 상위 계층까지 해석되어야 한다. 이를 위해, 패킷분석부(1310)는 DPI(Deep Packet Insepection) 과정을 통해 디캡슐레이션된 딥패킷의 가상 데이터링크계층(vL2 레이어)부터 가상 애플리케이션계층(vL7 레이어)까지 분석하여, 딥플로우를 식별한다. 딥플로우 식별을 위한 딥패킷에 대한 분석은 가상 데이터링크계층부터 가상 애플리케이션계층 모두를 분석하는 것으로 한정되는 것은 아니며, 딥플로우 식별 정책에 따라 분석의 범위는 달라질 수 있다.
메모리(1320)는 딥패킷과 패킷분석부(1310)에 의해 식별된 딥플로우 정보 등을 저장하고, 또한 딥플로우와 큐 사이의 맵핑관계를 나타내는 플로우 테이블을 저장하고 관리한다.
일 실시 예로, 패킷수신부(1300)은 디캡슐레이션된 딥패킷을 메모리(1320)에 저장하고, 딥패킷의 저장 사실을 패킷분석부(1310)에 통보한다. 그러면 패킷분석부(1310)는 메모리(1320)에 저장된 해당 딥패킷에 대한 딥플로우 식별을 수행한다. 즉, 새로운 딥패킷의 수신 사실을 알게 된 패킷분석부(1310)는 기 설정된 정책에 따라 해당 딥패킷의 딥플로우 특성을 식별하여 그 정보를 저장하고 저장 사실을 스케줄러(1350)에 알려준다.
스케줄러(1350)는 식별된 딥플로우들을 각각 해당하는 큐에 할당하며, 각 큐를 다중 프로세서(1340)에 병렬 할당한다. 보다 구체적으로, 스케줄러(1350)는 메모리(1320)에 저장된 플로우 테이블을 참조하여 딥패킷의 딥플로우가 맵핑된 큐를 검색하고, 메모리(1320)에 저장된 딥패킷을 검색된 큐에 전달한다. 만약 테이블에 수신한 딥패킷의 딥플로우에 대한 맵핑정보가 존재하지 않는다면, 스케줄러(1350)는 종래의 다양한 방법을 통해 딥플로우를 특정 큐에 할당하고, 딥플로우와 큐사이의 맵핑관계를 플로우 테이블에 저장한다.
스케줄러(1350)는 가상 머신별 딥패킷을 딥플로우 단위로 큐잉할 수 있다. 예를 들어, 딥플로우와 큐 사이의 맵핑 관계를 설정할 때, 제1 가상머신과 제2 가상머신을 향하는 동일한 성격(예를 들어, 동일한 QoS 우선순위)의 제1 플로우와 제2 플로우가 동일한 큐에 할당될 수 있다. 본 발명이 이러한 경우를 배제하는 것은 아니나 병렬 처리의 효율을 보다 높이기 위하여, 딥플로우를 가상 머신별로 서로 다른 그룹의 큐에 할당하는 것이 바람직하다. 다시 말해, 스케줄러(1350)는 도 14와 같은 가상머신별로 큐들을 그룹핑하는 경우에, 제1 가상머신에 대한 제1 플로우는 제1 그룹(1400)의 큐에 딥플로우 단위로 할당하고, 제2 가상머신에 대한 제2 플로우는 제2 그룹(1410)의 큐에 딥플로우 단위로 할당한다.
예를 들어, 새로운 딥패킷이 메모리(1320)에 적재되었다는 사실과 해당 딥패킷의 딥플로우 정보를 수신하면, 스케줄러(1350)는 플로우 테이블을 참조하여 딥플로우가 어떤 큐에 할당되어 있는지를 검색하고, 메모리(1320)에 적재되어 있는 딥패킷을 검색된 해당 큐에 적재할 수 있도록 한다. 만약 식별된 딥플로우에 대한 정보를 플로우 테이블에서 찾을 수 없는 경우, 스케줄러(1350)는 해당 딥패킷을 기 설정된 정책에 따라 해당 가상 머신에 속한 큐 중 하나에 할당할 수 있다. 여기서 기 설정된 정책은 실시 예에 따라 다양할 수 있으며, 일 예로 플로우 친화도를 고려하여 큐를 선택하는 정책, 딥패킷이 전송될 가상 머신 내 큐 중 가장 부하가 적은 큐를 선택하는 정책, 사용율이 가장 낮은 프로세서에 할당되어 있는 큐를 선택하는 정책 등이 있다.
복수 개의 큐(1330)는 각각 적어도 하나 이상의 딥플로우와 맵핑된다. 딥플로우 단위로 큐잉하는 경우 프로세서 친화도가 높아지며, 이에 따라 병렬 처리의 효율도 증가한다. 복수 개의 큐(1330)는 가상 머신별로 적어도 하나 이상의 큐를 포함하는 그룹으로 분할될 수 있다. 또한 복수 개의 큐(1330)는 도 15와 같이 적어도 두 개 이상의 파티션으로 분할될 수 있다.
스케줄러(1350)는 복수 개의 프로세서 중에서 선택된 프로세서일 수 있다. 예를 들어, 전체 프로세서들(1370) 중 특정 프로세서(1350)를 스케줄러로 지정하거나, 각 프로세서들의 부하 정도를 모니터링부(1360)를 통해 파악한 후 부하가 가장 적은 프로세서를 스케줄러(1350)로 선택할 수 있다. 이 외에도 스케줄러를 선택하기 위한 다양한 방법이 적용될 수 있다. 프로세서 중 스케줄러가 지정되는 경우, 제어부(미도시)는 도 8에 도시된 방법과 같이, 스케줄링이 필요할 때마다 인터럽트 신호를 발생하여 스케줄러로 지정된 프로세서에 전송하고, 인터럽트 신호를 수신한 프로세서는 하던 작업을 중지하고 스케줄러로서 동작을 완료한 후 다시 이전 작업을 수행한다.
복수 개의 프로세서들(1340)은 각 큐에 저장된 딥패킷을 병렬 처리하여 서버의 가상 머신으로 전송한다. 복수 개의 프로세서들에 대해 도 1 내지 도 10에서 살핀 단일 스케줄링 또는 다중 스케줄링 방법이 적용될 수 있다. 즉 복수 개의 프로세서들은 그룹핑되어 각 그룹마다 스케줄링될 수 있다. 복수 개의 프로세서들(1340)은 적어도 하나 이상의 큐와 연결된다.
예를 들어, 복수 개의 프로세서들(1340)은 플로우 친화도를 고려하여 큐와 연결된다. 다시 말해, 동일하거나 유사한 딥플로우 속성을 갖는 딥패킷을 저장하는 큐들을 묶어 프로세서와 연결한다.
또 다른 예로서, 복수 개의 프로세서들(1340)은 가상 머신별로 큐와 연결될 수 있다. 도 14를 참조하면, 제1 프로세서는 제1 가상머신에 할당된 제1 내지 제3 큐(1400)와 연결되고, 제2 프로세서는 제2 가상머신에 할당된 제4 내지 제6 큐(1410)와 연결되고, 제3 프로세서는 제3 가상머신에 할당된 제7 및 제8 큐(1420)에 연결될 수 있다.
또 다른 예로서, 제1 프로세서는 제1 가상머신에 할당된 제1 내지 제3 큐와 함께 제2 가상머신에 할당된 제4 큐와 연결되고, 이 경우 제2 프로세서는 제2 가상머신에 할당된 제5 및 제6큐와 연결될 수 있다. 즉, 프로세서는 적어도 둘 이상의 가상머신에 할당된 큐의 전부 또는 일부와 연결될 수도 있다.
모니터링부(1360)는 프로세서(1340)와 큐(1330)의 부하 등을 포함한 각종 상태를 모니터링한다.
큐 관리부(1370)는 모니터링 결과에 따라 큐들을 도 15와 같이 복수의 파티션으로 분할하고 각 파티션마다 스케줄러를 두어 처리하거나, 복수의 큐를 하나로 합치거나 분할하고, 또는 가상머신에 할당된 큐의 수를 늘리거나 줄이는 등 큐의 크기와 개수 등을 조정한다. 큐 관리부는 앞서 살핀 도 12의 과정을 통해 파악된 서버의 가상화 환경 등에 따라서도 가상머신별 큐의 개수나 크기 등을 동적으로 설정할 수 있다.
도 14는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 일 예를 도시한 도면이다.
도 14를 참조하면, 큐들(1330)은 가상 머신별로 구분된다. 예를 들어, 제1 내지 제3 큐(1400)는 제1 가상머신에 할당되고, 제4 내지 제6 큐(1410)는 제2 가상머신에 할당되고, 제7 및 제8 큐(1420)는 제3 가상머신에 할당된다. 스케줄러는 가상 머신별로 딥플로우를 참조하여 큐잉을 수행한다.
예를 들어, 제1 가상머신으로 향하는 딥플로우를 우선순위에 따라 식별하는 경우에, 스케줄러(1350)는 제1 가상머신에 할당된 제1 내지 제3 큐(400)에 우선순위를 기반으로 딥패킷을 분류하여 저장한다. 즉 제1 가상머신으로 향하는 딥플로우중에서 우선순위가 가장 높은 딥플로우는 제1 큐에 저장하고, 그 다음 우선순위의 딥플로우는 제2 큐에 저장하고, 나머지 우선순위의 딥플로우는 제3 큐에 저장한다.
도 15는 본 발명에 따른 NIC의 딥플로우 기반 큐 할당의 다른 일 예를 도시한 도면이다.
도 15를 참조하면, 큐들(1330)은 적어도 둘 이상의 파티션(1520,1530)으로 구분된다. 각 파티션(1520,1530)마다 스케줄러(1500,1510)가 할당된다. 예를 들어, 제1 파티션(1520)에 제1 스케줄러(1500)가 할당되고, 제2 파티션(1530)에 제2 스케줄러(1510)가 할당된다. 각 스케줄러(1500,1510)는 할당된 파티션에 대하여 독립적으로 스케줄링 작업을 병렬 수행한다. 본 실시 예는 큐들(1330)을 두 개의 그룹(1520,1530)으로 그룹핑하는 예를 도시하고 있으나, 실시 예에 따라 세 개 이상의 그룹으로 그룹핑될 수 있으며, 각 그룹의 스케줄링은 도 1 내지 도 10에서 설명한 다중 스케줄링 방법이 적용될 수 있다. 스케줄러는 앞서 설명한 바와 같이 복수 개의 프로세서들(1370) 중 소정의 방법에 의해 선택된 프로세서일 수 있다.
예를 들어, 도 13과 같이 하나의 스케줄러에 의한 스케줄링 수행 중에, 모니터링부에서 측정한 큐의 부하분포가 기 설정된 임계치 이하로 떨어지면, 큐의 재분배 또는 프로세서 재할당이 결정될 수 있다. 또는 네트워크로부터 수신되는 딥패킷의 통계적 양과 NIC 내의 총 프로세서에 의해 수행되는 프로세서 능력을 계산하여 프로세서의 부하가 어느 임계치 이하이면 큐의 재분배 또는 프로세서 재할당이 결정될 수 있다. 큐의 재분배 또는 프로세서 재할당시, 도 15와 같이 큐가 복수 개의 파티션으로 구분되고 추가적인 스케줄러의 지정이 필요한 경우, 가장 부하가 적은 프로세서를 추가 스케줄러로 지정할 수 있다.
각 파티션에 속한 큐들은 가상머신 기반으로 그룹핑(1540)될 수 있으며, 그룹(1540) 내 큐들은 딥플로우 기반으로 분류될 수 있다. 이 경우, 파티션 - 가상머신별 그룹 - 각 그룹별 플로우 단위 큐의 계층적 구조가 생성된다.
도 16은 본 발명에 사용되는 딥패킷의 일 예를 도시한 도면이다.
도 16을 참조하면, 딥패킷은 물리적 네트워크 프레임(1610), 터널링 필드(1620), 가상머신간 네트워크 프레임(1630), 데이터 필드(1600)를 포함한다.
물리적 네트워크 프레임(1610)은 L2, IP, TCP 등 종래의 물리적 네트워크의 계층을 나타내는 정보를 포함한다. 터널링 필드(1620)는 터널링 정보 등을 나타낸다. 가상머신간 네트워크 프레임(1630)은 가상머신간 네트워크 환경에서의 각 계층(vL2 ~ vL7 등)에 대한 정보를 포함한다. 데이터 필드(1600)는 데이터를 포함한다.
도 16의 딥패킷의 구조는 본 발명의 이해를 돕기 위한 하나의 예일 뿐, 본 발명이 이에 한정되는 것은 아니며 가상 머신 환경을 위한 다양한 형태의 딥패킷의 구조를 정의하여 사용할 수 있다.
또한 메모리에 저장된 딥패킷의 구조와 큐에 저장된 딥패킷의 구조는 실시 예에 따라 동일하거나 다를 수 있다. 예를 들어, 네트워크로부터 수신한 도 16의 딥패킷을 가상 머신 환경에서 처리 가능한 최적의 구조로 변경하거나 딥패킷의 필드 중 가상 머신 환경에서 불필요한 필드의 일부 또는 전부를 삭제하는 등 다양하게 설계 변경하여 큐에 저장할 수 있다.
도 17은 본 발명에 따른 가상 머신 환경을 위한 패킷 처리 방법의 일 예를 도시한 흐름도이다.
도 17을 참조하면, 네트워크 인터페이스 장치는 딥패킷을 수신하면(S1700), DPI 과정 등을 통해 딥패킷을 분석하여 딥패킷이 전달되어야 할 목적지 가상 머신과 딥플로우를 식별한다(S1710). 네트워크 인터페이스 장치는 가상 머신별로 할당된 적어도 한 개 이상의 큐에 대해 딥플로우 단위로 딥패킷을 저장한다(S1720). 그리고 네트워크 인터페이스 장치는 복수 개의 프로세서들을 통해 각 큐에 저장된 딥패킷을 처리하여 가상 머신으로 전송한다(S1730).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 다양한 형태의 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
Claims (10)
- 다중 프로세싱 장치에서의 스케줄링 방법에 있어서,
복수의 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 프로세서 그룹으로 그룹핑하는 단계; 및
수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하면, 상기 플로우를 기 지정된 프로세서 그룹 또는 프로세서에 할당하는 단계; 및
수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 않으면, 상기 플로우를 위한 새로운 프로세서 그룹을 생성하여 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법. - 다중 프로세싱 장치에서의 스케줄링 방법에 있어서,
복수의 프로세서들 전체 또는 그 일부를 적어도 하나 이상의 프로세서 그룹으로 그룹핑하는 단계; 및
수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하면, 상기 플로우를 기 지정된 프로세서 그룹 또는 프로세서에 할당하는 단계; 및
수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 않으면, 어느 프로세서 그룹에도 속하지 않은 프로세서에 상기 플로우를 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법. - 제 1항에 있어서, 상기 새로운 프로세서 그룹을 생성하는 할당하는 단계는,
복수의 프로세서들 중 그룹핑되지 아니한 프로세서들 전체 또는 그 일부를 새로운 프로세서 그룹으로 그룹핑하는 단계; 및
새로운 프로세서 그룹에 수신한 패킷의 플로우를 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법. - 제 1항에 있어서,
프로세서 그룹별로 프로세서 그룹 내 프로세서들 중 하나에 인터럽트 신호를 전송하는 단계; 및
인터럽트 신호를 수신한 프로세서는 이전 수행하던 작업을 중단하고, 스케줄링 동작을 수행한 후 다시 이전 수행하던 작업을 재개하는 단계;를 더 포함하는 것을 특징으로 하는 스케줄링 방법. - 다중 프로세싱 장치에서의 스케줄링 방법에 있어서,
복수의 프로세서들의 부하상태나 처리용량 또는 수신 패킷의 속성을 기초로 단일 스케줄링 또는 다중 스케줄링을 결정하는 단계;
상기 단일 스케줄링의 경우에, 복수의 프로세서들 중 하나를 스케줄러로 지정하는 단계; 및
상기 다중 스케줄링의 경우에, 복수의 프로세서들을 적어도 둘 이상의 프로세서 그룹으로 그룹핑하고, 각각의 프로세서 그룹 내 프로세서들 중 하나를 각각의 프로세서 그룹의 스케줄러로 지정하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법. - 제 5항에 있어서,
상기 다중 스케줄링의 경우에, 수신한 패킷의 플로우에 대해 기 지정된 프로세서 그룹 또는 프로세서가 존재하지 아니하면, 상기 플로우를 위한 새로운 프로세서 그룹을 생성하는 단계;를 더 포함하는 것을 특징으로 하는 스케줄링 방법. - 제 6항에 있어서, 상기 새로운 프로세서 그룹을 생성하는 단계는,
복수의 프로세서들 중 그룹핑되지 아니한 프로세서들 전체 또는 그 일부를 새로운 프로세서 그룹으로 생성하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법. - 다중 프로세싱 환경에서의 스케줄링 방법에 있어서,
하나 이상의 큐를 가상머신별로 그룹핑하는 단계;
수신한 딥패킷의 목적지 가상머신과 딥플로우를 식별하는 단계; 및
상기 목적지 가상머신과 딥플로우를 기초로 상기 수신한 딥패킷을 해당하는 큐에 할당하는 단계;를 포함하는 것을 특징으로 하는 스케줄링 방법. - 복수의 프로세서들의 부하상태나 처리용량 또는 수신 패킷의 속성을 기초로 단일 스케줄링 또는 다중 스케줄링을 결정하는 정책판단부; 및
상기 단일 스케줄링의 경우에 복수의 프로세서들 중 하나를 스케줄러로 지정하고, 상기 다중 스케줄링의 경우에 복수의 프로세서들을 적어도 둘 이상의 프로세서 그룹으로 그룹핑하고 각 프로세서 그룹별 스케줄러를 지정하는 스케줄러지정부;를 포함하는 것을 특징으로 하는 스케줄링 장치. - 제 1항 내지 제 8항 중 어느 한 항에 기재된 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/760,374 US10530846B2 (en) | 2014-06-26 | 2015-06-12 | Scheduling packets to destination virtual machines based on identified deep flow |
PCT/KR2015/005914 WO2015199366A1 (ko) | 2014-06-26 | 2015-06-12 | 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치 |
CN201580003775.7A CN105900063B (zh) | 2014-06-26 | 2015-06-12 | 多处理环境中的调度方法和装置 |
JP2017520838A JP2017521806A (ja) | 2014-06-26 | 2015-06-12 | 多重プロセッシング環境でのスケジューリングの方法及びその装置 |
EP15811135.1A EP3163442A4 (en) | 2014-06-26 | 2015-06-12 | Method for scheduling in multiprocessing environment and device therefor |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140039085 | 2014-04-02 | ||
KR20140039085 | 2014-04-02 | ||
KR1020140104319 | 2014-08-12 | ||
KR20140104319 | 2014-08-12 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150114911A true KR20150114911A (ko) | 2015-10-13 |
Family
ID=54348287
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150046740A KR20150114911A (ko) | 2014-04-02 | 2015-04-02 | 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20150114911A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210006127A (ko) * | 2019-07-08 | 2021-01-18 | 숭실대학교산학협력단 | 다중 프로세서 인터럽트 신호 처리 장치 |
-
2015
- 2015-04-02 KR KR1020150046740A patent/KR20150114911A/ko unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210006127A (ko) * | 2019-07-08 | 2021-01-18 | 숭실대학교산학협력단 | 다중 프로세서 인터럽트 신호 처리 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105900063B (zh) | 多处理环境中的调度方法和装置 | |
CN108337188B (zh) | 通信量和负载感知动态队列管理 | |
KR101639797B1 (ko) | 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법 | |
US11099906B2 (en) | Handling tenant requests in a system that uses hardware acceleration components | |
US9485197B2 (en) | Task scheduling using virtual clusters | |
CN105812276B (zh) | 采用多核处理器的报文转发自适应系统和方法 | |
KR101859188B1 (ko) | 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법 | |
KR20200017589A (ko) | 무선 통신 시스템에서 모바일 노드의 태스크를 오프로딩하기 위한 클라우드 서버 및 그의 동작 방법 | |
WO2018157768A1 (zh) | 调度运行设备的方法、设备和运行设备 | |
CN115103450B (zh) | 一种多业务时隙分配方法和设备 | |
KR101953546B1 (ko) | 가상 스위칭 장치 및 방법 | |
EP2912811B1 (en) | Traffic engineering system for preventing demand deadlock and achieving uniform link utilization | |
KR20180134219A (ko) | 가상머신 패킷의 처리방법과 그 장치 | |
KR20150114911A (ko) | 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치 | |
CN115378885B (zh) | 超融合架构下的虚拟机业务网络带宽管理方法及装置 | |
KR101773528B1 (ko) | 가상머신 패킷을 처리하는 네트워크 인터페이스 장치 및 그 방법 | |
WO2015199366A1 (ko) | 다중 프로세싱 환경에서의 스케줄링 방법 및 그 장치 | |
KR101764811B1 (ko) | 다중 프로세싱 환경에서의 다중 스케줄링 방법 및 그 장치 | |
KR102091152B1 (ko) | 계층적 네트워크에서 다중코어를 이용한 패킷 처리 방법 및 그 장치 | |
KR20190069032A (ko) | 가상플로우의 인식 방법과 그 장치 | |
KR102112270B1 (ko) | 다중계층 네트워크 환경에서 패킷을 처리하는 방법 및 그 장치 | |
WO2024169161A1 (zh) | 一种资源配置方法、装置、系统及设备 | |
US10992601B2 (en) | Packet processing method and apparatus in multi-layered network environment | |
WO2024041401A1 (zh) | 用于处理任务的方法、装置、设备和存储介质 | |
KR20190119230A (ko) | 데이터 융합 스위칭 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant |