KR101794696B1 - 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템 - Google Patents
이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템 Download PDFInfo
- Publication number
- KR101794696B1 KR101794696B1 KR1020160103071A KR20160103071A KR101794696B1 KR 101794696 B1 KR101794696 B1 KR 101794696B1 KR 1020160103071 A KR1020160103071 A KR 1020160103071A KR 20160103071 A KR20160103071 A KR 20160103071A KR 101794696 B1 KR101794696 B1 KR 101794696B1
- Authority
- KR
- South Korea
- Prior art keywords
- gpu
- task
- node
- tasks
- cpu
- 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/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
-
- G06F17/30318—
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
워커 노드가 태스크를 제1 프로세싱 유닛 또는 제2 프로세싱 유닛에 제2 프로세싱 유닛에서의 동시수행 희망개수에 기초하여 할당하는 단계, 워커 노드가 제2 프로세싱 유닛의 사용률을 모니터링하는 단계 및 워커 노드가 사용률에 따라 동시수행 희망개수를 변경하는 단계를 포함하는 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템에 관한 발명이다.
Description
본 발명은 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템에 관한 것으로서, 구체적으로는 하둡과 같은 분산 처리 시스템에서 수행될 태스크를 노드의 이기종 프로세싱 유닛에 동적으로 할당하여 노드의 리소스를 최대한 활용하고 태스크의 처리 속도를 향상시킬 수 있는, 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템에 관한 것이다.
빅 데이터 시대가 도래함에 따라, 빅 데이터의 효율적인 처리를 위해 하둡(Hadoop)과 같은 분산 처리 시스템에서의 분산 처리가 필수가 되고 있다. 전통적으로 대부분의 데이터는 텍스트였으나 근래에 이르러 보안 카메라의 급속한 보급과 비디오를 기록하는 스마트 디바이스의 출현과 확산으로 비디오 데이터가 급속 증가하고 있다. 또한, 비디오 해상도는 지속적으로 증가하여 4K에 이르고 있고 1080p 해상도는 CCTV에서 이미 일반화되었다.
한편, 강력한 머신 러닝 알고리즘이 개발됨에 따라 이러한 알고리즘을 비디오 처리에 적용하려는 시도가 널리 이루어지고 있다. 그리고 비디오 분석 응용은 많은 분야에서 쉽게 발견될 수 있다. 예를 들어 얼굴 검출과 얼굴 인식은 보안 분야, 상업적 분야뿐 아니라 마케팅 목적으로 이용 가능하다. 대부분의 머신 러닝 알고리즘은 계산-집약적(compute-intensive)이고 단일 프레임에 대해서도 많은 시간을 요한다.
이와 같이, 효율적인 비디오 데이터 처리는 필수가 되어가고 있다. 한편, GPU(Graphic Processing Unit)는 그 엄청난 계산 파워로 인해 많은 인기를 얻고 있고 특히 비디오 프로세싱에 적합하다. 그러나 분산 처리 시스템에서 하나의 GPU 또는 하나의 머신 상의 여러 GPU는 최대 성능을 얻을 수 없는 게 현재 실정이다.
분산 처리 시스템인 하둡(Hadoop) 프레임워크는 복수의 노드로 구성되고 각 노드는 CPU 뿐 아니라 GPU도 포함한다. 하둡 프레임워크에서 더 높은 처리 속도를 가질 수 있도록 GPU를 활용하는 연구가 지속적으로 이루어지고 있다.
하둡 프레임워크 내의 전형적인 노드는 평균 10 개 이상의 CPU 코어와 GPU를 포함하나, GPU를 활용하는 기존 연구는 GPU가 동작(GPU 맵퍼(mapper), GPU 커널에 의해)하고 있을 때 이 CPU 코어들은 휴지(Idle) 상태에 있어 CPU 코어의 수행 성능을 같이 최대한 활용하지 못하고 있다.
GPU 맵퍼는 GPU에서 태스크를 처리하고 CPU에서 수행되는 호스트는 단순히 GPU 커널을 런칭(launching)한다. 이러한 경우 호스트는 계산 집중적인 처리를 하지 않기에 노드의 CPU는 대부분 휴지 상태에 있게 된다. 이와 같이 GPU를 활용하면서도 CPU의 리소스를 최대한 활용하여 노드의 최대 성능을 얻을 수 있는 방안이 필요하다.
분산 처리 시스템인 하둡 프레임워크에서 CPU-GPU 하이브리드 스케쥴링을 가능케 하기 위한 가장 큰 문제점은 노드에서의 맵퍼(맵 태스크)의 개수가 잡 수행 동안에 고정되고 변경 불가능한 점이다. 이에 따라 효율적이고 동적으로 CPU-GPU 하이브리드 수행을 얻기가 힘들 실정이다.
특정 연구(비특허문헌 1)는 하둡 프레임워크를 확장하고 노드의 CPU와 GPU 모두를 사용하여 잡의 실행 시간을 줄이도록 하고 있다. 이 연구도 GPU 사용율(utilization)에 상관없이 GPU 디바이스 상에 하나의 태스크 만이 사용가능한 것으로 가정하여 스케쥴링을 단순화시켜 GPU와 CPU의 수행 성능을 최대치로 활용 불가능하다.
또한, 이 연구는 잡 트래커가 이용 가능한 모든 노드 상에서 이용 가능한 슬롯에 태스크를 바인딩하고 스케쥴링하도록 구성된다. 이를 위해 노드 상의 태스크 트래커가 각 노드의 슬롯 이용가능성을 하트비트(heartbeat) 메시지를 통해 잡 트래커로 전송한다. 이 연구는 스케쥴링이 잡 트래커에 의해 중앙 집중화되고 기존 하둡 스케쥴링 기법을 변경해야 되는 문제가 존재한다.
또한, 특정 발명(특허문헌 1) 역시 비특허문헌 1과 유사하게 잡 트래커에서 CPU 또는 GPU에 태스크를 스케쥴링한다는 내용을 공개하고 있으나 비특허문헌 1과 동일한 문제점을 안고 있다.
이와 같이, 이기종 프로세싱 타입을 가지고 있는 분산 처리 시스템에서 기존 알려진 연구와 발명의 한계를 극복할 수 있는 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템이 필요하다.
Shirahata, K., Sato, H., Matsuoka, S. "Hybrid map task scheduling for GPU-based heterogeneous clusters" (2010) Proceedings - 2nd IEEE International Conference on Cloud Computing Technology and Science, CloudCom 2010, art. no. 5708524, pp. 733-740.
본 발명은, 상술한 문제점을 해결하기 위해서 안출한 것으로서, 이기종 프로세싱 타입을 가지는 노드들로 구성된 분산 처리 시스템에서 각 노드의 이기종 프로세싱 유닛에 태스크를 동적으로 할당하여 노드의 잡 수행 성능을 향상시킬 수 있는 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템을 제공하는 데 그 목적이 있다.
또한, 본 발명은 이기종 프로세싱 유닛으로의 태스크 할당을 노드에서 수행하여 분산 처리 시스템에서의 기존 스케쥴링 기법을 활용하면서도 노드의 최대 처리 성능을 제공할 수 있도록 하는 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템을 제공하는 데 그 목적이 있다.
또한, 본 발명은 이기종 프로세싱 유닛의 사용률과 처리 속도를 반영하여 이기종 프로세싱 유닛 간의 부하를 밸런싱할 수 있는 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템을 제공하는 데 그 목적이 있다.
또한, 본 발명은 FSM(Finite State Machine) 로직을 이용하여 이기종 프로세싱 유닛인 CPU와 GPU 중 GPU의 사용률을 최대화하여 태스크 처리 속도를 향상시킬 수 있는 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템을 제공하는 데 그 목적이 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위한 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법은 워커 노드가 태스크를 제1 프로세싱 유닛 또는 제2 프로세싱 유닛에 제2 프로세싱 유닛에서의 동시수행 희망개수에 기초하여 할당하는 단계, 워커 노드가 제2 프로세싱 유닛의 사용률을 모니터링하는 단계 및 워커 노드가 사용률에 따라 동시수행 희망개수를 변경하는 단계를 포함한다.
또한, 상기와 같은 목적을 달성하기 위한 이기종 프로세싱 타입을 고려한 분산 처리 시스템은 태스크를 처리하는 하나 이상의 워커 노드를 포함하고, 각각의 워커 노드는 복수의 CPU 코어를 포함하는 CPU, 복수의 GPU 코어를 포함하는 GPU 및 CPU 또는 GPU에서 수행되고 할당된 태스크를 CPU 또는 GPU에 할당하는 노드 매니저를 포함하고, 노드 매니저는 GPU의 사용률 또는 GPU에서의 동시수행 희망개수에 기초하여 태스크를 CPU에 또는 GPU에 할당한다.
상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템은 이기종 프로세싱 타입을 가지는 노드들로 구성된 분산 처리 시스템에서 각 노드의 이기종 프로세싱 유닛에 태스크를 동적으로 할당하여 노드의 잡 수행 성능을 향상시킬 수 있는 효과가 있다.
또한, 상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템은 이기종 프로세싱 유닛으로의 태스크 할당을 노드에서 수행하여 분산 처리 시스템에서의 기존 스케쥴링 기법을 활용하면서도 노드의 최대 처리 성능을 제공할 수 있도록 하는 효과가 있다.
또한, 상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템은 이기종 프로세싱 유닛의 사용률과 처리 속도를 반영하여 이기종 프로세싱 유닛 간의 부하를 밸런싱할 수 있는 효과가 있다.
또한, 상기와 같은 본 발명에 따른 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템은 FSM(Finite State Machine) 로직을 이용하여 이기종 프로세싱 유닛인 CPU와 GPU 중 GPU의 사용률을 최대화하여 태스크 처리 속도를 향상시킬 수 있는 효과가 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 분산 처리 시스템의 예시적인 시스템 블록도를 도시한 도면이다.
도 2는 워커 노드의 하드웨어 블록도를 도시한 도면이다.
도 3은 워커 노드의 기능 블록도를 도시한 도면이다.
도 4는 동적 스케쥴링에 따라 발생하는 부하 불균형의 예와 그 대응 예를 도시한 도면이다.
도 5는 요청된 잡을 수행하는 태스크들의 예시적인 동적 스케쥴링 과정을 도시한 도면이다.
도 6은 동적 스케쥴링 과정에서 이용되는 변수와 동적 스케쥴링을 위한 FSM 의 예를 도시한 도면이다.
도 2는 워커 노드의 하드웨어 블록도를 도시한 도면이다.
도 3은 워커 노드의 기능 블록도를 도시한 도면이다.
도 4는 동적 스케쥴링에 따라 발생하는 부하 불균형의 예와 그 대응 예를 도시한 도면이다.
도 5는 요청된 잡을 수행하는 태스크들의 예시적인 동적 스케쥴링 과정을 도시한 도면이다.
도 6은 동적 스케쥴링 과정에서 이용되는 변수와 동적 스케쥴링을 위한 FSM 의 예를 도시한 도면이다.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
도 1은 분산 처리 시스템의 예시적인 시스템 블록도를 도시한 도면이다. 도 1은 요청된 잡을 여러 태스크로 분할하고 분할된 태스크를 각 노드(10)에서 수행하도록 구성하는 하둡 프레임워크의 예를 도시한다. 도 1의 분산 처리 시스템을 통해, 대용량 데이터를 대상으로 하는 잡(Job)을 고속으로 처리할 수 있다.
도 1에 따르면, 하둡 프레임워크와 같은 분산 처리 시스템은 다수의 노드(10)와 노드(10) 사이에서 서로 송수신되는 데이터를 전송하기 위한 통신 네트워크로 구성된다.
노드(10)는 분산 처리 시스템인 하둡 프레임워크 등에서 처리 가능한 맵리듀스(Map/Reduce) 프로그램 모델의 잡(태스크) 들을 처리할 수 있다. 노드(10)는 개인용 컴퓨터, 서버, 워크스테이션 등과 같이 프로그램을 수행할 수 있는 장치이거나 머신 일 수 있다.
이 분산 처리 시스템은 비디오 처리 잡을 수행 하거나 빅 데이터를 분석하거나 통계를 생성하는 등 다양한 분야에서 다양한 응용을 위해 활용 가능하다.
분산 처리 시스템(하둡 프레임워크)을 구성하는 복수의 노드(10) 중 하나 이상의 노드(10)는 맵리듀스 프로그램 모델의 처리 잡(Job)을 생성하고 분산 처리 시스템 상에서 처리를 요청하는 클라이언트 노드일 수 있다. 다른 유형의 노드와 구별하기 위해 이하에서는 클라이언트 노드를 도면 부호 100으로 표시한다.
다른 하나 또는 복수의 노드(10)는 클라이언트 노드(100)로부터 잡 처리 요청을 수신하고 잡 처리 요청에 따라 이 잡을 처리할 태스크와 태스크에서 처리할 스플릿을 할당하는 마스터 노드일 수 있다. 다른 유형의 노드와 구별하기 위해 이하에서는 마스터 노드를 도면 부호 200으로 표시한다.
마스터 노드(200)는 클라이언트 노드(100)로부터의 잡 처리 요청의 수신에 따라 이 잡을 처리할 워커 노드를 결정하고 각 워커 노드에서 수행될 태스크들과 대응하는 스플릿을 각 워커 노드에 통신 네트워크를 통해 할당한다.
예를 들어, 마스터 노드(200)는 분산 처리 시스템의 할당 가능한 리소스에 따라 하나 이상의 워커 노드를 요청된 잡에 할당하고 각 워커 노드에 하나 이상의 태스크를 또한 할당한다. 마스터 노드(200)는 잡을 처리할 입력 파일을 전체 태스크 개수로 나누어 동일한 크기를 가지는 스플릿으로 분할하며 분할될 스플릿을 대응하는 태스크를 수행하는 워커 노드로 통신 네트워크를 통해 전달하거나 알릴 수 있다.
예를 들어, 할당가능한 워커 노드가 5개이고, 각 워커 노드가 5개의 태스크를 가질 수 있거나 가지는 것으로 결정한 경우, 마스터 노드(200)는 요청된 잡을 처리할 25개의 태스크와 각 태스크에서 처리할 스플릿을 구성하기 위해 입력 파일을 동일한 크기를 가지는 25개의 스플릿으로 분할할 수 있다. 분할된 각각의 스플릿은 맵핑된 워커 노드의 태스크로 전달되거나 알릴 수 있다. 마스터 노드(200)는 하둡 프레임워크의 버전에 따라 잡 트래커 노드로 지칭될 수도 있다.
또 다른 복수의 노드(10)는 마스터 노드(200)의 지시에 따라 요청된 잡의 태스크(맵 태스크 및/또는 리듀스 태스크)를 대응하는 스플릿으로 수행하고 그 처리 결과를 생성하는 워커 노드일 수 있다. 다른 유형의 노드(10)와 구별하기 위해 이하에서는 워커 노드를 이하 도면 부호 300으로 표시한다. 워커 노드(300)는 하둡 프레임워크의 버전에 따라 태스크 트래커 노드라 지칭될 수도 있다.
마스터 노드(200)는 요청된 처리 잡에서 이용될 입력 파일을 동일한 크기의 스플릿으로 분할하고 분할된 스플릿을 본 처리 잡을 수행하기 위한 워커 노드(300)들에 할당하고 할당된 스플릿을 통신 네트워크를 통해 각각의 워커 노드(300)로 전달한다. 특정 워커 노드(300)에 할당되는 스플릿과 다른 특정 워커 노드(300)에 할당되는 스플릿은 서로 다르고 스플릿이 동일한 크기로 할당된다.
클라이언트 노드(100), 마스터 노드(200) 및 워커 노드(300)는 반드시 상이한 물리적 머신에 맵핑될 필요는 없다.
각각의 노드(10)들은 분산 처리 시스템(하둡 프레임워크) 상에서 SSH(Secure Shell) 데이터 통신을 통해 필요한 데이터들을 송수신할 수 있고 HDFS(Hadoop Distributed File System)를 통해 파일을 공유할 수 있다.
하둡 프레임워크 상의 통신 네트워크는 근거리 통신 네트워크이거나 광대역 통신 네트워크일 수 있다. 통신 네트워크는 예를 들어 인터넷 망을 구성할 수 있다.
도 2는 워커 노드(300)의 하드웨어 블록도를 도시한 도면이다.
도 2의 블록도는 워커 노드(300) 뿐 아니라 마스터 노드(200)나 클라이언트 노드(100)의 블록도를 나타낼 수도 있거나 도 2의 블록도로부터 간단한 변형으로 마스터 노드(200)나 클라이언트 노드(100)가 구성될 수 있다.
도 2에 따르면, 워커 노드(300)는 통신 인터페이스(301), 메모리(303), 대용량 저장 매체(305), 시스템 버스/제어 버스(307) 및 CPU(309)와 GPU(311)를 포함한다.
각 블록에 대해서 간단히 살펴보면, 통신 인터페이스(301)는 통신 네트워크를 통해 각종 데이터를 송신하거나 수신하기 위한 인터페이스이다. 통신 인터페이스(301)는 유선랜 및/또는 무선랜에 액세스할 수 있는 통신 칩을 구비하여 통신 패킷을 통신 네트워크를 통해 송신하고 수신할 수 있다. 통신 인터페이스(301)를 통해 워커 노드(300)는 HDFS를 거쳐 워커 노드(300)의 태스크에 맵핑된(할당된) 스플릿에 액세스하거나 마스터 노드(200) 등으로부터 스플릿을 수신할 수 있고 태스크 프로그램을 또한 수신하거나 액세스할 수 있다.
메모리(303)는 에스디램(SDRAM) 등의 휘발성 메모리 및/또는 낸드플래시(Nand Flash) 등의 비휘발성 메모리를 포함하여 각종 데이터와 프로그램을 영구히 또는 임시로 저장한다.
예를 들어, 메모리(303)는 태스크가 처리할 스플릿을 임시로 저장하거나 CPU(309) 또는 GPU(311)에서 수행되는 노드 매니저(350) 프로그램 및/또는 태스크 프로그램을 영구히 또는 임시로 저장할 수 있다. 메모리(303) 등에 저장되는 프로그램(특히 노드 매니저(350) 프로그램)에 대해서는 도 3의 기능 블록도를 통해 좀 더 상세히 살펴보도록 한다.
대용량 저장 매체(305)는 하나 이상의 하드 디스크 등을 포함하여 각종 데이터와 프로그램을 저장한다. 대용량 저장 매체(305)는 노드 매니저(350) 프로그램 및/또는 태스크 프로그램 등을 저장하고 나아가 스플릿 등을 저장할 수 있다. 대용량 저장 매체(305)는 설계 변형에 따라 생략될 수 있다.
시스템 버스/제어 버스(307)는 블록 간에 데이터를 송수신한다. 시스템 버스/제어 버스(307)는 병렬 버스, 시리얼 버스, GPIO(General Purpose Input Output), 유선랜/무선랜 등과 같은 근거리 통신 네트워크 등의 하나 이상의 조합으로 구성될 수 있다.
CPU(309)는 복수의 CPU 코어(309-1)를 포함하여 메모리(303)나 대용량 저장 매체(305)에 저장되어 있는 프로그램을 수행할 수 있다. CPU(309)에 포함되는 각각의 CPU 코어(309-1)는 다른 CPU 코어(309-1)와 독립적으로 프로그램을 수행하고 메모리(303) 등을 액세스할 수 있다. CPU 코어(309-1) 각각은 CPU(309)에 할당된 태스크(이하 'CPU 태스크'라고도 함)를 수행할 수 있다.
GPU(311)는 복수의 GPU 코어(311-1)를 포함하여 메모리(303)나 대용량 저장 매체(305)에 저장되어 있는 프로그램을 수행할 수 있다. GPU(311)에 포함되는 각각의 GPU 코어(311-1)는 다른 GPU 코어(311-1)와 독립적으로 프로그램을 수행하고 메모리(303) 등에 액세스할 수 있다. GPU 코어(311-1) 각각은 GPU(311)에 할당된 태스크(이하 'GPU 태스크'라고도 함)를 수행할 수 있다.
이상에서 알 수 있는 바와 같이, 워커 노드(300)는 적어도 서로 다른 프로세싱 타입의 프로세싱 유닛을 가지고 각각의 이기종 프로세싱 유닛은 독립적으로 동일한 기능을 수행하는 태스크 프로그램을 로딩하여 수행할 수 있다. 한 유형의 프로세싱 타입의 프로세싱 유닛은 CPU(309)일 수 있고 다른 유형의 프로세싱 타입의 프로세싱 유닛은 GPU(311)일 수 있다. GPU 코어(311-1) 각각은 독립적으로 연산을 처리할 수 있는 복수의 마이크로 프로세싱 유닛을 포함하여 CPU 코어(309-1)에 비해 빠른 처리가 예상 가능하다.
CPU(309)나 GPU(311)는 메모리(303) 등에 포함된 각종 프로그램을 로딩하여 독립적으로 처리할 수 있고 할당된 태스크를 할당된 태스크에 맵핑되고 입력 파일로부터 분할된 스플릿에 대해 수행할 수 있다.
워커 노드(300)에서 이루어지는 각종 처리와 흐름은 도 3 이하에서 좀 더 상세히 살펴보도록 한다.
도 3은 워커 노드(300)의 기능 블록도를 도시한 도면이다.
도 3에 따르면 워커 노드(300)는 도 2의 하드웨어 블록도 상에서 수행되는 노드 매니저(350)와 하나 이상의 태스크를 포함하고 특정 워커 노드는 애플리케이션 마스터를 더 포함한다. 동일한 잡을 처리하는 여러 워커 노드(300) 중 적어도 하나의 워커 노드(300)는 이 애플리케이션 마스터를 포함하여 다른 워커 노드(300)에 태스크를 할당할 수 있다. 이 애플리케이션 마스터는 마스터 노드(200)(의 리소스 매니저)로부터 할당 태스크를 수신하여 이를 자신의 또는 다른 워커 노드(300)로 분배할 수 있다. 여기서 워커 노드(300)의 기능 블록들은 하드웨어 블록의 부호와 구별하기 위해 350번 대의 번호로 표시한다.
도 3의 기능 블록도는 도 2의 하드웨어 블록도 상에서 수행되는 데 프로그램의 형태로 워커 노드(300)의 CPU(309)나 GPU(311) 상에서 수행된다. 이와 같이 워커 노드(300)는 도 2에 따른 하드웨어 블록 뿐 아니라 도 3에 따르는 소프트웨어(기능) 블록을 포함한다.
도 3을 통해 워커 노드(300)의 기능을 살펴보면, 노드 매니저(350)는 워커 노드(300)를 관리한다. 노드 매니저(350)는 메모리(303)나 대용량 저장 매체(305)에 저장되어 있는 노드 매니저(350) 프로그램에 의해 구성되고 마스터 노드(200)에 의해서 워커 노드(300)에 할당된 태스크를 워커 노드(300)의 리소스 상태에 따라 CPU(309)나 GPU(311)에 할당하여 해당 태스크를 할당된 프로세싱 유닛에서 수행하도록 한다. 마스터 노드(200)에 의해서 할당된 태스크는 애플리케이션 마스터를 통해서 이 워커 노드(300)에 배당될 수 있다.
노드 매니저(350)는 GPU(311)의 사용률 및/또는 GPU(311)에서 동시 수행이 바람직하게 이루어질 수 있는 태스크의 개수를 나타내는 동시수행 희망개수에 기초하여 할당된 태스크를 CPU(309)나 GPU(311)에 할당한다.
동적인 태스크 할당을 위해 노드 매니저(350)는 GPU 모니터(351)와 동적 스케쥴러(353)를 적어도 포함한다.
GPU 모니터(351)는 GPU(311)의 사용률(utilization)을 모니터하도록 구성된다. GPU 모니터(351)는 라이브러리 등을 통해서 GPU(311)의 사용률을 획득할 수 있다. 예를 들어 GPU 모니터(351)는 NVIDIA사의 관리 라이브러리(Management Library)를 통해 GPU 사용률을 획득할 수 있다. 라이브러리를 통해서 획득되는 GPU 사용률은 GPU(311)가 사용되는 시간에 대한 퍼센티지를 나타내거나 GPU(311) 내에서 GPU 코어(311-1)들의 사용률을 나타낼 수 있다.
이와 같이 GPU 모니터(351)는 GPU(311)의 사용 시간에 대한 퍼센티지나 GPU(311)의 전체 GPU 코어(311-1) 중 사용되는 GPU 코어(311-1)의 사용 퍼센티지나 그 조합을 나타내는 GPU 사용률을 획득한다.
동적 스케쥴러(353)는 마스터 노드(200)로부터 할당된 임의의 태스크를 동적 스케쥴러(353)에 의해서 초기화되고 동적으로 변경되는 동시수행 희망개수 및/또는 GPU 모니터(351)에 의해서 획득된 GPU 사용률에 기초하여 CPU(309)나 GPU(311)에 할당한다.
동적 스케쥴러(353)는 FSM(Finite State Machine)을 포함하고 FSM은 워커 노드(300)에 할당된 태스크를 CPU(309)나 GPU(311)에 할당하기 위해서 이용된다. FSM은 할당된 태스크에 관련된 이벤트에 따라 트리거링되거나 지정된 주기에 따라 트리거링된다. 할당된 태스크에 관련된 이벤트는 신규 태스크가 마스터 노드(200)를 통해 할당되거나 할당된 태스크가 CPU(309)나 GPU(311)에서의 수행이 완료된 경우일 수 있다. 지정된 주기는 예를 들어 100mSec, 500mSec, 1초 등일 수 있다.
동적 스케쥴러(353)는 FSM에서 이용되는 각종 변수를 활용하여 할당된 태스크를 CPU(309)나 GPU(311)에 할당한다. 예를 들어 동적 스케쥴러(353)는 할당 정책(Assignment Policy)에 따라 GPU(311)에서 최대로 동시 수행 가능한 태스크의 개수인 동시수행 최대개수(max_gpu) 변수를 먼저 설정하고 설정된 동시수행 최대개수를 FSM의 초기화시나 최초 설정시나 특정 상태에서 동시수행 희망개수 변수(desired)로 설정한다.
먼저 설정되는 동시수행 최대개수는 특정 잡 요청의 잡에서 워커 노드(300)에 할당되는 태스크의 총 개수와 GPU(311)에 할당되는 태스크의 CPU 사용률에 기초하여 설정된다.
동적 스케쥴러(353)는 현재 GPU(311)에서 수행되는 태스크수행 현재개수 변수를 FSM의 초기화에 따라 초기화하고 할당된 특정 태스크가 GPU(311)에 할당함으로써 태스크수행 현재개수 변수를 1 증가시켜 이 변수를 업데이트한다. 또한, GPU(311)에 할당된 태스크의 수행이 완료됨에 따라 동적 스케쥴러(353)는 이 변수를 1 감소시킨다.
동적 스케쥴러(353)는 동시수행 희망개수, 태스크수행 현재개수 및/또는 GPU 사용률의 상관관계를 이용하여 GPU(311)의 최대 성능을 획득하도록 태스크를 할당하고 변수를 변경하거나 관리한다.
예를 들어, 동적 스케쥴러(353)의 FSM은 GPU 모니터(351)를 통해 획득된 GPU 사용률이 지정된(설정된) 임계치 이상인 경우에 현재 GPU(311)에서 수행되고 있는 태스크수행 현재개수에 기초한 개수를 동시수행 희망개수로 변경한다. 예를 들어 동적 스케쥴러(353)는 태스크수행 현재개수에 지정된 개수(예를 들어 1)를 합산하여 합산된 값을 동시수행 희망개수로 변경한다.
이러한 동시수행 희망개수의 변경은 FSM 상의 상태 천이 상에서 이루어지고 GPU 사용률과 현재 GPU(311)에 할당된 태스크의 개수에 따라 동적으로 이루어진다. 동시수행 희망개수는 최초 할당 정책에 따른 동시수행 최대개수로 설정되고 이후 태스크의 할당과 수행에 따라 성능 최대치를 획득할 수 있는 값으로 수렴한다.
노드 매니저(350)는 요청된 잡에 대해서 이미 수행된 태스크의 개수에 기초하여 현재 할당된 태스크를 GPU(311)에 강제 할당할 수 있다.
GPU 태스크(맵퍼)가 CPU 태스크의 수행 시간에 비해 매우 빠른 것이 일반적이고 요청된 잡이 끝나는 시점에 이르러서는 앞서 살펴본 동적 스케쥴링에 따라 심각한 부하 불균형을 가져올 수 있다.
예를 들어, 새로이 도착한 스플릿이 마지막 스플릿이고 이 스플릿에 대응하는 태스크를 CPU(309)에 할당한다면 다른 태스크나 GPU(311)는 이 태스크의 CPU(309) 할당에 따른 긴 수행 시간의 종료를 기다려야 하는 문제가 발생한다.
이러한 부하 불균형에 대응하기 위해, 노드 매니저(350)는 할당된 태스크(스플릿)의 개수를 계속 업데이트하고 만일 할당된 태스크(스플릿)의 개수가 설정된 임계치를 넘어서는 경우에 이후에 할당되는 태스크(스플릿)를 강제적으로 GPU(311)에 할당할 수 있다.
다른 대안으로서, 노드 매니저(350)는 새로운 태스크(스플릿)의 할당에 따라 아래 수학식에 따라 새로운 태스크를 GPU(311)에 할당한다.
여기서, N은 워커 노드(300)에서 처리될 태스크(스플릿)의 총 개수를 나타내고 b 는 현재 잡에 대해 CPU(309)에 할당되어 수행되었던 태스크의 총 개수를 나타내고 X는 동시에 수행 가능하도록 설정된 GPU 태스크의 개수를 나타내고 Y는 동시 수행 가능하도록 설정된 CPU 태스크의 개수를 나타낸다.
P는 CPU(309)와 GPU(311)의 수행 시간의 비율을 나타내고 예를 들어 "CPU 태스크의 수행 시간/ GPU 태스크의 수행 시간"으로 표현될 수 있다. 이 수행 시간 비율은 미리 획득되거나 태스크의 할당과 수행으로 CPU 태스크의 수행 시간과 GPU 태스크의 수행 시간을 노드 매니저(350)가 획득하여 산출할 수 있다.
예를 들어, 노드 매니저(350)는 신규 태스크를 CPU(309)에 할당한 후에 CPU 태스크의 시작과 종료 시각을 측정하여 CPU 태스크의 수행 시간을 산출하고 나아가 여러 CPU 태스크의 수행 시간을 평균하여 평균 수행 시간을 산출할 수 있다. 또한, 노드 매니저(350)는 신규 태스크를 GPU(311)에 할당한 후에 GPU 태스크의 시작과 종료 시각을 측정하여 GPU 태스크의 수행 시간을 산출하고 나아가 여러 GPU 태스크의 수행 시간을 평균하여 평균 수행 시간을 산출할 수 있다. 이후 노드 매니저(350)는 측정된 CPU(309) 및 GPU(311)의 (평균) 수행 시간을 이용하여 P를 산출하고 지속적으로 갱신할 수 있다.
이와 같이 노드 매니저(350)는 부하 밸런싱을 고려하여 이미 수행된 태스크의 개수가 지정된 임계치 이상이거나 이미 수행된 태스크의 개수(b)에 기초한 앞서 살펴본 수학식 1을 만족하는 경우에 신규의 태스크를 CPU(309)에 할당하지 않고 GPU(311)에 강제 할당하여 태스크를 수행할 수 있다. 신규 태스크가 GPU(311)에 강제 할당되는 경우에 노드 매니저(350)는 동적 스케쥴러(353) 또는 동적 스케쥴러(353)의 FSM의 구동을 생략할 수도 있다.
동적 스케쥴러(353)에 대해서는 도 5 이하를 통해서 좀 더 상세히 살펴보도록 한다.
노드 매니저(350)는 하나 이상의 태스크를 생성하고 각각의 태스크는 지정된 CPU(309) 또는 GPU(311)에서 수행된다. CPU(309)에 할당된 태스크(맵 태스크)는 CPU 코어(309-1) 상에서 수행되고 GPU(311)에 할당된 태스크는 GPU(311) 코어(311-1) 상에서 수행된다. 워커 노드(300)는 고정 개수의 태스크를 인스턴스화할 수 있는 콘테이너를 복수 개 구비할 수 있다. 콘테이너는 예를 들어 소프트웨어로 구성되는 객체일 수 있다. 노드 매니저(350)는 태스크를 가지지 않은 콘테이너가 존재하는 경우에 신규의 태스크를 콘테이너에 인스턴스화하여 CPU(309)나 GPU(311)에 할당할 수 있다.
CPU(309)에 할당된 태스크는 CPU(309) 상의 CPU 코어(309-1)에서 수행되고 GPU(311)에 할당된 태스크는 GPU(311) 상의 GPU(311) 코어(311-1)에서 수행된다.
도 5는 요청된 잡을 수행하는 태스크들의 예시적인 동적 스케쥴링 과정을 도시한 도면이다.
도 5의 각 단계는 노드(10)에 의해서 수행되고 바람직하게는 노드(10)의 CPU(309)나 GPU(311)에서 수행되는 프로그램에 의해서 수행된다.
먼저, 마스터 노드(200)는 하나 이상의 클라이언트 노드(100)에 연결되어 클라이언트 노드(100)로부터 잡 처리 요청을 통신 네트워크를 통해 수신(S101)한다.
예를 들어 마스터 노드(200)의 리소스 매니저는 통신 네트워크를 통해 연결된 클라이언트 노드(100)로부터 특정 기능을 수행하기 위한 잡 처리 요청을 수신할 수 있다. 수신되는 잡 처리 요청은 대용량의 파일에 대해서 병렬로 또는 독립적으로 수행될 수 있는 잡으로서 예를 들어 대용량 파일에 포함된 각각의 데이터에 대한 독립적인 연산 처리, 통계 분석, 비디오 처리 등일 수 있다.
잡 처리 요청을 수신한 마스터 노드(200)의 리소스 매니저는 분산 처리 시스템 상에서 이용가능한 워커 노드(300)들을 결정하고 결정된 각각의 워커 노드(300)에서 할당될 태스크들의 개수와 처리해야 하는 입력(대용량) 파일의 스플릿을 결정(S103)한다.
하나의 태스크는 하나의 스플릿에 대응하고 해당 스플릿을 처리하도록 구성된다. 따라서 스플릿의 할당이라는 의미에는 태스크의 할당이라는 의미를 내포할 수 있고 그 반대로도 각 용어가 활용될 수 있다.
마스터 노드(200)의 리소스 매니저는 통신 네트워크를 통해 태스크와 대응하는 스플릿을 통신 네트워크를 통해 이 잡을 처리할 워커 노드(300)들로 분배(S105)한다.
예를 들어, 리소스 매니저는 여러 워커 노드(300) 중 하나의 워커 노드(300)에 구성된 애플리케이션 마스터로 분할된 태스크의 처리를 요청하고 애플리케이션 마스터는 여러 워커 노드(300) 각각의 노드 매니저(350)와 연동하여 워커 노드(300)에 태스크를 할당한다.
워커 노드(300)의 노드 매니저(350)는 이후 할당된 태스크를 제1 프로세싱 유닛(CPU(309))이나 제2 프로세싱 유닛(예를 들어 GPU(311))에 할당(S107 내지 S119 참조)한다.
태스크의 할당에 따라, 워커 노드(300)는 신규 입력된 태스크를 제1 프로세싱 유닛 또는 제2 프로세싱 유닛에 할당할 수 있는 데, 신규 입력된 태스크의 프로세싱 유닛으로의 할당을 위해 먼저 노드 매니저(350)는 동적 스케쥴링을 위한 각종 변수를 초기화(S107)한다.
예를 들어, 노드 매니저(350)(또는 동적 스케쥴러(353))는 미리 설정되고 제2 프로세싱 유닛에서 동시에 수행가능한 최대 태스크 개수를 나타내는 동시수행 최대개수 변수(도 6의 max_gpu)를 먼저 설정한다.
동시수행 최대개수는 할당 정책(Assignment Policy)에 따라 달리 설정될 수 있다. 하둡 프레임워크와 같은 분산 처리 시스템의 워커 노드(300)들이 CPU(309)와 같은 제1 프로세싱 유닛과 GPU(311)와 같이 제1 프로세싱 유닛과는 그 타입이 다른 제2 프로세싱 유닛을 가지는 경우에 두 타입의 프로세싱 유닛 모두를 최대한 활용하여 수행 성능을 최대화할 필요가 있다.
너무 많은 태스크가 제2 프로세싱 유닛에 할당되면 충돌 발생으로 성능 저하가 발생하고 너무 많은 태스크가 제1 프로세싱 유닛에 할당되면 마찬가지로 성능 저하가 발생한다.
여러 프로세싱 타입의 프로세싱 유닛의 성능을 최대한 이용하는 있어 하둡 프레임워크에서의 큰 문제점은 각 워커 노드(300)에 할당되는 태스크의 개수가 미리 결정(S103 참조)되고 실시간으로 변경 불가능한 점이다. 따라서 할당 정책에 따라 동시수행 최대개수를 먼저 설정하고 이후 제2 프로세싱 유닛이나 제1 프로세싱 유닛의 태스크 개수를 모니터링되는 성능에 따라 동시수행 최대개수 또는 이 개수에 기초한 변수를 동적으로 변경하면서 하둡 프레임워크의 태스크 분할 정책을 준수할 필요가 존재한다.
일반적으로 두 프로세싱 유닛 중 하나의 프로세싱 유닛은 다른 프로세싱 유닛에 비해 높은 성능을 제공할 수 있다. 예를 들어 제2 프로세싱 유닛의 GPU(311)(이하에서는 GPU와 제2 프로세싱 유닛의 용어를 혼용해서 사용함)의 태스크는 제1 프로세싱 유닛의 CPU(309)(이하에서는 CPU와 제1 프로세싱 유닛의 용어를 혼용해서 사용함)의 태스크보다 매우 높은 쓰루풋(throughtput)을 가진다. 따라서 노드 매니저(350)의 동적 스케쥴러(353)가 가능한 CPU(309)보다는 GPU(311)에 더 많은 태스크가 초기에 할당되도록 동시수행 최대개수를 설정한다.
동시수행 최대개수를 설정하기 위한 할당 정책으로서 이하 4가지 정도를 제시하면,
1) Dynamic-preProfile : 최상의 GPU 태스크 개수가 하둡과 같은 분산 처리 시스템 상에서 잡이 수행되기 전에 먼저 획득된다. 예를 들어 잡의 수행 이전에 잡을 선행하여 수행시키고 GPU 태스크 개수인 X를 증가시키면서 최상 값을 찾도록 구성된다.
그리고 CPU 태스크의 개수(Y)는 아래의 수학식을 통해서 획득된다.
여기서, TC는 워커 노드(300)의 CPU 사용률(percentage)(예를 들어 CPU 코어(309-1)가 12개이면 1200)을 나타내고 GC는 GPU 태스크의 CPU 사용률을 나타낸다. GPU 태스크는 일반적으로 CPU(309)에서 수행되는 커널에 의해 GPU(311)를 사용하기에 CPU(309) 사용을 수반한다. X+Y는 워커 노드(300)에 할당되는 총 태스크의 개수(N)를 나타낼 수 있다. 총 태스크의 개수 N은 단계 S103에서 마스터 노드(200)에 의해서 결정되고 고정된다.
2) Dynamic-maxStart1 : 동시 수행 가능한 GPU 태스크 개수인 X를 아래 수학식 3에 따른 최대값으로 설정하고 Y를 수학식 2에 따라 획득되는 값으로 설정한다.
여기서, TotalGPUmem은 GPU(311)가 가지고 있는 총 메모리 용량을 나타내고 MapTaskmem은 하나의 태스크(맵 태스크)에서 요구하는 메모리의 사용량을 나타낸다.
X의 값이 최상치(optimal value)보다 더 큰 경우에는 이 X의 값은 이후 동적 스케쥴러(353)에 의해서 감소되고 Y의 값은 증가되어 최상치로 수렴한다. 마찬가지로 X의 값이 최상치보다 작은 경우에는 이후 동적 스케쥴러(353)에 의해 증가되어 최상치로 수렴한다.
3) Dynamic-maxStart2 : Dynamic-maxStart1과 동일하게 X의 값이 설정된다. 그러나 Y의 값은 수학식 2를 따르지 않고 0으로 설정되고 이후 X의 값이 감소함에 따라 Y의 값은 증가한다. 이 할당 정책은 GPU(311)만 있는 경우와 유사한 성능을 보여주나 CPU(309)와 GPU(311)의 하이브리드 수행의 포텐셜을 완전히 활용치 못한다.
4) Dynamic-conservative : X를 최대치에 설정하는 것 대신에 X를 수학식 4를 만족하는 최소값으로 설정하고 동적으로 증가시킨다.
GPU 사용률은 X에 비례하여 증가하지 않고 비선형적으로 포화상태가 되고 수학식 4에 따른 X값은 실시간으로 증가하고 Y값은 감소되도록 구성된다.
위에서 살펴본 여러 할당 정책 중 하나(바람직하게는 2)나 3))에 따라 X의 값이 결정되고 결정된 X값은 동시수행 최대개수로 단계 S107에서 초기화된다.
이상의 여러 할당 정책에서 알 수 있는 바와 같이 GPU(311)에서 동시에 수행될 수 있는 태스크의 최대 개수인 동시수행 최대개수 변수는 워커 노드(300)에 할당되는 태스크의 총 개수(N)와 GPU(311)에 할당되는 태스크의 사용률(CPU 사용률 및/또는 GPU 사용률)에 따라 설정된다.
각종 변수의 초기화 과정(S107)에서 노드 매니저(350)(의 동적 스케쥴러(353))는 GPU 사용률을 비교할 지정된 임계치(도 6의 upper)를 설정한다. 또한, 노드 매니저(350)는 GPU(311)에서 수행되고 있는 태스크수행 현재개수 변수(도 6의 cur_gpu)를 0으로 초기화한다.
동시수행 최대개수의 설정 이후에, 노드 매니저(350)(의 동적 스케쥴러(353))는 앞서 설정된 동시수행 최대개수를 동시수행 희망개수 변수(도 6의 desired)에 설정한다.
이 동시수행 희망개수는 FSM 상에서 설정될 수 있고 초기 상태(도 6의 EMPTY)에서 설정될 수 있다. 동시수행 희망개수는 최초 할당 정책에 따라 결정되는 동시수행 최대개수로 설정되나 이후에는 GPU 사용률과 연동하여 변경된다.
각종 변수의 초기화 이후에, 노드 매니저(350)는 마스터 노드(200)(를 통해 애플리케이션 마스터)로부터 태스크 할당을 모니터링(S109)한다.
만일 신규의 태스크가 마스터 노드(200)를 통해 입력(할당)된 경우, 노드 매니저(350)는 CPU(309)와 GPU 사이에 부하 불균형 상태를 야기할 수 있는 지를 판단(S111)한다.
예를 들어 노드 매니저(350)는 이미 할당된 태스크(스플릿)의 개수가 설정된 임계치를 넘어서는 경우이거나 수학식 1을 만족하는 경우에 부하 불균형을 야기할 수 있는 것으로 판단하여 단계 S113 내지 단계 S117의 수행 없이 단계 S119로 전이한다.
부하 불균형 상태로 인식한 노드 매니저(350)는 현재 할당된 태스크를 GPU(311)(제2 프로세싱 유닛)에 강제 할당(S119)한다. 강제 할당에 따라 단계 S113 내지 단계 S117의 수행은 되지 않고 단계 S113과 단계 S117을 구현하는 FSM의 수행이 중단될 수 있다.
이와 같이 노드 매니저(350)는 워커 노드(300)에서 이미 수행된 태스크의 개수에 기초하여 할당된 태스크를 GPU(311)에 강제 할당한다.
만일 부하 불균형이 야기되지 않는 것으로 판단한 경우에, 노드 매니저(350)는 마스터 노드(200)를 통해 현재 입력된 태스크를 CPU(309)(제1 프로세싱 유닛) 또는 GPU(311)(제2 프로세싱 유닛)에 GPU(311)의 동시수행 희망개수에 기초하여 할당(S113)한다.
예를 들어, 노드 매니저(350)의 동적 스케쥴러(353)는 신규의 태스크를 CPU(309)나 GPU(311)에 할당하기 위한 FSM을 구비하고 이 FSM은 태스크에 관련된 이벤트에 따라 트리거링되거나 지정된 주기(예를 들어 100 mSec)에 따라 트리거링된다. 태스크에 관련된 이벤트는 신규 태스크의 할당 이벤트이거나 할당된 태스크의 수행완료 이벤트일 수 있다.
단계 S113은 FSM에 의해서 제어되고 수행될 수 있고 나아가 단계 S117 또한 FSM에 의해서 제어되고 수행될 수 있다.
동적 스케쥴러(353)의 FSM(도 6 참조)을 구체적으로 살펴보면, FSM은 초기화에 따라 EMPTY 상태로 전이하고, EMPTY 상태로의 전이시 또는 EMPTY 상태에서 각종 변수를 초기화(S107)한다. 예를 들어 EMPTY 상태로의 진입시에 동시수행 최대개수, 동시수행 희망개수, 태스크수행 현재개수 등을 설정된 값으로 초기화할 수 있다.
EMPTY 상태에서 신규의 할당 태스크를 동적 스케쥴러(353)는 CPU(309) 대신에 GPU(311)에 할당하고 신규의 태스크 할당에 따라 GPU(311)에서 현재 동시에 수행되고 있는 태스크 개수인 태스크수행 현재개수를 업데이트한다(예를 들어 1 증가시킨다). 업데이트(1 증가)에 후속하여 태스크수행 현재개수는 동시수행 최대개수 또는 동시수행 희망개수와 비교되고 만일 태스크수행 현재개수가 이 변수보다 동일하거나 큰 경우 상태 TRANSITION1으로 전이한다. TRANSITION1 상태로의 전이시에 도 6과 같이 동시수행 희망개수가 동시수행 최대개수로 설정될 수도 있다.
TRANSITION1 상태는 GPU(311)에 신규 태스크를 할당할 수 없는(avail = false) 임시상태이다. avail = false로 설정되는 상태에서는 동적 스케쥴러(353)는 신규의 태스크를 CPU(309)에 할당할 수 있다.
GPU 모니터(351)에 의해 GPU 사용률(avg_util)은 주기적으로 모니터링되고 CPU(309)나 GPU(311)로의 할당 이후에도 모니터링(S115)된다.
TRANSITION1 상태에서 GPU 사용률이 설정된 임계치(upper)를 초과하는 경우(GPU 태스크 할당과 이후 GPU 사용률 모니터링의 시간 차를 고려하여 TRANSITION1 상태가 존재할 수 있음)에 FSM은 상태를 FULL 상태로 천이한다. FULL 상태에서는 avail이 false로 설정되어 신규 할당되는 태스크는 동적 스케쥴러(353)에 의해 모두 CPU(309)에 할당된다.
여기서, 각각의 상태에서 GPU(311)에 할당된 태스크가 완료된 경우에 GPU(311)의 태스크수행 현재개수는 1씩 감소한다.
FULL 상태에서 GPU(311)로의 태스크 미할당으로 GPU 사용률이 설정된 임계치 이하로 떨어지는 경우에(avg_util <= upper) 동적 스케쥴러(353)의 FSM은 현재의 동시수행 희망개수를 변경(S117)한다.
예를 들어, FULL 상태에서 동적 스케쥴러(353)는 더 이상 GPU(311)에 신규 태스크를 할당하지 않고 GPU(311)에 할당된 임의의 태스크가 수행 완료됨에 따라 태스크수행 현재개수가 1씩 감소되어 계속 업데이트된다.
FULL 상태에서, GPU 사용률이 설정된 임계치 이하로 떨어지는 경우에 동적 스케쥴러(353)의 FSM의 현재 설정된 동시수행 희망개수를 태스크수행 현재개수에 지정된 개수(예를 들어 1)의 합산된 값으로 변경(도 6의 set desired = cur_gpu + 1)하고 TRANSITION2 상태로 천이한다.
이와 같이 FULL 상태에서 TRANSITION2 상태로의 천이로 인해 다시 GPU 태스크를 동적 스케쥴러(353)가 할당할 수 있고 이를 통해 동적으로 동시수행 희망개수를 변경할 수 있다. 동적인 동시수행 희망개수의 적응을 통해 워커 노드(300)는 GPU(311)의 최대성능을 활용할 수 있다.
변경되는 동시수행 희망개수는 현재의 동시에 수행되고 있는 태스크수행 현재개수에 1을 더한 값으로 설정되고 이 값은 적어도 GPU 사용률이 상한치(임계치)보다 적거나 같을 때의 태스크수행 현재개수에 1 더 큰 값이다.
Full 상태에서 바로 임계치 이하로 떨어지는 경우의 동시수행 희망개수에 하나 이상의 GPU 태스크를 더 할당할 수 있어 GPU의 최대 성능을 활용할 수 있다.
TRANSITION2 상태에서는 GPU 태스크를 할당할 수 있고 현재의 태스크수행 현재개수에 따라 UNDER 상태나 TRANSITION1 상태로 천이할 수 있다.
이와 같이 FSM은 적어도 변수를 초기화하고, 단계 S113 및 단계 S117을 수행하도록 구성된다.
노드 매니저(350)는 GPU 모니터(351)를 통해 주기적으로 GPU 사용률을 모니터링하고 동적 스케쥴러(353)는 신규의 태스크 할당이나 할당된 태스크의 종료 또는 지정된 주기에 따라 FSM을 트리거링하여 신규 태스크를 CPU(309)나 GPU(311)에 할당할 수 있다.
신규 태스크의 할당에 따라 단계 S109 내지 S119는 복수 회 반복 수행된다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.
10 : 노드
100 : 클라이언트 노드 200 : 마스터 노드
300 : 워커 노드
301 : 통신 인터페이스 303 : 메모리
305 : 대용량 저장 매체 307 : 시스템 버스/제어 버스
309 : CPU 309-1 : CPU 코어
311 : GPU 311-1 : GPU 코어
350 : 노드 매니저 351 : GPU 모니터
353 : 동적 스케쥴러
370 : 태스크
100 : 클라이언트 노드 200 : 마스터 노드
300 : 워커 노드
301 : 통신 인터페이스 303 : 메모리
305 : 대용량 저장 매체 307 : 시스템 버스/제어 버스
309 : CPU 309-1 : CPU 코어
311 : GPU 311-1 : GPU 코어
350 : 노드 매니저 351 : GPU 모니터
353 : 동적 스케쥴러
370 : 태스크
Claims (14)
- 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법으로서,
(b) 워커 노드가 마스터 노드에 의해 상기 워커 노드에 할당된 태스크를 제2 프로세싱 유닛에서 동시에 수행될 수 있는 태스크의 개수를 나타내도록 설정되는 동시수행 희망개수에 기초하여 제1 프로세싱 유닛 또는 제2 프로세싱 유닛에 동적으로 할당하는 단계;
(c) 워커 노드가 제2 프로세싱 유닛의 사용률을 모니터링하는 단계; 및
(d) 워커 노드가 상기 사용률과 지정된 임계치의 비교에 기초하여 상기 동시수행 희망개수를 변경하는 단계;를 포함하는,
태스크 스케쥴링 방법. - 제1항에 있어서,
단계 (b) 이전에, 워커 노드가 제2 프로세싱 유닛에 대해 설정되는 태스크의 동시수행 최대개수를 동시수행 희망개수로 설정하는 단계;를 더 포함하고,
상기 단계 (b)는 태스크의 할당에 따라 현재 제2 프로세싱 유닛에서 수행되는 태스크수행 현재개수를 업데이트하는,
태스크 스케쥴링 방법. - 제2항에 있어서,
상기 단계 (d)는, 상기 사용률이 지정된 임계치 이상인 경우, 동시수행 희망개수를 태스크수행 현재개수에 지정된 개수의 합산으로 변경하는,
태스크 스케쥴링 방법. - 제2항에 있어서,
상기 동시수행 희망개수의 설정 단계 이전에, 워커 노드가 상기 동시수행 최대개수를 설정하는 단계;를 더 포함하고,
상기 제2 프로세싱 유닛의 상기 동시수행 최대개수는 상기 워커 노드에 할당되는 태스크의 총 개수와 제2 프로세싱 유닛에 할당될 태스크의 제1 프로세싱 유닛의 사용률에 기초하여 설정되는,
태스크 스케쥴링 방법. - 제1항에 있어서,
상기 단계 (b) 및 단계 (d)는 워커 노드에 구현되는 노드 매니저 상의 동적 스케쥴러에 FSM(Finite State Machine)으로 구성되고,
상기 FSM은 할당되는 태스크에 관련된 이벤트에 따라 트리거링되거나 지정된 주기에 따라 트리거링되는,
태스크 스케쥴링 방법. - 제5항에 있어서,
상기 단계 (b) 내지 (d)는 복수 회 수행되고,
상기 단계 (b) 이전에, 마스터 노드가 상기 워커 노드에 하나 이상의 태스크를 할당하는 단계; 및 워커 노드가 이미 수행된 태스크의 개수에 기초하여 현재 할당된 태스크를 제2 프로세싱 유닛에 강제 할당하는 단계;를 더 포함하고,
제2 프로세싱 유닛에 강제 할당된 경우, 상기 단계 (b) 및 단계 (d)를 구현하는 상기 FSM은 수행이 중단되는,
태스크 스케쥴링 방법. - 제1항에 있어서,
상기 제1 프로세싱 유닛은 복수의 CPU 코어를 포함하는 CPU이고,
상기 제2 프로세싱 유닛은 복수의 GPU 코어를 포함하는 GPU인,
태스크 스케쥴링 방법. - 이기종 프로세싱 타입을 고려한 분산 처리 시스템으로서,
태스크를 처리하는 하나 이상의 워커 노드;를 포함하고,
각각의 워커 노드는,
복수의 CPU 코어를 포함하는 CPU; 복수의 GPU 코어를 포함하는 GPU; 및
상기 CPU 또는 상기 GPU에서 수행되고 마스터 노드에 의해 상기 워커 노드에 할당된 태스크를 GPU에서 동시에 수행될 수 있는 태스크의 개수를 나타내도록 설정되는 동시수행 희망개수에 기초하여 CPU 또는 GPU에 동적으로 할당하는 노드 매니저;를 포함하고,
상기 노드 매니저는 상기 GPU의 사용률과 지정된 임계치의 비교에 기초하여 상기 GPU로의 태스크 할당에 이용되는 상기 동시수행 희망개수를 변경하는,
분산 처리 시스템. - 제8항에 있어서,
상기 노드 매니저는,
GPU의 사용률을 모니터링하는 GPU 모니터, 및
GPU에서의 동시수행 희망개수 및 상기 GPU의 사용률에 기초하여 할당된 태스크를 CPU 또는 GPU에 할당하는 동적 스케쥴러를 포함하는,
분산 처리 시스템. - 제9항에 있어서,
상기 동적 스케쥴러는 GPU에 대해 설정되는 태스크의 동시수행 최대개수를 동시수행 희망개수로 먼저 설정하고 태스크의 할당에 따라 현재 GPU에서 수행되는 태스크수행 현재개수를 업데이트하는,
분산 처리 시스템. - 제10항에 있어서,
상기 동적 스케쥴러는 GPU의 사용률이 지정된 임계치 이상인 경우에 동시수행 희망개수를 태스크수행 현재개수에 지정된 개수의 합산으로 변경하는,
분산 처리 시스템. - 제10항에 있어서,
상기 동적 스케쥴러는 동시수행 희망개수의 설정 이전에 상기 동시수행 최대개수를 먼저 설정하고,
설정되는 상기 동시수행 최대개수는 상기 워커 노드에 할당되는 태스크의 총 개수와 GPU에 할당될 태스크의 CPU의 사용률에 기초하여 설정되는,
분산 처리 시스템. - 제9항에 있어서,
상기 동적 스케쥴러는 CPU 또는 GPU에 태스크를 할당하기 위한 FSM을 포함하고,
상기 FSM은 할당되는 태스크에 관련된 이벤트에 따라 트리거링되거나 지정된 주기에 따라 트리거링되는,
분산 처리 시스템. - 제13항에 있어서,
입력 잡(Job)을 처리할 태스크를 결정하고 결정된 하나 이상의 태스크를 상기 하나 이상의 워커 노드에 통신 네트워크를 통해 할당하는 마스터 노드;를 더 포함하고,
상기 워커 노드의 노드 매니저는 이미 수행된 태스크의 개수에 기초하여 현재 할당된 태스크를 GPU에 강제 할당하는,
분산 처리 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160103071A KR101794696B1 (ko) | 2016-08-12 | 2016-08-12 | 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160103071A KR101794696B1 (ko) | 2016-08-12 | 2016-08-12 | 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101794696B1 true KR101794696B1 (ko) | 2017-11-07 |
Family
ID=60384998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160103071A KR101794696B1 (ko) | 2016-08-12 | 2016-08-12 | 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101794696B1 (ko) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108109104A (zh) * | 2017-12-06 | 2018-06-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向统一染色架构gpu的三级任务调度电路 |
KR20180124692A (ko) | 2017-05-12 | 2018-11-21 | 울산과학기술원 | 분산 파일 시스템에 대한 태스크 처리 방법 |
CN109871352A (zh) * | 2017-12-01 | 2019-06-11 | 北京搜狗科技发展有限公司 | 一种协同计算方法及装置 |
KR20190065202A (ko) * | 2019-05-21 | 2019-06-11 | 주식회사 우리기술 | 비정상 태스크의 감시 기능을 가진 분산제어 시스템의 제어기 |
CN110489224A (zh) * | 2018-05-15 | 2019-11-22 | 北京京东尚科信息技术有限公司 | 一种任务调度的方法和装置 |
KR102140730B1 (ko) * | 2019-12-17 | 2020-08-04 | (주) 씨이랩 | Gpu 기반의 딥러닝 개발 환경 제공 시스템 및 방법 |
KR102248978B1 (ko) * | 2019-11-29 | 2021-05-07 | 한국과학기술원 | 다수 사용자의 분산 기계학습에서 평균 지연 속도 절감을 위한 자원 할당 방법 및 장치 |
US11354156B2 (en) | 2019-01-03 | 2022-06-07 | Samsung Electronics Co., Ltd. | Master device for managing distributed processing of task by using resource information |
KR20220161070A (ko) * | 2021-05-28 | 2022-12-06 | 주식회사 엘지유플러스 | 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치 |
CN117032937A (zh) * | 2023-09-28 | 2023-11-10 | 之江实验室 | 基于gpu的任务调度方法、电子装置和存储介质 |
US20240020425A1 (en) * | 2022-05-31 | 2024-01-18 | NEC Laboratories Europe GmbH | Secure time source for trusted execution environments |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101245994B1 (ko) * | 2012-08-31 | 2013-03-20 | 케이씨씨시큐리티주식회사 | 대용량 데이터의 분산 병렬 처리 시스템 및 방법 |
JP2013235515A (ja) | 2012-05-10 | 2013-11-21 | Nippon Telegr & Teleph Corp <Ntt> | データの分散管理システム及び装置及び方法及びプログラム |
-
2016
- 2016-08-12 KR KR1020160103071A patent/KR101794696B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013235515A (ja) | 2012-05-10 | 2013-11-21 | Nippon Telegr & Teleph Corp <Ntt> | データの分散管理システム及び装置及び方法及びプログラム |
KR101245994B1 (ko) * | 2012-08-31 | 2013-03-20 | 케이씨씨시큐리티주식회사 | 대용량 데이터의 분산 병렬 처리 시스템 및 방법 |
Non-Patent Citations (1)
Title |
---|
이새한슬 외 1명. ‘CPU-GPU 이기종 플랫폼에서 하둡 맵리듀스의 가속: CKY 파서 사례 분석’. 정보과학회논문지: 컴퓨팅의 실제 및 레터, 제20권 제6호, 2014.6., pp.329-338.* |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180124692A (ko) | 2017-05-12 | 2018-11-21 | 울산과학기술원 | 분산 파일 시스템에 대한 태스크 처리 방법 |
CN109871352A (zh) * | 2017-12-01 | 2019-06-11 | 北京搜狗科技发展有限公司 | 一种协同计算方法及装置 |
CN108109104B (zh) * | 2017-12-06 | 2021-02-09 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向统一染色架构gpu的三级任务调度电路 |
CN108109104A (zh) * | 2017-12-06 | 2018-06-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向统一染色架构gpu的三级任务调度电路 |
CN110489224A (zh) * | 2018-05-15 | 2019-11-22 | 北京京东尚科信息技术有限公司 | 一种任务调度的方法和装置 |
US11354156B2 (en) | 2019-01-03 | 2022-06-07 | Samsung Electronics Co., Ltd. | Master device for managing distributed processing of task by using resource information |
KR20190065202A (ko) * | 2019-05-21 | 2019-06-11 | 주식회사 우리기술 | 비정상 태스크의 감시 기능을 가진 분산제어 시스템의 제어기 |
KR102031576B1 (ko) * | 2019-05-21 | 2019-10-14 | 주식회사 우리기술 | 비정상 태스크의 감시 기능을 가진 분산제어 시스템의 제어기 |
KR102248978B1 (ko) * | 2019-11-29 | 2021-05-07 | 한국과학기술원 | 다수 사용자의 분산 기계학습에서 평균 지연 속도 절감을 위한 자원 할당 방법 및 장치 |
KR102140730B1 (ko) * | 2019-12-17 | 2020-08-04 | (주) 씨이랩 | Gpu 기반의 딥러닝 개발 환경 제공 시스템 및 방법 |
KR20220161070A (ko) * | 2021-05-28 | 2022-12-06 | 주식회사 엘지유플러스 | 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치 |
KR102574043B1 (ko) * | 2021-05-28 | 2023-09-01 | 주식회사 엘지유플러스 | 클라우드 환경에서 컨테이너 기반의 gpu 자원 공유 방법 및 장치 |
US20240020425A1 (en) * | 2022-05-31 | 2024-01-18 | NEC Laboratories Europe GmbH | Secure time source for trusted execution environments |
CN117032937A (zh) * | 2023-09-28 | 2023-11-10 | 之江实验室 | 基于gpu的任务调度方法、电子装置和存储介质 |
CN117032937B (zh) * | 2023-09-28 | 2024-01-09 | 之江实验室 | 基于gpu的任务调度方法、电子装置和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101794696B1 (ko) | 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템 | |
US10467725B2 (en) | Managing access to a resource pool of graphics processing units under fine grain control | |
CN105718479B (zh) | 跨idc大数据处理架构下执行策略生成方法、装置 | |
Chien et al. | Load balancing algorithm based on estimating finish time of services in cloud computing | |
EP3253027B1 (en) | Resource allocation method and apparatus for virtual machines | |
CN107222531B (zh) | 一种容器云资源调度方法 | |
US9563474B2 (en) | Methods for managing threads within an application and devices thereof | |
WO2018157768A1 (zh) | 调度运行设备的方法、设备和运行设备 | |
Ting et al. | Dynamic sharing in multi-accelerators of neural networks on an FPGA edge device | |
Kim et al. | On the resource management of kubernetes | |
Mallikarjuna et al. | A nature inspired bee colony optimization model for improving load balancing in cloud computing | |
US10853137B2 (en) | Efficient resource allocation for concurrent graph workloads | |
Seth et al. | Dynamic threshold-based dynamic resource allocation using multiple VM migration for cloud computing systems | |
Mengistu et al. | Multi-objective resource mapping and allocation for volunteer cloud computing | |
KR102320324B1 (ko) | 쿠버네티스 환경에서의 이종 하드웨어 가속기 활용 방법 및 이를 이용한 장치 | |
US20180107524A1 (en) | Adaptive parallelism of task execution on machines with accelerators | |
Alexander et al. | An efficient resource management for prioritized users in cloud environment using cuckoo search algorithm | |
Cejudo et al. | An optimization framework for edge-to-cloud offloading of kubernetes pods in V2X scenarios | |
Guo et al. | The improved job scheduling algorithm of Hadoop platform | |
CN109842665B (zh) | 用于任务分配服务器的任务处理方法和装置 | |
Kathalkar et al. | A review on different load balancing algorithm in cloud computing | |
CN117632457A (zh) | 一种加速器调度方法及相关装置 | |
Sharma et al. | A review of cloud computing scheduling algorithms | |
Berwal et al. | Load Balancing in cloud computing | |
US20150263958A1 (en) | Load balancing apparatus and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |