KR100241356B1 - 분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 - Google Patents
분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 Download PDFInfo
- Publication number
- KR100241356B1 KR100241356B1 KR1019970066355A KR19970066355A KR100241356B1 KR 100241356 B1 KR100241356 B1 KR 100241356B1 KR 1019970066355 A KR1019970066355 A KR 1019970066355A KR 19970066355 A KR19970066355 A KR 19970066355A KR 100241356 B1 KR100241356 B1 KR 100241356B1
- Authority
- KR
- South Korea
- Prior art keywords
- thread
- communication
- scheduler
- scheduling
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 12
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000000903 blocking effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/465—Distributed object oriented systems
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
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)
Abstract
본 발명은 쓰레드를 이용하여 병렬 프로그램을 분산 시스템에 효율적으로 스케줄링하기 위하여 사용자 수준의 커널 쓰레드를 이용한 다단계 스케줄링 구조와 그 방법에 관한 것으로, 분산 시스템에서 병렬 프로그램의 수행성능을 향상시키는데 있어서 데이터를 교환하는 두 개의 작업이 같은 시간대에 실행될 수 있도록 하기 위해 본 발명에서는 스케줄링 단계를 세분화하고, 각 지역 프로세서에서는 작업간 통신을 위한 스케줄러와 순차 작업을 위한 스케줄러를 사용자 수준에서 제공하여 두 작업간 동적 동기화를 가능하게 할 수 있는 것이다.
Description
본 발명은 분산 시스템에서 작업간의 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법에 관한 것으로, 특히 통신 쓰레드를 이용하여 병렬 프로그램을 분산 시스템에 효율적으로 스케줄링하기 위하여 사용자 수준의 커널 쓰레드를 이용한 다단계 스케줄링 구조 및 그 방법에 관한 것이다.
일반적으로 분산 시스템에서 병렬 프로그램의 수행 성능을 향상시키는데 있어서 중요한 요소로 간주되는 사항은 데이터 교환을 필요로 하는 두 개의 작업이 같은 시간대에 실행될 수 있도록 스케줄링하는 것이다. 이를 위하여 대부분의 분산 시스템에서는 두 단계의 스케줄링 메카니즘에 의해 작업들을 프로세서에 분배한다. 먼저, 각 프로세서의 부하를 고려하여 전체 프로세서간 작업을 고르게 분배하는 전역 스케줄링이 수행되면, 다시 작업간의 통신 동기화를 위하여 지역 프로세서에서 작업 실행 순서를 조정하는 지역 스케줄링의 두단계 메카니즘으로 수행된다. 이같은 경우 작업의 실행 시간, 종속 관계 등 스케줄링 매개변수가 사전에 결정되어야 하는데, 실제 경우에 있어서 이러한 값을 예측하기는 매우 어려우며 따라서 능동적인 스케줄링을 제공하기 어려운 문제점이 있었다.
본 발명은 상기 문제점을 감안하여 이루어진 것으로, 기존의 분산 시스템에서는 스케줄링 매개변수가 주어진다는 가정 하에 정적 스케줄링을 수행하기 때문에 실제 상황에서 스케줄링 매개변수 정보를 예측하기 어렵다. 따라서 서로 다른 프로그램간의 통신 동기화를 통한 병렬 프로그램의 성능 향상을 기대하기도 힘들다. 반면 동적 스케줄링은 지역 프로세서에서 수행되는 단계로 프로그램 실행 중 데이터를 교환할 필요가 있을 때, 대상 작업과 프로세서에 대한 식별자 정보를 가지는 실행가능한 통신 쓰레드를 생성하여 대상 프로세서와 통신을 수행한다. 통신 쓰레드를 수신한 대상 프로세서에서는 데이터 요청을 처리하기 위하여 따로 프로세스를 생성하지 않고 실행 가능한 통신 쓰레드의 우선순위를 높여 바로 실행할 수 있도록 한다.
본 발명에서는 사용자 수준의 쓰레드 제어 기법을 이용하여 프로세스간의 통신을 동적으로 동기화시키는 방법과 실행가능한 통신 쓰레드를 이용하여 통신 오버헤드를 감소시킴으로써 병렬 프로그램의 수행 성능을 향상시킬 수 있는 다단계 스케줄링 구조와 그 방법을 제공하는 것을 과제로 한다.
도 1은 본 발명에 관한 스케줄러의 다단계 구성도
도 2는 본 발명에 관한 지역 스케줄러를 구성하는 데이터 구조도
도 3은 쓰레드 실행중 통신 요청이 발생한 때 통신을 요청하기까지의 흐름도
도 4는 통신 쓰레드를 수신한 후 통신 쓰레드를 시작하기까지의 흐름도
* 도면의 주요부분에 대한 부호설명
101 : 전역 스케줄러
102 : 프로세서 풀
103 : 풀 스케줄러
104 : 지역 스케줄러
202 : 순차작업 큐
202 : 통신 쓰레드 큐
203 : 통신 쓰레드
따라서, 상기 과제를 달성하기 위한 본 발명의 구성 및 작용을 첨부도면에 의거하여 상세히 설명하면 다음과 같다.
도 1은 본 발명에 관한 스케줄러의 다단계 구성도이다. 동도를 참조하여, 전역 스케줄러(101)에 제출되는 응용 프로그램은 2개 이상 다수의 서브 타스크로 이루어지며, 각 타스크들은 쓰레드로 표현된다. 전역 스케줄러(101)는 제출된 응용 프로그램을 실행시키기 위하여 다수의 프로세서들을 선정하고, 이를 프로세서 풀(102)로 지정한다. 다음으로 쓰레드의 실행 순서 정보를 등록한 풀 스케줄러(103)를 생성한다. 풀 스케줄러(103)는 프로세서 풀(102) 내에서의 스케줄링을 수행하는 쓰레드이다. 풀 스케줄러는 각 프로세서에서 수행하게 될 작업을 각 프로세서의 큐에 분배하며, 쓰레드 식별자와 프로세서 식별자를 테이블에 등록하여 모든 지역 스케줄러(104)에 이 정보를 분배한다. 지역 프로세서에서 수행되는 작업들이 통신을 요청하게 되는 경우 지역 프로세서는 이 정보를 참조하여 실행가능한 통신 쓰레드를 생성한다. 지역 스케줄러는 각 프로세서에 존재하는데 순차 작업을 실행하기 위한 스케줄러와 통신 쓰레드를 즉각적으로 실행하기 위한 스케줄러 두가지가 있다.
도 2는 본 발명에 관한 지역 스케줄러를 구성하는 데이터 구조도이다, 동도를 참조하면, 각 지역 스케줄러에는 두개의 큐가 있다. 하나는 순차 작업을 스케줄링하기 위한 큐(201)이며, 다른 하나는 통신 쓰레드를 위한 큐(202)이다. 순차 작업을 가지는 큐는 데이터를 교환할 필요가 없는 경우에 스케줄하게 될 순차 작업들의 목록이며, 통신 쓰레드를 위한 큐는 다른 프로세서로부터 들어온 통신 쓰레드가 바로 스케줄링될 수 없는 경우에 이들을 대기시키기 위해서 사용된다. 지역 프로세서에서는 사용자 수준의 제어 쓰레드를 이용하여 순차 작업과 통신 쓰레드의 스케줄링이 독립적으로 이루어질 수 있도록 한다. 작업간의 통신을 효율적으로 지원하기 위하여, 프로그램 실행 중 통신이 발생하면 쓰레드 식별자, 프로세서 식별자, 필요한 데이터의 가상 주소와 크기 등을 쓰레드의 머리글로 붙여 실행가능한 쓰레드를(203) 만들어서 대상 프로세서로 송신한다.
도 3은 현재 실행중인 쓰레드에서 데이터 교환에 대한 통신 요청이 발생한 경우 통신 쓰레드를 생성하여 대상 프로세서에서 수신하는 과정까지를 설명하는 흐름도이다. 동도를 참조하여, 실행 중이던 쓰레드에서 다른 쓰레드와의 통신 요청을 발생하면, 지역 스케줄러는 쓰레드의 작업 상태를 저장한다(S301). 다음으로 쓰레드 등록 정보를 가지고 있는 테이블을 검색하여(S302), 통신 대상 쓰레드가 어느 프로세서에 위치하는지를 찾는다(S303). 만약에 찾고자 하는 쓰레드 식별자가 발견되지 않으면 프로그램 오류를 발생시키고(S304), 원하는 쓰레드를 발견하게 되는 경우에는 쓰레드 식별자, 프로세서 식별자, 데이터를 송수신하게 될 시작 가상 주소와 크기 등을 쓰레드 머리글로 붙인 통신 쓰레드를 생성한다(S305). 다음으로 통신하고자하는 쓰레드의 프로세서 식별자가 지역 프로세서의 식별자와 비교하여(S306), 동일한 경우에는 지역의 통신 쓰레드 스케줄러에 시그널을 보내고(S307), 그렇지 않으면 데이터 송신에 대한 시그널을 발생시킨다. 데이터 송신 시그널을 발생시킨 후에는 지역 스케줄러에 다음 작업의 스케줄링을 요구하는 시그널을 보낸다(S308, S309).
도 4는 통신 시그널을 수신한 대상 프로세서에서 통신 쓰레드를 수신한 후 통신 쓰레드를 실행하는 과정까지를 설명하는 흐름도이다. 동도를 참조하여, 대상 프로세서가 통신 시그널을 수신하면(S401), 수신 쓰레드는 통신 쓰레드 큐에 등록하고(S402), 통신 쓰레드 스케줄러에 시그널을 발생한다(S403). 통신 쓰레드 스케줄러가 busy 상태인지를 확인하여(S404), 만약 busy상태이면 수신된 통신 시그널을 블록킹시키고(S409), 그렇지 않으면 통신 스케줄러의 상태를 busy로 바꾸어(S405), 다른 쓰레드에 의해 현재 스케줄링 요청된 쓰레드가 실행 완료될 때까지 다른 쓰레드에 의해 작업을 방해받지 않도록 한다. 다시 현재 실행 중인 쓰레드가 통신 중인지를 확인하여(S406), 통신 상태에 있는 경우에도 마찬가지로 작업이 블록킹되고(S409), 이와 같이 상기 단계 409에서 블록킹된 쓰레드는 쓰레드가 실행을 완료하였을 때 발생하는 시그널에 의해 재실행될 수 있다(S410). 만일 현재 실행 중인 쓰레드가 통신 대상 쓰레드인지를 확인하여(S407), 통신 대상 쓰레드이면 다른 쓰레드를 스케줄링할 필요가 없으므로 통신 쓰레드 큐에 등록된 쓰레드의 등록을 해제시킨다(S408). 그러나 현재 실행 중인 쓰레드가 통신을 요청하는 쓰레드가 아니면 순차 쓰레드 스케줄링을 요청하는 시그널을 발생시킨다(S411).
이상과 같이 본 발명은 분산 시스템에 제출된 응용 프로그램의 스케줄링 단계를 세분화하여, 프로세서들에 작업을 고르게 분배하고 통신을 요구하는 작업간의 동기화를 동적으로 제공하여 병렬 프로그램의 수행 성능을 향상시키는 이점이 있는 것이다.
Claims (5)
- 분산 시스템에 제출하는 응용 프로그램을 실행하기 위한 다수의 프로세서들을 선정하는 역 스케줄러(101)와, 상기 역 스케줄러로부터 선정된 프로세서들을 지정하는 프로세서 풀(102)와, 상기 프로세서 풀(102)내에서의 스케줄링을 수행하는 풀 스케줄러(103)와, 상기 풀 스케줄러에 의해 분배된 정보를 참조하여 실행가능한 통신 쓰레드를 생성하는 지역 스케줄러(104)로 구성되는 것을 특징으로 하는 커널 쓰레드를 이용한 다단계 스케줄링 구조 .
- 제 1항에 있어서, 지역 스케줄러(104)는 데이터를 교환할 필요가 없는 경우에 스케줄하게 될 순차 작업들의 목록인 큐(201)과, 다른 프로세서로부터 들어온 통신 쓰레드(203)가 바로 스케줄링될 수 없는 경우에 이들을 대기시키기 위해서 사용되는 큐(202)로 구성되어 있는 것을 특징으로 하는 커널 쓰레드를 이용한 다단계 스케줄링 구조.
- 제 1항 또는 제 2항에 있어서, 통신 쓰레드(203)은 쓰레드 식별자, 프로세서 식별자, 필요한 데이터의 가상 주소와 크기 등을 쓰레드의 머리글로 붙여 실행코드로 만들어 대상 프로세서로 송신하는 것을 특징으로 하는 커널 쓰레드를 이용한 다단계 스케줄링 구조.
- 통신 쓰레드 실행 중 통신 요청이 발생한 후, 지역 스케줄러는 쓰레드의 작업 상태를 저장하고, 쓰레드 등록 정보를 가지고 있는 테이블을 검색하는 단계 (301∼ S302), 통신 대상 쓰레드의 존재여부를 확인하여 찾고자 하는 쓰레드 식별자가 발견되지 않으면 프로그램 오류를 발생시키고, 원하는 쓰레드를 발견하게 되는 경우에는 쓰레드 식별자, 프로세서 식별자, 데이터를 송수신하게 될 시작 가상 주소와 크기 등을 쓰레드 머리글로 붙인 통신 쓰레드를 생성하는 단계(S303∼S305),통신하고자하는 쓰레드의 프로세서 식별자가 지역 프로세서의 식별자와 비교하여 동일한 경우에는 지역의 통신 쓰레드 스케줄러에 시그널을 보내고 동일하지 않는 경우에는 데이터 송신에 대한 시그널을 발생시킨 후에는 지역 스케줄러에 다음 작업의 스케줄링을 요구하는 시그널을 보내는 단계(S306∼S309)를 거쳐 행해지는 다단계 스케줄링 방법.
- 대상 프로세서가 통신 시그널을 수신하고, 수신 쓰레드는 통신 쓰레드 큐에 등록하고, 통신 쓰레드 스케줄러에 시그널을 발생하는 단계(S401∼S403), 통신 쓰레드 스케줄러가 busy 상태인지를 확인하여 만약 busy상태이면 수신된 통신 시그널을 블록킹시키고(S409), 그렇지 않으면 통신 스케줄러의 상태를 busy로 전환하는 단계 (S404∼S405), 현재 실행 중인 쓰레드가 통신 중인지를 확인하여(S406) 통신 상태에 있는 경우에도 마찬가지로 작업을 블록킹시키고(S409) 상기 단계 409에서 블록킹된 쓰레드는 쓰레드가 실행을 완료하였을 때 발생하는 시그널에 의해 재실행되는 단계(S410), 현재 실행 중인 쓰레드가 통신 대상 쓰레드인지를 확인하여(S407), 통신 대상 쓰레드이면 다른 쓰레드를 스케줄링할 필요가 없으므로 통신 쓰레드 큐에 등록된 쓰레드의 등록을 해제시키고(S408), 현재 실행 중인 쓰레드가 통신을 요청하는 쓰레드가 아니면 순차 쓰레드 스케줄링을 요청하는 시그널을 발생시키는 단계(S411)를 거쳐 행해지는 다단계 스케줄링 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970066355A KR100241356B1 (ko) | 1997-12-05 | 1997-12-05 | 분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019970066355A KR100241356B1 (ko) | 1997-12-05 | 1997-12-05 | 분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR980007172A KR980007172A (ko) | 1998-03-30 |
KR100241356B1 true KR100241356B1 (ko) | 2000-02-01 |
Family
ID=19526579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970066355A KR100241356B1 (ko) | 1997-12-05 | 1997-12-05 | 분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100241356B1 (ko) |
-
1997
- 1997-12-05 KR KR1019970066355A patent/KR100241356B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR980007172A (ko) | 1998-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3989911B2 (ja) | グローバル割込み待ち行列の仮想化 | |
JP3882931B2 (ja) | 仮想計算機環境におけるディスパッチ機能の管理 | |
US5301324A (en) | Method and apparatus for dynamic work reassignment among asymmetric, coupled processors | |
US4980824A (en) | Event driven executive | |
US8695004B2 (en) | Method for distributing computing time in a computer system | |
JPH0727503B2 (ja) | データ転送制御方法及びインタフェース・システム | |
US11347546B2 (en) | Task scheduling method and device, and computer storage medium | |
EP1131704B1 (en) | Processing system scheduling | |
US7594229B2 (en) | Predictive resource allocation in computing systems | |
JPH0628323A (ja) | プロセス実行制御方法 | |
EP0274339B1 (en) | Event driven executive | |
Munk et al. | Position paper: Real-time task migration on many-core processors | |
KR100241356B1 (ko) | 분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 | |
Liang et al. | BAShuffler: Maximizing network bandwidth utilization in the shuffle of YARN | |
Hu et al. | Real-time schedule algorithm with temporal and spatial isolation feature for mixed criticality system | |
US20230305888A1 (en) | Processing engine mapping for time-space partitioned processing systems | |
JPH05108380A (ja) | データ処理システム | |
Rajaei et al. | Simulation of job scheduling for small scale clusters | |
JPH11249917A (ja) | 並列型計算機及びそのバッチ処理方法及び記録媒体 | |
JPH05204875A (ja) | スレッドのスケジュール方式 | |
US8365171B2 (en) | I/O agent assignment for jobs using an MPI library | |
Buttazzo et al. | Scheduling analysis of hybrid real-time task sets | |
KR19990053528A (ko) | 실시간 시스템의 다수 자원 공유 방법 | |
JPS61136134A (ja) | 待ち行列資源管理方式 | |
RU2191424C2 (ru) | Способ оптимизации параллельной обработки информации для минимизации ее стоимости |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
G15R | Request for early opening | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20091029 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |