KR100241356B1 - 분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 - Google Patents

분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 Download PDF

Info

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
Application number
KR1019970066355A
Other languages
English (en)
Other versions
KR980007172A (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 KR1019970066355A priority Critical patent/KR100241356B1/ko
Publication of KR980007172A publication Critical patent/KR980007172A/ko
Application granted granted Critical
Publication of KR100241356B1 publication Critical patent/KR100241356B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/465Distributed object oriented systems
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread 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)

  1. 분산 시스템에 제출하는 응용 프로그램을 실행하기 위한 다수의 프로세서들을 선정하는 역 스케줄러(101)와, 상기 역 스케줄러로부터 선정된 프로세서들을 지정하는 프로세서 풀(102)와, 상기 프로세서 풀(102)내에서의 스케줄링을 수행하는 풀 스케줄러(103)와, 상기 풀 스케줄러에 의해 분배된 정보를 참조하여 실행가능한 통신 쓰레드를 생성하는 지역 스케줄러(104)로 구성되는 것을 특징으로 하는 커널 쓰레드를 이용한 다단계 스케줄링 구조 .
  2. 제 1항에 있어서, 지역 스케줄러(104)는 데이터를 교환할 필요가 없는 경우에 스케줄하게 될 순차 작업들의 목록인 큐(201)과, 다른 프로세서로부터 들어온 통신 쓰레드(203)가 바로 스케줄링될 수 없는 경우에 이들을 대기시키기 위해서 사용되는 큐(202)로 구성되어 있는 것을 특징으로 하는 커널 쓰레드를 이용한 다단계 스케줄링 구조.
  3. 제 1항 또는 제 2항에 있어서, 통신 쓰레드(203)은 쓰레드 식별자, 프로세서 식별자, 필요한 데이터의 가상 주소와 크기 등을 쓰레드의 머리글로 붙여 실행코드로 만들어 대상 프로세서로 송신하는 것을 특징으로 하는 커널 쓰레드를 이용한 다단계 스케줄링 구조.
  4. 통신 쓰레드 실행 중 통신 요청이 발생한 후, 지역 스케줄러는 쓰레드의 작업 상태를 저장하고, 쓰레드 등록 정보를 가지고 있는 테이블을 검색하는 단계 (301∼ S302), 통신 대상 쓰레드의 존재여부를 확인하여 찾고자 하는 쓰레드 식별자가 발견되지 않으면 프로그램 오류를 발생시키고, 원하는 쓰레드를 발견하게 되는 경우에는 쓰레드 식별자, 프로세서 식별자, 데이터를 송수신하게 될 시작 가상 주소와 크기 등을 쓰레드 머리글로 붙인 통신 쓰레드를 생성하는 단계(S303∼S305),통신하고자하는 쓰레드의 프로세서 식별자가 지역 프로세서의 식별자와 비교하여 동일한 경우에는 지역의 통신 쓰레드 스케줄러에 시그널을 보내고 동일하지 않는 경우에는 데이터 송신에 대한 시그널을 발생시킨 후에는 지역 스케줄러에 다음 작업의 스케줄링을 요구하는 시그널을 보내는 단계(S306∼S309)를 거쳐 행해지는 다단계 스케줄링 방법.
  5. 대상 프로세서가 통신 시그널을 수신하고, 수신 쓰레드는 통신 쓰레드 큐에 등록하고, 통신 쓰레드 스케줄러에 시그널을 발생하는 단계(S401∼S403), 통신 쓰레드 스케줄러가 busy 상태인지를 확인하여 만약 busy상태이면 수신된 통신 시그널을 블록킹시키고(S409), 그렇지 않으면 통신 스케줄러의 상태를 busy로 전환하는 단계 (S404∼S405), 현재 실행 중인 쓰레드가 통신 중인지를 확인하여(S406) 통신 상태에 있는 경우에도 마찬가지로 작업을 블록킹시키고(S409) 상기 단계 409에서 블록킹된 쓰레드는 쓰레드가 실행을 완료하였을 때 발생하는 시그널에 의해 재실행되는 단계(S410), 현재 실행 중인 쓰레드가 통신 대상 쓰레드인지를 확인하여(S407), 통신 대상 쓰레드이면 다른 쓰레드를 스케줄링할 필요가 없으므로 통신 쓰레드 큐에 등록된 쓰레드의 등록을 해제시키고(S408), 현재 실행 중인 쓰레드가 통신을 요청하는 쓰레드가 아니면 순차 쓰레드 스케줄링을 요청하는 시그널을 발생시키는 단계(S411)를 거쳐 행해지는 다단계 스케줄링 방법.
KR1019970066355A 1997-12-05 1997-12-05 분산 시스템에서 동적 동기화를 위한 다단계 스케줄링 구조 및 그 방법 KR100241356B1 (ko)

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)

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