KR20170116439A - 태스크 스케줄링 방법 및 장치 - Google Patents

태스크 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR20170116439A
KR20170116439A KR1020160044176A KR20160044176A KR20170116439A KR 20170116439 A KR20170116439 A KR 20170116439A KR 1020160044176 A KR1020160044176 A KR 1020160044176A KR 20160044176 A KR20160044176 A KR 20160044176A KR 20170116439 A KR20170116439 A KR 20170116439A
Authority
KR
South Korea
Prior art keywords
task
processor
management unit
information
data
Prior art date
Application number
KR1020160044176A
Other languages
English (en)
Other versions
KR101953906B1 (ko
Inventor
배유석
박종열
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020160044176A priority Critical patent/KR101953906B1/ko
Publication of KR20170116439A publication Critical patent/KR20170116439A/ko
Application granted granted Critical
Publication of KR101953906B1 publication Critical patent/KR101953906B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/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 OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

태스크 스케줄링 장치가 제공된다. 이 장치는, 입력되는 데이터를 저장하는 데이터 저장부; 상기 데이터 저장부에 저장된 데이터를 단위 시험을 통해 결정한 초기값 또는 작업량 분배 정보에 따라 CPU 프로세서 또는 GPU 프로세서에 할당하도록 태스크를 생성하고 스케줄링하는 태스크 관리부; 시스템 상태 정보 또는 상기 태스크 관리부를 통해 CPU 프로세서 또는 GPU 프로세서에서 처리된 태스크 이력 정보를 포함한 성능 프로파일 정보를 저장 관리하는 프로파일 관리부; 및 상기 프로파일 관리부에서 저장 관리되는 성능 프로파일 정보를 분석하여 CPU 프로세서 또는 GPU 프로세서에 할당할 태스크의 비율과 작업량을 동적으로 조절하여 작업량 분배 정보를 생성하고 상기 태스크 관리부에 전달하는 작업량 분배부를 포함한다.

Description

태스크 스케줄링 장치{APPARATUS FOR SCHEDULING TASK}
본 발명은 태스크 스케줄링 장치에 관한 것으로서, 보다 구체적으로는 CPU 자원과 GPU 자원을 동시에 이용하는 방식으로 태스크를 스케줄링하는 태스크 스케줄링 장치에 관한 것이다.
최근 들어 다수의 코어(core)를 단일 칩에 집적하는 매니코어(many core) 시스템이 보급되고 있으며, 이에 나아가 다수의 코어 중 CPU 프로세서와 GPU 프로세서와 같이 이종의 프로세서 코어가 함께 탑재되는 형태의 매니코어 시스템이 개발되어있다. 또한, 하나의 단일 칩이 아닌 복수의 칩이 병렬적으로 연결되는 형태의 시스템이나 상술한 매니코어를 복수개 설치하여 병렬적으로 연결하는 형태의 시스템 또한 개발되어 있다.
이렇게 많은 코어나 칩이 또는 이종의 프로세서가 사용되는 시스템에서는 각각의 코어나 프로세서들을 효율적으로 사용하여 전체 시스템의 성능을 최대한 발휘하도록 하기 위한 연구가 진행되고 있다.
그 중, 이종의 프로세서 즉, CPU와 GPU에 대한 효율적인 처리를 위해 동일한 연산에 대하여 다수의 CPU를 이용하여 병렬 처리를 수행하거나 CPU 프로세서는 연산에 관여하지 않고 단순히 GPU 프로세서를 호출하여 처리를 수행하도록 요청하고 수행된 결과를 받기 위해서 대기하는 상태로 동작하는 처리 방식이 존재한다. 이는 GPU 프로세서의 활용율은 높지만 CPU 프로세서의 경우 유휴 상태로 존재하는 시간이 늘어나 전체적인 성능 향상에는 한계가 있다.
또한, 상술한 바와 같이 매니코어 시스템 등은 다수의 CPU 프로세서와 GPU 프로세서를 포함하고 있어, 서로 다른 다수의 프로세서들 모두의 활용률을 높이는 연구가 필요한 상황이다.
본 발명은 상기와 같은 필요에 의해 창출된 것으로서, 다수의 CPU 프로세서와 다수의 GPU 프로세서가 포함된 시스템 또는 클러스터 시스템에서 각각의 프로세서(CPU 프로세서, GPU 프로세서) 자원을 효율적으로 활용하기 위한 태스크 스케줄링 장치를 제공하는데 그 목적이 있다.
본 발명의 다른 목적 및 장점들은 하기에 설명될 것이며, 본 발명의 실시예에 의해 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 첨부된 특허 청구 범위에 나타낸 수단 및 조합에 의해 실현될 수 있다.
전술한 목적을 달성하기 위하여, 본 발명의 태스크 스케줄링 장치는, 입력되는 데이터를 저장하는 데이터 저장부; 상기 데이터 저장부에 저장된 데이터를 기 설정된 제어 정보 또는 작업량 조절 정보에 따라 CPU 프로세서 또는 GPU 프로세서에 할당하도록 태스크를 생성하고 스케줄링하는 태스크 관리부; 시스템 상태 정보 또는 상기 태스크 관리부를 통해 CPU 프로세서 또는 GPU 프로세서에서 처리된 태스크의 이력 정보를 포함한 성능 프로파일 정보 정보를 저장 관리하는 프로파일 관리부; 및 상기 프로파일 관리부에서 저장 관리되는 성능 프로파일 정보를 분석하여 CPU 프로세서 또는 GPU 프로세서에 할당할 태스크의 비율과 작업량을 동적으로 조절하여 작업량 분배 정보를 생성하고 상기 태스크 관리부에 전달하는 작업량 분배부;를 포함한다.
본 발명에 따르면, 서로 다른 프로세서들의 특성(메모리 크기, 코어 수, 메모리 대역폭 등)과 처리 성능을 고려하여 데이터 처리시의 부하를 적절하게 분산하도록 처리함으로써, 각 프로세서의 자원을 동시에 최대한 효율적으로 활용할 수 있어, 전체적인 시스템 성능을 향상시킬 수 있는 효과가 있다.
또한, 본 발명의 태스크 스케줄링 장치는, 프로파일 관리기능 및 작업량 분배기능을 제공하여 CPU 프로세서와 GPU 프로세서에 할당되는 태스크의 비율과 작업량을 동적으로 조절하여 스케줄링 함으로써 시스템 자원 이용성을 높이고 전체 시스템의 성능을 향상할 수 있는 효과를 제공한다.
본 명세서에 첨부되는 다음의 도면들은 본 발명의 바람직한 실시예를 예시하는 것이며, 후술할 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니 된다.
도 1은 본 발명의 일 실시예에 따른 태스크 스케줄링 장치의 주요 구성을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 태스크 스케줄링 장치의 동작 과정을 나타낸 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 용이하게 이해할 수 있도록 제공되는 것이며, 본 발명은 청구항의 기재에 의해 정의된다. 한편, 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자 이외의 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
도 1은 본 발명의 일 실시예에 따른 태스크 스케줄링 장치의 주요 구성을 나타낸 도면이다.
본 발명의 일 실시예에 따른 태스크 스케줄링 장치(100)는, 복수의 프로세서들이 포함된 시스템에서 각 프로세서들의 특성(메모리 크기, 코어 수, 메모리 대역폭 등)과 처리 성능을 고려하여 데이터 처리시의 부하를 적절하게 분산 처리할 수 있는 기능을 제공한다. 이를 통해 각 프로세서의 자원을 동시에 최대한 효율적으로 활용할 수 있게 되어, 전체 시스템의 성능을 향상하도록 한다. 여기서 복수의 프로세서들은 CPU 프로세서(중앙 처리 장치), GPU 프로세서(그래픽 처리 장치) 등을 예로 들 수 있으며, 그 외에 데이터 처리가 가능한 다양한 프로세서 유닛이 이용될 수 있다.
도 1에 도시된 바와 같이, 본 발명에 따른 태스크 스케줄링 장치(100)는 데이터 저장부(110), 태스크 관리부(120), 프로파일 관리부(130), 작업량 분배부(140)를 포함한다.
상기 데이터 저장부(110)는 입력으로 들어오는 데이터(210)를 저장 관리하고, 상기 태스크 관리부(210)의 요청에 따라 저장 관리중인 데이터를 전달한다. 이때, 상기 데이터 저장부(110)는 대량으로 입력되는 데이터(210)를 처리하기 위하여 분산 환경으로 구성될 수 있다. 또한, 다수의 시스템에 데이터를 복제하여 저장 관리하는 방식을 통하여, 네트워크 오류 또는 시스템 장애 발생 시에도 데이터 유실 없이 안전하게 데이터를 보관할 수 있도록 한다.
아울러, 상기 데이터 저장부(110)는 상기 태스크 관리부(120)에서 다수의 태스크들이 동시에 접근할 경우에 대비하여 뮤텍스(mutex), 세마포어(semaphore) 또는 읽기-쓰기 락(Reader-Writer Lock) 등의 방식을 구현할 수 있는 기능을 구비할 수 있다.
이를 통해, 다수의 태스크가 동시에 접근하더라도 허용된 태스크들만이 데이터 저장부(110)에 접근할 수 있도록 제어하여, 데이터의 무결성(integrity)을 보장할 수 있고, 나아가 데이터 안정성을 보장할 수 있도록 한다.
이와 함께, 상기 데이터 저장부(110)는 임계값(threshold)을 설정할 수 있도록 하여, 입력 또는 저장되는 데이터(210)가 해당 임계값을 초과할 경우 저장 공간을 확장하는 방식으로 운용할 수 있다.
또한, 상기 데이터 저장부(110)는 일정한 버퍼 크기를 갖는 회전 큐(circular queue)와 같은 형태를 구성하고 데이터가 들어오거나 나갈 때 데이터를 식별하는 인덱스를 조정하여 저장 공간을 재사용하는 방식으로 운용할 수 있다.
이를 통해, 상기 데이터 저장부(110)의 물리적 저장 공간을 보다 효율적으로 활용할 수 있도록 한다.
상기 태스크 관리부(120)는 시스템에 탑재된 CPU(Central Processing Unit) 프로세서 또는 GPU(Graphics Processing Unit) 프로세서에서 태스크(220)를 수행할 수 있도록 프로세스(process)와 쓰레드(thread)를 생성하여 상기 데이터 저장부(110)에 입력된 데이터를 처리하는 역할을 수행한다. 이때, 상기 태스크 관리부(120)는 프로세스에서 복수의 멀티 쓰레드를 생성하고, 이를 통해 입력된 데이터를 동시에 처리하도록 한다.
여기서, 프로세스는 메인 메모리에 저장되어 실행되는 프로그램의 작업의 단위가 되며, 쓰레드는 프로세서의 실행 흐름 단위로 프로세스 내에서 자원을 공유하며 병렬로 동시 작업을 수행한다. 즉, 하나의 프로세스는 복수의 쓰레드를 생성하여 동시에 병렬 처리를 수행한다. 따라서, 상기 태스크 관리부(120)에서는 시스템 환경이나 프로그램 환경에 따라 복수의 쓰레드를 동시에 실행할 수 있고, 본 발명의 실시예에서와 같이 멀티 쓰레드 실행 방식을 통해 구현할 수 있다.
즉, 상기 태스크 관리부(120)는 CPU 프로세서 또는 GPU 프로세서에서 동시에 태스크(220)를 처리하기 위해 각 프로세서를 위한 멀티 쓰레드를 생성하여 실행, 종료, 대기 등의 일련의 동기화를 포함한 태스크 스케줄링을 처리한다.
다시 말해서, 상기 데이터 저장부(110)에 입력되는 데이터가 없을 경우, 태스크(220)를 처리하는 멀티 쓰레드들은 대기 상태로 있게 되며, 상기 데이터 저장부(110)에 데이터가 입력될 경우 대기중인 멀티 쓰레드들을 깨워서 입력되는 데이터를 가져와 태스크(220)를 처리하는 형태로 동작한다.
나아가, 상술한 바와 같이 멀티 쓰레드들이 동시에 데이터를 가져오려고 할 때 상기 데이터 저장부(110)에 정의된 뮤텍스, 세마포어 또는 일기-쓰기 락 등의 방식을 통해 허가된 쓰레드들만이 데이터를 가져와서 태스크(220)를 처리할 수 있도록 하여, 데이터의 무결성 및 안전성을 보장하도록 한다.
또한, 상기 태스크 관리부(120)는 데이터 입력 시 대기중인 멀티 쓰레드들을 깨울 때에 입력되는 데이터의 크기를 고려하여 깨우는 시점을 조절하도록 할 수 있다.
상기 태스크 관리부(120)에서는 CPU 프로세서 또는 GPU 프로세서를 동시에 이용하는 태스크 스케줄링을 구현하기 위하여, CPU 프로세서 또는 GPU 프로세서에서 처리할 태스크(220)의 비율과 작업량을 단위 시험을 통해 결정한 초기값으로 설정하고 처리 중 후술할 작업량 분배부(140)의 도움을 받아 프로세서 별로 처리할 태스크(220)의 비율과 작업량을 동적으로 조절하도록 한다.
상기 초기값 설정의 경우, 하나의 시스템에서 CPU 프로세서와 GPU 프로세서에 데이터를 처리하는 태스크의 수행 시간을 일정 횟수 반복 측정하여 CPU 프로세서와 GPU 프로세서에 할당할 초기 태스크의 비율과 작업량을 결정한다.
아울러, 상기 태스크 관리부(120)는 시스템의 사양을 고려하여 일정한 수의 멀티 쓰레드들로 구성된 쓰레드 풀(pool)을 구성하고 데이터가 입력될 때 쓰레드 풀에서 기 생성된 쓰레드를 꺼내어 처리하고 재사용하는 방식을 통해, 처리 시간을 줄이고 자원을 효율적으로 사용하는 태스크 스케줄링을 구현할 수 있다.
이와 함께, 상기 태스크 관리부(120)는 처리되는 데이터를 분할하여 동일한 형태의 태스크(220)로 처리하도록 할 수 있다. 이를 통해 다수의 CPU 프로세서 또는 GPU 프로세서에서 데이터를 분리 할당하여 병렬적으로 수행함으로써 시스템 전체 처리 성능을 향상시킬 수 있다.
또한, 상기 태스크 관리부(120)은 정적 태스크 스케줄링과 동적 태스크 스케줄링을 지원할 수 있다. 정적 태스크 스케줄링은 프로그램 실행 전 사전 지식 (시스템 환경, 프로그램 구조, 태스크의 특성 등)을 이용하여 태스크(220)의 특정 프로세서로의 매핑을 미리 결정하고 스케줄링하는 방식이며, 동적 태스크 스케줄링은 프로그램 실행 중에 태스크(220)의 특정 프로세서로의 매핑을 결정하여 스케줄링하는 방식이다.
아울러, 상기 태스크 관리부(120)는 태스크(220)를 프로세서에 할당하고 스케줄링할 때 프로세서와 태스크(220)의 특성을 고려하도록 하여 보다 효율적으로 처리할 수 있도록 한다.
이를 위해, 상기 태스크 관리부(120)는 순차적인 처리를 요구하는 태스크는 CPU 프로세서에 매핑되어 처리될 수 있도록 하고, 높은 수준의 병렬 태스크는 GPU 프로세서에 매핑되어 처리될 수 있도록 스케줄링 한다.
다른 예로, 상기 태스크 관리부(120)는 순차 알고리즘을 병렬화 하는 과정에서 규칙적인 부분은 높은 병렬성을 제공하는 GPU 프로세서에 매핑하여 처리하고, 동기화와 데이터 통신을 요구하여 GPU 프로세서의 이점을 볼 수 없는 불규칙적인 부분은 CPU 프로세서에 매핑하여 처리하도록 할 수 있다.
이처럼, 상기 태스크 관리부(120)는 다양한 태스크(220)의 특성을 고려하여 상술한 처리 예에서와 같이 처리할 수 있으며, 이 외에도 각 특성에 맞게 효율적으로 처리할 수 있는 다양한 예가 이용될 수 있다.
한편, 상기 태스크 관리부(120)에서는 상기 데이터 저장부(110)에 데이터가 없을 경우 데이터를 처리하기 위한 쓰레드들을 대기 상태로 전환하고, 상술한 임계치 기준 이상의 데이터가 입력될 경우 대기중인 쓰레드들을 깨워 데이터를 처리하도록 한다. 이때, 상기 데이터 저장부(110)에 임계치 기준 이상의 데이터가 기 설정된 기준 시간 동안 입력되지 않을 경우에는 쓰레드 풀을 종료하여 쓰레드 및 메모리 자원을 해제하고 태스크 처리 업무를 종료한다.
이렇게, 태스크 처리 업무가 종료된 후에 데이터가 상기 데이터 저장부(110)에 입력될 경우 멀티 쓰레드를 생성하여 데이터를 처리하는 태스크 관리 기능을 다시 수행하도록 한다. 이를 통해, 보다 효율적인 처리를 수행할 수 있게 된다.
아울러, 상기 태스크 관리부(120)는 분산 시스템 환경에서 상기 데이터 저장부(110)가 다수개 존재할 경우, 데이터의 지역성(locality)을 고려하여 데이터가 위치한 곳의 CPU 또는 GPU 프로세서에 태스크가 할당되도록 스케줄링 함으로써 프로세서 간 데이터 전송 시간을 줄일 수 있도록 하여, 시스템 성능을 향상하도록 한다.
또한, 상기 태스크 관리부(120)는 태스크를 처리할 때 워크 스틸링(work stealing) 또는 워크 쉐어링(work sharing) 방식을 적용할 수 있다. 이를 통해 태스크 처리시 높은 로드 밸런싱을 확보할 수 있다.
여기서, 상기 워크 스틸링 방식은 유휴(idle) 프로세서에서 바쁜(busy) 프로세서의 작업 일부를 가져와서 처리하는 방식이며, 워크 쉐어링 방식은 어떤 프로세서에서 태스크를 생성할 때마다 작업 분산을 위해 스케줄러에서 충분히 이용하지 못하는 프로세서로 태스크들의 일부를 이송(migration)하여 처리하는 방식이다.
상기 프로파일 관리부(130)는 시스템 상태 정보 또는 CPU 프로세서 또는 GPU 프로세서에서 처리된 태스크 이력(history) 정보를 포함한 성능 프로파일 정보를 저장 관리하는 역할을 수행한다.
여기서, 시스템 상태 정보로는, 시스템의 프로세서 코어 수, 프로세스 속도, 프로세서 사용율, 메모리 사용율, 디스크 사용율, 네트워크 사용율, 등의 다양한 시스템 상태 정보가 포함된다.
또한, 상기 태스크 이력 정보로는, 상기 태스크 관리부(120)에서 상술한 바와 같이 태스크에 할당된 데이터의 크기, 멀티 쓰레드의 유휴 상태, 태스크의 특성, 상기 태스크 관리부(120)에서 처리한 CPU 또는 GPU 프로세서의 태스크 수행 결과 정보 등을 포함하며, 상기 프로파일 관리부(130)는 상술한 정보들을 포함한 성능 프로파일 정보를 누적 저장하고 관리하는 역할을 수행한다.
상기 작업량 분배부(140)는 상기 프로파일 관리부(130)에서 생성된 성능 프로파일 정보를 분석하여 CPU 프로세서와 GPU 프로세서에서 처리할 태스크의 비율과 작업량을 동적으로 조절하는 역할을 수행한다.
상기 작업량 분배부(140)는 이렇게 동적으로 조절된 작업량 분배 정보 생성하고 이를 상기 태스크 관리부(120)로 전달한다.
상기 작업량 분배부(140)에서 생성한 작업량 분배 정보는 상기 태스크 관리부(120)로 전달되고, 상기 태스크 관리부(120)는 전달받은 작업량 분배 정보에 근거하여 CPU 프로세서와 GPU 프로세서에서 처리할 태스크의 비율과 작업량을 조절하는 방식으로 작업할 태스크를 스케줄링한다.
이와 같이, 성능 프로파일 정보에 기반한 스케줄링 방식은 CPU 프로세서와 GPU 프로세서의 처리 성능에 기반하여 태스크를 할당하는 방식으로써, 이미 남아 있는 태스크의 시간을 고려하지 않을 경우, CPU나 GPU 프로세서 자원이 과다하게 사용되거나 너무 낮게 사용될 수 있다.
이를 위해, 상기 태스크 관리부(120)는 성능 프로파일 정보뿐만 아니라 남아 있는 태스크의 처리 예상 시간, 태스크의 특성 등을 추가로 고려하여 CPU 또는 GPU 프로세서의 처리할 작업량을 조절하도록 한다.
또한, 본 발명의 실시예에 따른 태스크 스케줄링 장치(100)는 각각의 분리된 장치로 기술하였으나 실제 구현상에서는 필요에 의해 기능들이 통합되거나 하나의 단일 시스템에서 동작할 수 있을 뿐 아니라, 분산 시스템 환경에서도 동작할 수 있음은 물론이다.
도 2는 본 발명의 일 실시예에 따른 태스크 스케줄링 장치(100)의 동작 과정은 나타낸 순서도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 태스크 스케줄링 장치(100)의 동작은 먼저, 데이터 저장부(110)를 통해 데이터(210)를 입력받아 저장하는 절차가 진행된다(S10).
이후, 데이터가 입력되면 태스크 관리부(120)에서는 저장된 데이터를 처리하기 위해 각 프로세서에 태스크를 할당하는 처리를 진행한다. 이때, 초기 설정값 또는 후술한 단계 S50을 통해 작업량 분배 정보를 전달받아, 이를 근거로 각 프로세서에서 처리할 태스크의 비율과 작업량을 조절하여 태스크를 할당하도록 한다(S20).
다음, 상기 태스크 관리부(120)에서는 CPU 프로세서와 GPU 프로세서에서 동시에 태스크를 수행하며, 태스크의 실행, 종료, 대기 등의 일련의 동기화를 포함한 태스크 스케줄링을 처리한다(S30).
프로파일 관리부(130)에서는 시스템 상태 정보 또는 CPU 프로세서 또는 GPU 프로세서에서 수행된 태스크 이력 정보를 포함한 성능 프로파일 정보를 누적하여 저장 관리하는 절차가 진행된다(S40).
이후로, 작업량 분배부(140)에서는 성능 프로파일 정보와 현재 시스템의 상태 정보를 검토하여 각 프로세서에서 처리할 작업량을 분배하고, 작업량 분배 정보를 생성하여 상기 태스크 관리부(120)로 전달하는 절차를 진행한다. 이렇게 작업량 분배 정보를 전달하여 상기 단계 S20에서 태스크 할당 처리시에 이용할 수 있도록 반복적으로 피드백 역할을 수행한다(S50).
이상 바람직한 실시예와 첨부도면을 참조하여 본 발명의 구성에 관해 구체적으로 설명하였으나, 이는 예시에 불과한 것으로 본 발명의 기술적 사상을 벗어나지 않는 범주 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
100: 태스크 스케줄링 장치
110: 데이터 저장부
120: 태스크 관리부
130: 프로파일 관리부
140: 작업량 분배부

Claims (1)

  1. 입력되는 데이터를 저장하는 데이터 저장부;
    상기 데이터 저장부에 저장된 데이터를 CPU 프로세서 또는 GPU 프로세서에 할당하여 처리하기 위해 태스크를 생성하고 스케줄링하는 태스크 관리부;
    시스템 상태 정보 또는 상기 태스크 관리부를 통해 CPU 프로세서 또는 GPU 프로세서에서 처리된 태스크의 이력 정보를 포함한 성능 프로파일 정보를 저장 관리하는 프로파일 관리부; 및
    상기 프로파일 관리부에서 저장 관리되는 성능 프로파일 정보를 분석하여 CPU 프로세서 또는 GPU 프로세서에 할당할 태스크의 비율과 작업량을 동적으로 조절하여 작업량 분배 정보를 생성하고 상기 태스크 관리부에 전달하는 작업량 분배부;를 포함하는 태스크 스케줄링 장치.
KR1020160044176A 2016-04-11 2016-04-11 태스크 스케줄링 방법 및 장치 KR101953906B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160044176A KR101953906B1 (ko) 2016-04-11 2016-04-11 태스크 스케줄링 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160044176A KR101953906B1 (ko) 2016-04-11 2016-04-11 태스크 스케줄링 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170116439A true KR20170116439A (ko) 2017-10-19
KR101953906B1 KR101953906B1 (ko) 2019-06-12

Family

ID=60298658

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160044176A KR101953906B1 (ko) 2016-04-11 2016-04-11 태스크 스케줄링 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101953906B1 (ko)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109298897A (zh) * 2018-06-29 2019-02-01 杭州数澜科技有限公司 一种采用资源组的任务分发的系统和方法
KR20190085444A (ko) * 2018-01-10 2019-07-18 서울대학교산학협력단 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
KR102073682B1 (ko) * 2019-06-27 2020-02-05 한화시스템 주식회사 데이터 분배 서비스를 위한 데이터 송수신 장치
KR102073684B1 (ko) * 2019-06-27 2020-02-05 한화시스템 주식회사 데이터 분배 서비스를 위한 데이터 송수신 방법
CN110795249A (zh) * 2019-10-30 2020-02-14 亚信科技(中国)有限公司 基于mesos容器化平台的gpu资源调度方法及装置
KR102082484B1 (ko) * 2019-03-28 2020-02-27 한화시스템 주식회사 데이터 송수신 장치
KR102082486B1 (ko) * 2019-03-28 2020-02-27 한화시스템 주식회사 데이터 송수신 방법
KR102194513B1 (ko) * 2019-06-20 2020-12-23 배재대학교 산학협력단 Gpgpu 기반 태스크 큐를 활용한 웹 서비스 제공 시스템 및 방법
KR20210086391A (ko) * 2019-12-31 2021-07-08 주식회사 포스코아이씨티 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템
KR102384821B1 (ko) * 2021-07-14 2022-04-08 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
WO2023287109A1 (ko) * 2021-07-14 2023-01-19 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108109104B (zh) * 2017-12-06 2021-02-09 中国航空工业集团公司西安航空计算技术研究所 一种面向统一染色架构gpu的三级任务调度电路
EP4187879A4 (en) 2020-09-24 2023-11-22 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR OFFLOADING HARDWARE TO A SOFTWARE PACKAGE
KR20220064806A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 소프트웨어 패키지에 gpu를 할당하는 방법 및 장치

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090011574A (ko) * 2007-07-26 2009-02-02 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
KR20110075295A (ko) * 2009-12-28 2011-07-06 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR20130021172A (ko) * 2011-08-22 2013-03-05 삼성전자주식회사 단말 및 그 단말에서 어플리케이션 수행 방법
KR20130093995A (ko) * 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
KR20160003502A (ko) * 2014-07-01 2016-01-11 삼성전자주식회사 병렬화 방법 및 전자 장치
KR20160008804A (ko) * 2014-07-15 2016-01-25 고려대학교 산학협력단 Cpu/gpu 기반 매니코어 시스템 및 cpu/gpu의 동시처리를 위한 작업량 분배 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090011574A (ko) * 2007-07-26 2009-02-02 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
KR20110075295A (ko) * 2009-12-28 2011-07-06 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR20130021172A (ko) * 2011-08-22 2013-03-05 삼성전자주식회사 단말 및 그 단말에서 어플리케이션 수행 방법
KR20130093995A (ko) * 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
KR20160003502A (ko) * 2014-07-01 2016-01-11 삼성전자주식회사 병렬화 방법 및 전자 장치
KR20160008804A (ko) * 2014-07-15 2016-01-25 고려대학교 산학협력단 Cpu/gpu 기반 매니코어 시스템 및 cpu/gpu의 동시처리를 위한 작업량 분배 방법

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190085444A (ko) * 2018-01-10 2019-07-18 서울대학교산학협력단 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
CN109298897A (zh) * 2018-06-29 2019-02-01 杭州数澜科技有限公司 一种采用资源组的任务分发的系统和方法
KR102082484B1 (ko) * 2019-03-28 2020-02-27 한화시스템 주식회사 데이터 송수신 장치
KR102082486B1 (ko) * 2019-03-28 2020-02-27 한화시스템 주식회사 데이터 송수신 방법
KR102194513B1 (ko) * 2019-06-20 2020-12-23 배재대학교 산학협력단 Gpgpu 기반 태스크 큐를 활용한 웹 서비스 제공 시스템 및 방법
KR102073682B1 (ko) * 2019-06-27 2020-02-05 한화시스템 주식회사 데이터 분배 서비스를 위한 데이터 송수신 장치
KR102073684B1 (ko) * 2019-06-27 2020-02-05 한화시스템 주식회사 데이터 분배 서비스를 위한 데이터 송수신 방법
CN110795249A (zh) * 2019-10-30 2020-02-14 亚信科技(中国)有限公司 基于mesos容器化平台的gpu资源调度方法及装置
KR20210086391A (ko) * 2019-12-31 2021-07-08 주식회사 포스코아이씨티 클러스터링 구성 및 원격제어가 가능한 스케줄러 서버 시스템
KR102384821B1 (ko) * 2021-07-14 2022-04-08 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
WO2023287109A1 (ko) * 2021-07-14 2023-01-19 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법

Also Published As

Publication number Publication date
KR101953906B1 (ko) 2019-06-12

Similar Documents

Publication Publication Date Title
KR101953906B1 (ko) 태스크 스케줄링 방법 및 장치
US8793695B2 (en) Information processing device and information processing method
US11010199B2 (en) Efficient critical thread scheduling for non-privileged thread requests
CN107515786B (zh) 资源分配方法、主装置、从装置和分布式计算系统
US20120124591A1 (en) scheduler and resource manager for coprocessor-based heterogeneous clusters
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
CN103677999A (zh) 计算环境内的资源的管理
JP2013506179A (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US9304814B2 (en) Determine variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time
KR20110075295A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR20080041047A (ko) 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
CN106557369A (zh) 一种多线程的管理方法及系统
US11740921B2 (en) Coordinated container scheduling for improved resource allocation in virtual computing environment
US9471387B2 (en) Scheduling in job execution
KR101553650B1 (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
CN110300959B (zh) 用于动态运行时任务管理的方法、系统、设备、装置和介质
KR102052964B1 (ko) 컴퓨팅 스케줄링 방법 및 시스템
KR20140140943A (ko) 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
US20190272201A1 (en) Distributed database system and resource management method for distributed database system
WO2016202154A1 (zh) 一种gpu资源的分配方法及系统
CN109739634A (zh) 一种原子任务执行方法及装置
KR101557995B1 (ko) 다중 운영체제를 지원하는 단말기 및 그 단말기에 대한시스템 자원 할당 방법
CN112948113A (zh) 一种集群资源管理调度方法、装置、设备及可读存储介质
KR20130051076A (ko) 응용프로그램 스케줄링 방법 및 장치
KR102014246B1 (ko) 리소스 통합관리를 위한 메소스 처리 장치 및 방법

Legal Events

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