KR101812583B1 - 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체 - Google Patents
태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체 Download PDFInfo
- Publication number
- KR101812583B1 KR101812583B1 KR1020110072669A KR20110072669A KR101812583B1 KR 101812583 B1 KR101812583 B1 KR 101812583B1 KR 1020110072669 A KR1020110072669 A KR 1020110072669A KR 20110072669 A KR20110072669 A KR 20110072669A KR 101812583 B1 KR101812583 B1 KR 101812583B1
- Authority
- KR
- South Korea
- Prior art keywords
- task
- core usage
- usage amount
- predicted
- core
- 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
- 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]
-
- 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
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
태스크 처리 성능을 향상시킬 수 있는 태스크 할당 장치가 개시된다. 본 발명의 일 실시예에 따른 태스크 할당 장치는 설정된 주기마다 다수의 코어(core)에 할당된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정하고, 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하고, 예측된 코어 사용량에 기초하여 태스크를 상기 코어들에 할당할 수 있다.
Description
다수의 태스크들을 코어들에 할당하는 기술과 관련된다.
최근 정보 처리 기술이 발달함에 따라 문자, 영상 등과 같은 대용량 데이터가 증가하고 있다. 대용량 데이터를 처리하는 과정은 복잡하고 오랜 시간이 소요된다. 이에 따라, 코어가 처리해야 될 작업량이 점점 늘어나고 있다. 많은 작업량을 짧은 시간에 처리하기 위해, 코어의 하드웨어 성능을 향상시키는 방법 또는 코어를 효율적으로 구동시키기 위한 소프트웨어를 개발하는 방법 등이 사용되고 있다. 예를 들면, 다수의 코어를 사용하여 데이터를 병렬적으로 처리하는 방법이 있다. 다수의 코어가 독립적인 데이터를 분산하여 처리하기 때문에, 1개의 코어를 이용하여 순차적으로 데이터를 처리하는 것보다 데이터를 짧은 시간 내에 처리할 수 있다.
한편, 한국공개특허공보 제10-2010-0138954호(2010.12.31)에는 낮은 우선 순위 스레드들 및 작업들이 높은 우선 순위 스레드 및 작업 만큼 중요하게 취급되지 않도록 코어의 산출된 활용도를 스케일링 하는 기술이 개시되어 있다.
이와 같이, 최근에 처리 과정이 복잡하고, 처리 시간이 많이 소요되는 데이터를 다수의 코어를 이용하여 처리하는 경우가 많아짐에 따라, 효율적인 데이터 처리를 위해 데이터를 다수의 코어에 할당하는 기술이 필요하다.
설정된 주기마다 측정된 각 태스크의 코어 사용량에 기초하여 다음 주기의 코어 사용량을 예측하고, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당함으로써, 태스크를 처리 성능을 향상시킬 수 있는 태스크 할당 장치 및 방법이 개시된다.
본 발명의 일 실시예에 따른 태스크 할당 장치는 설정된 주기마다 다수의 코어(core)에서 실행된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정하는 측정부와, 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 예측부 및 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당하는 할당부를 포함한다.
예측부는 태스크의 동작 특성을 추출하고, 예측된 코어 사용량 및 추출된 태스크의 동작 특성에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
동작 특성은 태스크가 실시간(real-time) 태스크인지 여부, 태스크가 포그라운드(foreground) 태스크 또는 백그라운드(background) 태스크 인지 여부, 코어들에 할당된 태스크의 목록 및 태스크의 우선 순위(priority) 중 적어도 하나일 수 있다.
예측부는 설정된 주기마다 측정된 코어 사용량들의 평균값, 증가값 및 감소값 중 적어도 하나에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
예측부는 각 설정된 주기에서의 측정된 코어 사용량 및 예측된 코어 사용량의 차이값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
예측부는 설정된 주기마다 측정된 적어도 하나의 코어 사용량 및 설정된 정책(policy)에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
설정된 정책은 설정된 코어 사용량보다 낮은 코어 사용량을 갖는 태스크가 우선 실행되도록 설정된 정책, 실시간 태스크가 우선 실행되도록 설정된 정책, 백그라운드로 실행되는 태스크의 코어 사용량이 설정된 코어 사용량을 넘지 않도록 설정된 정책 중 적어도 하나를 포함할 수 있다.
할당부는 현재 주기에서의 각 태스크에 대한 예측된 코어 사용량과 N 주기 이전에서의 각 태스크에 대한 예측된 코어 사용량의 차이값이 설정된 값 이상 경우, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다.
할당부는 각 태스크에 대한 예측된 코어 사용량의 변화량이 설정된 변화량 이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다.
본 발명의 일 실시에에 따른 태스크 할당 방법은 설정된 주기마다 다수의 코어(core)에서 실행된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정하는 단계와, 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계 및 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당하는 단계를 포함한다.
예측하는 단계는 태스크의 동작 특성을 추출하는 단계 및 예측된 코어 사용량 및 추출된 태스크의 동작 특성에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계를 포함한다.
동작 특성은 태스크가 실시간(real-time) 태스크인지 여부, 태스크가 포그라운드(foreground) 태스크 또는 백그라운드(background) 태스크 인지 여부, 코어들에 할당된 태스크의 목록 및 태스크의 우선 순위(priority) 중 적어도 하나일 수 있다.
예측하는 단계는 설정된 주기마다 측정된 코어 사용량들의 평균값, 증가값 및 감소값 중 적어도 하나에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계를 포함할 수 있다.
예측하는 단계는 각 설정된 주기에서의 측정된 코어 사용량 및 예측된 코어 사용량의 차이값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
예측하는 단계는 설정된 주기마다 측정된 적어도 하나의 코어 사용량 및 설정된 정책(policy)에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계를 포함할 수 있다.
설정된 정책은 설정된 코어 사용량보다 낮은 코어 사용량을 갖는 태스크가 우선 실행되도록 설정된 정책, 실시간 태스크가 우선 실행되도록 설정된 정책, 백그라운드로 실행되는 태스크의 코어 사용량이 설정된 코어 사용량을 넘지 않도록 설정된 정책 중 적어도 하나를 포함할 수 있다.
할당하는 단계는 현재 주기에서의 각 태스크에 대한 예측된 코어 사용량과 N 주기 이전에서의 각 태스크에 대한 예측된 코어 사용량의 차이값이 설정된 값이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당하는 단계를 포함할 수 있다.
할당하는 단계는 각 태스크에 대한 예측된 코어 사용량의 변화량이 설정된 변화량 이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다.
본 발명의 일 실시예에 따른 컴퓨터로 읽을 수 있는 저장 매체는 설정된 주기마다 다수의 코어(core)에 할당된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정하는 단계와, 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계 및 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당하는 단계를 포함하는 태스크 할당 방법을 실행하기 위한 프로그램 명령어를 저장한다.
개시된 내용에 따르면, 설정된 주기마다 측정된 각 태스크의 코어 사용량에 기초하여 다음 주기의 코어 사용량을 예측하고, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당함으로써, 태스크를 처리하는 성능을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예와 관련된 태스크 할당 장치를 설명하기 위한 도면이다.
도 2a, 도 2b 및 도 2c는 도 1의 태스크 할당 장치가 태스크를 예측하는 일 실시예에 따른 과정을 설명하기 위한 도면이다.
도 3a, 도 3b 및 도 3c는 도 1의 태스크 할당 장치가 태스크를 예측하는 또 다른 일 실시예에 따른 과정을 설명하기 위한 도면이다.
도 4a, 도 4b 및 도 4c는 도 1의 태스크 할당 장치가 설정된 기준을 만족하는 경우 태스크를 코어에 할당하는 과정을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 방법을 설명하기 위한 흐름도이다.
도 2a, 도 2b 및 도 2c는 도 1의 태스크 할당 장치가 태스크를 예측하는 일 실시예에 따른 과정을 설명하기 위한 도면이다.
도 3a, 도 3b 및 도 3c는 도 1의 태스크 할당 장치가 태스크를 예측하는 또 다른 일 실시예에 따른 과정을 설명하기 위한 도면이다.
도 4a, 도 4b 및 도 4c는 도 1의 태스크 할당 장치가 설정된 기준을 만족하는 경우 태스크를 코어에 할당하는 과정을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 방법을 설명하기 위한 흐름도이다.
이하, 첨부된 도면을 참조하여 발명을 실시하기 위한 구체적인 내용에 대하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예와 관련된 태스크 할당 장치를 설명하기 위한 도면이다. 태스크 할당 장치는 코어 시스템 또는 매니(many) 코어 시스템 등에 적용될 수 있다.
도 1을 참조하면, 태스크 할당 장치(100)는 측정부(110), 예측부(120) 및 할당부(130)을 포함할 수 있다.
측정부(110)는 설정된 주기마다 다수의 코어(core)에서 실행된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정할 수 있다. 코어 사용량은 단위 시간당 코어를 사용한 양을 의미하며, PMU(performance measurement unit)와 같은 장치에 의해 측정될 수 있다. 태스크들은 다수의 코어에서 병렬적으로 실행될 수 있다. 설정된 주기는 사용자, 제조업자 등에 의해 다양하게 설정될 수 있으며, 태스크 할당 장치가 실행되는 중에 변경될 수도 있다. 또한, 설정된 주기는 코어의 구동 주기보다 클수 있다.
예측부(120)는 측정부(110)에서 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여, 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 에를 들면, 예측부(120)는 현재 주기에서 측정된 코어 사용량로부터 N 주기 이전에서 측정된 코어 사용량까지 중 적어도 하나를 이용하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 구체적인 예를 들면, 예측부(120)는 현재 주기(n), 1 주기 이전의 주기(n-1) 및 2 주기 이전의 주기(n-2)에서 측정된 코어 사용량을 이용하여 다음 주기(n+1)에서의 각 태스크의 코어 사용량을 예측할 수 있다. 또 다른 예를 들면, 예측부(120)는 현재 주기(n), 1 주기 이전의 주기(n-1), 2 주기 이전의 주기(n-2) 및 3 주기 이전의 주기(n-3)에서 측정된 코어 사용량을 이용하여 다음 주기(n+1)에서의 각 태스크의 코어 사용량을 예측할 수 있다. 또 다른 예를 들면, 예측부(120)는 현재 주기(n), 2 주기 이전의 주기(n-2) 및 4 주기 이전의 주기(n-4)에서 측정된 코어 사용량을 이용하여 다음 주기(n+1)에서의 각 태스크의 코어 사용량을 예측할 수 있다. 이외에도, 예측부(120)는 다양한 방법을 이용하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
예측부(120)는 측정부(110)에서 측정된 코어 사용량들을 이용하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 예를 들면, 예측부(120)는 설정된 주기마다 측정된 코어 사용량들의 평균값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 또 다른 예를 들면, 예측부(120)는 설정된 주기마다 측정된 코어 사용량들의 증가값 또는 감소값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 또 다른 예를 들면, 예측부(120)는 설정된 주기마다 측정된 코어 사용량들에 가중치를 주고, 가중치가 주어진 값의 평균값, 증가값 및 감소값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 이외에도, 예측부(120)는 다양한 방법을 이용하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
예측부(120)는 각 설정된 주기에 해당하는 측정된 코어 사용량 및 예측된 코어 사용량의 차이값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 예를 들면, 예측부(120)는 제 2 주기에서의 측정된 코어 사용량 및 예측된 코어 사용량의 차이값이 큰 경우, 예측된 코어 사용량이 부정확하다고 판단할 수 있다. 이에 따라, 예측부(120)는 제 2 주기에서의 측정된 코어 사용량 및 예측된 코어 사용량의 차이값을 고려하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
예측부(120)는 태스크의 동작 특성에 관한 정보가 저장된 장치 및/또는 태스크의 동작을 관리하는 장치들로부터 태스크의 동작 특성을 추출할 수 있다. 예측부(120)는 예측된 코어 사용량 및 추출된 태스크의 동작 특성에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 동작 특성은 태스크가 실시간(real-time) 태스크인지 여부, 태스크가 포그라운드(foreground) 태스크 또는 백그라운드(background) 태스크 인지 여부, 코어들에 할당된 태스크의 목록 및 태스크의 우선 순위(priority) 등과 같이 태스크의 동작 특성을 파악할 수 있는 정보를 의미한다. 실시간 태스크는 특정 시간내에 모든 처리가 완료되어야하는 태스크를 의미하며, 비실시간 태스크는 정해진 시간 없이 처리되는 태스크를 의미한다. 포그라운드 태스크는 터미널 또는 디스플레이부를 통해 사용자와 통신이 수행됨에 따라 실행되는 태스크를 의미하고, 백그라운드 태스크는 사용자와 통신을 수행할 필요가 없는 태스크를 의미한다.
예측부(120)는 설정된 주기마다 측정된 적어도 하나의 코어 사용량 및 설정된 정책(policy)에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 설정된 정책은 설정된 코어 사용량을 넘지 않는 태스크가 우선 실행되도록 설정된 정책, 실시간 태스크가 우선 실행되도록 설정된 정책, 실시간인 태스크가 지정된 기간(deadline)내에 모두 실행되도록 설정된 정책, 백그라운드로 실행되는 태스크의 코어 사용량이 설정된 코어 사용량을 넘지 않도록 설정된 정책, 태스크의 코어 사용량이 설정된 코어 최대 사용량을 넘지 않도록 설정된 정책, 태스크의 코어 사용량이 설정된 코어 최소 사용량을 넘도록 설정된 정책, 태스크의 코어 사용량의 변화량이 설정된 코어 최대 변화량을 넘지 않도록 설정된 정책, 태스크의 코어 사용량의 변화량이 설정된 코어 최소 변화량을 넘도록 설정된 정책 등 매우 다양한 정책이 있을 수 있다.
예를 들면, 설정된 정책이 실시간 태스크가 우선 실행되도록 설정된 정책인 경우, 예측부(120)는 태스크 중 실시간 태스크를 추출하고, 추출된 실시간 태스크가 코어들에 우선 할당되도록 코어 사용량을 예측할 수 있다.
할당부(130)는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다.
할당부(130)는 현재 주기의 각 태스크의 코어 사용량과 N 주기 이전의 코어 사용량의 차이값이 설정된 차이값보다 큰 경우, 결정된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. 이에 따라, 현재 주기의 각 태스크의 코어 사용량과 N 주기 이전의 코어 사용량의 차이값이 설정된 차이값보다 작은 경우에는, 할당부(130)가 태스크를 코어들에 할당하지 않도록 한다. 따라서, 할당부(130)가 태스크를 코어들에 할당할 필요가 없다고 판단되는 경우에는 태스크를 코어들에 할당하지 않음므로써 불필요하게 생성될 수 있는 시스템의 부하를 줄일 수 있다.
할당부(130)는 각 태스크에 대한 예측된 코어 사용량의 변화량이 설정된 변화량 이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다.
태스크 할당 장치는 다수의 코어에서 실행된 각 태스크의 코어 사용량에 기초하여 다음 주기의 코어 사용량을 예측하고, 예측된 코어 사용량에 기초하여 태스크들을 코어들에 할당함으로써, 태스크를 처리하는 성능을 향상시킬 수 있다.
또한, 태스크 할당 장치는 고정된 비율로 각 태스크에게 코어를 할당하지 않고, 동작 중 태스크의 동작 특성 등을 고려하여 변경된 비율로 각 태스크를 코어에 할당할 수 있다. 다시 말해, 태스크 할당 장치는 동적으로 태스크들을 코어들에 할달할 수 있다.
도 2a, 도 2b 및 도 2c는 도 1의 태스크 할당 장치가 태스크를 예측하는 일 실시예에 따른 과정을 설명하기 위한 도면이다.
이하에서는, 코어가 2개이며, 태스크들(T1, T2, T3, T4)이 지속적으로 대기 큐(Ready queue)에 존재하는 경우를 가정한다. 다만, 이러한 가정은 설명의 편의를 위한 것이므로, 코어의 개수, 태스크들의 개수, 태스크들이 대기큐에 지속적으로 존재하는지 여부 등은 다양하게 변경될 수 있다.
도 2a는 태스크 할당 장치(100)가 설정된 주기마다 각 태스크의 코어 사용량을 측정할 결과를 도시한 도면이다.
도 1 및 도 2a를 참조하면, 태스크 할당 장치(100)는 설정된 주기마다 다수의 코어(core)에서 실행된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량(200, 210, 220)을 측정할 수 있다. 이하에서는, T1 태스크가 설정된 주기동안 2개의 코어의 총 사용량 중 절반을 사용한 경우, T1 태스크의 코어 사용량을 1이라고 가정한다. 또한, T1 태스크가 설정된 주기동안 2개의 코어의 총 사용량을 모두 사용한 경우, T1 태스크의 코어 사용량을 2라고 가정한다. T1 태스크의 코어 사용량이 1인 경우에 대한 예를 들면, T1 태스크가 설정된 주기 동안 제 1 코어만을 계속 사용하는 경우, 태스크가 설정된 주기 동안 제 1 코어 사용량의 절반을 사용하고, 제 2 코어 사용량의 절반을 사용하는 경우 및 태스크가 설정된 주기 동안 제 1 코어를 2/3 사용하고, 제 2 코어를 1/3 사용한 경우 등이 있다.
도 1 및 도 2b는 태스크 할당 장치(100)가 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측한 결과를 도시한 도면이다. 이하에서는, 태스크 할당 장치(100)가 현재 주기 및 이전 모든 주기에서의 각 태스크의 측정된 코어 사용량에 기초하여 다음 주기의 각 태스크의 코어 사용량을 예측하는 경우를 가정한다. 그러나, 태스크 할당 장치(100)가 일부 주기에 해당하는 각 태스크의 측정된 코어 사용량만을 이용할 수도 있다. 이하에서는, 예비 예측된 코어 사용량을 'E(코어 사용량)'으로 표시한다.
도 1, 도 2a 및 도 2b를 참조하면, 주기 2를 기준으로 살펴보면, 태스크 할당 장치(100)는 도 2a에서 주기 1 및 주기 2에서 측정된 코어 사용량(200, 210)에 기초하여 주기 3에 대한 각 태스크의 코어 사용량을 예측할 수 있다. 태스크 할당 장치(100)는 주기 2 동안에 주기 3에 대한 각 태스크의 코어 사용량(230)을 예측할 수 있다.
도 2a에서 T1 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량이 '0.8'이고, 주기 2에서 측정된 코어 사용량이 '0.4'이므로 코어 사용량이 절반씩 감소하고 있다. 따라서, 태스크 할당 장치(100)는 주기 3에 대한 T1 태스크의 코어 사용량을 도 2a의 주기 2에서 측정된 코어 사용량('0.4')의 절반인 '0.2'(230)로 예측할 수 있다. 이를 E(0.2)와 같이 표현할 수 있다.
도 2a에서 T2 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량이 '0.4'이고, 주기 2에서 측정된 코어 사용량이 '0.4'이므로 코어 사용량이 유지되고 있다. 따라서, 태스크 할당 장치(100)는 주기 3에 대한 T2 태스크의 코어 사용량을 도 2a의 주기 2에서 측정된 코어 사용량('0.4')과 동일한 '0.4'(230)로 예측할 수 있다. 이를 E(0.4)와 같이 표현할 수 있다.
도 2a에서 T3 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량이 '0.2'이고, 주기 2에서 측정된 코어 사용량이 '0.4'이므로 코어 사용량이 2배씩 증가하고 있다. 따라서, 태스크 할당 장치(100)는 주기 3에 대한 T3 태스크의 코어 사용량을 도 2a의 주기 2에서 측정된 코어 사용량('0.4')의 두배인 '0.8'(230)로 예측할 수 있다. 이를 E(0.8)와 같이 표현할 수 있다.
도 2a에서 T4 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량이 '0.6'이고, 주기 2에서 측정된 코어 사용량이 '0.6'이므로 코어 사용량이 유지되고 있다. 따라서, 태스크 할당 장치(100)는 주기 3에 대한 T4 태스크의 코어 사용량을 도 2a의 주기 2에서 측정된 코어 사용량('0.6')과 동일한 '0.6'(230)로 예측할 수 있다. 이를 E(0.6)와 같이 표현할 수 있다.
도 2c는 태스크 할당 장치(100)가 예비 예측된 코어 사용량을 최종 예측된 코어 사용량으로 수정한 결과를 도시한 도면이다.
도 2c를 참조하면, 예비 예측된 코어 사용량(230)들의 합이 코어 총 사용량 '2'를 넘지 않으므로, 태스크 할당 장치(100)는 예비 예측된 코어 사용량(230)을 최종 예측된 코어 사용량(250)으로 결정할 수 있다. 태스크 할당 장치(100)는 최종 예측된 코어 사용량(250)에 기초하여 태스크를 코어들에 할당할 수 있다. 이하에서는, 최종 예측된 코어 사용량을 'V(코어 사용량)'로 표현한다. 예를 들면, 최종 예측된 코어 사용량(250)은 V(0.2), V(0.4), V(0.8), V(0.6)이다.
주기 4를 기준으로 살펴보면, 태스크 할당 장치(100)는 도 2a에서 주기 1, 주기 2 및 주기 3에서 측정된 코어 사용량(200, 210, 220)에 기초하여 주기 4에 대한 각 태스크의 코어 사용량을 예측할 수 있다.
도 2a에서 T1 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량은 '0.8'이고, 주기 2에서 측정된 코어 사용량은 '0.4', 주기 3에서 측정된 코어 사용량은 '0.3'이다. 위와 같이 T1 태스크에 대한 코어 사용량들이 일정하게 유지 또는 변경되지 않는 경우, 태스크 할당 장치(100)는 T1 태스크에 대한 코어 사용량들('0.8, 0.4, 0.3')의 평균값('0.5')을 주기 4에 대한 T1 태스크의 코어 사용량(240)으로 예측할 수 있다. 이를 E(0.5)와 같이 표현할 수 있다.
도 2a에서 T2 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량은 '0.4'이고, 주기 2에서 측정된 코어 사용량은 '0.4', 주기 3에서 측정된 코어 사용량은 '0.1'이다. 태스크 할당 장치(100)는 각 설정된 주기에서의 측정된 코어 사용량 및 예측된 코어 사용량의 차이값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 예를 들면, T2 태스크를 기준으로 주기 3에 대한 예측된 코어 사용량 'E(0.4)'보다 주기 3에서의 측정된 코어 사용량(0.1)이 작다. 즉, 예측된 코어 사용량과 실제 코어 사용량의 차이가 생긴 경우이다. 예를 들면, 태스크 할당 장치(100)는 예측된 코어 사용량과 실제 코어 사용량의 차이값을 줄이기 위해, 마지막으로 측정된 코어 사용량(0.1)을 주기 4에 대한 코어 사용량('0.1')으로 예측할 수 있다. 이를 E(0.1)와 같이 표현할 수 있다. 또 다른 예를 들면, 태스크 할당 장치(100)는 예측된 코어 사용량과 실제 코어 사용량의 차이값을 줄이기 위해, 직전 주기에서 측정된 코어 사용량('0.4') 및 현재 주기에서 측정된 코어 사용량(0.1)의 평균값('0.25')을 주기 4에 대한 코어 사용량('0.25')으로 예측할 수 있다.
도 2a에서 T3 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량이 '0.2'이고, 주기 2에서 측정된 코어 사용량이 '0.4'이고, 주기 3에서 측정된 코어 사용량이 '0.8'므로 코어 사용량이 2배씩 증가하고 있다. 따라서, 태스크 할당 장치(100)는 주기 4에 대한 코어 사용량을 도 2a의 주기 3에서 측정된 코어 사용량('0.8')의 두배인 '1.6'로 예측할 수 있다. 이를 E(1.6)와 같이 표현할 수 있다.
도 2a에서 T4 태스크를 기준으로 살펴보면, 주기 1에서 측정된 코어 사용량이 '0.6'이고, 주기 2에서 측정된 코어 사용량이 '0.6'이고, 주기 3에서 측정된 코어 사용량이 '0.6'이므로 코어 사용량이 유지되고 있다. 따라서, 태스크 할당 장치(100)는 주기 4에 대한 T4 태스크의 코어 사용량을 도 2a의 주기 3에서 측정된 코어 사용량('0.6')과 동일한 '0.6'로 예측할 수 있다. 이를 E(0.6)와 같이 표현할 수 있다.
도 2c를 참조하면, 예비 예측된 코어 사용량(240)들의 합이 코어 총 사용량 '2'를 넘으므로, 태스크 할당 장치(100)는 예비 예측된 코어 사용량(240)들의 합이 2가 되도록 비율을 조정하여 최종 예측된 코어 사용량(260)을 생성할 수 있다. 비율 조정은 예비 예측된 코어 사용량(240)들 간의 비율에 비례하게 할 수 있다. 예를 들면, 태스크 할당 장치(100)는 예비 예측된 코어 사용량(240)인 0.5, 0.1, 1.6 0.6 간의 비율에 비례하고, 총합이 2인 최종 예측된 코어 사용량(260)을 생성할 수 있다. 최종 예측된 코어 사용량(260)은 V(0.25), V(0.13), V(1.2), V(0.42)이다. 태스크 할당 장치(100)는 최종 예측된 코어 사용량(260)에 기초하여 태스크를 코어들에 할당할 수 있다.
태스크 할당 장치는 다수의 코어에서 실행된 각 태스크의 코어 사용량에 기초하여 다음 주기의 코어 사용량을 예측하고, 예측된 코어 사용량에 기초하여 태스크들을 코어들에 할당함으로써, 태스크를 처리하는 성능을 향상시킬 수 있다.
또한, 태스크 할당 장치는 고정된 비율로 각 태스크에게 코어를 할당하지 않고, 동작 중 태스크의 동작 특성 등을 고려하여 변경된 비율로 각 태스크를 코어에 할당할 수 있다. 다시 말해, 태스크 할당 장치는 동적으로 태스크들을 코어들에 할달할 수 있다.
도 3a, 도 3b 및 도 3c는 도 1의 태스크 할당 장치가 태스크를 예측하는 또 다른 일 실시예에 따른 과정을 설명하기 위한 도면이다.
이하에서는, 코어가 2개이며, 태스크들(T1, T2, T3, T4)이 지속적으로 대기 큐(Ready queue)에 존재하는 경우를 가정한다. 다만, 이러한 가정은 설명의 편의를 위한 것이므로, 코어의 개수, 태스크들의 개수, 태스크들이 대기큐에 지속적으로 존재하는지 여부 등은 다양하게 변경될 수 있다.
도 3a는 태스크 할당 장치가 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측한 결과를 도시한 도면이다.
도 1 및 도 3a를 참조하면, 태스크 할당 장치(100)는 설정된 주기마다 다수의 코어에서 실행된 각 태스크의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량(300, 310)을 예측할 수 있다. 코어 사용량(300, 310)을 예측하는 구체적인 설명은 도 2a 및 도 2b에서 설명하였으므로 생략한다. 또한, 태스크 할당 장치(100)는 태스크의 동작 특성을 추출(300, 310)할 수 있다. 동작 특성에 관한 정보는 실시간(real-time) 태스크, 비실시간(non-real-time) 태스크, 포그라운드 태스크 및 백그라운드 태스크 인지 여부에 관한 정보일 수 있다. 실시간 태스크를 R이라고 표현하고, 비실시간 태스크를 N이라고 표현하고, 포그라운드 태스크를 F라고 표현하고, 백그라운드 태스크르 B라고 표현한다.
도 3b는 본 발명에 적용할 정책(policy)을 도시한 도면이다.
도 3b를 참조하면, 정책(policy)은 P1, P2, P3, P4, P5 및 P6가 있다. P1은 정책은 위에서부터 적용된다는 정책이다. P2는 실시간 태스크(R)을 우선 실행한다는 정책이다. P3은 포그라운드 태스크를 1.7 범위내에서 우선 할당하고, 나머지 0.3을 백그라운드 태스크들에 나누어 할당한다는 정책이다. P4는 예측된 코어 사용량이 '0.2'이하인 태스크는 우선 실행한다는 정책이다. P5는 할당된 코어 사용량이 최소 '0.1'은 넘도록 할당한다는 정책이다. P6은 위 정책들에 기초하여 할당되고 남은 코어 사용량은 각 태스크의 예측된 코어 사용량에 비례해서 할당한다는 정책이다. 다만, 위와 같은 정책은 일 실시예에 불과하며 다양한 정책들이 사용될 수 있다.
도 3c는 태스크 할당 장치(100)가 예측된 코어 사용량, 동작 특성 및 정책에 기초하여 태스크를 코어들에 할당한 결과를 도시한 도면이다.
도 1, 도 3a, 도 3b 및 도 3c를 참조하면, 태스크 할당 장치(100)는 예측된 사용량, 동작 정보 및 정책에 기초하여 태스크를 코어들에 할당할 수 있다.
예를 들면, 주기 2를 기준으로 살펴보면, T1 태스크의 예비 예측된 코어 사용량은 '1.7'이고 동작 정보는 F, N이다. T2 태스크의 예비 예측된 코어 사용량은 '0.3'이고 동작 정보는 B, N이다. T3 태스크의 예비 예측된 코어 사용량은 '0.3'이고 동작 정보는 B, N이다. T4 태스크의 예비 예측된 코어 사용량은 '0.8'이고 동작 정보는 B, R이다. 태스크 할당 장치(100)는 도 3b의 P2 정책에 따라, 실시간 태스크인 T4 태스크의 예비 예측된 코어 사용량 '0.8'을 최종 예측된 코어 사용량으로 결정한다. 태스크 할당 장치(100)는 도 3b의 P3 정책에 따라, 포그라운드 태스크인 T1 태스크의 예비 예측된 코어 사용량 '1.2'를 최종 예측된 코어 사용량으로 결정한다. 최종 예측된 코어 사용량이 코어 총 사용량인 '2'이므로, 태스크 할당 장치(100)는 나머지 T2 태스크 및 T3 태스크는 코어에 할당하지 않는다. 이에 따라, 최종 예측된 코어 사용량(330)은 V(1.2), V(0.0), V(0.0), V(0.8)이다.
주기 3을 기준으로 살펴보면, T1 태스크의 예비 예측된 코어 사용량은 '1.4'이고 동작 정보는 F, N이다. T2 태스크의 예비 예측된 코어 사용량은 '1.2'이고 동작 정보는 B, N이다. T3 태스크의 예비 예측된 코어 사용량은 '0.2'이고 동작 정보는 B, N이다. T4 태스크의 예비 예측된 코어 사용량은 '0.1'이고 동작 정보는 B, R이다. 태스크 할당 장치(100)는 도 3b의 P2 정책에 따라, 실시간 태스크인 T4 태스크의 예비 예측된 코어 사용량 '0.1'을 우선 코어들에 할당한다. 태스크 할당 장치(100)는 도 3b의 P3 정책에 따라, 포그라운드 태스크인 T1 태스크의 예비 예측된 코어 사용량 '1.4'를 최종 예측된 코어 사용량으로 결정한다. 태스크 할당 장치(100)는 도 3b의 P4 정책에 따라, T3 태스크의 예비 예측된 코어 사용량 '0.2'를 최종 예측된 코어 사용량으로 결정한다. 태스크 할당 장치(100)는 T2 태스크의 예비 예측된 코어 사용량 '1.2' 중 할당되고 남은 코어 사용량 '0.3(2 - 1.7)'에 해당하는 코어 사용량만큼을 최종 예측된 코어 사용량으로 결정한다. 이에 따라, 최종 예측된 코어 사용량(340)은 V(1.4), V(0.3), V(0.2), V(0.1)이다.
태스크 할당 장치는 동작 중 태스크의 동작 특성 등을 고려하여 각 태스크를 코어들에 할당함으로써, 동적으로 태스크들을 코어들에 할당할 수 있다.
도 4a, 도 4b 및 도 4c는 도 1의 태스크 할당 장치가 설정된 기준을 만족하는 경우 태스크를 코어에 할당하는 과정을 설명하기 위한 도면이다.
이하에서는, 코어가 2개이며, 태스크들(T1, T2)이 지속적으로 대기 큐(Ready queue)에 존재하는 경우를 가정한다. 다만, 이러한 가정은 설명의 편의를 위한 것이므로, 코어의 개수, 태스크들의 개수, 태스크들이 대기큐에 지속적으로 존재하는지 여부 등은 다양하게 변경될 수 있다.
태스크 할당 장치는 현재 주기에서의 각 태스크에 대한 할당된 코어 사용량과 N 주기 이전에서의 각 태스크에 대한 할당된 코어 사용량의 차이값이 설정된 차이값보다 큰 경우, 결정된 코어 할당량에 기초하여 태스크를 코어들에 할당한다.
도 4a에서는 현재 주기에서 최종 예측된 코어 사용량과 직전 주기에서의 최종 예측된 코어 사용량의 차이값이 큰폭으로 변한 경우를 가정하고, 설정된 차이값이 0.4인 경우를 가정한다.
도 1 및 도 4a를 참조하면, 주기 3 및 4를 기준으로 살펴보면, 현재 주기에서의 각 태스크(T1, T2)에 대한 최종 예측된 코어 사용량과 직전 주기에서의 각 태스크(T1, T2)에 대한 최종 예측된 코어 사용량의 차이값 0.1이므로, 태스크 할당 장치(100)는 태스크를 코어들에 할당하지 않는다. 주기 5에서의 T1 태스크를 기준으로 살펴보면, 현재 주기에서의 T1 태스크에 대한 최종 예측된 코어 사용량('1.9') 및 직전 주기에서의 최종 예측된 코어 사용량('1.5')의 차이값('0.4')이 설정된 차이값('0.4') 이상이므로, 태스크 할당 장치(100)는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. 주기 5에서의 T2 태스크를 기준으로 살펴보면, 현재 주기에서의 T2 태스크에 대한 최종 예측된 코어 사용량('0.1') 및 직전 주기에서의 최종 예측된 코어 사용량('0.5')의 차이값('0.4')이 설정된 차이값('0.4') 이상이므로, 태스크 할당 장치(100)는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. 태스크 할당 장치(100)가 예측된 코어 사용량이 큰 폭으로 변하는 경우에만 태스크를 코어에 할당함으로써, 부하가 생성되는 것을 방지할 수 있다.
도 4b에서는 현재 주기에서 최종 예측된 코어 사용량과 3 주기 이전에서의 최종 예측된 코어 사용량의 차이값이 큰폭으로 변한 경우를 가정하고, 설정된 차이값이 0.4인 경우를 가정한다. 본 실시예에서는 태스크 할당 장치(100)가 최종 예측된 사용량과 3 주기 이전에서의 최종 예측된 사용량의 차이값을 비교하는 경우를 기준으로 설명하지만, 최종 예측된 사용량과 4 ~ N 주기 이전에서의 최종 예측된 사용량의 차이값을 비교할 수도 있다.
도 1 및 도 4b를 참조하면, 주기 5에서의 T1 태스크를 기준으로 살펴보면, 현재 주기에서의 T1 태스크에 대한 최종 예측된 코어 사용량('1.7') 및 3 주기 이전에서의 최종 예측된 코어 사용량('1.3')의 차이값('0.4')이 설정된 차이값('0.4') 이상이므로, 태스크 할당 장치(100)는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. 주기 5에서의 T2 태스크를 기준으로 살펴보면, 현재 주기에서의 T2 태스크에 대한 최종 예측된 코어 사용량('0.3') 및 3 주기 이전에서의 최종 예측된 코어 사용량('0.7')의 차이값('0.4')이 설정된 차이값('0.4') 이상이므로, 태스크 할당 장치(100)는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. 태스크 할당 장치(100)가 예측된 코어 사용량이 큰 폭으로 변하는 경우에만 태스크를 코어에 할당함으로써, 부하가 생성되는 것을 방지할 수 있다.
도 4c에서는 최종 예측된 코어 사용량의 변화량이 큰폭으로 변한 경우를 가정하고, 설정된 변화량이 0.4인 경우를 가정한다.
도 1 및 도 4c를 참조하면, T1 태스크를 기준으로 살펴보면, 2 주기에서 4주기까지의 최종 예측된 코어 사용량의 변화량은 '0.4'이하이므로, 태스크 할당 장치(100)는 태스크를 코어들에 할당하지 않는다. T2 태스크를 기준으로 살펴보면, 2 주기에서 4주기까지의 최종 예측된 코어 사용량의 변화량은 '0.4'이하이므로, 태스크 할당 장치(100)는 태스크를 코어들에 할당하지 않는다.
그러나, T1 태스크를 기준으로 살펴보면, 2주기에서 5주기까지의 최종 예측된 코어 사용량의 변화량('주기 2의 최종 코어 사용량 - 주기 5의 최종 코어 사용량')은 설정된 변화량('0.4')이상이므로, 태스크 할당 장치(100)는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. T2 태스크를 기준으로 살펴보면, 2주기에서 5주기까지의 최종 예측된 코어 사용량의 변화량('주기 2의 최종 코어 사용량 - 주기 5의 최종 코어 사용량')은 설정된 변화량('0.4')이상이므로, 태스크 할당 장치(100)는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. 최종 예측된 코어 사용량의 변화량을 이용함으로써, 태스크 할당 장치(100)는 최종 예측된 코어 사용량이 서서히 증가하거나 감소하여 최종적으로는 큰폭으로 변화된 경우에도 태스크를 코어에 할당할 수 있다. 따라서, 최종 예측된 코어 사용량이 서서히 증가하거나 감소하는 경우, 태스크 할당 장치(100)가 태스크를 코어에 할당하지 않는 것을 방지할 수 있다.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 방법을 설명하기 위한 흐름도이다. 본 발명의 일 실시예에 따른 태스크 할당 방법은 OS(operation system) 및/또는 VMM(virtual machine monitor) 등에서 적용될 수 있다.
도 5를 참조하면, 태스크 할당 장치는 설정된 주기마다 다수의 코어(core)에 할당된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정한다(500).
태스크 할당 장치는 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측한다(510). 예를 들면, 태스크 할당 장치는 태스크의 동작 특성을 추출하고, 예측된 코어 사용량 및 추출된 태스크의 동작 특성에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 예를 들면, 태스크 할당 장치는 설정된 주기마다 측정된 코어 사용량들의 평균값, 증가값 및 감소값 중 적어도 하나에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 예를 들면, 태스크 할당 장치는 각 설정된 주기에서의 측정된 코어 사용량 및 예측된 코어 사용량의 차이값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다. 예를 들면, 태스크 할당 장치는 설정된 주기마다 측정된 적어도 하나의 코어 사용량 및 설정된 정책(policy)에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측할 수 있다.
태스크 할당 장치는 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당한다(520). 예를 들면, 태스크 할당 장치는 현재 주기에서의 각 태스크에 대한 예측된 코어 사용량과 N 주기 이전에서의 각 태스크에 대한 예측된 코어 사용량의 차이값이 설정된 차이값 이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다. 또 다른 예를 들면, 태스크 할당 장치는 각 태스크에 대한 예측된 코어 사용량의 변화량이 설정된 변화량 이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당할 수 있다.
본 발명의 일 실시예에 따른 컴퓨터로 읽을 수 있는 저장 매체는 설정된 주기마다 다수의 코어(core)에 할당된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정하는 단계와, 설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계 및 예측된 코어 사용량에 기초하여 태스크를 코어들에 할당하는 단계를 포함하는 태스크 할당 방법을 실행하기 위한 프로그램 명령어를 저장할 수 있다.
설명된 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
또한, 실시예는 그 설명을 위한 것이며, 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 통상의 전문가라면 본 발명의 기술사상의 범위에서 다양한 실시예가 가능함을 이해할 수 있을 것이다.
또한, 본 발명의 일실시예에 의하면, 전술한 방법은, 프로그램이 기록된 매체에 프로세서가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 프로세서가 읽을 수 있는 매체의 예로는, ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등을 포함한다.
Claims (19)
- 설정된 주기마다 다수의 코어(core)에서 실행된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정하는 측정부;
설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 예측부; 및
예측된 코어 사용량에 기초하여 태스크를 상기 코어들에 할당하는 할당부를 포함하며,
상기 예측부는,
상기 태스크 각각에 대해서, 주기별로 측정된 코어 사용량 간의 변화량에 기초하여 상기 태스크 각각의 예비 예측된 코어 사용량을 산출하고, 상기 산출된 예비 예측된 코어 사용량들의 총 합이 기설정된 임계값 이하이면, 상기 태스크 각각에 대응하여 산출된 예비 예측된 코어 사용량을 다음 주기에서의 각 태스크의 코어 사용량으로 예측하는 태스크 할당 장치.
- 제 1 항에 있어서,
상기 예측부는,
상기 태스크의 동작 특성을 추출하고, 상기 추출된 태스크의 동작 특성 및 상기 예비 예측된 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 태스크 할당 장치.
- 제 2 항에 있어서,
상기 동작 특성은
태스크가 실시간(real-time) 태스크인지 여부, 태스크가 포그라운드(foreground) 태스크 또는 백그라운드(background) 태스크 인지 여부, 코어들에 할당된 태스크의 목록 및 태스크의 우선 순위(priority) 중 적어도 하나인 태스크 할당 장치.
- 제 1 항에 있어서,
상기 예측부는,
상기 설정된 주기마다 측정된 코어 사용량들의 평균값, 증가값 및 감소값 중 적어도 하나에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 태스크 할당 장치.
- 제 1 항에 있어서,
상기 예측부는,
상기 설정된 주기마다 측정된 코어 사용량 및 상기 설정된 주기마다 예비 예측된 코어 사용량의 차이값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 태스크 할당 장치.
- 제 1 항에 있어서,
상기 예측부는,
상기 설정된 주기마다 측정된 적어도 하나의 코어 사용량 및 설정된 정책(policy)에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 태스크 할당 장치.
- 제 6 항에 있어서,
상기 설정된 정책은,
설정된 코어 사용량보다 낮은 코어 사용량을 갖는 태스크가 우선 실행되도록 설정된 정책, 실시간 태스크가 우선 실행되도록 설정된 정책, 백그라운드로 실행되는 태스크의 코어 사용량이 설정된 코어 사용량을 넘지 않도록 설정된 정책 중 적어도 하나를 포함하는 태스크 할당 장치.
- 제 1 항에 있어서,
상기 할당부는,
현재 주기에서의 각 태스크에 대한 예측된 코어 사용량과 N 주기 이전에서의 각 태스크에 대한 예측된 코어 사용량의 차이값이 설정된 차이값 이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 상기 코어들에 할당하는 태스크 할당 장치.
- 제 1 항에 있어서,
상기 할당부는,
각 태스크에 대한 예측된 코어 사용량의 변화량이 설정된 변화량 이상인 경우, 상기 예측된 코어 사용량에 기초하여 태스크를 상기 코어들에 할당하는 태스크 할당 장치.
- 설정된 주기마다 다수의 코어(core)에서 실행된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정부에서 측정하는 단계;
설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측부에서 예측하는 단계; 및
예측된 코어 사용량에 기초하여 태스크를 할당부에서 상기 코어들에 할당하는 단계를 포함하며,
상기 예측하는 단계는,
상기 태스크 각각에 대해서, 주기별로 측정된 코어 사용량 간의 변화량에 기초하여 상기 태스크 각각의 예비 예측된 코어 사용량을 산출하고, 상기 산출된 예비 예측된 코어 사용량들의 총 합이 기설정된 임계값 이하이면, 상기 태스크 각각에 대응하여 산출된 예비 예측된 코어 사용량을 다음 주기에서의 각 태스크의 코어 사용량으로 예측하는 태스크 할당 방법.
- 제 10 항에 있어서,
상기 예측하는 단계는,
상기 태스크의 동작 특성을 추출하는 단계; 및
상기 추출된 태스크의 동작 특성 및 상기 예비 예측된 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계를 포함하는 태스크 할당 방법.
- 제 11 항에 있어서,
상기 동작 특성은
태스크가 실시간(real-time) 태스크인지 여부, 태스크가 포그라운드(foreground) 태스크 또는 백그라운드(background) 태스크 인지 여부, 코어들에 할당된 태스크의 목록 및 태스크의 우선 순위(priority) 중 적어도 하나인 태스크 할당 방법.
- 제 10 항에 있어서,
상기 예측하는 단계는,
상기 설정된 주기마다 측정된 코어 사용량들의 평균값, 증가값 및 감소값 중 적어도 하나에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계를 포함하는 태스크 할당 방법.
- 제 10 항에 있어서,
상기 예측하는 단계는,
상기 설정된 주기마다 측정된 코어 사용량 및 상기 설정된 주기마다 예비 예측된 코어 사용량의 차이값에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 태스크 할당 방법.
- 제 10 항에 있어서,
상기 예측하는 단계는,
상기 설정된 주기마다 측정된 적어도 하나의 코어 사용량 및 설정된 정책(policy)에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계를 포함하는 태스크 할당 방법.
- 제 15 항에 있어서,
상기 설정된 정책은,
설정된 코어 사용량보다 낮은 코어 사용량을 갖는 태스크가 우선 실행되도록 설정된 정책, 실시간 태스크가 우선 실행되도록 설정된 정책, 백그라운드로 실행되는 태스크의 코어 사용량이 설정된 코어 사용량을 넘지 않도록 설정된 정책 중 적어도 하나를 포함하는 태스크 할당 방법.
- 제 10 항에 있어서,
상기 할당하는 단계는,
현재 주기에서의 각 태스크에 대한 예측된 코어 사용량과 N 주기 이전에서의 각 태스크에 대한 예측된 코어 사용량의 차이값이 설정된 차이값 이상인 경우, 예측된 코어 사용량에 기초하여 태스크를 상기 코어들에 할당하는 단계를 포함하는 태스크 할당 방법.
- 제 10 항에 있어서,
상기 할당하는 단계는,
각 태스크에 대한 예측된 코어 사용량의 변화량이 설정된 변화량 이상인 경우, 상기 예측된 코어 사용량에 기초하여 태스크를 상기 코어들에 할당하는 단계를 포함하는 태스크 할당 방법.
- 설정된 주기마다 다수의 코어(core)에 할당된 적어도 하나의 태스크에 대하여 각 태스크의 코어 사용량을 측정하는 단계;
설정된 주기마다 측정된 적어도 하나의 코어 사용량에 기초하여 다음 주기에서의 각 태스크의 코어 사용량을 예측하는 단계; 및
예측된 코어 사용량에 기초하여 태스크를 상기 코어들에 할당하는 단계를 포함하며,
상기 예측하는 단계는,
상기 태스크 각각에 대해서, 주기별로 측정된 코어 사용량 간의 변화량에 기초하여 상기 태스크 각각의 예비 예측된 코어 사용량을 산출하고, 상기 산출된 예비 예측된 코어 사용량들의 총 합이 기설정된 임계값 이하이면, 상기 태스크 각각에 대응하여 산출된 예비 예측된 코어 사용량을 다음 주기에서의 각 태스크의 코어 사용량으로 예측하는 태스크 할당 방법을 실행하기 위한 프로그램 명령어가 저장된 컴퓨터로 읽을 수 있는 저장 매체.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110072669A KR101812583B1 (ko) | 2011-07-21 | 2011-07-21 | 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체 |
US13/267,214 US9552230B2 (en) | 2011-07-21 | 2011-10-06 | Apparatus and method for allocating a task based on measured and estimated core usage |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110072669A KR101812583B1 (ko) | 2011-07-21 | 2011-07-21 | 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130011491A KR20130011491A (ko) | 2013-01-30 |
KR101812583B1 true KR101812583B1 (ko) | 2018-01-30 |
Family
ID=47556752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110072669A KR101812583B1 (ko) | 2011-07-21 | 2011-07-21 | 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9552230B2 (ko) |
KR (1) | KR101812583B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200042221A (ko) * | 2018-10-15 | 2020-04-23 | 중앙대학교 산학협력단 | 모바일 단말 장치 내의 프로세서의 전력을 관리하는 장치 및 방법 |
KR20230085830A (ko) | 2021-12-07 | 2023-06-14 | 한양대학교 에리카산학협력단 | 실행시간 할당 장치 및 방법 |
KR102599116B1 (ko) * | 2023-02-20 | 2023-11-07 | 서강대학교산학협력단 | 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130115574A (ko) * | 2012-04-12 | 2013-10-22 | 삼성전자주식회사 | 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치 |
JP5915406B2 (ja) * | 2012-06-22 | 2016-05-11 | 富士通株式会社 | 携帯端末装置の制御方法、制御プログラム及び携帯端末装置 |
CN104699218B (zh) * | 2013-12-10 | 2019-04-19 | 华为终端(东莞)有限公司 | 一种任务管理方法及设备 |
KR102237373B1 (ko) * | 2014-07-02 | 2021-04-07 | 삼성전자 주식회사 | 전자 장치의 태스크 스케줄링 방법 및 이를 사용하는 전자 장치 |
KR20160004152A (ko) | 2014-07-02 | 2016-01-12 | 삼성전자주식회사 | 멀티 프로세서의 태스크(task) 우선순위 결정 방법 및 이를 구현하는 전자장치 |
US10169104B2 (en) * | 2014-11-19 | 2019-01-01 | International Business Machines Corporation | Virtual computing power management |
US10884811B2 (en) * | 2017-06-04 | 2021-01-05 | Apple Inc. | Scheduler for AMP architecture with closed loop performance controller using static and dynamic thread grouping |
US10922139B2 (en) | 2018-10-11 | 2021-02-16 | Visa International Service Association | System, method, and computer program product for processing large data sets by balancing entropy between distributed data segments |
KR102641520B1 (ko) * | 2018-11-09 | 2024-02-28 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법 |
KR102638531B1 (ko) | 2018-11-15 | 2024-02-19 | 삼성전자주식회사 | 컴퓨팅 장치 및 컴퓨팅 장치의 동작 방법 |
CN109783224B (zh) * | 2018-12-10 | 2022-10-14 | 平安科技(深圳)有限公司 | 基于负载调配的任务分配方法、装置及终端设备 |
US10956215B2 (en) * | 2019-02-18 | 2021-03-23 | International Business Machines Corporation | Predictive job admission control with feedback |
TWI725744B (zh) * | 2020-02-19 | 2021-04-21 | 先智雲端數據股份有限公司 | 透過多層次相關性建立系統資源預測及資源管理模型的方法 |
US11494236B2 (en) * | 2020-05-06 | 2022-11-08 | EMP IP Holding Company, LLC | System and method for sharing central processing unit (CPU) resources with unbalanced applications |
US11343202B1 (en) * | 2021-04-23 | 2022-05-24 | Dell Products L.P. | Managing edge devices based on predicted network bandwidth utilization |
KR102617002B1 (ko) * | 2022-11-28 | 2023-12-27 | 쿠팡 주식회사 | 애플리케이션의 성능을 측정하는 장치 및 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4123640B2 (ja) | 1999-06-16 | 2008-07-23 | ソニー株式会社 | 情報処理システム及びその制御方法、タスク割当て制御方法及び制御装置、並びにプログラム提供媒体 |
US20100250748A1 (en) | 2009-03-31 | 2010-09-30 | Swaminathan Sivasubramanian | Monitoring and Automatic Scaling of Data Volumes |
US20100332876A1 (en) | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Reducing power consumption of computing devices by forecasting computing performance needs |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4057989B2 (ja) | 2003-09-26 | 2008-03-05 | 株式会社東芝 | スケジューリング方法および情報処理システム |
US7441244B2 (en) * | 2003-12-10 | 2008-10-21 | International Business Machines Corporation | Workload scheduler with cumulative weighting indexes |
US7831325B1 (en) * | 2005-04-18 | 2010-11-09 | Hewlett-Packard Development Company, L.P. | Computing estimated performance of a software application in a target system |
JP2007148469A (ja) * | 2005-11-24 | 2007-06-14 | Hitachi Ltd | ビジネスプロセス定義を用いた事前リソース割り当て方法 |
JP2009163527A (ja) | 2008-01-08 | 2009-07-23 | Hitachi Ltd | Os間で負荷分散する情報処理システム |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
EP2141626A1 (en) * | 2008-07-04 | 2010-01-06 | Koninklijke KPN N.V. | Malware detection uses time-based CPU utilization metric |
JP2010079622A (ja) | 2008-09-26 | 2010-04-08 | Hitachi Ltd | マルチコアプロセッサシステム、および、そのタスク制御方法 |
-
2011
- 2011-07-21 KR KR1020110072669A patent/KR101812583B1/ko active IP Right Grant
- 2011-10-06 US US13/267,214 patent/US9552230B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4123640B2 (ja) | 1999-06-16 | 2008-07-23 | ソニー株式会社 | 情報処理システム及びその制御方法、タスク割当て制御方法及び制御装置、並びにプログラム提供媒体 |
US20100250748A1 (en) | 2009-03-31 | 2010-09-30 | Swaminathan Sivasubramanian | Monitoring and Automatic Scaling of Data Volumes |
US20100332876A1 (en) | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Reducing power consumption of computing devices by forecasting computing performance needs |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200042221A (ko) * | 2018-10-15 | 2020-04-23 | 중앙대학교 산학협력단 | 모바일 단말 장치 내의 프로세서의 전력을 관리하는 장치 및 방법 |
KR102118799B1 (ko) * | 2018-10-15 | 2020-06-03 | 중앙대학교 산학협력단 | 모바일 단말 장치 내의 프로세서의 전력을 관리하는 장치 및 방법 |
KR20230085830A (ko) | 2021-12-07 | 2023-06-14 | 한양대학교 에리카산학협력단 | 실행시간 할당 장치 및 방법 |
KR102599116B1 (ko) * | 2023-02-20 | 2023-11-07 | 서강대학교산학협력단 | 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR20130011491A (ko) | 2013-01-30 |
US9552230B2 (en) | 2017-01-24 |
US20130024868A1 (en) | 2013-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101812583B1 (ko) | 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체 | |
US9229783B2 (en) | Methods and apparatus for resource capacity evaluation in a system of virtual containers | |
US8694644B2 (en) | Network-aware coordination of virtual machine migrations in enterprise data centers and clouds | |
US9037717B2 (en) | Virtual machine demand estimation | |
US9262209B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
US20140189109A1 (en) | System and method for dynamically expanding virtual cluster and recording medium on which program for executing the method is recorded | |
US20120042312A1 (en) | Process demand prediction for distributed power and resource management | |
WO2011155233A1 (ja) | クラスタ構成管理方法、管理装置及びプログラムを格納した記憶媒体 | |
KR101471749B1 (ko) | 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법 | |
CN103329100A (zh) | 异质的计算环境中的负载平衡 | |
US9374314B2 (en) | QoS aware balancing in data centers | |
US9672076B2 (en) | Scheduling process on a processor or an accelerator on a system driven by battery based on processing efficiency and power consumption | |
WO2016115000A1 (en) | Hybrid scheduler and power manager | |
JP2007299401A (ja) | 個々のユーザの資源使用量およびその使用量の追跡に基づいた公平な共用分のスケジューリングを行う方法およびシステム | |
KR20110075295A (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
KR101553650B1 (ko) | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 | |
JP2010009160A (ja) | 性能値算出装置 | |
KR101392584B1 (ko) | 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법 | |
US20200012516A1 (en) | Migration management method, migration system, and storage medium | |
US9740530B2 (en) | Decreasing the priority of a user based on an allocation ratio | |
US9983911B2 (en) | Analysis controller, analysis control method and computer-readable medium | |
US11074111B2 (en) | Quality of service scheduling with workload profiles | |
US20080195447A1 (en) | System and method for capacity sizing for computer systems | |
CN110069319A (zh) | 一种面向朵云资源管理的多目标虚拟机调度方法及系统 | |
KR20120069364A (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 |