KR101733117B1 - 멀티코어 시스템의 태스크 분배 방법 및 장치 - Google Patents

멀티코어 시스템의 태스크 분배 방법 및 장치 Download PDF

Info

Publication number
KR101733117B1
KR101733117B1 KR1020120009789A KR20120009789A KR101733117B1 KR 101733117 B1 KR101733117 B1 KR 101733117B1 KR 1020120009789 A KR1020120009789 A KR 1020120009789A KR 20120009789 A KR20120009789 A KR 20120009789A KR 101733117 B1 KR101733117 B1 KR 101733117B1
Authority
KR
South Korea
Prior art keywords
core
real
time
task
role
Prior art date
Application number
KR1020120009789A
Other languages
English (en)
Other versions
KR20130088513A (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 KR1020120009789A priority Critical patent/KR101733117B1/ko
Priority to US13/753,642 priority patent/US20130198758A1/en
Publication of KR20130088513A publication Critical patent/KR20130088513A/ko
Application granted granted Critical
Publication of KR101733117B1 publication Critical patent/KR101733117B1/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/5061Partitioning or combining of resources
    • 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/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
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 멀티코어 CPU(Central Process Unit)를 사용하는 실시간 운영체제에서의 시스템의 태스크 분배에 대한 것으로, 멀티코어 시스템에 포함된 복수개의 코어를 실시간 태스크를 수행하는 실시간 코어와 비실시간 태스크를 수행하는 비실시간 코어로 구분하여 코어 역할을 설정하고, 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하여 태스크를 수행하고, 상기 태스크 수행 과정의 정보를 수집하고 수집된 정보에 기초하여 상기 설정된 코어 역할을 변경하도록 함으로써, 멀티코어 시스템의 효율성을 향상시킬 수 있도록 하는 발명이다.

Description

멀티코어 시스템의 태스크 분배 방법 및 장치{TASK DISTRIBUTION METHOD ON MULTICORE SYSTEM AND APPARATUS THEREOF}
본 발명은 멀티코어 CPU(Central Process Unit)를 사용하는 실시간 운영체제에서의 시스템의 태스크 분배 방법 및 장치에 대한 것이다.
최근의 CPU 제조 기술의 발전으로 인하여, 현재 대부분의 컴퓨터는 2개 이상의 코어를 가지고 있는 멀티코어 시스템으로 빠르게 전환되고 있고, 상기 멀티코어 시스템의 운영체제는 2개 이상의 코어를 효율적으로 운영하기 위하여 기존의 단일코어 기반에서 멀티코어를 지원하는 형태로 발전하고 있다.
멀티코어 시스템에서의 중요한 부분은 멀티코어를 얼마나 동시에 활용하느냐에 따라서 전체 시스템의 성능을 크게 좌우하게 된다. 따라서, 다수의 태스크들을 얼마나 효율적으로 할당하는지 여부가 성능에 많은 영향을 미친다. 즉, 스케쥴러의 멀티코어 활용도가 성능을 좌우하는 요소가 되고 있다.
기존의 운영체제들은 멀티코어 이전에는 멀티 프로세서 환경에서의 스케쥴링들을 많은 부분 다루고 있었고, 캐쉬(cache) 부분이 통합된 멀티코어로 발전하면서 많은 스케쥴러의 개선을 통해서 효율적으로 스케쥴링을 수행하고 있다. 또한, 현재 윈도우(windows)와 리눅스(linux)를 비롯한 대다수의 운영체제들은, 멀티 프로세서, 멀티 코어를 지원하는 스케쥴러를 탑재하고 있는 상황이다.
하지만, 이는 범용적인 시스템의 운영체제로써 성능 위주의 시스템을 가정하고 개발된 스케쥴러로써, 실시간 시스템에 해당되지 않는다.
특히, 실시간 태스크와 비 실시간 태스크가 혼재되어 수행 중인 시스템에서는 기존의 스케쥴러를 그대로 사용하게 될 시에 비 실시간 태스크로 인한 실시간 태스크의 수행의 처리 속도가 저하되는 문제점이 있다.
또한, 멀티코어의 태스크 분배와 관련하여 관련 기술(한국 특허 공개 번호: 2009-0066765, '멀티코어 플랫폼에서의 태스크 이동 방법 및 장치')가 제시된 바 있으나, 코어 역할 설정과 태스크 분배가 효율적으로 수행되지 못하는 문제점이 존재한다.
따라서, 이러한 실시간 시스템의 특성을 멀티코어를 이용한 시스템에 반영하여, 실시간 시스템은, 실시간 태스크의 수행을 정확하게 진행하고, 비 실시간 태스크의 성능 저하를 최소화할 수 있도록 동작하여야 한다. 즉, 멀티코어 시스템에서의 태스크의 초기 분배와 교환이 효율적으로 수행되어야 한다.
본 발명은, 상기 문제점을 해결하기 위하여, 실시간 태스크의 특성을 시스템에 반영하여 실시간 태스크와 비 실시간 태스크를 시스템의 코어에 분배하고, 태스크의 수행 중에 생기는 불균형을 동적으로 해결할 수 있도록 하는 태스크 분배 방법 및 장치를 제공하는 것을 그 목적으로 한다.
본 발명의 목적을 달성하기 위한 멀티코어 시스템의 태스크 분배 방법은, 상기 멀티코어 시스템에 포함된 복수개의 코어를, 실시간 태스크를 수행하는 실시간 코어와 비실시간 태스크를 수행하는 비실시간 코어로 구분하여 코어 역할을 설정하는 단계, 상기 설정된 코어 역할에 기초하여, 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 단계, 상기 각 코어가 상기 할당 받은 태스크를 수행하는 단계 및 상기 태스크 수행 과정의 정보를 수집하고, 상기 수집된 정보에 기초하여 상기 설정된 코어 역할을 변경하는 단계를 포함한다.
또한, 본 발명의 목적을 달성하기 위한 멀티코어 시스템의 태스크 분배 장치는, 태스크 수행을 위한 복수개의 코어를 포함하는 멀티코어부, 상기 멀티코어에서 상기 할당된 태스크가 수행되는 동안 상기 태스크 수행 정보를 수집하는 수행 정보 수집부, 상기 멀티코어부에 포함된 복수개의 코어를, 실시간 태스크를 수행하는 실시간 코어와 비실시간 태스크를 수행하는 비실시간 코어로 구분하여 코어 역할을 설정하고, 상기 태스크 수행 정보에 기초하여 상기 설정된 코어 역할을 변경하는 코어 역할 설정부, 및 상기 설정된 코어 역할에 기초하여, 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 태스크 할당부를 포함한다.
본 발명의 구성에 따라 멀티코어에 태스크를 할당하고, 전환하는 경우에는 성능 위주의 기존의 태스크 스케쥴링 알고리즘으로 인해서 생기는 반응성 저하 및, 응답성의 문제를 해결하여 효율성을 향상시킬 수 있다. 즉, 실시간 시스템에서 좀더 적합한 멀티코어 활용을 할 수 있도록 한다.
도 1은 본 발명의 실시 예에 따른 태스크 분배 방법을 도시한 순서도이다.
도 2는 도 1의 코어 역할 설정 단계를 상세히 도시한 순서도이다.
도 3은 도 1의 태스크 할당 단계를 상세히 도시한 순서도이다.
도 4는 도 1의 태스크 수행 단계 및 태스크 수행 결과 피드백 단계를 상세히 도시한 순서도 이다.
도 5는 본 발명의 실시 예에 따른 태스크 분배 장치의 구성을 도시한 도면이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 여러 가지 실시 예들을 보다 상세히 설명하도록 하겠다. 나아가, 이하의 설명에서 사용되는 구성요소에 대한 접미사 "부", “모듈” 및 "장치"는 단순히 본 명세서 작성의 용이함을 고려하여 부여되는 것으로서, 상기 "부", “모듈” 및 "장치"는 서로 혼용되어 사용될 수 있으며, 하드웨어 또는 소프트웨어로 설계 가능하다.
나아가, 이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 실시 예를 상세하게 설명하지만, 본 발명이 실시 예들에 의해 제한되거나 한정되는 것은 아니다.
도 1은 본 발명의 실시 예에 따른 태스크 분배 방법을 도시한 순서도이다.
실시 예에 따라, 복수개의 코어를 포함하는 멀티코어 시스템은, 태스크 수행 정보에 대응하여, 각 코어를 실시간 코어 또는 비실시간 코어로 설정할 수 있다.
즉, 실시간 태스크의 반응성, 정시성을 높이기 위하여 먼저 작업을 할당하기 이전에 코어의 역할을 실시간 코어와 비 실시간 코어로 나누고 실시간 코어는 실시간 태스크만, 비 실시간 코어는 비 실시간 태스크만 할당할 수 있다. 상세한 단계는 이하와 같다.
먼저, 상기 멀티코어 시스템에 포함된 복수개의 코어에 대하여 코어의 역할을 할당한다(S101). 즉, 상기 복수개의 코어들을, 실시간 태스크를 수행하는 실시간 코어와 비실시간 태스크를 수행하는 비실시간 코어로 구분하여 코어 역할을 설정한다.
또한, 실시 예에 따라, 태스크 수행 정보에 기초하여 실시간 코어의 개수와 비실시간 코어의 개수를 설정할 수 있다. 이에 관하여는 이하 도 2에서 상세히 설명한다.
다음으로, 상기 역할이 할당된 코어들에 태스크를 할당한다(S102).
실시 예에 따라, 상기 설정된 코어 역할에 기초하여, 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당할 수 있다.
또한, 실시 예에 따라, 태스크 수행 정보를 참조하여 태스크를 각 코어에 할당할 수 있다. 이에 관하여는 이하 도 3에서 상세히 설명한다.
다음으로, 상기 각 코어가 상기 할당 받은 태스크를 각각 수행한다(S103).
또한, 상기 태스크가 수행되는 동안, 상기 태스크 수행 과정의 정보를 수집하고, 상기 수집된 정보에 기초하여 상기 설정된 코어 역할을 변경한다(S104).
즉, 실시 예에 따라, 실시간 코어와 비실시간 코어의 개수를 변경할 수 있다. 이에 관하여는 이하 도 4에서 상세히 설명한다.
도 2는 도 1의 코어 역할 설정 단계를 상세히 도시한 순서도이다.
실시 예에 따라, 상기 코어 역할을 설정하는 경우, 상기 멀티코어 시스템의 운영 체제가 실시간 운영체제이고(S201), 상기 멀티코어 시스템에서 수행될 태스크의 태스크 정보가 존재하는 경우에(S202), 상기 멀티코어 시스템에서 수행될 실시간 태스크와 비실시간 태스크의 개수에 비례되도록 실시간 코어와 비실시간 코어의 개수를 결정하여(S203), 코어 역할을 설정할 수 있다(S204).
즉, 예를 들어, 실시간 운영체제로 수행 예정인 태스크의 숫자와 비실시간 태스크의 숫자를 모두 아는 경우, 멀티코어의 코어 개수가 N, 실시간 태스크의 개수가 Prt, 비실시간 태스크의 개수가 Pnorm 이고, 실시간 코어의 개수가 Crt, 비실시간 코어의 개수가 Cnorm 이면, 하기 수학식 1 및 수학식 2를 통하여 코어 개수를 결정할 수 있다.
Figure 112012008111963-pat00001
Figure 112012008111963-pat00002
또한, 반면에, 상기 운영체제가 실시간 운영체제가 아닌 경우, 또는 상기 태스크 정보가 존재하지 않는 경우에는, 상기 실시간 코어와 상기 비실시간 코어의 개수가 동일하게 되도록 코어 역할을 설정할 수 있다(S204).
도 3은 도 1의 태스크 할당 단계를 상세히 도시한 순서도이다.
실시 예에 따라, 각각의 코어에 태스크를 할당하는 경우, 멀티코어 시스템의 운영 체제가 실시간 운영체제인지 판단하고(S301), 상기 운영체제가 실시간 운영체제인 경우, 상기 멀티코어 시스템에서 수행될 태스크의 태스크 정보가 존재하는지 판단하고(S302), 상기 태스크 정보가 존재하는 경우, 상기 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 상기 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당(S303)할 수 있다.
또한, 반면에, 상기 운영체제가 실시간 운영체제가 아닌 경우, 또는 상기 태스크 정보가 존재하지 않는 경우에는, 태스크를 상기 비실시간 코어에 먼저 할당(S304)할 수 있다.
즉, 비실시간 운영체제인 경우, 태스크의 생성과 수행이 자유롭게 이루어지게 된므로, 미리정해진 할당 값이 없이 생성시에 처음 비 실시간 코어에 먼저 할당하고, 실시간 운영체제인 경우에는, 실시간 태스크인 Periodic 태스크를 실시간 코어에 할당하고, 비실시간 태스크인 aperiodic 태스크는 비 실시간 코어에 할당할 수 있다.
도 4는 도 1의 태스크 수행 단계 및 태스크 수행 결과 피드백 단계를 상세히 도시한 순서도 이다.
실시 예에 따라, 태스크가 각 코어에서 수행되는 중에(S401), 태스크 수행 시간 정보, 수행되는 태스크의 개수 및 속성 정보, 컨텍스트 스위칭(context switching) 정보, 및 캐시 미스(cache miss) 정보 중 적어도 하나의 정보를 포함하는 태스크 수행 과정 정보를 수집하고(S401), 상기 수집된 정보가 기 설정된 코어 불균형 조건에 해당하지 판단하여(S403), 불균형 상태인 경우, 상기 수집된 정보에 기초하여 상기 설정된 코어 역할을 변경(S404)할 수 있다.
상기 시간 정보는, 슬립(Sleep) 또는 블록(Block) 되었을 때의 시간 정보, 태스크 수행 요청 시간과 실제 소요 시간의 차이에 대한 정보, 주기적 태스크의 실행 시간 정보와 현재 태스크의 수행 시간 정보를 포함할 수 있다.
또한, 상기 캐시 미스는 코어의 L2 캐시에 대한 데이터 손실 정보를 포함할 수 있다.
실시 예에 따라, 상기 설정된 코어 역할을 변경하는 경우, 상기 태스크 수행 시간 정보에 기초하여, 태스크 처리 요청 시간과 실제 태스크 처리 시간의 차이가 일정 범위 이상인 경우, 상기 시간의 차이에 대응하여 소정 개수의 비실시간 코어를 실시간 코어로 역할을 재설정할 수 있다.
또한, 실시 예에 따라, 상기 수행되는 비실시간 태스크과 실시간 태스크의 실행비율과, 상기 역할이 설정된 비실시간 코어와 실시간 코어의 비율에 대한 차이가 일정 범위 이상인 경우, 상기 비율의 차이가 감소되도록 코어 역할을 재설정할 수 있다.
또한, 실시 예에 따라, 상기 컨텍스트 스위칭이 일정 범위 이상 증가하는 경우, 또는 상기 캐시 미스가 일정 범위 이상 증가하는 경우에는, 소정 개수의 실시간 코어를 비실시간 코어로 역할을 재설정할 수 있다.
즉, 위와 같은 과정을 정해진 주기마다 수행하여서 코어들의 불균형을 해소할 수 있다. 또한 코어의 특성이 변경되면, 해당되는 프로세스의 미그레이션(migration)도 같이 수행할 수 있다.
도 5는 본 발명의 실시 예에 따른 태스크 분배 장치의 구성을 도시한 도면이다.
실시 예에 따라, 멀티코어 시스템은, 태스크 수행을 위한 복수개의 코어를 포함하는 멀티코어부(501), 상기 멀티코어에서 상기 할당된 태스크가 수행되는 동안 상기 태스크 수행 정보를 수집하는 수행 정보 수집부(504), 상기 멀티코어부에 포함된 복수개의 코어를, 실시간 태스크를 수행하는 실시간 코어와 비실시간 태스크를 수행하는 비실시간 코어로 구분하여 코어 역할을 설정하고, 상기 태스크 수행 정보에 기초하여 상기 설정된 코어 역할을 변경하는 코어 역할 설정부(502), 및 상기 설정된 코어 역할에 기초하여, 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 태스크 할당부(503)을 포함할 수 있다.
또한, 실시 예에 따라, 상기 수행 정보 수집부(504)는, 상기 태스크 수행 시간 정보, 상기 수행되는 태스크의 개수 및 속성 정보, 컨텍스트 스위칭 정보, 및 캐시 미스 정보 중 적어도 하나의 정보를 포함하는 태스크 수행 과정 정보를 수집할 수 있고, 상기 코어 역할 설정부(502)는, 상기 수집된 정보가 기 설정된 코어 불균형 조건에 해당하는 경우, 상기 수집된 정보에 기초하여 상기 설정된 코어 역할을 재설정할 수 있다.
특히, 상기 코어 역할 설정부(502)는, 상기 태스크 수행 시간 정보에 기초하여, 태스크 처리 요청 시간과 실제 태스크 처리 시간의 차이가 일정 범위 이상인 경우, 상기 시간의 차이에 대응하여 소정 개수의 비실시간 코어를 실시간 코어로 역할을 재설정할 수 있다.
또한, 상기 수행되는 비실시간 태스크과 실시간 태스크의 실행비율과, 상기 역할이 설정된 비실시간 코어와 실시간 코어의 비율에 대한 차이가 일정 범위 이상인 경우, 상기 비율의 차이가 감소되도록 코어 역할을 재설정할 수 있다.
또한, 상기 컨텍스트 스위칭이 일정 범위 이상 증가하는 경우, 또는 상기 캐시 미스가 일정 범위 이상 증가하는 경우에는, 소정 개수의 실시간 코어를 비실시간 코어로 역할을 재설정할 수 있다.
또한, 코어 역할 설정부는, 상기 멀티코어 시스템의 운영 체제가 실시간 운영체제이고, 상기 멀티코어 시스템에서 수행될 태스크의 태스크 정보가 존재하는 경우, 상기 멀티코어 시스템에서 수행될 실시간 태스크와 비실시간 태스크의 개수에 비례되도록 실시간 코어와 비실시간 코어의 개수를 결정하고, 상기 결정된 개수에 기초하여 상기 멀티코어 시스템의 코어를 실시간 코어와 비실시간 코어로 코어 역할을 설정할 수 있고, 반면에, 상기 운영체제가 실시간 운영체제가 아닌 경우, 또는 상기 태스크 정보가 존재하지 않는 경우에는, 상기 실시간 코어와 상기 비실시간 코어의 개수가 동일하게 되도록 코어 역할을 할 수 있다.
또한, 상기 코어 역할 설정부는, 상기 멀티코어 시스템의 운영 체제가 실시간 운영체제이고, 상기 멀티코어 시스템에서 수행될 태스크의 태스크 정보가 존재하는 경우, 상기 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 상기 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당할 수 있고, 반면에, 상기 운영체제가 실시간 운영체제가 아닌 경우, 또는 상기 태스크 정보가 존재하지 않는 경우에는, 태스크를 상기 비실시간 코어에 먼저 할당할 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해돼서는 안 될 것이다.
501: 멀티 코어부
502: 코어 역할 설정부
503: 태스크 할당부
504: 수행 정보 수집부

Claims (18)

  1. 태스크 분배 장치가 멀티코어 시스템의 태스크 분배 방법에 있어서,
    코어 역할 설정부가 상기 멀티코어 시스템에 포함된 복수개의 코어를, 실시간 태스크를 수행하는 실시간 코어와 비실시간 태스크를 수행하는 비실시간 코어로 구분하여 코어 역할을 설정하는 단계;
    태스크 할당부가 상기 설정된 코어 역할에 기초하여, 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 단계;
    상기 복수개의 코어가 상기 실시간 태스크 및 상기 비실시간 태스크 중 적어도 하나를 수행하는 단계; 및
    수행 정보 수집부가 상기 실시간 태스크 및 상기 비실시간 태스크 중 적어도 하나를 수행한 태스크 수행 정보를 수집하고, 상기 코어 역할 설정부가 상기 태스크 수행 정보에 기초하여 상기 설정된 코어 역할을 변경하는 단계를 포함하고,
    상기 설정된 코어 역할을 변경하는 단계는,
    상기 수행 정보 수집부가 태스크 수행 시간 정보, 상기 태스크의 개수 및 속성 정보, 컨텍스트 스위칭 정보, 및 캐시 미스 정보 중 적어도 하나의 정보를 포함하는 태스크 수행 과정 정보를 수집하는 단계; 및 상기 수집된 정보가 기 설정된 코어 불균형 조건에 해당하는 경우, 상기 코어 역할 설정부가 상기 수집된 정보에 기초하여 상기 설정된 코어 역할을 변경하는 단계를 포함하는 것을 특징으로 하는 태스크 분배 방법.
  2. 삭제
  3. 청구항 1에 있어서.
    상기 설정된 코어 역할을 변경하는 단계는,
    상기 코어 역할 설정부가 상기 태스크 수행 시간 정보에 기초하여, 태스크 처리 요청 시간과 실제 태스크 처리 시간의 차이가 일정 범위 이상인 경우, 상기 시간의 차이에 대응하여 소정 개수의 비실시간 코어를 실시간 코어로 역할 변경하는 단계를 포함하는 것을 특징으로 하는 태스크 분배 방법.
  4. 청구항 1에 있어서,
    상기 설정된 코어 역할을 변경하는 단계는,
    상기 코어 역할 설정부가 상기 수행되는 비실시간 태스크과 실시간 태스크의 실행비율과, 상기 역할이 설정된 비실시간 코어와 실시간 코어의 비율에 대한 차이가 일정 범위 이상인 경우, 상기 비율의 차이가 감소되도록 코어 역할을 재설정하는 단계를 포함하는 것을 특징으로 하는 태스크 분배 방법.
  5. 청구항 1에 있어서,
    상기 설정된 코어 역할을 변경하는 단계는,
    상기 코어 역할 설정부가 상기 컨텍스트 스위칭이 일정 범위 이상 증가하는 경우, 또는 상기 캐시 미스가 일정 범위 이상 증가하는 경우에는, 소정 개수의 실시간 코어를 비실시간 코어로 역할 변경하는 단계를 포함하는 것을 특징으로 하는 태스크 분배 방법.
  6. 청구항 1에 있어서,
    상기 코어 역할을 설정하는 단계는,
    상기 코어 역할 설정부가 상기 멀티코어 시스템의 운영 체제가 실시간 운영체제인지 판단하는 단계;
    상기 운영체제가 실시간 운영체제인 경우, 상기 코어 역할 설정부가 상기 멀티코어 시스템에서 수행될 태스크의 태스크 정보가 존재하는지 판단하는 단계;
    상기 태스크 정보가 존재하는 경우, 상기 코어 역할 설정부가 상기 멀티코어 시스템에서 수행될 실시간 태스크와 비실시간 태스크의 개수에 비례되도록 실시간 코어와 비실시간 코어의 개수를 결정하는 단계;
    상기 코어 역할 설정부가 결정된 개수에 기초하여, 상기 멀티코어 시스템의 코어를 실시간 코어와 비실시간 코어로 코어 역할을 설정하는 단계를 포함하는 것을 특징으로 하는 태스크 분배 방법.
  7. 청구항 6에 있어서,
    상기 코어 역할을 설정하는 단계는,
    상기 태스크 정보가 존재하는지 판단하는 단계에서 상기 운영체제가 실시간 운영체제가 아닌 경우, 및 상기 실시간 코어와 비실시간 코어의 개수를 결정하는 단계에서 상기 태스크 정보가 존재하지 않는 경우 중 적어도 하나의 경우에는,
    상기 실시간 코어와 비실시간 코어의 개수를 결정하는 단계 이후에,
    상기 코어 역할 설정부가 상기 실시간 코어와 상기 비실시간 코어의 개수가 동일하게 되도록 코어 역할을 설정하는 단계를 더 포함하는 것을 특징으로 하는 태스크 분배 방법.
  8. 청구항 1에 있어서,
    상기 설정된 코어에 할당하는 단계는,
    상기 태스크 할당부가 상기 멀티코어 시스템의 운영 체제가 실시간 운영체제인지 판단하는 단계;
    상기 운영체제가 실시간 운영체제인 경우, 상기 태스크 할당부가 상기 멀티코어 시스템에서 수행될 태스크의 태스크 정보가 존재하는지 판단하는 단계; 및
    상기 태스크 정보가 존재하는 경우, 상기 태스크 할당부가 상기 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 상기 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 단계를 포함하는 것을 특징으로 하는 태스크 분배 방법.
  9. 청구항 8에 있어서,
    상기 설정된 코어에 할당하는 단계는
    상기 실시간 운영체제인지 판단하는 단계에서 상기 운영체제가 실시간 운영체제가 아닌 경우, 및 상기 태스크 정보가 존재하는지 판단하는 단계에서 상기 태스크 정보가 존재하지 않는 경우 중 적어도 하나의 경우에는,
    상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 단계 이후에,
    상기 태스크 할당부가 태스크를 상기 비실시간 코어에 먼저 할당하는 단계를 더 포함하는 것을 특징으로 하는 태스크 분배 방법.
  10. 태스크의 수행을 위한 복수개의 코어를 포함하는 멀티코어부;
    상기 멀티코어부에서 실시간/비실시간 코어에 할당된 실시간/비실시간 태스크가 수행되는 동안 태스크 수행 정보를 수집하는 수행 정보 수집부;
    상기 멀티코어부에 포함된 복수개의 코어를, 실시간 태스크를 수행하는 실시간 코어와 비실시간 태스크를 수행하는 비실시간 코어로 구분하여 코어 역할을 설정하고, 태스크 수행 정보에 기초하여 상기 설정된 코어 역할을 변경하는 코어 역할 설정부; 및
    상기 설정된 코어 역할에 기초하여, 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 태스크 할당부; 를 포함하고,
    상기 수행 정보 수집부는,
    태스크 수행 시간 정보, 상기 멀티코어부에서 수행되는 상기 태스크의 개수 및 속성 정보, 컨텍스트 스위칭 정보, 및 캐시 미스 정보 중 적어도 하나의 정보를 포함하는 태스크 수행 정보를 수집하고,
    상기 코어 역할 설정부는,
    태스크 수행 정보가 기 설정된 코어 불균형 조건에 해당하는 경우, 태스크 수행 정보에 기초하여 상기 설정된 코어 역할을 변경하는 것을 특징으로 하는 태스크 분배 장치.
  11. 삭제
  12. 청구항 10에 있어서,
    상기 코어 역할 설정부는,상기 태스크 수행 시간 정보에 기초하여, 태스크 처리 요청 시간과 실제 태스크 처리 시간의 차이가 일정 범위 이상인 경우, 상기 시간의 차이에 대응하여 소정 개수의 비실시간 코어를 실시간 코어로 역할 변경하는 것을 특징으로 하는 태스크 분배 장치.
  13. 청구항 10에 있어서,
    상기 코어 역할 설정부는,
    상기 수행되는 비실시간 태스크과 실시간 태스크의 실행비율과, 상기 역할이 설정된 비실시간 코어와 실시간 코어의 비율에 대한 차이가 일정 범위 이상인 경우, 상기 비율의 차이가 감소되도록 코어 역할을 재설정하는 것을 특징으로 하는 태스크 분배 장치.
  14. 청구항 10에 있어서,
    상기 코어 역할 설정부는,상기 컨텍스트 스위칭이 일정 범위 이상 증가하는 경우, 또는 상기 캐시 미스가 일정 범위 이상 증가하는 경우에는, 소정 개수의 실시간 코어를 비실시간 코어로 역할 변경하는 것을 특징으로 하는 태스크 분배 장치.
  15. 청구항 10에 있어서,
    상기 코어 역할 설정부는,
    상기 멀티코어부의 운영 체제가 실시간 운영체제이고, 상기 멀티코어부에서 수행될 태스크의 태스크 정보가 존재하는 경우, 상기 멀티코어부에서 수행될 실시간 태스크와 비실시간 태스크의 개수에 비례되도록 실시간 코어와 비실시간 코어의 개수를 결정하고, 상기 결정된 개수에 기초하여 상기 멀티코어부의 코어를 실시간 코어와 비실시간 코어로 코어 역할을 설정하는 것을 특징으로 하는 태스크 분배 장치.
  16. 청구항 15에 있어서,
    상기 코어 역할 설정부는,상기 운영체제가 실시간 운영체제가 아닌 경우, 또는 상기 태스크 정보가 존재하지 않는 경우에는, 상기 실시간 코어와 상기 비실시간 코어의 개수가 동일하게 되도록 코어 역할을 설정하는 것을 특징으로 하는 태스크 분배 장치.
  17. 청구항 10에 있어서,
    상기 코어 역할 설정부는,
    상기 멀티코어부의 운영 체제가 실시간 운영체제이고, 상기 멀티코어부에서 수행될 태스크의 태스크 정보가 존재하는 경우, 상기 실시간 태스크는 상기 코어 역할이 실시간 코어로 설정된 코어에 할당하고, 상기 비실시간 태스크는 상기 코어 역할이 비실시간 코어로 설정된 코어에 할당하는 것을 특징으로 하는 태스크 분배 장치.
  18. 청구항 17에 있어서,
    상기 코어 역할 설정부는,
    상기 운영체제가 실시간 운영체제가 아닌 경우, 또는 상기 태스크 정보가 존재하지 않는 경우에는, 태스크를 상기 비실시간 코어에 먼저 할당하는 것을 특징으로 하는 태스크 분배 장치.
KR1020120009789A 2012-01-31 2012-01-31 멀티코어 시스템의 태스크 분배 방법 및 장치 KR101733117B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120009789A KR101733117B1 (ko) 2012-01-31 2012-01-31 멀티코어 시스템의 태스크 분배 방법 및 장치
US13/753,642 US20130198758A1 (en) 2012-01-31 2013-01-30 Task distribution method and apparatus for multi-core system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120009789A KR101733117B1 (ko) 2012-01-31 2012-01-31 멀티코어 시스템의 태스크 분배 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130088513A KR20130088513A (ko) 2013-08-08
KR101733117B1 true KR101733117B1 (ko) 2017-05-25

Family

ID=48871508

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120009789A KR101733117B1 (ko) 2012-01-31 2012-01-31 멀티코어 시스템의 태스크 분배 방법 및 장치

Country Status (2)

Country Link
US (1) US20130198758A1 (ko)
KR (1) KR101733117B1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101408862B1 (ko) * 2012-11-28 2014-07-02 평택대학교 산학협력단 이중 프로세서를 사용한 실시간 스마트 온도제어 장치
KR101666395B1 (ko) * 2013-10-14 2016-10-14 한국전자통신연구원 멀티코어 환경에서 우선순위 기반의 실시간 운영체제의 태스크 스케줄링 방법
CN103885826B (zh) * 2014-03-11 2017-04-12 武汉科技大学 一种多核嵌入式系统实时任务调度实现方法
CN104182280B (zh) * 2014-07-30 2017-04-12 山东大学 面向混合主存嵌入式系统的低能耗rm实时任务调度方法
US9852005B2 (en) * 2014-10-02 2017-12-26 Mediatek Inc. Multi-core processor systems and methods for assigning tasks in a multi-core processor system
US9400685B1 (en) * 2015-01-30 2016-07-26 Huawei Technologies Co., Ltd. Dividing, scheduling, and parallel processing compiled sub-tasks on an asynchronous multi-core processor
US10002016B2 (en) * 2015-07-23 2018-06-19 Red Hat, Inc. Configuration of virtual machines in view of response time constraints
CN106201694B (zh) * 2016-07-13 2019-06-14 北京农信互联科技有限公司 一种分布式系统下执行定时任务的配置方法及系统
CN107943577B (zh) * 2016-10-12 2022-03-04 上海优扬新媒信息技术有限公司 用于调度任务的方法和装置
CN108009074B (zh) * 2017-11-24 2020-04-17 北京航空航天大学 一种基于模型和动态分析的多核系统实时性评估方法
US10983846B2 (en) * 2018-05-11 2021-04-20 Futurewei Technologies, Inc. User space pre-emptive real-time scheduler
US20230195481A1 (en) * 2019-07-02 2023-06-22 Vmware, Inc. Hybrid partitioning of virtualization on multiple core systems
CN116069485A (zh) * 2021-10-29 2023-05-05 华为技术有限公司 用于处理任务的方法、装置、电子设备和介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006004203A (ja) * 2004-06-18 2006-01-05 Matsushita Electric Ind Co Ltd データ処理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007109894A1 (en) * 2006-03-28 2007-10-04 Radisys Canada, Inc. Multimedia processing in parallel multi-core computation architectures
US8510741B2 (en) * 2007-03-28 2013-08-13 Massachusetts Institute Of Technology Computing the processor desires of jobs in an adaptively parallel scheduling environment
WO2010064277A1 (en) * 2008-12-03 2010-06-10 Hitachi, Ltd. Techniques for managing processor resource for a multi-processor server executing multiple operating systems
US9106591B2 (en) * 2009-12-24 2015-08-11 Delphix Corporation Adaptive resource management using survival minimum resources for low priority consumers
US20120254822A1 (en) * 2011-03-28 2012-10-04 Microsoft Corporation Processing optimization load adjustment
US8959526B2 (en) * 2011-06-09 2015-02-17 Microsoft Corporation Scheduling execution of complementary jobs based on resource usage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006004203A (ja) * 2004-06-18 2006-01-05 Matsushita Electric Ind Co Ltd データ処理装置

Also Published As

Publication number Publication date
US20130198758A1 (en) 2013-08-01
KR20130088513A (ko) 2013-08-08

Similar Documents

Publication Publication Date Title
KR101733117B1 (ko) 멀티코어 시스템의 태스크 분배 방법 및 장치
KR101651871B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US9965324B2 (en) Process grouping for improved cache and memory affinity
US10609129B2 (en) Method and system for multi-tenant resource distribution
JP4519098B2 (ja) 計算機の管理方法、計算機システム、及び管理プログラム
US8719834B2 (en) Information processing system, method, program and integrated circuit for maintaining balance of processing loads with respect to real-time tasks
JP4185103B2 (ja) 実行可能プログラムをスケジューリングするためのシステム及び方法
KR102182295B1 (ko) 하드웨어 기반 태스크 스케쥴링 장치 및 방법
US20150186184A1 (en) Apparatus and method for optimizing system performance of multi-core system
KR20130119285A (ko) 클러스터 컴퓨팅 환경에서의 자원 할당 장치 및 그 방법
WO2019153697A1 (zh) 集群的资源调整方法、装置及云平台
KR20140131089A (ko) 자원 할당 장치 및 그 방법
CN106095590A (zh) 一种基于线程池的任务分配方法及装置
KR20110075297A (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
KR20090108868A (ko) 가상 머신 관리 시스템 및 그의 프로세서 자원 관리방법
CN105912386A (zh) 线程管理方法及系统
Moulik RESET: A real-time scheduler for energy and temperature aware heterogeneous multi-core systems
US8464258B2 (en) Virtual computer and CPU allocation method
Casini et al. Addressing analysis and partitioning issues for the Waters 2019 challenge
JP5945617B2 (ja) マルチコアプロセッサの制御プログラム、電子機器及び制御方法
JP2006195985A (ja) リソース利用率を制御する方法およびコンピュータシステム
Cui et al. A scheduling algorithm for multi-tenants instance-intensive workflows
JP5045576B2 (ja) マルチプロセッサシステム及びプログラム実行方法
CN114942833A (zh) 定时任务资源动态调度方法及相关装置
CN113032092A (zh) 分布式计算方法、装置及平台

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