KR20110075295A - 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 - Google Patents
멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 Download PDFInfo
- Publication number
- KR20110075295A KR20110075295A KR1020090131711A KR20090131711A KR20110075295A KR 20110075295 A KR20110075295 A KR 20110075295A KR 1020090131711 A KR1020090131711 A KR 1020090131711A KR 20090131711 A KR20090131711 A KR 20090131711A KR 20110075295 A KR20110075295 A KR 20110075295A
- Authority
- KR
- South Korea
- Prior art keywords
- core
- work
- task
- performance
- job
- 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/468—Specific access rights for resources, e.g. using capability register
-
- 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
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
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)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 복수개의 코어로 구성된 컴퓨팅 시스템에 있어서 효율적으로 각 코어에 작업을 할당하기 위한 발명으로, 다수의 코어가 사용되는 멀티코어 시스템상에서 특정 어플리케이션으로부터 요청된 업무를 복수개의 코어를 통해 병렬적으로 수행하는 동안 각 코어의 성능에 대한 정보를 주기적으로 수집한 다음, 각 코어의 성능 대비 잔여 작업량에 기초하여 코어에 추가 작업을 할당한다.
멀티 코어, 데이터 할당, 이종 멀티코어
Description
본 발명은 멀티코어 시스템에 관한 것으로, 복수개의 코어로 구성된 컴퓨팅 시스템에 있어서 효율적으로 각 코어에 작업을 할당하는 방법 및 그 장치에 관한 것이다.
최근 CE 기기의 저전력 고성능 요구사항이 증가함에 따라, 멀티 코어의 필요성이 높아지고 있다. 이러한 멀티 코어 시스템에는 동일한 코어가 다수개 존재하는 대칭형 멀티코어 시스템(SMP, Symmetric Multi-Processing)과 DSP(Digital Processing Processor)나 GPU(Graphic Processing Unit) 등 GPP(General Purpose Processor)로 사용될 수 있는 다양한 이기종 코어들로 이루어진 비대칭 멀티코어 시스템(AMP, Asymmetric Multi-Processing)이 있다.
많은 데이터를 처리하는 소프트웨어를 여러 코어에서 병렬로 실행시킴으로써 성능을 향상시키기 위해서는 처리해야 하는 전체 데이터를 분할하여 분할된 데이터를 각 코어에 할당하고 각 코어에서 이를 처리하도록 한다. 이를 위하여 처리 대상 데이터를 코어의 개수로 나누어 작업(job)을 분할하는 정적 스케줄링 방법이 있다. 또한 데이터의 분할시 분할된 데이터의 크기가 같더라도 OS, 멀티코어 S/W 플랫폼 그리고 다른 응용 프로그램의 영향으로 인해 코어들이 작업을 종료하는 시간이 다를 수 있기 때문에, 전체 성능에서 손실을 입는 경우에는 할당 받은 작업을 모두 종료한 코어가 다른 코어에게 할당된 작업의 일부를 가져와서 수행하는 동적 스케줄링 방법이 있다. 두 가지 방법 모두 코어마다 별도의 작업큐(work queue)를 가지고 있고, 데이터 처리를 시작할 때 전체 데이터가 여러 개로 분할되어 각 코어의 작업큐에 할당된다.
정적 스케줄링 방법은 각 코어의 성능이 모두 동일하고 코어에서 수행되는 작업이 다른 프로세스를 실행하기 위해 컨텍스트 스위칭(context switching) 되지 않을 경우에 성능상의 최대 이득을 얻을 수 있다. 동적 스케줄링 방법은 다른 코어의 작업큐에 할당 받은 작업을 취소하고 빼앗아 올 수 있을 경우에만 사용할 수 있다. 하지만 이종의 멀티코어 플랫폼은 각 코어마다 성능과 계산 특성이 다르기 때문에 동작시키는 프로그램의 성격에 따라 코어별 수행 시간을 예측하기가 어려워서 정적 스케줄링 방법이 효율적으로 동작하지 않는다. 또한, 각 코어가 가지고 있는 작업큐는 해당 코어만 접근할 수 있는 메모리 영역에 가지고 있는 경우가 대부분이어서 동작 중에 한 코어가 다른 코어의 작업큐에 접근하여 작업을 가지고 오는 것이 불가능하기 때문에 동적 스케줄링 방법을 사용하는 것이 불가능하다.
따라서, 본 발명의 일 양상에 따라, 현재 멀티코어 시스템에서 사용하고 있는 작업큐 방식에 변화를 주지 않고 데이터를 각 코어에 효율적으로 분배하여 전체 수행시간을 줄이는 작업 분배 방법을 제공하는 것을 목적으로 한다.
본 발명의 일 양상에 따른 멀티코어 시스템의 작업 분배 방법은, 업무(task)를 복수개의 작업(job)으로 분할하여 각각 처리하는 복수개의 코어로 구성된 컴퓨팅 시스템의 작업 분배 방법에 있어서, 각 코어의 성능에 대한 정보를 주기적으로 수집하고, 수집된 각 코어의 성능 대비 잔여 작업량이 가장 적은 코어에 분할된 작업을 추가적으로 할당한다.
또한, 본 발명의 다른 양상에 따른 복수개의 코어를 포함하는 컴퓨팅 시스템은, 특정 어플리케이션으로부터 요청 받은 업무에 대한 복수개의 단위 작업을 직접 수행하는 코어와, 이 단위 작업에 대한 정보를 저장하고 있는 작업큐를 포함하는 하나 또는 둘 이상의 작업 프로세서, 그리고 작업프로세서의 성능 대비 잔여 작업량에 기초하여 상기 단위작업을 상기 작업 프로세서에 할당하는 호스트 프로세서를 포함한다.
본 발명의 일실시예에 따르면, 현재 멀티코어 시스템에서 사용하고 있는 작업큐 방식에 변화를 주지 않고 작업을 각 코어에 효율적으로 분배하여 전체 수행시 간을 줄이는 작업 분배가 가능하게 한다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대해 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 멀티코어 시스템의 전체 구성도이다.
도 1에서는 본 발명에 대한 설명의 편의를 위하여 본 발명의 일 실시예에 따른 멀티코어 시스템(10)을 4개의 프로세서(100, 200, 300, 400)로 구성되어 있는 것으로 가정하였다. 4개의 프로세서는 어플리케이션으로부터 요청받은 업무(task)가 제1 내지 제3 프로세서(200, 300, 400)에서 각각 병렬적으로 수행될 수 있도록 전체 작업을 복수개의 단위 작업(job)으로 나누고, 각 프로세서(200, 300, 400)에 대한 작업할당 및 작업이 수행되는 과정을 제어하고 관리하는 호스트 프로세서(100) 및 호스트 프로세서(100)의 제어에 따라 할당된 단위 작업(job)을 직접 수행하는 제1 프로세서(200), 제2 프로세서(300) 및 제3 프로세서(400)로 구성되어 있다.
이하 제1 내지 제3 프로세서(200, 300, 400)는 편의상 작업 프로세서라 칭한다.
각각의 작업 프로세서(200, 300, 400)는 각각 코어(210, 310, 410) 및 작업큐(220, 320, 420)를 포함할 수 있다. 이는 특히 각 작업 프로세서(200, 300), 400)에 포함된 코어가 서로 다른 비대칭 멀티코어 시스템인 경우이지만, 반드시 이에 한정되는 것은 아니다. 제1 내지 제3 작업큐(220, 320, 420)에는 각각의 코 어(210, 310, 410)에서 처리되어야 하는 작업들에 대한 정보가 저장되어 있다. 제1 내지 제3코어(210, 310, 410)는 각각 작업큐(220, 320, 420)에 저장되어 있는 정보에 기초하여 디램(DRAM) 등과 같은 제1 저장장치 또는 하드디스크 드라이브 등과 같은 제2 저장장치에 저장되어 있는 데이터를 읽어 들여 각자 필요한 작업을 수행하게 된다.
제1 내지 제3 코어(210, 310, 410)는 CPU(Central Processing Unit), DSP(Digital Processing Processor) 또는 GPU(Graphic Processing Unit) 중에서 선택되는 어느 하나로서, 제1 내지 제3 코어(210, 310, 410)가 모두 동일한 코어이거나 서로 다른 코어일 수 있다. 예컨대 제1 코어(210)는 DSP이고, 제2 코어(310) 및 제3 코어(410)는 GPU인 멀티코어 시스템이 본 발명의 대상일 수 있다.
제1 내지 제3 작업큐(220, 320, 420)는 도1에 도시한 바와 같이 각 코어(210, 310, 410)가 포함된 프로세서(200, 300, 400)의 로컬 메모리 내에 존재할 수 있다.
호스트 프로세서(100)는 특정 어플리케이션으로부터 요청 받은 업무가 복수개의 프로세서에 의하여 처리될 수 있도록 복수개의 단위 작업으로 분할하고, 이를 각 프로세서에 할당하여 작업의 전체 수행 과정을 관리한다. 호스트 프로세서(100)는 이를 위하여 작업 스케줄러(110) 및 작업큐 모니터(120)를 포함하여 구성된다.
호스트 프로세서(100)에서 동작하는 작업큐 모니터(120)는 멀티코어 시스템을 구성하는 복수개의 작업 프로세서(200, 300, 400)에 존재하는 작업큐(220, 320, 420)의 상태를 주기적으로 모니터링한다. 작업큐 모니터(120)의 모니터링 주기는 멀티코어 시스템(10)의 성능에 대한 요구사항에 따라 다르게 결정될 수 있다. 예컨대 각 코어(210, 310, 410) 에서 일정한 시간 주기마다 작업큐(220, 320, 420)의 상태를 모니터링 하거나, 각 코어(210, 310, 410)에서 매번 작업이 완료될 때마다 작업큐(220, 320, 420)의 상태를 모니터링 할 수 있다. 이를 위하여 작업큐 모니터(120)는 단위 작업(job) 이 끝날 때마다 이를 알리는 통지(notification)를 각 코어(210, 310, 410)로부터 받을 수 있다.
호스트 프로세서(100)에서 동작하는 작업 스케줄러(110)는 특정 어플리케이션으로부터 요청 받은 업무(task) 보다 작은 크기의 복수개의 단위 작업(job)으로 나눈 다음, 나누어진 작업이 작업 프로세서(200, 300, 400)에서 병렬적으로 처리될 수 있도록 작업을 할당한다. 이때 작업 스케줄러(110)는 작업큐 모니터(120)가 모니터링한 작업큐의 상태에 기초하여 어떤 작업 프로세서(200, 300, 400)에 어느 정도의 작업을 할당할지를 결정한다.
작업큐 모니터(120)는 단위 시간당 각 코어가 처리한 단위작업의 개수 혹은 데이터의 양인 각 코어의 작업 처리 속도값을 갱신하면서 멀티코어 시스템(10)이 가지고 있는 모든 코어(210, 310, 410)의 성능 비를 계산한다. 코어별 성능 비가 결정되면 작업 스케줄러(110)는 현재 각 코어의 작업큐(220, 320, 420)에 남아있는 단위작업의 개수 혹은 단위작업이 수행해야 할 계산 데이터의 양의 비를 구하고, 코어별 성능비와 비교한다. 그 후에 추가 작업을 어느 코어에 할당해야 두 개의 비율이 더욱 비슷해지는지를 계산한 다음 가장 비율이 비슷해지는 코어의 작업큐에 작업을 하나 할당한다.
도 2는 본 발명의 일 실시예에 따른 멀티코어 시스템에 있어서 각 코어에 작업을 분배하는 과정을 설명한 순서도이다.
먼저 본 발명에 따른 멀티코어 시스템이 특정 어플리케이션으로부터 업무(task) 수행 요청을 접수한다(S10). 본 발명에 따른 멀티코어 시스템(10)을 구비한 전체 컴퓨팅 시스템상에는 하나 이상의 어플리케이션이 수행 중이다. 이러한 어플리케이션은 새로이 데이터를 생성하거나 기존의 데이터를 다른 형태의 데이터로 변환하는 등의 작업(task)을 정해진 순서대로 수행하여야 한다. 이러한 작업은 메인 연산 장치에 해당하는 멀티코어 시스템이 디램(DRAM) 등과 같은 제1 저장장치 또는 하드디스크 드라이브 등과 같은 제2 저장장치에 저장되어 있는 데이터를 읽어 들여 처리하는 형태로 수행된다.
상기와 같은 요청을 접수한 멀티코어 시스템(10)은 해당 업무가 멀티코어 시스템(10)에 포함된 복수개의 프로세서들에 의하여 병렬적으로 수행될 수 있도록 보다 작은 크기의 복수개의 단위 작업(job)으로 구분해둔다(S12). 이러한 단위 작업의 크기는 멀티코어 시스템(10)에 포함된 프로세서의 개수 및 성능, 전체 컴퓨팅 시스템의 구성뿐만 아니라 처리되어야 할 업무(task)의 특성 등을 종합적으로 고려하여 결정될 수 있다.
단위 작업이 생성되고 나면 멀티코어 시스템(10)에 포함된 각 프로세서에게 초기 작업을 할당하게 된다(S14). 이러한 초기 작업 분으로 2개 이상의 단위 작업이 각 프로세서에 할당될 수 있다. 이러한 초기 작업 분의 양은 멀티코어 시스템(10)에 포함된 프로세서의 개수 및 성능, 전체 컴퓨팅 시스템의 구성 및 처리되 어야 할 업무(task)의 특성 등을 종합적으로 고려하여 결정될 수 있다.
멀티코어 시스템(10)이 각 프로세서에 작업을 할당하는 것은 호스트 프로세서 내에서 실행되는 작업 스케줄러가 각 프로세서에 내장되어 있는 작업큐(work queue)에 각 단위 작업(job)에 대한 정보를 입력(enque)하는 방식으로 수행될 수 있다.
이후 멀티코어 시스템(10)은 각 프로세서에 내장되어 있는 코어의 성능을 모니터링한다(S16). 이 단계는 멀티코어 시스템(10)을 구성하는 각각의 프로세서에 존재하는 작업큐의 상태를 주기적으로 확인하는 방식으로 수행될 수 있다.
작업큐에 대한 모니터링 주기는 멀티코어 시스템(10)의 성능에 대한 요구사항에 따라 다르게 결정될 수 있다. 예컨대 각 코어에서 일정한 시간 주기마다 작업큐의 상태를 모니터링 하거나, 각 코어에서 매번 작업이 완료될 때마다 작업큐의 상태를 모니터링 할 수 있다. 이를 위하여 각 프로세서에서 단위 작업(job)이 끝날 때마다 이를 알리는 통지(notification)를 받을 수 있다. 이때, 통지의 내용은 한 단위 작업을 수행한 전체 시간 혹은 작업 수행 시작 시간 및 종료 시간에 대한 정보를 포함할 수 있다.
본 발명의 일 실시예에 있어서 각 코어의 성능을 측정하는 방법으로는 각 코어가 수행한 단위 작업의 개수 또는 단위작업을 수행하면서 처리한 데이터의 양을 그 동안 수행된 시간으로 나누어 작업 처리 속도에 대한 산술평균을 얻는 방법을 예로 들 수 있다. 이때 각 코어별로 작업을 처리할 때마다의 성능이 동일할 수도 있지만 일부 디바이스에서는 코드 전송시간, 코드 캐쉬의 영향으로 인해 점점 성능 이 좋아지는 경향이 있으므로, 필요에 따라 전체 작업을 수행한 회수가 아니라 최근 수행하였던 몇 개의 단위작업 만을 성능 평가에 사용할 수 있다. 이러한 정보에 기초하여 단위 시간당 각 코어가 처리한 단위 작업(job)의 개수 혹은 데이터의 양을 주기적으로 갱신하면서 각 코어의 성능을 계산할 수 있다.
본 발명의 다른 실시예에서 각 코어의 성능의 초기값으로는 0이 아닌 가장 작은 숫자로 두어서, 초기에 일부 코어만 단위작업 종료에 대한 통지를 보내더라도 각 코어의 성능에 대한 평가값이 무한대가 되지 않도록 할 수 있다.
다음으로 각 프로세서에 추가 작업을 할당한다(S18). 이때 본 발명의 실시예에서는 S16단계에서 확인된 각 프로세서에 내장되어 있는 코어의 성능과 각 프로세서의 작업큐에 기록되어 있는 잔여 작업량을 종합적으로 고려하여 추가 작업을 부여할 수 있다.
본 발명의 일 실시예에 있어서 어느 코어에 추가 작업을 어느 정도로 할당할지 여부는 전체 코어의 성능 대비 잔여 작업량에 대한 평가값이 같아질 때까지, 다시 말해서 평균값들 사이의 편차를 최소화할 수 있도록 조정하는 방식을 예로 들 수 있다. 즉, 각 코어에 대한 평가값이 결정되면 현재 각 코어에 대한 작업큐에 저장되어 있는 단위작업의 개수 혹은 각 단위작업이 수행해야 할 계산 데이터의 양의 비를 구하고, 코어별 성능비와 비교한다. 그리고 나서 어느 정도의 추가작업을 어느 코어에 할당해야 각각의 평가값의 비율이 더욱 비슷해지는지를 계산한 다음 가장 비슷해지는 코어의 작업큐에 추가작업에 대한 정보를 입력(enque)한다. 코어의 성능 대비 잔여 작업량에 대한 평가값이 작다는 것은 성능에 비해 적은 양의 일을 가지고 있음을 나타낸다.
이러한 S16 및 S18 단계를 반복하면서 어플리케이션으로부터 요청받은 전체 업무(task)에 대한 단위 작업의 할당이 완료되고 나면 종료 처리하고 다음 지시를 기다리게 된다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 멀티코어 시스템에 있어서 각 코어에 작업을 분배하는 과정을 보다 구체적으로 설명하기 위한 도면이다.
도 3a 및 도 3b에 도시된 멀티코어 시스템은 3개의 작업 프로세서(1200, 1300, 1400)와 1개의 호스트 프로세서(1100)로 구성되어 있다. 이때 작업 프로세서는 CPU 코어(1210)를 포함하고 있는 제1 프로세서(1200), GPU코어(1310)를 포함하고 있는 제2 프로세서(1300), DSP(1410)를 포함하고 있는 제3 프로세서(1400)로 구성되어 있다.
도 3a의 실시예에서는 어플리케이션으로부터 요청받은 1개의 업무(task)가 호스트 프로세서(1100)의 작업 스케줄러(1110)에 의하여 30개의 단위 작업(job)으로 나뉜 다음, 초기 작업으로 각 코어(1210, 1310, 1410)에 4개씩 할당되어 있다. 따라서 작업 스케줄러(1110)에는 18개의 단위 작업이 남아있는 상태이다.
각 작업큐(1220, 1320, 1420)에 초기 작업(job)이 들어오면 각 코어(1210, 1310, 1410)는 할당된 작업(job)을 처리하기 시작한다. 각 코어는 하나의 작업(job)을 끝낼 때마다 작업큐 모니터(1120)에 해당 작업이 끝났음을 통지한다. 통지의 내용은 해당 작업을 수행한 전체 시간 혹은 작업 수행 시작, 종료 시간이 포함된다.
작업큐 모니터(1120)는 단위 시간당 각 코어가 처리한 단위작업의 개수 혹은 데이터의 양인 각 코어의 작업 처리 속도 값을 갱신하면서 멀티코어 시스템이 가지고 있는 모든 코어(1210, 1310, 1410)의 성능 비를 계산한다. 코어별 성능 비가 결정되면 작업 스케줄러(1110)는 현재 각 코어의 작업큐(1220, 1320, 1420)에 남아있는 단위작업의 개수 혹은 단위작업이 수행해야 할 계산 데이터의 양의 비를 구하고, 코어별 성능비와 비교한다. 그 후에 추가 작업을 어느 코어에 할당해야 두 개의 비율이 더욱 비슷해지는지를 계산한 다음 가장 비율이 비슷해지는 코어의 작업큐에 작업을 하나 할당한다.
도 3b는 제1코어(1210), 제2코어(1310) 및 제3코어(1410)의 성능 비가 약 1 : 3 : 2 일 경우 일정 시간이 지나고 나서 작업 프로세서(1200, 1300, 1400)에 포함된 작업큐(1220, 1320, 1420)의 상태를 보여준다. 각 작업큐(1220, 1320, 1420)에 남아있는 작업의 개수가 각 코어(1210, 1310, 1410)의 성능 비와 동일하게 채워져 있다.
이제까지 본 발명의 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 일 실시예에 따른 멀티코어 시스템의 전체 구성도이고,
도 2는 일 실시예에 따라 각 코어에 작업을 분배하는 과정을 설명하는 순서도이고,
도 3a 및 도 3b는 일 실시예에 따라 각 코어에 작업을 분배하는 구체적인 과정을 설명하는 도면이다.
Claims (10)
- 업무(task)를 복수개의 작업(job)으로 분할하여 각각 처리하는 복수개의 코어로 구성된 컴퓨팅 시스템의 작업 분배 방법에 있어서,상기 각 코어의 성능에 대한 정보를 주기적으로 수집하는 제1단계; 및,상기 수집된 각 코어의 성능 대비 잔여 작업량이 가장 적은 코어에 상기 분할된 작업을 추가적으로 할당하는 제2단계를 포함하는 멀티코어 시스템의 작업 분배 방법.
- 제 1항에 있어서, 상기 제2단계는상기 성능 대비 잔여 작업량이 작은 코어에 작업을 추가적으로 할당하면서, 성능 대비 잔여 작업량이 가장 많은 코어보다 성능 대비 잔여 작업량 수준을 초과하기 전까지 추가적으로 작업을 할당하는 멀티코어 시스템의 작업 분배 방법.
- 제 1항에 있어서, 상기 제2단계 수행 이전에상기 각 코어에 동일한 양의 작업을 할당하는 멀티코어 시스템의 작업 분배 방법.
- 제 1항에 있어서, 상기 제1단계는상기 각 코어에서 단위 작업이 종료할 때마다 주기적으로 각 코어의 성능에 대한 정보를 수집하는 멀티코어 시스템의 작업 분배 방법.
- 제1항에 있어서,상기 성능 정보는 일정 작업 구간에 대한 각 코어의 작업 처리 속도에 대한 산술 평균인 멀티코어 시스템의 작업 분배 방법
- 제1항에 있어서,상기 컴퓨팅 시스템은 서로 다른 성능의 코어를 2개 이상 포함하고 있는 멀티코어 시스템의 작업 분배 방법.
- 복수개의 코어를 포함하는 컴퓨팅 시스템에 있어서,특정 어플리케이션으로부터 요청 받은 업무에 대한 복수개의 단위 작업을 직접 수행하는 코어 및 상기 단위 작업에 대한 정보를 저장하고 있는 작업큐를 포함하는 하나 또는 둘 이상의 작업 프로세서; 및,상기 작업프로세서의 성능 대비 잔여 작업량에 기초하여 상기 단위작업을 상기 작업 프로세서에 할당하는 호스트 프로세서를 포함하는 컴퓨팅 시스템.
- 제7항에 있어서,상기 호스트 프로세서는상기 작업 프로세서에 존재하는 작업큐의 상태를 주기적으로 모니터링하는 작업큐 모니터; 및,특정 어플리케이션으로부터 요청받은 업무를 보다 작은 크기의 복수개의 단위 작업으로 나눈 다음 상기 작업을 각 작업 프로세서에게 할당하는 작업 스케줄러를 포함하는 컴퓨팅 시스템.
- 제7항에 있어서,상기 성능 정보는 일정 작업 구간에 대한 각 코어의 작업 처리 속도에 대한 산술 평균인 컴퓨팅 시스템.
- 제7항에 있어서,상기 복수개의 코어는 서로 다른 성능을 갖는 컴퓨팅 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090131711A KR101651871B1 (ko) | 2009-12-28 | 2009-12-28 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
US12/842,470 US20110161978A1 (en) | 2009-12-28 | 2010-07-23 | Job allocation method and apparatus for a multi-core system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090131711A KR101651871B1 (ko) | 2009-12-28 | 2009-12-28 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110075295A true KR20110075295A (ko) | 2011-07-06 |
KR101651871B1 KR101651871B1 (ko) | 2016-09-09 |
Family
ID=44189101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090131711A KR101651871B1 (ko) | 2009-12-28 | 2009-12-28 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110161978A1 (ko) |
KR (1) | KR101651871B1 (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411659B2 (en) | 2013-08-13 | 2016-08-09 | Samsung Sds Co., Ltd. | Data processing method used in distributed system |
KR20170014861A (ko) * | 2015-07-31 | 2017-02-08 | 삼성전자주식회사 | 응용 프로그램을 제어하기 위한 장치 및 방법 |
KR101721341B1 (ko) * | 2015-12-31 | 2017-04-10 | 전북대학교산학협력단 | 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법 |
KR20170116439A (ko) * | 2016-04-11 | 2017-10-19 | 한국전자통신연구원 | 태스크 스케줄링 방법 및 장치 |
KR20200068548A (ko) * | 2018-12-05 | 2020-06-15 | 한국전자통신연구원 | 병렬계산 가속기 할당률 결정 장치 및 방법 |
KR102384821B1 (ko) * | 2021-07-14 | 2022-04-08 | (주)뤼이드 | 자동화 머신 러닝을 위한 작업 스케줄링 방법 |
KR102411681B1 (ko) * | 2021-12-24 | 2022-06-22 | 주식회사 모빌린트 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100156888A1 (en) * | 2008-12-23 | 2010-06-24 | Intel Corporation | Adaptive mapping for heterogeneous processing systems |
JP5621287B2 (ja) * | 2010-03-17 | 2014-11-12 | 富士通株式会社 | 負荷分散システムおよびコンピュータプログラム |
US8843932B2 (en) * | 2011-01-12 | 2014-09-23 | Wisconsin Alumni Research Foundation | System and method for controlling excessive parallelism in multiprocessor systems |
KR20130115574A (ko) * | 2012-04-12 | 2013-10-22 | 삼성전자주식회사 | 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치 |
US9417935B2 (en) * | 2012-05-01 | 2016-08-16 | Microsoft Technology Licensing, Llc | Many-core process scheduling to maximize cache usage |
US9626216B2 (en) * | 2012-05-09 | 2017-04-18 | Nvidia Corporation | Graphics processing unit sharing between many applications |
US9575813B2 (en) | 2012-07-17 | 2017-02-21 | Microsoft Technology Licensing, Llc | Pattern matching process scheduler with upstream optimization |
KR102082859B1 (ko) | 2013-01-07 | 2020-02-28 | 삼성전자주식회사 | 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법 |
KR101694310B1 (ko) * | 2013-06-14 | 2017-01-10 | 한국전자통신연구원 | 멀티코어 프로세서 기반의 모니터링 장치 및 그 방법 |
US9250953B2 (en) * | 2013-11-12 | 2016-02-02 | Oxide Interactive Llc | Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system |
US9785481B2 (en) * | 2014-07-24 | 2017-10-10 | Qualcomm Innovation Center, Inc. | Power aware task scheduling on multi-processor systems |
CN105404553A (zh) * | 2015-12-01 | 2016-03-16 | 安徽瑞信软件有限公司 | 采集装置的任务分配方法 |
JP6904064B2 (ja) * | 2017-05-29 | 2021-07-14 | 富士通株式会社 | タスク配備プログラム、タスク配備方法、およびタスク配備装置 |
KR102442921B1 (ko) | 2017-12-11 | 2022-09-13 | 삼성전자주식회사 | 디지털 시그널 프로세서(dsp)의 태스크 관리 효율을 높일 수 있는 전자 장치 |
CN110515749B (zh) * | 2019-08-30 | 2022-06-24 | 深圳乐信软件技术有限公司 | 信息发送的队列调度的方法、装置、服务器和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040104510A (ko) * | 2002-03-11 | 2004-12-10 | 가부시키가이샤 소니 컴퓨터 엔터테인먼트 | 그래픽 프로세스 최적화 방법 및 시스템 |
US20050013705A1 (en) * | 2003-07-16 | 2005-01-20 | Keith Farkas | Heterogeneous processor core systems for improved throughput |
US20080077928A1 (en) * | 2006-09-27 | 2008-03-27 | Kabushiki Kaisha Toshiba | Multiprocessor system |
KR20080114003A (ko) * | 2007-06-26 | 2008-12-31 | 삼성전자주식회사 | 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6704799B1 (en) * | 1998-12-29 | 2004-03-09 | Honeywell Inc. | Time-efficient inter-process communication in a harmonic rate system |
US6741983B1 (en) * | 1999-09-28 | 2004-05-25 | John D. Birdwell | Method of indexed storage and retrieval of multidimensional information |
JP4475614B2 (ja) * | 2000-04-28 | 2010-06-09 | 大正製薬株式会社 | 並列処理方法におけるジョブの割り当て方法および並列処理方法 |
JP3426223B2 (ja) * | 2000-09-27 | 2003-07-14 | 株式会社ソニー・コンピュータエンタテインメント | マルチプロセッサシステム、データ処理システム、データ処理方法、コンピュータプログラム |
US7356655B2 (en) * | 2003-05-15 | 2008-04-08 | International Business Machines Corporation | Methods, systems, and media for managing dynamic storage |
US7590984B2 (en) * | 2003-05-29 | 2009-09-15 | International Business Machines Corporation | System and method for balancing a computing load among computing resources in a distributed computing problem |
US20050022173A1 (en) * | 2003-05-30 | 2005-01-27 | Codito Technologies Private Limited | Method and system for allocation of special purpose computing resources in a multiprocessor system |
US7665092B1 (en) * | 2004-12-15 | 2010-02-16 | Sun Microsystems, Inc. | Method and apparatus for distributed state-based load balancing between task queues |
US8015564B1 (en) * | 2005-04-27 | 2011-09-06 | Hewlett-Packard Development Company, L.P. | Method of dispatching tasks in multi-processor computing environment with dispatching rules and monitoring of system status |
US8555288B2 (en) * | 2006-05-17 | 2013-10-08 | Teradata Us, Inc. | Managing database utilities to improve throughput and concurrency |
CN101517576B (zh) * | 2006-05-22 | 2011-10-05 | 相干逻辑公司 | 基于软件程序在处理系统上的运行而设计asic |
US20080022283A1 (en) * | 2006-07-19 | 2008-01-24 | International Business Machines Corporation | Quality of service scheduling for simultaneous multi-threaded processors |
US20080263324A1 (en) * | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
KR101286700B1 (ko) * | 2006-11-06 | 2013-07-16 | 삼성전자주식회사 | 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법 |
US8429663B2 (en) * | 2007-03-02 | 2013-04-23 | Nec Corporation | Allocating task groups to processor cores based on number of task allocated per core, tolerable execution time, distance between cores, core coordinates, performance and disposition pattern |
US8279865B2 (en) * | 2007-04-20 | 2012-10-02 | John Giacomoni | Efficient pipeline parallelism using frame shared memory |
KR20090005921A (ko) * | 2007-07-10 | 2009-01-14 | 삼성전자주식회사 | 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치 |
US7957948B2 (en) * | 2007-08-22 | 2011-06-07 | Hyperformit, Inc. | System and method for capacity planning for systems with multithreaded multicore multiprocessor resources |
US7716006B2 (en) * | 2008-04-25 | 2010-05-11 | Oracle America, Inc. | Workload scheduling in multi-core processors |
US8037350B1 (en) * | 2008-04-30 | 2011-10-11 | Hewlett-Packard Development Company, L.P. | Altering a degree of redundancy used during execution of an application |
US20090288092A1 (en) * | 2008-05-15 | 2009-11-19 | Hiroaki Yamaoka | Systems and Methods for Improving the Reliability of a Multi-Core Processor |
FR2931269A1 (fr) * | 2008-05-16 | 2009-11-20 | Ateji Soc Par Actions Simplifi | Procede et systeme de developpement de programmes paralleles |
US8347301B2 (en) * | 2008-06-30 | 2013-01-01 | Intel Corporation | Device, system, and method of scheduling tasks of a multithreaded application |
JP5245722B2 (ja) * | 2008-10-29 | 2013-07-24 | 富士通株式会社 | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム |
US8122269B2 (en) * | 2009-01-07 | 2012-02-21 | International Business Machines Corporation | Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores |
-
2009
- 2009-12-28 KR KR1020090131711A patent/KR101651871B1/ko active IP Right Grant
-
2010
- 2010-07-23 US US12/842,470 patent/US20110161978A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040104510A (ko) * | 2002-03-11 | 2004-12-10 | 가부시키가이샤 소니 컴퓨터 엔터테인먼트 | 그래픽 프로세스 최적화 방법 및 시스템 |
US20050013705A1 (en) * | 2003-07-16 | 2005-01-20 | Keith Farkas | Heterogeneous processor core systems for improved throughput |
US20080077928A1 (en) * | 2006-09-27 | 2008-03-27 | Kabushiki Kaisha Toshiba | Multiprocessor system |
KR20080114003A (ko) * | 2007-06-26 | 2008-12-31 | 삼성전자주식회사 | 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411659B2 (en) | 2013-08-13 | 2016-08-09 | Samsung Sds Co., Ltd. | Data processing method used in distributed system |
KR20170014861A (ko) * | 2015-07-31 | 2017-02-08 | 삼성전자주식회사 | 응용 프로그램을 제어하기 위한 장치 및 방법 |
KR101721341B1 (ko) * | 2015-12-31 | 2017-04-10 | 전북대학교산학협력단 | 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법 |
KR20170116439A (ko) * | 2016-04-11 | 2017-10-19 | 한국전자통신연구원 | 태스크 스케줄링 방법 및 장치 |
KR20200068548A (ko) * | 2018-12-05 | 2020-06-15 | 한국전자통신연구원 | 병렬계산 가속기 할당률 결정 장치 및 방법 |
KR102384821B1 (ko) * | 2021-07-14 | 2022-04-08 | (주)뤼이드 | 자동화 머신 러닝을 위한 작업 스케줄링 방법 |
KR102411681B1 (ko) * | 2021-12-24 | 2022-06-22 | 주식회사 모빌린트 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
WO2023120836A1 (ko) * | 2021-12-24 | 2023-06-29 | 주식회사 모빌린트 | 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
US20110161978A1 (en) | 2011-06-30 |
KR101651871B1 (ko) | 2016-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20110075295A (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
JP6799947B2 (ja) | スライディングタイムウィンドウを用いてタスクをスケジュール設定するためのシステムおよび方法 | |
KR101953906B1 (ko) | 태스크 스케줄링 방법 및 장치 | |
US9152200B2 (en) | Resource and power management using nested heterogeneous hypervisors | |
KR101640848B1 (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
EP2466460B1 (en) | Compiling apparatus and method for a multicore device | |
KR101626378B1 (ko) | 병렬도를 고려한 병렬 처리 장치 및 방법 | |
US9229783B2 (en) | Methods and apparatus for resource capacity evaluation in a system of virtual containers | |
US8479205B2 (en) | Schedule control program and schedule control method | |
US20110161943A1 (en) | Method to dynamically distribute a multi-dimensional work set across a multi-core system | |
JP4705051B2 (ja) | 計算機システム | |
JP2016526735A (ja) | 仮想ハドゥープマネジャ | |
JP2008191949A (ja) | マルチコアシステムおよびマルチコアシステムの負荷分散方法 | |
JP2015146154A (ja) | ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム | |
US10846144B2 (en) | Multistep automated scaling for cluster containers | |
KR20100118826A (ko) | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 | |
KR101553650B1 (ko) | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 | |
US8387041B2 (en) | Localized multi-element processor resource sharing among logical partitions | |
KR20130088513A (ko) | 멀티코어 시스템의 태스크 분배 방법 및 장치 | |
JP6252140B2 (ja) | タスク割り付けプログラム及びタスク割り付け方法 | |
JP2021522593A (ja) | Gpuについてのフィードバックガイド付き分割ワークグループのディスパッチ | |
JP2022539955A (ja) | タスクスケジューリング方法及び装置 | |
KR20180045347A (ko) | 가상화 환경에서의 자원 관리 방법 및 이를 지원하는 장치 | |
US11521042B2 (en) | System and method to dynamically and automatically sharing resources of coprocessor AI accelerators | |
JP5178778B2 (ja) | 仮想計算機およびcpu割り当て方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |