KR101586712B1 - 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치 - Google Patents

멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치 Download PDF

Info

Publication number
KR101586712B1
KR101586712B1 KR1020140170691A KR20140170691A KR101586712B1 KR 101586712 B1 KR101586712 B1 KR 101586712B1 KR 1020140170691 A KR1020140170691 A KR 1020140170691A KR 20140170691 A KR20140170691 A KR 20140170691A KR 101586712 B1 KR101586712 B1 KR 101586712B1
Authority
KR
South Korea
Prior art keywords
scenario
processor
multiprocessor system
dependency graph
parallelism index
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020140170691A
Other languages
English (en)
Other versions
KR20150089918A (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 숭실대학교산학협력단
Publication of KR20150089918A publication Critical patent/KR20150089918A/ko
Application granted granted Critical
Publication of KR101586712B1 publication Critical patent/KR101586712B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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
    • 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/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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로, 본 발명의 일 실시예에 따른 멀티 프로세서 시스템은 프로세서 스케줄링을 운영하는 프로그램이 저장된 메모리 및 메모리에 저장된 프로그램을 실행하는 프로세서를 포함할 수 있다. 이때, 프로세서는 프로그램의 실행에 따라, 멀티 프로세서 시스템의 외부 이벤트에 대한 하나 이상의 태스크 들의 실행 과정으로 구성된 시나리오에 대하여 실시간 태스크 의존성 그래프를 생성할 수 있다. 또한, 프로세서는 멀티 프로세서 시스템의 실행 이력을 기반으로 실시간 태스크 의존성 그래프 생성 및 시나리오의 병렬성 지수를 계산하고, 각 시나리오의 병렬성 지수를 이용하여 프로세서 스케줄링을 수행할 수 있다.

Description

멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치 {METHOD AND APPARATUS FOR SCHEDULING USING TASK DEPENDENCY GRAPHS IN MULTIPROCESSOR SYSTEM}
본 발명은 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치에 관한 것이다.
최근 스마트 폰, 스마트 패드 등 배터리 기반 스마트 디바이스 및 전력 사용량이 많은 서버 컴퓨터들이 확산함에 따라 소비 전력을 낮추는 저전력 프로세서 스케줄링에 대한 필요성이 커지고 있다. 특히, 모바일 단말기와 같이 배터리 기반 스마트 디바이스의 경우에는 저전력 프로세서 스케줄링이 필수적이다.
단일 프로세서의 저전력 프로세서 스케줄링은 프로세서에 공급되는 전압과 이에 연관된 프로세서 동작 주파수를 낮춰 전력 소비를 감소시키는 방법을 사용한다. 멀티 프로세서의 저전력 프로세서 스케줄링은 모든 프로세서가 동일한 전압과 동작 주파수를 사용한다고 가정하면서, 동작 주파수를 낮추거나, 또는 불필요한 프로세서의 전원을 차단하여 전력소비를 감소시킨다.
그 외의 멀티 프로세서 시스템에서 저전력 프로세서 스케줄링 방법에 대한 기존 발명 및 연구는 다음과 같다.
한국 공개특허공보 제2014-0057371호(발명의 명칭: 멀티 프로세서 코어 시스템 내의 프로세서 코어를 스케줄링 하기 위한 방법, 장치, 및 시스템)는 멀티 프로세서 시스템에서 네트워크의 입출력 처리를 위한 전체 멀티 프로세서 코어 시스템의 효율을 향상할 수 있는 프로세서의 스케줄링 방법을 개시하고 있다.
또한, 한국 공개 특허공보 제2014-0046897호(발명의 명칭: 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑방법 및 태스크 스케줄링 방법)는 멀티 프로세서 시스템에서 최적화 기법을 이용하여 태스크에 지정되는 통신 방식을 최적화함으로써 프로그램의 절전성능 및 동작 속도를 향상할 수 있는 멀티 프로세서 스케줄링 방법을 개시하고 있다. 이 발명은 최적화 방법으로 시뮬레이티드 어닐링 알고리즘(simulated annealing algorithm)을 이용한다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 본 실시예는 멀티 프로세서 시스템에서 외부 이벤트에 대한 하나 이상의 태스크들의 실행 과정으로 구성된 태스크 의존성 그래프 및 병렬성 지수에 기초하여, 프로세서의 저전력 스케줄링 방법 및 장치를 제공하는데 그 목적이 있다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로, 본 발명의 일 실시예에 따른 멀티 프로세서 시스템은 프로세서 스케줄링을 운영하는 프로그램이 저장된 메모리 및 메모리에 저장된 프로그램을 실행하는 프로세서를 포함할 수 있다. 이때, 프로세서는 프로그램의 실행에 따라, 멀티 프로세서 시스템의 외부 이벤트에 대한 하나 이상의 태스크 들의 실행 과정으로 구성된 시나리오에 대하여 실시간 태스크 의존성 그래프를 생성할 수 있다. 또한, 프로세서는 멀티 프로세서 시스템의 실행 이력을 기반으로 실시간 태스크 의존성 그래프 생성 및 시나리오의 병렬성 지수를 계산하고, 각 시나리오의 병렬성 지수를 이용하여 프로세서 스케줄링을 수행할 수 있다.
또한, 본 발명의 일 실시예에 따른 멀티 프로세서 시스템에서의 프로세서 스케줄링 방법은 멀티 프로세서 시스템의 시나리오에 대하여 실시간 태스크 의존성 그래프를 생성하는 단계; 실시간 태스크 의존성 그래프를 이용하여 시나리오에 대한 병렬성 지수를 계산하는 단계; 및 시나리오에 대한 병렬성 지수를 이용하여 프로세서 스케줄링을 수행하는 단계를 포함할 수 있다. 이때, 시나리오는 멀티 프로세서 시스템의 외부 이벤트에 대한 하나 이상 태스크들의 실행 과정으로 구성되며, 실시간 태스크 의존성 그래프 생성 및 병렬성 지수 계산은 멀티 프로세서 시스템에서 사용자의 태스크 실행 이력을 이용할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 본 발명의 일 실시예는 멀티 프로세서 시스템에서 사용자 태스크 실행 이력에 기반한 태스크 의존성 그래프 및 병렬성 지수를 생성하고, 이를 이용하여 저전력 스케줄링을 수행하므로 유연하고 효율적인 저전력 스케줄링 구현이 가능하다.
또한, 본 발명의 일 실시예는 저전력 스케줄링에 누적 한계점을 적용하여 저전력 스케줄링이 적용되는 멀티 프로세서 시스템의 특징에 맞게 프로세서의 활성화 정도를 조절할 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티 프로세서 시스템의 프로세서 스케줄링 장치를 개략적으로 도시한 구성도이다.
도 2는 본 발명의 일 실시예에 따른 태스크 의존성 그래프의 예시도이다.
도 3은 본 발명의 일 실시예에 따른 태스크 의존성 그래프를 이용한 병렬성 분석을 설명하기 위한 예시도이다.
도 4는 본 발명의 일 실시예에 따른 누적 한계점이 4일 경우 프로세서 스케줄링의 예시도이다.
도 5는 본 발명의 일 실시예에 따른 누적 한계점이 3인 경우 프로세서 스케줄링의 예시도이다.
도 6은 본 발명의 일 실시예에 따른 멀티 프로세서 시스템에서의 프로세서 스케줄링 방법을 개략적으로 도시한 구성도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
최근 멀티 프로세서 시스템이 보급됨에 따라 멀티 프로세서 시스템의 저전력 스케줄링에 대한 요구가 증가하고 있다. 기존의 대표적인 프로세서 스케줄링 방법은 TGFF(task graph for free) 및 CPU 핫플러그(hotplug) 등이 있다.
TGFF 방법은 프로세서의 스케줄링 및 할당에 대한 연구에 사용되는 시뮬레이션 툴(simulation tool) 이다. TGFF 방법은 소스 파일로부터 파라미터를 입력받아 태스크 그래프(task graph)를 생성하고 스케줄링을 수행할 수 있다. 그러나 TGFF 방법은 소스 레벨의 태스크 그래프를 생성하므로 실제 플랫폼에서 수행되는 태스크 간의 의존성 관계를 파악할 수 없다.
CPU 핫플러그 방법은 운영체제 내부의 태스크 큐에 있는 실행 가능한(runnable) 태스크 들의 개수를 파악하고, 태스크 개수에 맞춰 프로세서의 활성화 여부를 조절한다. 그러나 CPU 핫플러그 방법은 태스크의 의존성을 고려하지 않은 단기간 분석 방식이며, 짧은 시간을 수행하는 여러 개의 태스크 집합이 여러 번 등장할 경우 불필요한 오버헤드가 커지게 된다.
이러한 기존 멀티 프로세서의 저전력 프로세서 스케줄링 방법은 운영체제 내부의 태스크 큐에 들어있는 실행 가능한 태스크의 개수를 분석하여 활성화할 프로세서의 개수를 정한다. 그러나 이러한 방법은 시간에 따라 실행 가능한 태스크의 개수가 급격하게 변하면 불필요하게 프로세서를 끄거나 켜는 부작용을 유발할 수 있어, 불필요한 전력 소모가 증가할 수 있다.
이러한 문제를 해결하기 위하여 본 발명은 멀티 프로세서 시스템에서 태스크 의존성 그래프(task dependency graph)를 이용한 스케줄링 방법 및 장치를 제안한다.
다음은 본 발명의 일 실시예에 따른 멀티 프로세서 시스템의 프로세서 스케줄링 장치를 도 1을 이용하여 설명한다.
도 1은 본 발명의 일 실시예에 따른 멀티 프로세서 시스템의 프로세서 스케줄링 장치를 개략적으로 도시한 구성도이다.
본 발명의 일 실시예에 따른 멀티 프로세서 시스템(100)은 프로세서 스케줄링을 운영하는 프로그램이 저장된 메모리(120) 및 메모리(120)에 저장된 프로그램을 실행하는 프로세서(110)를 포함할 수 있다. 프로세서(110)는 프로그램의 실행에 따라, 멀티 프로세서 시스템(100)의 외부 이벤트에 대한 하나 이상의 태스크 들의 실행 과정으로 구성된 시나리오에 대하여 실시간 태스크 의존성 그래프를 생성할 수 있다. 이때, 멀티 프로세서 시스템(100)의 실행 이력을 기반으로 실시간 태스크 의존성 그래프를 생성하고, 시나리오의 병렬성 지수(degree of parallelism)를 계산할 수 있다. 이렇게 생성된 각 시나리오의 병렬성 지수를 이용하여 프로세서(110)의 스케줄링을 수행할 수 있다.
멀티 프로세서 시스템(100)은 하나 이상의 프로세서(110)를 탑재한 시스템을 통칭하는 것이다. 예를 들어, 멀티 프로세서 시스템(100)은 하나 이상의 프로세서를 탑재한 서버, 워크스테이션, 데스크톱 컴퓨터 및 노트북 컴퓨터 등 일반적인 컴퓨터와 스마트 폰, 태블릿 PC 및 스마트 TV 등 최신 스마트 디바이스(smart device) 등을 포함할 수 있다.
본 발명의 일 실시예에 따른 메모리(120)는 휘발성 메모리(volatile memory) 및 비휘발성 메모리(non-volatile memory)를 통칭하는 것이다. 예를 들어, 휘발성 메모리는 DRAM(dynamic random access memory) 및 SRAM(static random access memory) 등을 포함할 수 있다. 비휘발성 메모리는 콤팩트 플래시(compact flash; CF) 카드, SD(secure digital) 카드, 메모리 스틱(memory stick), 솔리드 스테이트 드라이브(solid-state drive; SSD) 및 마이크로(micro) SD 카드 등과 같은 낸드 플래시 메모리(NAND flash memory)나 하드 디스크 드라이브(hard disk drive; HDD) 등과 같은 마그네틱 컴퓨터 기억 장치 등을 포함할 수 있다.
멀티 프로세서 시스템(100)의 외부 이벤트는 멀티 프로세서 시스템(100)이 탑재된 장치의 외부에서 발생하는 이벤트를 의미할 수 있다. 예를 들어, 외부 이벤트는 일반적인 컴퓨터에서 마우스 및 키보드 등의 입력 장치에 의한 입력, 스마트 디바이스에서 물리적 버튼이나 터치 패널의 클릭 등과 같은 외부 입력을 포함하나 이에 한정되지는 않는다.
태스크 의존성 그래프는 외부 이벤트에 반응하는 하나 이상의 태스크 실행 과정으로 멀티 프로세서 시스템(100)의 태스크 실행 이력을 기반으로 생성될 수 있다.
또한, 본 발명의 일 실시예를 따른 실시간 태스크 의존성 그래프는 시나리오의 발생 확률을 포함할 수 있다. 이때, 프로세서(110)는 프로그램의 실행에 따라 멀티 프로세서 시스템(100)의 태스크 실행 이력을 이용하여 시나리오의 발생 확률을 계산할 수 있다.
태스크 실행 이력은 멀티 프로세서 시스템(100)의 사용자 및 사용 환경에 따라 달라질 수 있다. 그러므로 본 발명의 일 실시예에 따른 태스크 의존성 그래프 및 프로세서 스케줄링 방법은 멀티 프로세서 시스템(100)을 사용하는 사용자에 종속적일 수 있다. 또한, 실시간으로 태스크 의존성 그래프를 생성할 수 있으므로 같은 사용자의 멀티 프로세서 시스템(100)이더라도 멀티 프로세서 시스템(100) 사용 기간에 따라 프로세서 스케줄링 방법이 달라질 수 있다.
태스크 의존성 그래프에 대해서는 차후에 도 2를 이용하여 상세하게 설명한다.
병렬성 지수는 태스크 의존성 그래프를 이용하여 계산하는 것으로 각 프로세서의 활성화 여부를 조절하기 위하여 사용될 수 있다. 프로세서(110)는 실시간 태스크 의존성 그래프 및 태스크 실행 이력을 분석하여 도출한 시나리오의 소요 시간을 이용하여 병렬성 지수를 계산할 수 있다. 병렬성 지수는 사용자의 종속적인 태스크 의존성 그래프를 이용하므로, 멀티 프로세서 시스템(100)을 사용하는 사용자에 따라 달라질 수 있다.
병렬성 지수는 차후에 도 3을 이용하여 상세하게 설명한다.
본 발명의 일 실시예에 따른 프로세서 스케줄링 방법은 실시간 태스크 의존성 그래프 및 병렬성 지수를 이용하여 수행할 수 있다.
프로세서(110)는 프로그램의 실행에 따라, 멀티 프로세서 시스템(100) 외부의 이벤트가 발생하면, 외부 이벤트에 해당하는 시나리오의 병렬성 지수를 계산할 수 있다. 그리고 시나리오의 병렬성 지수에 따라, 각 프로세서(110)의 활성화 개수를 조절하여 저전력 스케줄링을 수행할 수 있다. 그러나 병렬성 지수는 전체 시간 구간에 대한 평균값이므로 멀티 프로세서 시스템(110)은 특정 시간 구간에 불균형이 심한 경우에는 활성화될 프로세서의 수를 알맞게 변경해 주어야 한다.
그러므로 본 발명의 일 실시예에서 프로세서(110)는 프로그램의 실행에 따라, 시나리오의 병렬성 지수가 미리 정의된 누적 한계점 이상인지 판별할 수 있다. 만약, 시나리오의 병렬성 지수가 누적 한계점 이상인 경우, 시나리오를 복수의 시나리오로 분할할 수 있다. 이렇게 시나리오를 분할하여 사용자의 사용 환경에 적합하도록 활성화된 프로세서 개수를 알맞게 반영할 수 있다.
누적 한계점을 이용한 프로세서 스케줄링 방법의 자세한 내용은 차후에 도 5 및 도 6을 이용하여 설명한다.
다음은 도 2를 이용하여 본 발명의 일 실시예에 따르는 태스크 의존성 그래프를 상세하게 설명한다.
도 2는 본 발명의 일 실시예에 따른 태스크 의존성 그래프의 예시도이다. 도 2의 (A)는 각각 스레드의 시작 및 종료 시각을 나태 낸 그래프이다. 또한, 도 2의 (B)는 각각의 스레드를 이용하여 작성된 태스크 의존성 그래프를 표현한 것이다.
본 발명의 일 실시예에 따른 태스크 의존성 그래프는 복수의 태스크 간의 의존성 관계를 그래프 형태로 나타낼 수 있다. 태스크 의존성 그래프는 프로세스 노드(process node), 스레드 노드(thread node) 및 시나리오 노드(scenario node)를 포함할 수 있다.
프로세스 노드는 프로세스의 시작 스레드를 의미하는 시작 노드, 프로세스의 종료 스레드를 의미하는 종료 노드 및 실제 프로세스 내에서 실행하는 스레드를 의미하는 스레드 노드를 포함할 수 있다. 프로세스 노드는 스레드 체인(thread chain)이라고 하는 스레드 노드와 시나리오 노드의 체인 형태로 생성될 수 있다.
또한, 서로 상이한 두 개의 시나리오가 공통으로 실행하는 스레드가 존재하는 경우, 하나의 프로세스 노드로 생성할 수 있다. 이때, 중복되는 스레드 노드를 제외한 각각의 다른 스레드 노드를 표현하기 위하여 일종의 중간 노드로 시나리오 노드가 사용될 수 있다. 이렇게 공통된 스레드가 존재하는 시나리오를 병합하여 생성된 프로세스 노드는 시작 노드와 종료 노드로 축약하여 표현할 수 있다.
도 2에서 "프로세스 A", "프로세스 D", "프로세스 E" 및 "프로세스 F"는 프로세스 노드이다. 또한, "S0", "S1", "S2" 및 "S3"은 시나리오 노드이다. (B)에서 프로세스 노드인 "프로세스 A"는 시작 노드와 종료 노드로 축약하여 표현한 것이다.
도 2에서처럼 태스크 의존성 그래프는 여러 개의 프로세스 노드 간의 체인 형태로 구성될 수 있다. 프로세스 체인은 스레드 체인과 동일하게 중복되는 프로세스 노드를 제외한 각각의 다른 프로세스 노드를 표현하기 위하여 일종의 중간 노드로 시나리오 노드를 사용할 수 있다.
도 2의 (A)에서처럼 "프로세스 A"의 스레드인 "A0"가 종료하기 전 "프로세스 D"의 스레드 "D1" 및 "프로세스 E"의 스레드 "E1"이 실행된다. 그러므로 도 2의 (B)에서처럼 "프로세스 A"는 "프로세스 D" 및 "프로세스 E"로 분기 되며, 각각의 프로세스 노드 사이에는 시나리오 노드가 포함될 수 있다.
도 2의 (B)에서처럼 본 발명의 일 실시예에 따른 실시간 태스크 의존성 그래프는 시나리오의 발생 확률을 포함할 수 있다. 이때, 시나리오의 발생 확률은 태스크 실행 이력을 이용하여 계산할 수 있다. 예를 들어, 도 2에서 "프로세스 A"가 실행된 다음, "프로세스 D"가 실행될 확률이 0.4, "프로세스 E"가 실행될 확률이 0.6이므로, 시나리오 노드 "S1"의 확률이 0.4, 시나리오 노드 "S2"의 확률이 0.6이 된다. 도 2의 (B)에서 확률을 표기하지 않은 시나리오 노드 "S0" 및 "S3"은 실행 확률이 1.0이다.
이렇게 생성된 실시간 태스크 의존성 그래프는 병렬성 분석을 통하여 병렬성 지수를 계산하고, 프로세서 스케줄링을 수행할 수 있다.
다음은 도 2 및 도 3을 이용하여 본 발명의 일 실시예에 따른 병렬성 지수(degree of parallelism)를 설명한다.
도 3은 본 발명의 일 실시예에 따른 태스크 의존성 그래프를 이용한 병렬성 분석을 설명하기 위한 예시도이다.
멀티 프로세서 시스템(100)에서 태스크 실행 이력을 이용하여 태스크 의존성 그래프를 생성한 이후, 프로세서(110)는 프로그램의 실행에 따라 실시간 태스크 의존성 그래프 및 시나리오의 소요 시간을 이용하여 시나리오의 병렬성 지수를 계산할 수 있다. 본 발명의 일 실시예에서는 이러한 과정을 병렬성 분석이라고 한다.
시나리오의 병렬성 지수는 해당 시나리오 이후 실행할 스레드의 평균 개수를 이용하여 계산된다. 본 발명의 일 실시예에서는 이렇게 계산된 병렬성 지수에 따라 멀티 프로세서 시스템(100)에서 활성화하는 프로세서(110)의 개수를 조절할 수 있다.
또한, 프로세서(110)는 프로그램의 실행에 따라, 멀티 프로세서 시스템(100) 외부의 이벤트가 발생하는 경우, 외부 이벤트에 해당하는 시나리오의 병렬성 분석을 수행할 수 있다. 병렬성 분석을 수행한 이후에 시나리오의 병렬성 지수에 따라 각 프로세서(110)의 활성화 여부를 조절할 수 있다. 이때, 병렬성 지수는 각 시간 구간에 실행되는 스레드 개수의 기댓값으로 계산될 수 있다.
이러한 병렬성 분석은 시나리오 노드 간 병렬성 지수 계산 및 프로세스 체인 단위 병렬성 지수 계산으로 구분될 수 있다. 시나리오 노드 간 병렬성 지수 계산은 연결(concatenation) 연산으로 계산되며, 프로세스 체인 단위 병렬성 지수 계산은 연결(concatenation) 연산과 연합(union) 연산으로 계산될 수 있다.
연결 연산은 하나의 시나리오가 여러 스레드로 분기하지 않고 하나의 스레드로만 연결될 때 적용될 수 있다.
예를 들어, 도 3의 시나리오 "S2"의 병렬성 지수는 "E1", "E2" 및 "S3"의 병렬성 지수 및 발생 확률을 이용한 단일 시간 구간에서 실행될 스레드 개수의 기댓값으로 계산될 수 있다. 도 3의 "S2"의 병렬성 지수를 계산하기 위하여 도 2의 태스크 의존성 그래프를 이용하여 "S2"의 이후 실행되는 스레드의 시작 및 종료 시간 그래프를 확인할 수 있다. 도 3에서 "S2" 이후 실행되는 프로세스는 "프로세서 E"와 "프로세서 F"이며, 다른 프로세스나 시나리오로 분기 되지 않고 순차적으로 실행된다. 그러므로 연결 연산을 이용하여 "S2"의 병렬성 지수를 계산할 수 있다.
"S2" 이후 실행되는 스레드 "E1", "E2" 및 "F1"의 태스크 의존성 그래프를 분석하면, 시간 구간 4에서 5까지 스레드 "E1"이 실행되며, 시간 구간 5에서 6까지 "E1" 및 "E2" 두 개의 스레드가 실행된다. 시간 구간 6에서 7까지는 "E1", "E2" 및 "E3" 세 개의 스레드가 실행되고, 다시 시간 구간 7에서 9까지는 "E1" 및 "F1" 두 개의 스레드가 실행되고, 마지막으로 시간 구간 9에서 10까지 "F1" 하나의 스레드가 실행된다. 이때, 다른 스레드가 실행되지 않으므로 모든 스레드의 발생 확률은 1.0이다.
"S2"의 병렬성 지수는 총 6개의 구간마다 실행되는 스레드 개수 및 확률을 이용하여 계산된 단일 시간 구간에 대한 실행될 스레드 개수의 기댓값이 될 수 있다. 즉, "S2"의 병렬성 지수는 모든 시간 구간에 대한 스레드 개수 및 확률의 곱의 합으로 계산될 수 있다. 총 6개의 시간 구간에 대한 실행될 스레드 개수의 기댓값은
Figure 112014117334413-pat00001
이므로 "S2"의 병렬성 지수는 1.833이 된다.
본 발명의 일 실시예에서 또 다른 병렬성 지수 계산 방법인 연합 연산은 하나의 태스크 노드가 여러 개의 시나리오로 분기하는 것을 하나의 가상 시나리오의 연합으로 정의하여 가상 시나리오의 연합에 대한 병렬성 지수를 계산할 수 있다.
도 3의 "S0"를 예로 들어 연합 연산을 이용한 병렬성 지수를 설명한다. 도 3에서 "S0"는 "S1"과 "S2"로 분기 될 수 있다. 이때, "S2"의 병렬성 지수는 위에서 연결 연산을 이용하여 계산한 것과 같이 1.833이고, "S1"의 병렬성 지수는 "S2"과 같은 방법으로 계산되며, 계산 결과는 1.250이 된다.
"S0"의 병렬성 지수는 "S1"과 "S2"의 병렬성 지수의 연합 연산을 이용하여 계산할 수 있다.
먼저, "S0"에서 "S1"으로 분기 되는 태스크의 병렬성 지수는 스레드 "A1"과 "S1"의 병렬성 지수와 확률을 이용한 연결 연산으로 계산할 수 있다. 도 2와 도 3을 참조하면, "A0"는 시간 구간 0부터 3까지 단독으로 실행되므로 3개 구간의 병렬성 지수는 1이 된다. 시간 구간 3에서 5는 병렬성 지수가 1인 "A0"와 병렬성 지수가 1.25인 "S1"이 동시에 실행되므로 병렬성 지수는 2.25가 된다. 마지막으로 시간 구간 5에서 11은 "S1"이 단독 실행되므로 병렬성 지수는 1.25가 된다. 이때, 각 시간 구간의 발생 확률은 1.0이 된다.
이렇게 총 11 개의 시간 구간의 병렬성 지수 및 확률을 이용하여 단일 시간 구간에 대한 실행될 스레드 개수의 기댓값을 구하면 1.364가 되므로 "S0"에서 "S1"으로 분기 되는 태스크의 병렬성 지수는 1.364가 된다. 같은 방법으로 "S0"에서 "S2"로 분기 되는 태스크의 병렬성 지수를 계산하면 1.600이 된다.
"S0"에서 "S1"으로 분기 되는 태스크의 병렬성 지수와 "S0"에서 "S2"로 분기 되는 태스크의 병렬성 지수의 연합 연산을 이용하여 "S0"의 병렬성 지수를 계산할 수 있다.
"S0"에서 "S1"으로 분기 되는 태스크는 시간 구간 0에서 11까지 실행되며, 이때 확률은 0.6이다. "S0"에서 "S2"으로 분기 되는 태스크는 시간 구간 0에서 10까지 실행되며 이때 확률은 0.4이다. 총 11개 시간 구간의 병렬성 지수 및 발생 확률을 이용하여 단일 시간 구간에 대한 실행될 스레드 개수의 기댓값을 계산하면
Figure 112014117334413-pat00002
이 된다. 그러므로 "S0"의 병렬성 지수는 1.418이 된다.
이렇게 연결 연산 및 연합 연산을 이용하여 태스크 연결성 그래프에 존재하는 모든 태스크의 병렬성 지수를 계산할 수 있다.
본 발명의 일 실시예는 각 태스크의 병렬성 지수를 이용하여 프로세서의 스케줄링을 수행할 수 있다. 그러나 병렬성 지수는 전체 시간 구간에 대한 평균값이므로 특정 시간 구간에 불균형이 심한 경우에는 활성화될 프로세서의 수를 알맞게 변경해주어야 한다.
이러한 문제를 해결하기 위하여 본 발명의 일 실시예의 프로세서는 프로그램의 실행에 따라, 시나리오의 병렬성 지수가 미리 정의된 누적 한계점(threshold) 이상인지 판별한다. 이때, 시나리오의 병렬성 지수가 누적 한계점 이상인 경우, 시나리오를 복수의 시나리오로 분할하여 활성화되는 프로세서의 수를 조정할 수 있다.
다음은 누적 한계점 및 저전력 스케줄링을 도 4 및 도 5를 이용하여 설명한다.
도 4는 본 발명의 일 실시예에 따른 누적 한계점이 4일 경우 프로세서 스케줄링의 예시도이다. 도 5는 본 발명의 일 실시예에 따른 누적 한계점이 3인 경우 프로세서 스케줄링의 예시도이다.
도 4 및 도 5의 오른쪽 상단은 임의의 "프로세스 A"의 태스크 의존성 그래프, 오른쪽 중간은 각 시간 구간마다 활성 프로세서 개수 그래프, 오른쪽 하단은 병렬성 지수 변화량 그래프이다. 왼쪽 상단은 각각 시나리오 분할 이후의 태스크 의존성 그래프이며, 왼쪽 하단은 활성 프로세서 개수 그래프이다.
본 발명의 일 실시예에서는 누적 한계점을 이용하여 멀티 프로세서 시스템(100)의 시나리오를 분할하고 활성화할 프로세서(100)의 개수를 사용자가 사용하는 멀티 프로세서 시스템(100)에 적합하도록 조절할 수 있다. 이때, 누적 한계점은 시간 구간에 따른 병렬성 지수 변화량의 누적 허용치가 될 수 있다.
예를 들어 도 4의 오른쪽 하단 그래프와 같이 전체 병렬성 지수가 2.364인 "프로세스 A"의 각 시간 구간마다 병렬성 지수 변화량을 표현할 수 있다. 병렬성 지수 변화량 그래프에서 시간 구간 7에서의 병렬성 지수 변화량의 절대 합은 4가 된다. 즉, 누적 한계점인 4를 초과하지 못하므로 "프로세서 A"는 분할되지 않고 하나의 시나리오를 가지게 된다.
특히, 병렬성 지수 변화량의 변화가 있는 시간 구간 4부터 11을 분석하면, 시간 구간 4부터 7까지 병렬성 지수 변화량 합은 4이며, 시간 구간 8부터 11까지 병렬성 지수 변화량 합은 -4로 총 합이 0이 된다. 즉, 시간 구간 4부터 11까지 하나의 시나리오에 따라 프로세서가 활성화 되어서 시나리오가 종료함에 따라 비활성화된 것으로 볼 수 있다.
도 4의 병렬성 지수를 이용하여 멀티 프로세서의 스케줄링을 수행하면, 모든 시간 구간 동안 3개의 프로세서가 활성화하게 된다. 멀티 프로세서 시스템(100)에서 시간 구간 0부터 2까지에는 활성화된 프로세서 중 2개의 프로세서를 사용하지 않으며, 시간 구간 3에서는 하나의 프로세서를 사용하지 않게 된다. 또한, 시간 구간 5까지 추가 프로세서 활성화 없이 실행이 가능하다. 그러나 다시 시간 구간 6에서는 5개의 스레드가 실행되고, 시간 구간 7에서 4개의 스레드가 실행되므로 추가적인 스레드 활성화가 필요하다.
이렇게 활성화된 프로세서를 사용하지 않거나 추가 프로세서를 활성화하는 경우가 많아지게 되면, 전력 소모가 증가하게 되므로 적절한 시나리오 분할이 필요하다.
도 5에서는 도 4와 동일한 "프로세스 A"에 대하여 누적 한계점 3을 적용하였을 때 멀티 프로세서 스케줄링의 예이다. 도 5에서는 시간 구간 4에서 7까지의 병렬성 지수 변화량 절대 합이 4이고, 시간 구간 8에서 11까지의 병렬성 지수 변화량 절대 합이 4이므로 누적 한계점을 초과하기 때문에 각각 새로운 시나리오로 분할된다. 즉, 도 5의 왼쪽 중간 그림의 A 및 B와 같이 두 개의 시나리오로 분할되게 된다.
두 개의 분할된 시나리오는 태스크 의존성 그래프에 "D1" 및 "D2"로 표현될 수 있으며, 각각의 병렬성 지수를 계산하면 각각 3.25 및 2.5가 된다.
만약 도 5에서 도 4와 동일하게 멀티 프로세서 스케줄링을 수행하면, 도 5에서는 A에는 4개, B에는 3개의 프로세서를 활성화할 수 있다. 이렇게 누적 한계점 수를 변경하여 프로세서 활성화 개수를 조정하므로 멀티 프로세서 시스템 사용자의 사용 환경에 적합한 저전력 스케줄링을 수행할 수 있다.
다음은 본 발명의 일 실시예에 따른 멀티 프로세서 시스템에서의 프로세서 스케줄링 방법을 설명한다.
도 6은 본 발명의 일 실시예에 따른 멀티 프로세서 시스템에서의 프로세서 스케줄링 방법을 설명하기 위한 순서도이다.
본 발명의 일 실시예에 따르는 멀티 프로세서 시스템에서의 프로세서 스케줄링 방법에 있어서, 멀티 프로세서 시스템의 시나리오에 대하여 실시간 태스크 의존성 그래프를 생성하고(S700), 생성된 실시간 태스크 의존성 그래프를 이용하여 시나리오에 대한 병렬성 지수를 계산하며(S710), 시나리오에 대한 병렬성 지수를 이용하여 프로세서 스케줄링을 수행할 수 있다(S730). 이때, 시나리오는 멀티 프로세서 시스템의 외부 이벤트에 대한 하나 이상 태스크들의 실행 과정으로 구성될 수 있다. 또한, 실시간 태스크 의존성 그래프 생성 및 병렬성 지수 계산은 멀티 프로세서 시스템에서 사용자의 태스크 실행 이력을 이용할 수 있다.
태스크 의존성 그래프는 도 2를 이용하여 위에서 설명한 것과 같이 외부 이벤트에 반응하는 하나 이상의 태스크의 실행과정으로 멀티 프로세서 시스템의 실행 이력을 기반으로 생성될 수 있다. 이때 외부 이벤트는 멀티 프로세서 시스템의 외부에서 발생하는 이벤트를 의미할 수 있다.
병렬성 지수는 도 3을 이용하여 위에서 설명한 것과 같이 실시간 태스크 의존성 그래프를 이용하여 계산할 수 있다.
본 발명의 일 실시예를 따른 실시간 태스크 의존성 그래프 생성(S700)은 멀티 프로세서 시스템(100) 사용자의 사용 이력을 분석하여 태스크 의존성 그래프를 생성하여 프로세서 스케줄링을 수행한다.
또한, 시나리오에 대한 병렬성 지수 계산(S710)은 실시간 태스크 의존성 그래프와 시나리오의 소요 시간을 이용하여 계산할 수 있다.
본 발명의 일 실시예를 따른 프로세서 스케줄링을 수행하는 것은 멀티 프로세서 시스템에서 실행 중인 시나리오의 병렬성 지수에 따라, 각 프로세서의 활성화 여부를 조정할 수 있다.
즉, 프로세서 스케줄링 방법은 멀티 프로세서 시스템(100)을 이용하는 사용자의 태스크 실행 이력을 기반으로 실시간 태스크 의존성 그래프 및 병렬성 지수를 생성하여 수행하므로, 사용자에 적합한 저전력 프로세서 스케줄링이 가능할 수 있다.
또한, 본 발명의 일 실시예를 따른 프로세서 스케줄링을 수행하는 것은 시나리오의 병렬성 지수가 미리 정의된 누적 한계점 이상인지 판별하고(S720), 시나리오의 병렬성 지수가 누적 한계점 이상인 경우, 시나리오를 복수 개로 분할하는 것을 포함할 수 있다(S740). 이때 누적 한계점은 시나리오 병렬성 지수를 분석하여 시나리오를 분류하는 기준일 수 있다.
병렬성 지수는 전체 시간 구간에 대한 평균 스레드 실행 이력을 이용하여 생성되므로, 전체 시간 구간 동안 동일한 값을 가질 수 있다. 그러므로 특정 시간 구간에 불균형이 심한 경우 불필요하게 활성화 및 비활성화되는 프로세서의 수가 증가할 수 있으므로 전력 소모가 발생할 수 있다. 본 발명의 일 실시예는 이러한 문제를 해결하기 위하여 누적 한계점을 이용할 수 있다. 누적 한계점을 적용하여, 멀티 프로세서 시스템(100)에서 활성화되는 프로세서 수를 조정하여 유연하게 멀티 프로세서 스케줄링을 수행할 수 있다.
본 발명의 일 실시예에 따른 멀티 프로세서 시스템 및 프로세서 스케줄링 방법은 사용자 태스크 실행 이력에 기반한 태스크 의존성 그래프 및 병렬성 지수를 생성하고, 이를 이용하여 저전력 스케줄링을 수행하므로 유연하고 효율적인 저전력 스케줄링 구현이 가능할 수 있다. 또한, 멀티 프로세서 시스템 및 프로세서 스케줄링 방법은 저전력 스케줄링에 누적 한계점을 적용하여, 저전력 스케줄링이 적용되는 멀티 프로세서 시스템의 특징에 맞게 프로세서의 활성화 정도를 조절할 수 있다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 멀티 프로세서 시스템
110: 프로세서
120: 메모리

Claims (10)

  1. 멀티 프로세서 시스템에서,
    프로세서 스케줄링을 운영하는 프로그램이 저장된 메모리 및
    상기 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하되,
    상기 프로세서는 상기 프로그램의 실행에 따라, 상기 멀티 프로세서 시스템의 시나리오에 대하여, 실시간 태스크 의존성 그래프를 생성하고,
    상기 생성된 실시간 태스크 의존성 그래프를 이용하여, 상기 시나리오에 대한 병렬성 지수를 계산하며,
    상기 계산된 시나리오에 대한 병렬성 지수를 이용하여 상기 프로세서의 스케줄링을 수행하되,
    상기 시나리오는 상기 멀티 프로세서 시스템의 외부 이벤트에 대한 하나 이상 태스크들의 실행 과정으로 구성되며,
    상기 실시간 태스크 의존성 그래프 생성 및 상기 병렬성 지수 계산은 상기 멀티 프로세서 시스템에서 사용자의 태스크 실행 이력을 기반으로 수행되는 것인, 멀티 프로세서 시스템.
  2. 제 1 항에 있어서,
    상기 프로세서는 상기 사용자의 태스크 실행 이력을 이용하여 계산된 시나리오의 발생 확률이 포함되도록 상기 실시간 태스크 의존성 그래프를 생성하는 멀티 프로세서 시스템.
  3. 제 1 항에 있어서,
    상기 프로세서는 상기 실시간 태스크 의존성 그래프 및 상기 시나리오의 소요 시간을 이용하여 상기 시나리오의 병렬성 지수를 계산하는 멀티 프로세서 시스템.
  4. 제 1 항에 있어서,
    상기 프로세서는 상기 멀티 프로세서 시스템 외부의 이벤트가 발생하는 경우, 외부 이벤트에 해당하는 시나리오의 병렬성 지수를 계산하고, 상기 시나리오의 병렬성 지수에 따라, 각 프로세서의 활성화 여부를 조정하는 멀티 프로세서 시스템.
  5. 제 1 항에 있어서,
    상기 프로세서는 상기 시나리오의 병렬성 지수가 미리 정의된 누적 한계점 이상인지 판별하고,
    상기 시나리오의 병렬성 지수가 누적 한계점 이상인 경우, 상기 시나리오를 복수의 시나리오로 분할하는 멀티 프로세서 시스템.
  6. 멀티 프로세서 시스템에서의 프로세서 스케줄링 방법에 있어서,
    상기 멀티 프로세서 시스템의 시나리오에 대하여 실시간 태스크 의존성 그래프를 생성하는 단계;
    상기 실시간 태스크 의존성 그래프를 이용하여 상기 시나리오에 대한 병렬성 지수를 계산하는 단계; 및
    상기 시나리오에 대한 병렬성 지수를 이용하여 프로세서 스케줄링을 수행하는 단계를 포함하되,
    상기 시나리오는 상기 멀티 프로세서 시스템의 외부 이벤트에 대한 하나 이상 태스크들의 실행 과정으로 구성되며, 상기 실시간 태스크 의존성 그래프 생성 및 상기 병렬성 지수 계산은 상기 멀티 프로세서 시스템에서 사용자의 태스크 실행 이력을 이용하는 프로세서 스케줄링 방법.
  7. 제 6 항에 있어서,
    상기 실시간 태스크 의존성 그래프를 생성하는 단계는,
    상기 사용자의 태스크 실행 이력을 이용하여 계산된 시나리오의 발생 확률을 포함하는 실시간 태스크 의존성 그래프를 생성하는 프로세서 스케줄링 방법.
  8. 제 6 항에 있어서,
    상기 시나리오에 대한 병렬성 지수를 계산하는 단계는,
    상기 실시간 태스크 의존성 그래프와 상기 시나리오의 소요 시간을 이용하여 계산하는 프로세서 스케줄링 방법.
  9. 제 6 항에 있어서,
    상기 프로세서 스케줄링을 수행하는 단계는,
    상기 멀티 프로세서 시스템에서 실행 중인 시나리오의 병렬성 지수에 따라, 각 프로세서의 활성화 여부를 조정하는 프로세서 스케줄링 방법.
  10. 제 6 항에 있어서,
    상기 프로세서 스케줄링을 수행하는 단계는,
    상기 시나리오의 병렬성 지수가 미리 정의된 누적 한계점 이상인지 판별하는 단계; 및
    상기 시나리오의 병렬성 지수가 누적 한계점 이상인 경우, 상기 시나리오를 복수 개로 분할하는 단계를 포함하는 프로세서 스케줄링 방법.
KR1020140170691A 2014-01-27 2014-12-02 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치 Expired - Fee Related KR101586712B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140009650 2014-01-27
KR20140009650 2014-01-27

Publications (2)

Publication Number Publication Date
KR20150089918A KR20150089918A (ko) 2015-08-05
KR101586712B1 true KR101586712B1 (ko) 2016-01-20

Family

ID=53886249

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140170691A Expired - Fee Related KR101586712B1 (ko) 2014-01-27 2014-12-02 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101586712B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893122A (zh) * 2015-08-25 2016-08-24 乐视网信息技术(北京)股份有限公司 数据处理作业调度方法、装置及系统
KR101879419B1 (ko) * 2017-03-15 2018-08-17 주식회사 클래스액트 병렬처리 알고리즘을 이용한 태스크 분배 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011138219A (ja) 2009-12-25 2011-07-14 Toshiba Corp 並列プログラム解析結果表示装置および並列プログラム解析結果表示方法
US20120137300A1 (en) 2010-11-30 2012-05-31 Ryuji Sakai Information Processor and Information Processing Method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030083861A (ko) * 2002-04-22 2003-11-01 황혜정 에스엠에스 메시지를 이용한 타자게임 광고 및 무선인터넷을 통한 설문조사 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011138219A (ja) 2009-12-25 2011-07-14 Toshiba Corp 並列プログラム解析結果表示装置および並列プログラム解析結果表示方法
US20120137300A1 (en) 2010-11-30 2012-05-31 Ryuji Sakai Information Processor and Information Processing Method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
김강희. '우선순위 스케줄링을 사용하는 실시간 시스템을 위한 정확한 확률적 분석 방법'. 정보과학회논문지 : 시스템 및 이론 제31권 제3·4호, 2004.04, pp.170-186.

Also Published As

Publication number Publication date
KR20150089918A (ko) 2015-08-05

Similar Documents

Publication Publication Date Title
US10452441B1 (en) Determining an allocation of computing resources for a job
JP6219512B2 (ja) 仮想ハドゥープマネジャ
Ananthanarayanan et al. Effective straggler mitigation: Attack of the clones
US9619378B2 (en) Dynamically optimizing memory allocation across virtual machines
US9043788B2 (en) Experiment manager for manycore systems
US8966462B2 (en) Memory management parameters derived from system modeling
Ananthanarayanan et al. Why let resources idle? Aggressive cloning of jobs with Dolly
JP6668355B2 (ja) 動的時間的電力ステアリングのためのシステム及び方法
US20150227397A1 (en) Energy efficient assignment of workloads in a datacenter
Yang et al. Design adaptive task allocation scheduler to improve MapReduce performance in heterogeneous clouds
US8972702B2 (en) Systems and methods for power management in a high performance computing (HPC) cluster
WO2016205978A1 (en) Techniques for virtual machine migration
US11520632B1 (en) Specifying behavior among a group of computing tasks
US10445131B2 (en) Core prioritization for heterogeneous on-chip networks
KR20120066189A (ko) 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법
US10114438B2 (en) Dynamic power budgeting in a chassis
US11150716B2 (en) Dynamically optimizing margins of a processor
KR101586712B1 (ko) 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치
US9933844B2 (en) Clustering execution in a processing system to increase power savings
US9618999B1 (en) Idle-aware margin adaption
US20150199250A1 (en) Determining and using power utilization indexes for servers
US9652298B2 (en) Power-aware scheduling
US10002173B1 (en) System and methods for dynamically adjusting between asynchronous and synchronous data replication policies in a networked virtualization environment
KR101248470B1 (ko) 자원 모니터링 컴퓨팅 장치, 방법 및 그 방법을 실행시키기 위한 프로그램을 기록한 기록매체
Padoin et al. Using power demand and residual load imbalance in the load balancing to save energy of parallel systems

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20141202

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20151102

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20160105

PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20160113

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20160114

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20190107

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20200113

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20200113

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20210104

Start annual number: 6

End annual number: 6

PC1903 Unpaid annual fee