KR20070051703A - 태스크 할당방법 및 태스크 할당장치 - Google Patents

태스크 할당방법 및 태스크 할당장치 Download PDF

Info

Publication number
KR20070051703A
KR20070051703A KR1020060111586A KR20060111586A KR20070051703A KR 20070051703 A KR20070051703 A KR 20070051703A KR 1020060111586 A KR1020060111586 A KR 1020060111586A KR 20060111586 A KR20060111586 A KR 20060111586A KR 20070051703 A KR20070051703 A KR 20070051703A
Authority
KR
South Korea
Prior art keywords
task
node
time
tasks
start time
Prior art date
Application number
KR1020060111586A
Other languages
English (en)
Other versions
KR101343020B1 (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 KR20070051703A publication Critical patent/KR20070051703A/ko
Application granted granted Critical
Publication of KR101343020B1 publication Critical patent/KR101343020B1/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]
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

분산실행환경에 있어서, 각 노드에서의 연산결과가 상이해 정합성을 취할 수 없게 될 경우가 있다.
분산처리시스템은 각각이 프로세서를 구비해 상호 통신 가능하게 접속된 복수의 노드(10)를 포함한다. 태스크 정보취득부(110)는 태스크 사이의 선후관계를 취득한다. 노드정보취득부(112)는 각 태스크의 시간제약을 취득한다. 개시시각산출부(144)는 시간제약을 참조하여, 각 태스크에 대해서 해당 태스크를 가장 빨리 처리개시 가능한 시각인 최선개시시각과, 해당 태스크를 시간제약 내에 종료하기 위한 가장 느린 개시시각인 최지개시시각을 산출한다. 노드선택부(148)는 복수의 태스크 중, 노드에 미할당의 할당 대상 태스크에 대해서, 최선개시시각 및 최지개시시각을 참조해서 할당처 노드를 선택한다. 태스크배치부(150)는 선택된 노드에서 각 태스크를 처리시킨다.
태스크, 노드, 정합성, 태스크 할당, 프로세서, 어플리케이션

Description

태스크 할당방법 및 태스크 할당장치{TASK ALLOCATION METHOD AND TASK ALLOCATION APPARATUS}
도 1은 실시형태에 관한 분산 어플리케이션 실행 시스템의 구성도이다.
도 2는 각 노드를 구성하는 범용 컴퓨터의 개략구성을 나타내는 도이다.
도 3은 각 노드에서 실행되는 태스크와, 태스크 사이의 실행순서의 제약을 나타내는 도이다.
도 4는 태스크 할당 결과의 1예를 나타내는 도이다.
도 5는 실시형태에 관한 태스크 할당처리를 실행하는 노드의 기능블록도이다.
도 6은 태스크 할당처리의 메인 흐름도이다.
도 7(a)은 AEST의 산출방법을 모식적으로 나타내며, 도 7(b)은 태스크 사이의 의존관계의 1예를 나타내는 도이다.
도 8은 AEST의 계산처리의 흐름도이다.
도 9(a)는 ALST의 산출방법을 모식적으로 나타내며, 도 9(b)는 태스크 사이의 의존관계의 1예를 나타내는 도이다.
도 10은 ALST의 계산처리의 흐름도이다.
도 11은 도 6에 있어서의 태스크 할당처리의 흐름도이다.
도 12는 노드선택부의 상세한 기능블록도이다.
도 13은 도 11에 있어서의 노드 선택처리의 흐름도이다.
도 14는 도 13에 있어서의 전처리의 상세한 흐름도이다.
도 15는 도 13에 있어서의 메인루프(main roof)의 상세한 흐름도이다.
도 16은 도 13에 있어서의 메인루프의 상세한 흐름도이다.
도 17은 도 13에 있어서의 후처리의 상세한 흐름도이다.
도 18은 도 15, 도 16에 있어서의 빈시간검출처리의 흐름도이다.
도 19(a), 도 19(b)는 빈시간검출처리의 계산수법을 모식적으로 나타내는 도이다.
도 20은 도 18의 S200에 있어서의 "PUSH형 삽입"을 설명하는 도이다.
도 21은 태스크 할당의 실행대상이 되는 태스크 경로의 구체예를 나타내는 도이다.
도 22는 태스크 처리시간, 통신시간, 사전지정 노드를 기재한 태스크 경로를 나타내는 도이다.
도 23은 도 22의 각 태스크의 AEST, ALST, 태스크 가동범위를 나타내는 표이다.
도 24는 태스크 1-4와 태스크 1-5를 그룹화한 후의 태스크 경로를 나타내는 도이다.
도 25는 도 24의 각 태스크의 AEST, ALST, 태스크 가동범위를 나타내는 표이다.
도 26은 태스크 1-4, 1-5, 1-6을 노드 1에 할당한 후의 태스크 경로를 나타내는 도이다.
도 27은 태스크 할당처리 후의 태스크 경로를 나타내는 도이다.
이 발명은 프로세서를 가지는 복수의 노드로부터 이루어지는 분산처리시스템에 있어서, 각 노드에 태스크를 할당하는 기술에 관한다.
프로세서를 가지는 복수의 노드로부터 이루어지는 분산처리시스템에 있어서 어플리케이션을 실행하기 위해서는 어플리케이션의 태스크를 어느 쪽의 노드에서 실행해야 할지 결정할 필요가 있다. 이 경우, 어떤 이벤트의 결과가 모든 노드에 영향을 끼치는 것과 같은 중요한 계산에 대해서, 어떻게 하면 정합성을 유지할지가 문제가 된다. 종래로부터 이벤트를 노드 사이에서 서로 통신해서 각 노드에서 정합성을 취하는 방식이나, 대표 노드가 전용서버의 역할을 수행하고, 대표 노드에서만 중요한 태스크를 실행함으로써 정합성을 유지하는 방식이 알려져 있다.
그러나, 상기 제1의 방식에서는 각 노드에서의 연산결과가 상이해 정합성을 취하지 못할 경우가 있다. 또한, 제2의 방식에서는 전용서버의 역할을 다하는 대표 노드에 다른 노드를 접속하는 형태를 취하게 된다. 따라서, 어플리케이션의 실행 중에 대표 노드를 다른 노드에 변경하거나, 새로운 노드를 추가하거나 하는 것은 곤란하다.
본 발명은 이러한 과제에 감안해 이루어진 것이며, 그 목적은 프로세서를 가지는 복수의 노드로부터 이루어지는 분산처리시스템에 있어서, 어플리케이션의 태스크를 어느 쪽의 노드에 할당해야 할지를 판정하는 기술을 제공하는 것에 있다.
본 발명의 어떤 태양은 각각이 프로세서를 구비해 상호 통신 가능하게 접속된 복수의 노드를 포함하는 분산처리시스템에 있어서, 선후관계를 가지는 복수의 태스크를 각 노드에 할당하는 태스크 할당방법이다. 이 방법에서는 하나 또는 복수의 프로세서가, 각 태스크에 대해서 해당 태스크를 가장 빨리 처리개시 가능한 시각인 최선개시시각(absolute earliest start time)과, 시간제약 내에 태스크를 종료하기 위한 가장 느린 개시시각인 최지개시시각(absolute latest start time)을 산출해, 최선개시시각과 최지개시시각과의 차이분인 태스크 가동범위를 산출하고, 태스크 가동범위가 작은 태스크에서 순서대로 할당처 노드를 결정하는 처리를 실행한다.
여기에서, "태스크"라 함을 어떤 목적을 달성하기 위해서 프로그램된 어플리케이션 또는 그것에 포함되는 정보처리의 내용을 말하고, 어플리케이션과 대응해도 좋고, 입출력제어나 유저가 지정한 커맨드 등 어플리케이션보다도 작은 단위와 대응해도 좋고, 어떠한 처리 또는 기능의 단위에 대응하면 된다.
본 태양에 따르면, 태스크 가동범위에 근거해서 각 태스크의 할당처 노드가 결정되므로, 사전에 대표 노드를 결정짓지 않고, 어플리케이션 태스크를 처리시간의 관점에서 최적의 노드에 할당할 수 있다.
또한, 본 발명의 구성요소나 표현을 방법, 시스템, 컴퓨터 프로그램, 컴퓨터 프로그램을 격납한 기록매체 등의 사이에서 상호 치환한 것도 또한 본 발명의 태양으로서 유효하다.
본 발명은 적절한 실시예를 참조로 설명하며, 이것은 본 발명의 예시에 불과하며, 본 발명의 범위를 한정하는 것은 아니다.
본 발명은 복수의 노드로 구성되는 분산처리시스템에 있어서, 어플리케이션을 실행할 때에, 태스크가 가지는 시간제약을 충족할 수 있게 태스크를 각 노드에 할당하는 기술에 관한다.
이하, 본 발명의 1실시형태에 관한 시스템 구성과, 해당 시스템에서 실행되는 태스크의 개략을 설명한 후, 각 기능블록의 동작을 흐름도를 참조해서 상세하게 설명한다.
도 1은 본 발명의 실시형태에 관한 분산 어플리케이션 실행 시스템의 구성도이다. 각 노드(10)는 범용의 컴퓨터로 이루어지고, 각각 하나 이상의 CPU를 구비한다. 각 CPU는 동일한 명령 세트를 사용 가능한 것으로 한다. 각 노드(10)는 인터넷을 비롯한 네트워크(30)를 통해서 상호 데이터 송수신 가능하게 구성되어 있다. 도 1에서는 노드 1∼5의 5대의 컴퓨터가 네트워크(30)에 접속되어 있지만, 분산처리시스템을 구성하는 노드의 수에 제한은 없다.
도 1의 환경에 있어서 분산 어플리케이션이 실행된다. 여기에서, "분산 어플리케이션"이라 함은 네트워크로 접속된 복수의 CPU 탑재기기를 동시에 사용해, 분 담하여 처리를 진행하는 형태의 어플리케이션을 말한다.
도 2는 각 노드를 구성하는 범용 컴퓨터(100)의 개략 구성을 나타낸다. 컴퓨터(100)는 CPU(12), 메인메모리(14), 기억장치(16), 입출력인터페이스(20) 및 표시제어장치(28)를 구비한다. CPU(12)는 컴퓨터(100)의 전체를 제어함과 동시에, 노드로의 태스크 할당 프로그램을 실행한다. 메인메모리(14)는 각종의 데이터나 묘화처리 프로그램 등을 기억한다. 이들은 버스(18)를 통해서 접속되며, 상호 데이터의 송수신이 가능하게 된다. 표시제어장치(28)에는 어플리케이션 실행의 결과 생성되는 화상을 출력하는 디스플레이(26)가 접속된다. 입출력인터페이스(20)에는 CD-ROM, DVD-ROM 또는 하드웨어 디스크드라이브 등의 외부기억장치(22)와, 컴퓨터(100)에 대하여 데이터를 입력하기 위한 키보드나 마우스 등의 입력장치(24)가 접속된다. 입출력인터페이스(20)는 외부기억장치(22) 및 입력장치(24)에 대한 데이터의 입출력을 제어한다. 입출력인터페이스(20)는 외부기억장치(22)에 격납된 데이터나 프로그램을 읽어들여, 메인메모리(14)에 제공한다. 입출력인터페이스(20)에는 다른 노드를 구성하는 컴퓨터와 통신하여, 데이터 및 프로그램을 취득하는 통신장치(60)도 접속된다.
이하의 실시형태에서는 분산 어플리케이션으로서 네트워크 대전형의 격투 게임을 상정해 설명하는데, 본 실시의 형태를 적용 가능한 어플리케이션은 이것에 한정되는 것은 아니고, 복수의 노드에서 태스크 처리가 필요해지는 임의의 분산 어플리케이션에 적용할 수 있다.
도 3은 상기 게임 어플리케이션에 있어서, 각 플레이어에 대한 처리를 담당 하는 노드에서 실행되어야 할 태스크, 및 태스크 사이의 실행순서의 제약의 개략을 나타낸다. 도 중의 블록은 각각 태스크를 나타내고, 화살표는 태스크 사이의 실행순서의 제약을 나타낸다. 실선의 장방형 블록은 각 플레이어의 담당 노드에서만 실행되어야 할 태스크를 나타낸다. 예를 들면, BGM연주(31), 키입력(32), 배경표시(36), 캐릭터표시(39), 효과음발생(40)과 같은 태스크는 각 노드에서 각각의 플레이어에 대해서 실행되지 않으면, 게임 어플리케이션으로서의 의미를 이루지 않는다. 장방형에 세로선을 친 블록은 네트워크 접속되는 임의의 노드에서 실행 가능한 태스크를 나타낸다. 캐릭터 이동·좌표계산(33) 및 손실계산(37)은 그 계산 결과를 채용한 표시로 각 플레이어의 노드에서 출력되는 한, 실행되는 노드를 선택하지 않는다.
2중선의 블록은 모든 플레이어에 관한 계산을 1개소의 노드에서 실행해야 할 태스크를 나타낸다. 실행되는 노드는 임의이다. 충돌판정(34)은 게임 환경 내의 캐릭터간의 접촉의 결과를 계산하는 태스크이지만, 이와 같은 계산은 복수의 노드에서 실행하면 정합을 취할 수 없게 될 경우가 있어서, 전플레이어의 좌표계산의 종료 후에 1개소의 노드에서 집중해서 연산해야 한다. 나아가, 점선의 장방형 블록은 하나의 노드에서 계산되어도 좋고, 분산되어 복수의 노드에서 계산되어도 좋은 태스크를 나타낸다. 게임 환경 내의 캐릭터의 이동과는 무관계로 변화되는 배경을 계산하는 배경변화계산(35)은 그 계산 결과가 각 노드에 제공되면, 하나의 노드에서 실행해도 좋다.
도 4는 본 실시의 형태에 의한 태스크 할당 결과의 1예를 나타낸다. 도 4 중 의 노드 1∼5는, 도 1의 노드 1∼5와 대응하고 있다. 이 중, 노드 1은 플레이어(1)의 처리를 담당하는 노드이며, 노드 5는 플레이어(2)의 처리를 담당하는 노드이며, 노드 2∼4는 플레이어가 연결되어 있지 않은 노드라 한다. 도 4에서는 실선 장방형의 블록 및 장방형에 세로선을 친 블록 중, 사선 없는 블록은 플레이어(1)에 관한 태스크, 사선을 친 블록은 플레이어(2)에 관한 태스크를 나타낸다.
도 4에 나타내는 바와 같이, 키입력(32), BGM연주(31), 배경표시(36)와 같은 태스크는 각 플레이어에 대해서 할당된 노드 1, 노드 5상에 할당된다. 도 4에서는 플레이어(1)에 관한 캐릭터 이동·좌표계산(33)은 노드 1이 아닌 노드 2에 할당되어지며, 플레이어(2)에 관한 캐릭터 이동·좌표계산(33)은 노드 5가 아닌 노드 4에 할당되어 있다. 또한, 1개소의 노드에서 실행해야 할 충돌판정(34)은 노드 2 및 노드 4의 캐릭터 이동·좌표계산(33)에서 각각 데이터를 받아서 노드 3상에서 실행되며, 그 계산 결과가 노드 1, 2, 5에 할당되어진 태스크에 전달되고 있다. 이 결과, 모든 노드상에서 계산 결과의 정합성을 유지하면서, 노드 1 및 노드 5에 있어서, 음성재생이나 화면표시가 실현된다. 또한, 이 태스크 할당은 1예이며, 다른 할당 결과도 당연 존재한다.
이와 같이, 한마디로 태스크라 하더라도, 특정한 노드에서 처리해야 할 것인지, 또는 임의의 노드에서 처리해도 좋을 것인지 등, 조건은 다양하다. 또한 태스크마다의 처리시간도 다르고, 연산결과를 태스크 사이에서 전송하는데도 필요한 시간도 다르다. 나아가 게임 어플리케이션은 화면의 묘화를 수반하므로, 1프레임(예를 들면, 1/60초)이내에 플레이어 1인분의 처리, 즉 키입력에서 화면표시까지의 일 련의 처리를 종료하지 않으면 안 된다. 따라서, 분산 어플리케이션 실행환경에 있어서, 어플리케이션 내의 태스크를 어느 쪽의 노드에 할당할지는, 모든 노드에 있어서의 연산결과의 정합성이나, 리얼타임성을 확보하기 위한 처리시간 등에 큰 영향을 끼칠 수 있다.
이하에서는 도 1에 나타내는 바와 같은 분산 어플리케이션 실행 시스템에 있어서, 어플리케이션의 태스크를 자동적이면서 또한 적절하게 분배하는 태스크 할당방법에 대해서 설명한다.
도 5는 실시형태에 관한 태스크 할당처리를 실행하는 노드(10)의 기능블록도이다. 각 블록은 분산 어플리케이션 실행환경에 있어서 태스크 할당을 실현하기 위해서 필요한 처리를 실행한다. 또한, 노드(10)는 하드웨어적으로는 CPU, RAM, ROM 등의 구성으로 실현할 수 있고, 소프트웨어적으로는 데이터 입력기능, 데이터 보유기능, 연산기능, 통신기능 등의 제기능을 발휘하는 프로그램으로 실현되는데, 도 5에서는 그들의 연계에 의해서 실현되는 기능블록을 묘사하고 있다. 따라서, 이들의 기능블록은 하드웨어, 소프트웨어의 조합에 의해 여러 가지 형태로 실현할 수 있다.
유저입력부(102)는 키보드나 마우스 등의 입력장치를 통해서 유저로부터의 데이터 입력을 받는다. 정보수집부(108)는 태스크 할당을 결정하기 위해서 필요로 되는 각종 정보를 수집한다. 정보수집부(108)는 태스크에 관한 정보를 취득하는 태스크 정보취득부(110)와, 노드에 관한 정보를 취득하는 노드정보취득부(112)와, 후술하는 사전지정을 접수하는 사전지정접수부(118)를 포함한다.
태스크 정보취득부(110)가 취득하는 태스크 정보에는 태스크 사이의 선후관계, 리얼타임성을 확보하기 위해서 각 태스크에 부과되는 시간제약, 최악 케이스에서의 각 태스크의 처리에 필요한 시간인 태스크 처리시간, 태스크 사이의 전송 데이터량이 포함된다. 여기에서, 시간제약은 예를 들면 어떤 어플리케이션을 소정의 간격으로 주기적으로 반복 실행해야 할 때는, 그 간격이 시간제약이 될 수 있고, 또는 어떤 어플리케이션의 실행을 시작한 후부터 종료할 때까지의 제한시간이나 제약조건의 하나이다. 이 시간제약은 이하의 설명에서는 "데드라인시각"으로 표현되고 있다.
노드정보취득부(112)가 취득하는 노드정보에는 노드리스트, 노드간통신 레이턴시, 노드간통신스루풋, 노드리소스정보가 포함된다. 이 중, 노드리소스정보는 태스크를 할당해야 할 각 노드에 있어서의 계산 부하의 상태나, 각 노드의 CPU 처리능력, 메모리 용량과 같은 계산 리소스에 관한 정보이다. 이들의 정보는 용도 도시하지 않는 부하감시부가, 네트워크에 접속되어 있는 각 노드로부터 현시점에서의 부하량의 통지를 받도록 하거나, 또는 오퍼레이팅 시스템에 이들의 정보를 전달하는 구조를 설치함으로써 취득한다.
또한, 태스크 사이의 전송 데이터량과, 노드간의 레이턴시, 스루풋 정보로부터 태스크 사이의 통신시간을 계산할 수 있다.
또한, 사전지정접수부(118)가 접수하는 정보에는 태스크 할당 노드 사전지정, 태스크그룹 사전지정이 포함된다.
각 태스크의 시간제약, 태스크 처리시간, 태스크간전송 데이터량, 노드리스 트, 노드간통신 레이턴시, 노드간통신스루풋은 실행되는 어플리케이션의 프로그래머가 미리 입력해 둔 것을 사용할지, 또는 프로그램 해석부(104)가 프로그램 해석 툴을 이용해서 애플리케이션 프로그램을 해석해서 추정한 결과를 사용해도 좋다. 노드 사이 통신 레이턴시와 노드간통신스루풋은 네트워크 구성으로부터 추정되는 추정값을 사용해도 좋다.
격납부(130)는 정보수집부(108)에서 취득된 태스크 할당처리에 필요로 되는 각종 데이터를 격납한다. 태스크정보격납부(120)는 태스크 선후관계, 태스크 시간제약, 태스크 처리시간, 태스크간전송 데이터량, 태스크 할당 노드 사전지정정보, 태스크그룹 사전지정정보를 격납한다. 노드정보격납부(126)는 노드리스트, 노드 사이 통신 레이턴시, 노드간통신스루풋, 노드리소스정보를 격납한다.
태스크할당부(140)는 격납부(130)에 존재하는 각종 정보 중에서 적어도 하나의 정보를 참조하여, 네트워크 내의 노드에 어플리케이션 태스크를 할당하는 태스크 할당처리를 실행한다. 태스크할당부(140)는 개시시각산출부(144), 대상태스크선택부(146), 노드선택부(148)를 포함한다.
개시시각산출부(144)는 각 태스크 또는 태스크그룹에 대해서, 각각 최선개시시각(AEST:Absolute Earliest Start Time)、및 최지개시시각(ALST:Absolute Latest Start Time)을 계산한다. AEST의 산출에 대해서는 도 7 및 도 8을 참조해서 설명하고, ALST의 산출에 대해서는 도 9 및 도 10을 참조해서 설명한다.
대상태스크선택부(146)는 태스크 할당의 대상이 되는 태스크를 선택한다. 이 선택에는 상술의 AEST 및 ALST가 이용된다. 이 대상 태스크 선택처리에 대해서는 도 11의 흐름도를 참조해서 설명한다. 노드선택부(148)는 태스크 할당의 대상이 되는 태스크(이하,"할당 대상 태스크"라 함)를 네트워크 내의 어느 쪽의 노드에 할당할지의 노드 선택처리를 실행한다. 이 처리에 대해서는 도 13∼도 17의 흐름도를 참조해서 설명한다.
태스크배치부(150)는 태스크할당부(140)에 있어서의 처리결과에 따라서 태스크를 각 노드에 배치하고, 태스크를 실제로 동작시키는데에 필요한 정보, 즉 태스크의 프로그램 코드, 초기 데이터, 선후관계의 어떤 태스크의 할당된 노드 등의 정보를 전달한다. 프로그램 코드 그 자체 대신에, 각 노드의 기억장치에 미리 복수의 코드를 기록해 두고, 필요한 코드의 관리번호 등을 전달해도 좋다.
배치된 태스크는 각 노드에서 분산 처리된다. 이때, 각 노드가 각각 멋대로 태스크의 실행을 개시해도 통제를 취할 수 없게 될 가능성이 있다. 그 때문에, 분산 어플리케이션의 전태스크 모두가 실행 가능하게 되는 것을 대기하고, 전노드에서 일제히 태스크의 실행을 시작하는 등의 처리를 실현하기 위해서, 태스크배치부(150)는 실행의 시작, 중단, 정지 등의 명령을 각 노드에 발행해도 좋다.
태스크배치부(150)는 네트워크 내의 각 노드의 상황의 변화, 예를 들면 새로운 노드가 추가되거나, 또는 노드가 네트워크로부터 절단되거나 해서 각 태스크의 실행이 곤란하게 되었을 경우에, 태스크할당부(140)에 태스크의 재배치를 하도록 지시해도 좋다.
계속해서, 본 실시의 형태에 있어서의 태스크 할당처리의 개요를 설명한다.
각 태스크에 대해서, 태스크의 최선개시시각 AEST와, 데드라인시각을 지키기 위한 최지개시시각 ALST를 요구하며, 그 차이가 최소인 태스크, 즉 가장 시간적으로 여유가 적은 태스크를 선택하고, 이 태스크의 할당처의 노드를 결정한다. AEST나 ALST는 태스크 처리시간이나 태스크 사이의 통신시간 등을 고려해서 산출된다. 하나의 태스크의 할당처 노드가 결정하면, 그 결과에 따라서 전태스크에 대해서 AEST와 ALST를 재계산하고, 그 계산 결과에 따라서 다음의 할당 대상 태스크를 결정한다. 이와 같이 해서, 중요한 태스크로부터 할당처의 노드가 결정되어 간다.
도 6은 노드(10)에서 실시되는 태스크 할당처리의 메인 흐름도이다.
우선, 어플리케이션의 프로그래머는 노드 및 태스크에 관한 소정의 정보를 네트워크 내의 어느 하나의 노드에 격납한다. 이 겹낙처는 태스크 할당처리를 실행하는 노드에 접속된 기억장치인 것이 바람직하지만, 네트워크를 통해서 접속되는 다른 노드의 기억장치여도 좋다. 격납해야 할 정보는 상술의 시간제약이나 태스크 처리시간이다. 특정한 노드에서만 실행해야 할 태스크가 있는 경우는 노드 사전지정정보나 그룹 사전지정정보도 격납한다. 상술의 정보를 고정값으로서 미리 준비해 두는 대신에, 각 노드가 애플리케이션 프로그램을 해석함으로써 이들의 정보를 구해도 좋다.
다음으로, 네트워크 내의 어느 하나의 노드의 정보수집부(108)가, 상술의 태스크 정보, 노드정보, 및 사전지정정보를 취득한다(S12). 계속해서, 각 노드에 어느 쪽의 태스크를 할당할지를 결정해 간다. 이 태스크 할당처리는 5단계로 나누어 실행된다. 우선, 노드 사전지정이 있는 태스크에 대해서 할당해 처리를 실행한다(S14). 여기에서는 단지 태스크를 지정된 노드에 할당한다. 단 이때, 노드 사전 지정이 있는 태스크에 그룹 사전지정이 있는 경우는, 지정된 노드에 그룹의 전태스크를 할당한다. 다음으로 노드 사전지정이 없는 태스크를 각각 별도의 가상 노드에 할당한다(S16). 단 이때, 그룹 사전지정이 있는 태스크에 대해서는 그룹마다 동일한 가상 노드에 할당한다. 계속해서, 가상 노드에 할당되어지고 있는 태스크 중에서 데드라인 제약이 있는 태스크에 대해서, 도 11을 참조해서 후술하는 태스크 할당처리를 실행한다(S18). 나아가 가상 노드에 할당되어 있는 태스크 중에서 데드라인 제약의 없는 태스크에 대해서, 후술하는 태스크 할당처리를 실행한다(S20). 마지막으로 노드에 할당할 수 있었던 모든 태스크의 실행시각을, S14∼S20에 있어서 계산되는 AEST에 설정한 다음에, 태스크배치부(150)가, 각각의 AEST의 시각에 태스크가 실행되도록 각 노드에 배치한다(S22).
또한, 도 6의 태스크 할당처리를 담당하는 노드는 분산 어플리케이션의 실행요구를 하는 노드로 하는 것이 바람직하다. 따라서, 할당처리의 담당 노드는 어플리케이션의 실행요구자 전원이 될 가능성이 있다. 단, 할당처리가 동시 병행하여 행하여지므로, 각 노드의 부하상태 등이 이 타이밍으로 갱신되었을 때에는 필요에 따라서 할당처리의 재실행을 하게끔 구성해 둔다.
또한, 분산 어플리케이션 실행 시스템 내의 어느 하나의 노드를, 다른 방법으로 태스크 할당처리를 담당하는 노드로 결정해도 좋다. 이 경우, 할당처리를 담당하는 노드를 시스템 내의 몇 개의 노드에 미리 한정해 두어도 좋다.
여기에서, AEST 및 ALST에 대해서 설명한다.
최선개시시각 AEST는 어떤 태스크를 가장 빨리 처리개시 가능한 시각을 나타 낸다. 최선개시시각은 아래와 같이 구한다. 계산대상의 태스크의 모든 선행 태스크에 대해서, 그 선행 태스크의 최선개시시각에, 해당 선행 태스크의 처리시간과, 해당 선행 태스크로부터 계산대상 태스크까지의 통신시간을 부가한 시각을 구하고, 이 계산값이 최대가 되는(즉, 가장 시간이 느림) 것이 계산대상 태스크의 AEST가 된다.
최지개시시각 ALST는 어떤 태스크를 시간제약 내에 종료하기 위한 가장 느린 개시시각을 나타낸다. 최지개시시각은 아래와 같이 구한다. (1)계산대상의 태스크에 데드라인 제약이 있는 경우는 (1-1)계산대상 태스크의 모든 후속 태스크에 대해서, 그 후속 태스크의 최지개시시각부터, 계산대상 태스크의 처리시간과, 계산대상 태스크에서 그 후속 태스크까지의 통신시간을 감한 시간, (1-2)계산대상 태스크의 데드라인시각에서 해당 계산대상 태스크의 처리시간을 감한 시각의 각각을 계산하고, 이들의 계산값 중 최소가 되는(즉, 가장 시각이 빠름) 것이 계산대상 태스크의 ALST가 된다. (2)계산대상의 태스크에 데드라인 제약이 없는 경우는 계산대상 태스크의 모든 후속 태스크에 대해서, 그 후속 태스크의 최지개시시각부터, 계산대상 태스크의 처리시간과, 계산대상 태스크에서 그 후속 태스크까지의 통신시간을 감한 시각을 계산하고, 이 계산값이 최소가 되는(즉, 가장 시각이 빠름) 것이 계산대상 태스크의 ALST가 된다.
AEST、ALST의 연산방법에 대해서는、Yu-Kwong Kwok, Ishfaq Ahmad, Dynamic Critical-Path Scheduling: An Effective Technique for Allocating Task Graphs to Multiprocessors, IEEE Transactions on Parallel and Distributed Systems,1996 March, vol.7, pp.506-521에 기재되어 있다. 본 명세서에서는 그 개략만을 설명한다.
도 7(a)은 AEST의 산출방법을 모식적으로 나타내고 있으며, 도 7(b)은 태스크 사이의 의존관계의 1예를 나타낸다. 도 7(b)에 있어서, 흰원 내의 숫자가 태스크 번호를 나타내며, 화살표가 의존관계를 나타낸다. 즉, 도 7(b)에서는 "태스크 4"의 선행 태스크로서 "태스크 1", "태스크 2", "태스크 3"이 있음을 나타내고 있다.
여기에서, "태스크 사이의 의존관계"라 함은 어떤 태스크의 처리결과가 다른 태스크의 처리에 사용되어지는 것과 같은 관계를 말한다. 서로 의존관계에 있는 태스크에 있어서, 대상 태스크보다 시간적으로 선행하는 태스크를 "선행 태스크(부모 태스크라고도 함)"라 부르고, 시간적으로 후속하는 태스크를 "후속 태스크(자식 태스크라고도 함)"라 부른다.
임의의 노드 J에 있어서의 어떤 태스크 ni의 AEST는 다음 식에서 산출된다. 또한, ni는 AEST의 계산대상이 되는 태스크이며, nik는 태스크 ni의 k번째의 선행 태스크이며, 1≤k≤p, 즉 ni의 선행 태스크가 p개 있는 것으로 한다.
AEST(ni,J)=max1 ≤k≤p{AEST(nik,PE(nik))+w(nik)+r(PE(nik),J)cki} ···(1)
여기에서, PE(nik)는 태스크 ni의 k번째의 선행 태스크를 할당한 노드 번호다. w(nik)는 선행 태스크 nik의 처리시간을 나타낸다. r(PE(nik),J)는 선행 태스크의 할당 노드 PE(nik)와 대상 태스크의 할당 노드 J가 같은 노드이면 0, 다른 경우는 1이 되는 계수이다. cki는, 선행 태스크로부터 대상 태스크로의 통신시간이다. 식(1)에 있어서, 좌변은 "대상 태스크 ni의 노드 J에 있어서의 AEST"를 나타내고, 우변의 제1항은 "선행 태스크 nik의 AEST"를, 제2항은 "선행 태스크 nik의 처리시간"을, 제3항은 "선행 태스크 nik와 대상 태스크 ni간의 통신시간"을 나타낸다.
단, 선두의 태스크(엔트리 태스크)에 대해서는 선행 태스크가 하나도 없으므로 AEST=0으로 한다.
이하, 도 7(b)에 나타내는 태스크 사이의 의존관계를 예로 해서, 태스크 4에 관한 AEST를 계산하는 순서에 대해서 구체적으로 서술한다. 도 7(b)에서는 태스크 4의 선행 태스크는 태스크 1∼태스크 3의 세개 있으므로, k=1∼3이다. 또한, 식(1)에 있어서 i=4로서, n4가 태스크 4, n41이 태스크 1, n42가 태스크 2, n43이 태스크 3이 된다.
태스크 1, 태스크 2, 태스크 3이 각각 노드 1, 2, 3에 할당되어 있다고 하면, PE(n41)=PE(1)=1, PE(n42)=PE(2)=2, PE(n43)=PE(3)=3이 된다. 이 조건 하, 태스크 4를 노드 2에 할당했을 때의 AEST(4, 2)를 식(1)에 따라서 계산하면 다음 식과 같다(도 7(a)의 블록(168)).
AEST(4,2)=max1 ≤k≤3{AEST(n4k,PE(n4k))+w(n4k)+r(PE(n4k),2)ck4} ···(2)
식(2)에 있어서 k=1이라 했을 때, n41이 태스크 1(블록(162))에 대응하므로, 다음 식이 성립한다.
AEST(1,PE(1))+w(1)+r(PE(1),2)c14=AEST(1,1)+w(1)+r(1,2)c14···(3)
식(2)에 있어서 k=2라고 했을 때, n42가 태스크 2(블록(164))에 대응하므로, 다음 식이 성립한다.
AEST(2,PE(2))+w(2)+r(PE(2),2)c24=AEST(2, 2)+w(2)+r(2, 2)c24
=AEST(2, 2)+w(2)…(4)
식(2)에 있어서 k=3으로 했을 때, n43가 태스크 3(블록(166))에 대응하기 때문에, 다음 식이 성립한다.
*AEST(3,PE(3))+w(3)+r(PE(3),2)c34=AEST(3,3)+w(3)+r(3,2)c34···(5)
*식(3) 내지 식(5)의 계산 결과 중 최대의 것을 AEST(4,2)로 결정한다.
도 8은 상기 처리를 흐름도로서 나타낸다. 우선, 대상 태스크 ni를 어떤 노드 J에 가상으로 할당한다(S50), 개시시각산출부(144)는 대상 태스크 ni를 선행 태스크의 AEST를 계산하고(S52), 선행 태스크의 처리시간을 태스크정보격납부(120)에서 취득한다(S54). 또한 개시시각산출부(144)는 태스크정보격납부(120)로부터 태스크 전송 데이터량을, 노드 정보격납부(126)로부터 레이턴시, 스루풋을 취득하고, 대상 태스크 ni를 노드 J에 할당했을 때의, 선행 태스크에서 대상 태스크 ni로의 태스크간 통신시간을 산출한다(S56). 선행 태스크와 대상 태스크 ni가 동일 노드에 있는 경우는 통신시간은 "0"이 된다.
계속해서, 식(1)에 따라서 S52∼S56에서 취득한 값을 가산한다(S58). 즉, S52에서 계산한 선행 태스크 AEST, S54에서 취득한 선행 태스크 처리시간, 및 S56에서 취득한 태스크간 통신시간을 가산한다. 이상의 S50∼S58의 연산을, 대상 태스크 ni의 모든 선행 태스크 nik에 대해서 실행하고, S58에서 산출되는 계산 결과 중 최대치를, 대상 태스크 ni의 AEST로 결정한다(S60).
도 9(a)는 ALST의 산출방법을 모식적으로 나타내고 있고, 도 9(b)는 태스크 사이의 의존관계의 1예를 나타낸다. 도 7(b)과 마찬가지로, 흰원 내의 숫자가 태스크 번호를 나타내고 있고, 화살표가 의존관계를 나타낸다. 즉, 도 9(b)에서는 "태스크 1"의 후속 태스크로서 "태스크 4"가 있고, "태스크 2"의 후속 태스크로서 "태스크 4"과 "태스크 5"가 있고, "태스크 3"의 후속 태스크로서 "태스크 5"가 있는 것을 나타내고 있다.
ALST는 전태스크를 종료시키기 위해서 그 태스크의 처리를 시작해야 할 최후의 타이밍을 나타낸다. 임의의 노드 J에 있어서의 있는 태스크 ni의 ALST는 다음 식에서 산출된다. 또한, ni은 ALST의 계산대상이 되는 태스크이며, nim은 태스크 ni의 m번째의 후속 태스크이며, 1≤m≤q, 즉 ni의 후속 태스크가 q개 있는 것으로 한다.
ALST(ni,J)=min1 ≤m≤q{ALST(nim,PE(nim))-r(PE(nim),J)cim-w(ni),
Deadline(ni)-w(ni)} ···(6)
여기에서, PE(nim)는 태스크 ni의 m번째의 후속 태스크를 할당한 노드 번호이다. w(ni)는 대상 태스크의 처리시간을 나타낸다. r(PE(nim),J)는 후속 태스크 nim의 할당 노드 PE(nim)와 대상 태스크의 할당 노드 J가 같은 노드이면 0, 다른 경우는 1이 되는 계수이다. cim은 대상 태스크에서 후속 태스크로의 통신시간이다. 식(6)에 있어서, 좌변은 "대상 태스크 ni의 노드 J에 있어서의 ALST"를 나타내고, 우변의 제1항은 "후속 태스크 nim의 ALST"를, 제2항은 "대상 태스크 ni과 후속 태스크 nim간의 통신시간"을, 제3항은 "대상 태스크 ni의 처리시간"을 나타낸다.
단, 최후의 태스크(출구 태스크)에 대해서는 이하와 같이 한다.
데드라인시각 있는 경우: ALST=(데드라인시각 Deadline(ni))-(처리시간w (ni))
데드라인시각의 지정 없는 경우: ALST=∞
따라서, 데드라인시각의 지정의 없는 경로와 데드라인시각이 있는 경로에 대해서 각각 ALST를 계산했을 경우는 항상 데드라인시각 있는 경로의 ALST가 채용되게 된다.
또한, 데드라인 제약은 출구 태스크뿐만 아니라, 경로의 도중의 태스크에 설 정하는 것도 가능하다.
이하, 도 9(b)에 나타내는 태스크 사이의 의존관계를 예로 해서, 태스크 2에 대한 ALST를 계산하는 순서에 대해서 구체적으로 서술한다. 도 9(b)에서는 태스크 2의 후속 태스크는 태스크 4와 태스크 5가 두개 있으므로, m=1, 2이다. 또한, 식(6)에 있어서 i=2로서, n2가 태스크 2, n21이 태스크 4, n22가 태스크 5가 된다.
태스크 4, 태스크 5가 각각 노드 1, 3에 할당되어 있다고 한다면, PE(n21)=PE(4)=1, PE(n22)=PE(5)=3이 된다. 이 조건 하, 태스크 2를 노드 2에 할당했을 때의 ALST(2,2)를 식(6)에 따라서 계산하면, 다음 식과 같이 된다.
ALST(2,2)=min1 ≤m≤2{ALST(n2m,PE(n2m))-r(PE(n2m),J)c2m-w(n2),Deadline(n2)-w (n2)} ···(7)
식(7)에 있어서 m=1로 했을 때, n21이 태스크 4(블록(178))에 대응하기 때문에 다음 식이 성립한다.
{ALST(4,PE(4))-r(PE(4),2)c24-w(2),Deadline(2)-w(2)}
= {ALST(4,1))-r(1,2)c24-w(2),Deadline(2)-w(2)} ···(8)
식(7)에 있어서 m=2로 했을 때, n22가 태스크 5(블록(184))에 대응하기 때문에 다음 식이 성립한다.
{ALST(5,PE(5))-r(PE(5),2)c25-w(2), Deadline(2)-w(2)}
={ALST(5,3))-r(3,2)c25-w(2), Deadline(2)-w(2)} ···(9)
식(8), 식(9)의 계산 결과 중 최소의 것을 ALST(2,2)로 결정한다. 도 9(a)의 예에서는 식(8)의 결과에 대응하는 블록(174)의 ALST(2,2)쪽이, 식(9)의 결과에 대응하는 블록(180)의 ALST(2,2)보다도 작은, 즉 시각이 빠르므로, 블록(174)의 ALST(2,2)가 채용된다.
도 10은 상기 처리를 흐름도로서 나타낸다. 우선, 대상 태스크 ni를 어떤 노드 J에 가상으로 할당한다(S70). 개시시각산출부(144)는 대상 태스크 ni의 후속 태스크의 ALST를 계산하고(S72), 대상 태스크 ni의 처리시간을 태스크정보격납부(120)로부터 취득한다(S74). 또한, 개시시각산출부(144)는 태스크정보격납부(120)로부터 태스크간전송 데이터량을, 노드정보격납부(126)로부터 레이턴시와 스루풋를 취득하고, 대상 태스크 ni를 노드 J에 할당했을 때의, 대상 태스크 ni에서 후속 태스크로의 통신시간을 산출한다(S76). AEST의 경우와 마찬가지로, 대상 태스크 ni와 후속 태스크가 동일 노드에 있는 경우는, 통신시간은 "0"이 된다.
계속해서, S72∼S76에서 계산한 값에 대해서, "후속 태스크 ALST-(대상 태스크 처리시간+통신시간)"을 계산한다(S78). 나아가 개시시각산출부(144)는 데드라인시각부터 대상 태스크의 처리시간을 감한 것을 계산한다(S80). S70∼S80의 일련의 연산을, 대상 태스크 ni의 선행 태스크 nim의 전체에 대해서 실행하고, S78, S80에서 산출되는 계산 결과 중에서 최소값을 대상 태스크 ni의 ALST에 결정한다(S82).
계속해서, 도 6의 흐름도의 각 스텝을 상술해 간다.
도 11은 도 6 중의 태스크 할당 장소 S18, S20의 흐름도이다. S18, S20은, 할당 대상이 되는 태스크가 상이할 뿐이며, 동일한 처리내용을 반복한다. 여기에서는 노드 사전지정이 없는 태스크를 별개의 가상 노드에 할당한 상태를 초기 상태로서, 각 노드를 실재의 노드에 할당해 가는 처리를 실행한다. 태스크 할당처리는, 이하에 말하는 S30∼S44의 대상 태스크 선택처리와, S46의 노드 선택처리를 포함한다.
우선, 개시시각산출부(144)는 대상이 되는 전태스크의 AEST를 도 8의 흐름도에 따라서 계산하고(S30), 다음으로 전태스크의 ALST를 도 10의 흐름도에 따라서 계산한다(S32). 대상태스크선택부(146)는 대상이 되는 모든 태스크가 가상 노드가 아닌 어느 쪽의 노드에 할당 완료되었는지 여부를 판정한다(S34). 할당 완료되었다면(S34의 Y), 태스크 할당처리를 종료한다. 아직 가상 노드에 할당되어 있는 태스크가 있으면(S34의 N), 대상태스크선택부(146)는 ALST와 AEST의 차이분(ALST-AEST)을 미할당의 태스크에 대해서 계산하고(이하, 이것을 "태스크 가동범위"라고도 칭함), 태스크 가동범위가 최소가 되는 태스크를 선택한다(S36). S36에서 하나의 태스크를 선택할 수 있다면(S38의 Y), S40∼S44를 스킵한다. S36에서 태스크 가동범위가 동등하게 되는 태스크가 복수 있는 경우는(S38의 N), 대상태스크선택부(146)는 그들 중, 선행 태스크 또는 후속 태스크의 사이에서 가장 긴 태스크간 통신시간이 되는 경로를 가지는 태스크를 선택한다(S40). S40에서 하나의 태스크를 선택할 수 있으면(S42의 Y), S44를 스킵한다. S42에서, 통신시간이 동등하게 되는 태스크 가 복수 있는 경우(S42의 N), 대상태스크선택부(146)는 그들의 태스크 중 최소의 AEST를 가지는 태스크를 선택한다(S44). 이렇게 해서, 할당의 대상이 되는 태스크가 결정나면, 노드선택부(148)가 노드 선택처리를 실행해서 할당 대상 태스크를 어느 하나의 노드에 할당한다(S46). 이 결과, 다른 태스크의 AEST 및 ALST도 변화되므로, S30으로부터의 처리를 반복한다.
또한, S40에 있어서, 통신경로의 양측의 태스크, 즉 송신측의 태스크와 수신측의 태스크가 모두 미할당의 단계에서는 태스크간 통신시간을 구할 수 없다. 이 경우, 대상태스크선택부(146)는 수신측의 태스크(환언하면, 보다 후속측의 태스크)를 우선해서 할당 대상의 태스크로서 선택하도록 해도 좋다. 이것에 의해, 후술하는 태스크의 그룹화를 우선해서 실시할 수 있다.
도 11의 할당처리는 가상 노드(후술하는 그룹화를 위한 가상 노드를 포함함)에 할당되어진 모든 태스크가, 가상이 아닌 실재의 노드에 할당되어진 시점에서 종료한다(도 17 참조).
또한, 가상 노드의 태스크간 통신시간을 계산할 때에 사용하는 레이턴시, 스루풋에 대해서는 미리 정한 고정값을 사용하거나, 실재하는 노드의 레이턴시, 스루풋의 평균치를 사용하거나 하는 방법을 생각할 수 있다.
도 11의 흐름도에 있어서의 처리를 정리하면, 본 실시의 형태에 있어서, "가장 중요한" 태스크라 함은 이하의 3개의 기준에서 선택된다.
평가기준 1. ALST와 AEST의 차이분(태스크 가동범위)이 최소의 태스크
평가기준 2. 후보가 되는 태스크가 복수 있는 경우, 가장 긴 태스크간 통신 시간이 되는 경로를 가지는 태스크
평가기준 3. 기준 2에 있어서도 후보가 되는 태스크가 복수 있는 경우, AEST가 최소가 되는 태스크
도 12는 노드선택부(148)의 상세한 기능블록도이다. 이 도에 대해서도 이것들의 기능블록은 하드웨어, 소프트웨어의 조합에 의해 여러 가지 형태로 실현할 수 있다.
노드선택부(148)는 전처리부(200), 노드선택판정부(210), 및 후처리부(230)를 포함한다.
전처리부(200)는 태스크의 할당처 노드를 선택함에 있어 필요한 처리를 실행한다. 대상태스크확인부(202)는 할당 대상 태스크의 데드라인시각의 유무, 처리시간, 통신시간, 노드 사전지정 및 그룹 사전지정이 있는지 여부의 정보를, 격납부(130)으로부터 취득한다. 선후태스크확인부(204)는 할당 대상 태스크의 선행 태스크 및 후속 태스크에 대한 정보를 격납부(130)로부터 취득한다. 노드리스트작성부(206)는 대상태스크확인부(202) 및 선후태스크확인부(204)의 정보를 참고로 해서, 할당 대상 태스크를 배치 가능한 노드정보가 포함되는 노드리스트를 작성한다.
노드선택판정부(210)는 AEST, ALST 및 전처리부(200)에서 준비된 정보 등에 기초해, 할당 대상 태스크를 할당하는 노드를 선택한다.
노드리스트작성부(206)에서 작성된 노드리스트는 노드리스트격납부(220)에 격납된다. 또한, 도 5의 개시시각산출부(144)에서 계산된 AEST 및 ALST는 개시시각격납부(222)에 기억되어 있다.
빈시간검출부(214)는 할당 대상 태스크를 가상 할당하는 노드(이하, "후보 노드"라고 함)를 선택한 후, 개시시각격납부(222) 내의 AEST 및 ALST를 사용해, 후보 노드상에서의 할당 대상 태스크의 실행이 가능해지는 빈시간을 검출한다. 보다 구체적으로는 각 노드에 할당 대상 태스크를 할당했을 경우의 가상 AEST를 계산한다. 할당 대상 태스크를 후보 노드에 할당 가능하다면, 그 가상 AEST에 개시하도록 할당했다고 가정하고, 할당 대상 태스크의 가장 중요한 후속 태스크를, 가장 빨리 개시할 수 있는 시각(후속 태스크 AEST)을 구한다. 그리고, 후속 태스크 AEST가 최소가 되는 노드를 할당 대상 태스크의 할당처로서 선택한다. 후보 노드가 복수 있는 경우에는 가상 AEST가 최소의 것을 우선한다. AEST 조건판정부(224)는 빈시간검출부(214)에서 산출되는 AEST의 조건판정을 실행한다.
또한, "가장 중요한 후속 태스크"는 할당 대상 태스크의 후속 태스크 중에서, 상술의 평가기준 1∼3에 따라서 결정된다. 이때, ALST와 AEST의 차이분, 및 AEST에 대해서는 각 후속 태스크에 대한 값을 사용하는데, 태스크간 통신시간에 대해서는 할당 대상 태스크와 각 후속 태스크와의 사이의 통신시간을 사용하는 것에 주의한다.
후처리부(230)는 노드선택판정부(210)에서 선택된 노드를 받고, 필요한 후 처리를 실행한다. 후처리부(230)는 필요에 따라서 태스크의 그룹화를 실행하는 그룹화부(226)를 포함한다.
도 13은 노드 선택처리의 흐름도이다. 전처리에서는 할당 대상 태스크 ni의 할당처 후보가 되는 노드를 열거하는 노드리스트를 작성한다(S90). 노드리스트 내의 각 노드에 대해서 메인루프을 실행하고, 할당 대상 태스크 ni를 배치하는 노드를 선택한다(S92). 후처리에서는 할당 대상 태스크 ni를 선택된 노드에 할당한 다음에, 그 노드가 후술하는 가상 노드의 경우에는 태스크의 그룹화를 실행한다(S94).
도 14는 도 13에 있어서의 S90의 전처리의 흐름도이다. 노드리스트작성부(206)는 할당 대상 태스크 ni의 노드 사전지정이 있는지 여부를 판정한다(S100). 노드 사전지정이 있으면(S100의 Y), 그 노드를 노드리스트에 추가한다(S102). 노드 사전지정이 없으면(S100의 N), 할당 대상 태스크 ni를 배치 가능한 빈리소스를 가지는 노드를 검색하고, 그 노드를 노드리스트에 추가한다(S104).
다음으로 노드리스트작성부(206)는 할당 대상 태스크 ni에 데드라인시각이 존재하는지 여부를 확인한다(S106). 데드라인시각이 없는 경우(S106의 N), 이어서 S108, S110을 스킵한다. 데드라인시각이 있는 경우(S106의 Y), 나아가 할당 대상 태스크의 가장 중요한 선행 태스크가 어느 쪽의 노드에 할당 완료되었는지 여부를 판정한다(S108). 할당 완료되었으면(S108의 N), S110을 스킵하고, 할당 완료되어 있지 않으면(S108의 Y), 노드리스트에 가상 노드를 추가한다(S110). 이 가상 노드는 태스크를 일시적으로 그룹화하기 위해서 사용한다. 그리고, 메인루프에서 사용하는 각 변수에 초기값을 세트한다(S112). 이것으로 전처리는 종료한다.
또한, "가장 중요한 선행 태스크"는 할당 대상 태스크의 선행 태스크 중에서 상술의 평가기준 1∼3에 따라서 결정된다. 이때, ALST와 AEST의 차이분 및 AEST에 대해서는 각 선행 태스크에 대한 값을 사용하는데, 태스크간 통신시간에 대해서는 각 선행 태스크와 할당 대상 태스크와의 사이의 통신시간을 사용하는 것에 주의한다.
도 15 및 도 16은 도 13에 있어서의 S92의 메인루프의 흐름도이다.
빈시간검출부(214)는 노드리스트 내의 전노드에 대한 검출처리가 종료했는지 여부를 판정한다(S120). 종료하고 있는 않은 경우는 노드리스트로부터 하나의 노드를 후보 노드 J로서 선택하고(S122), 후보 노드 J에 할당 대상 태스크 ni를 할당할 뿐인 리소스가 남아 있는지 여부를 판정한다(S123). 리소스에 여유가 없으면(S123의 N), S120으로 되돌아간다. 리소스가 남아 있으면(S123의 Y), 그 노드에 대해서 빈시간검출처리를 실행하고, 할당 대상 태스크 ni의 가상 AEST를 구한다(S214). 가상 AEST가 산출 가능하다면(S126의 Y), 도 16으로 진행한다. 가상 AEST가 산출 불가능하다면(S126의 N), S120으로 되돌아간다.
도 16으로 이동해, 빈시간검출부(214)는 대상 태스크 ni의 중요후속 태스크 nc가 있는지 여부를 판정한다(S140). 중요후속 태스크 nc가 있는 경우(S140의 Y), 태스크 ni를 후보 노드 J에 가상으로 할당한다(S142). 빈시간검출부(214)는 태스크 nc의 노드 지정이 있는지 여부를 판정한다(S146). 이 노드 지정은 노드 사전지정과, 이 알고리즘에 의해 할당처가 결정된 경우의 양방을 포함한다. 노드 지정이 없는 경우는(S146의 N), 빈시간검출처리에 의해 후속 태스크 nc를 후보 노드 J에 할당했을 때의 후속 태스크의 AEST를 계산한다(S148). 노드 지정이 있는 경우에는(S146의 Y), 지정 노드에 후속 태스크 nc를 할당시켰을 때의 후속 태스크의 AEST를 계산한다(S150). 중요후속 태스크 nc가 이미 할당 완료되었으면, 대상 태스크 ni를 할당함으로써 값이 바뀌므로, 중요후속 태스크 nc의 AEST를 재계산한다. 중요후속 태스크 nc에 노드 사전지정이 있고, 또한 그 지정된 노드에 충분한 리소스가 없는 경우, 중요후속 태스크 nc의 AEST를 "∞"로 한다. 또한, 중요후속 태스크 nc가 존재하지 않을 경우에는 후속 태스크 AEST를 "0"으로 한다. 후속 태스크의 AEST를 계산하면, 가상으로 할당한 할당 대상 태스크 ni를 처음으로 되돌린다(S152).
다음으로, AEST 조건판정부(224)는 S148 또는 S150에서 구한 후속 태스크 AEST가, S156에서 세트되는 최소후속 태스크 AEST미만인지 여부를 판정한다(S154). 요컨데, 할당 대상 태스크 ni의 할당처 노드에는 후속 태스크 AEST가 최소의 것이 우선된다. 이것은 후속 태스크의 AEST가 작을수록, 노드경로를 짧게 해서 태스크간 통신시간을 단축할 수 있기 때문이다. 후속 태스크 AEST가 최소이면(S154의 Y), AEST 조건판정부(224)는 후보 노드 J를 잠정적으로 베스트 노드에 세트하고, 최소후속 태스크 AEST를 현재의 후속 태스크 AEST로 변환한다. 나아가 최소대상 태스크 AEST를, 대상 태스크 가상 AEST로 변환한다(S158). 플로우는 도 15의 S120으로 되돌아가서, 노드리스트 내의 다른 노드에 대해서 상기 처리를 반복한다.
후속 태스크 AEST가 최소후속 태스크 AEST 이상의 경우는(S154의 N), AEST 조건판정부(224)는 나아가 후속 태스크 AEST가 최소후속 태스크 AEST와 동등하면서 또한 가상 AEST가 S158에서 세트되는 최소 가상 AEST 미만인지를 판정한다(S156). 후속 태스크 AEST가 최소후속 태스크 AEST와 동등하고, 또한 가상 AEST가 최소이면 (S156의 Y) S158로 진행한다. 후속 태스크 AEST가 최소후속 태스크 AEST보다 크거나, 또는 가상 AEST가 최소가 아닌 경우, 대상 태스크를 이 후보 노드 J에 할당해서는 안 되므로, 플로우는 S120으로 되돌아가, 다른 노드에 대해서 상기 처리를 반복한다.
도 17는 도 13에 있어서의 S94의 후처리의 흐름도이다.
도 15의 S120에 있어서, 노드리스트 내의 전노드에 관한 처리가 종료하면, 플로우는 도 17로 이동한다. 후처리부(232)는 상기 처리에서 베스트 노드가 존재하는지 여부를 판정한다(S170). 베스트 노드가 존재하지 않을 경우, 즉 할당 대상 태스크 ni의 할당처 노드가 발견되지 않았을 경우에는(S170의 N), 이 노드 선택처리는 실패이며(S172), 적절한 폴로우 처리를 실행한다. 베스트 노드가 존재할 경우(S170의 Y), 할당 대상 태스크 ni를 그 베스트 노드에 할당한다(S174). 할당되어진 노드가 가상 노드인 경우(S176의 Y), 그룹화부(226)가 태스크의 그룹화처리를 실행한 다음(S178), 노드리스트를 리셋하고(S180), 금회의 노드 선택처리는 성공하게 된다(S182). 할당되어진 노드가 가상 노드가 아닌 경우(S176의 N), S178 및 S180은 스킵한다.
도 18은 도 15의 S124, 도 16의 S148 및 S150의 빈시간검출처리의 상세한 흐름도이다. 빈시간검출부(214)는 후보 노드 J에 할당 완료의 모든 태스크에 대해서, AEST와 ALST를 계산한다(S190). 또한, 이 계산은 개시시각산출부(144)에 의해 실행되어도 좋다. 다음으로, 대상 태스크를 배치 가능한 위치를 선택하고(S192), 선행 태스크의 종료시각부터 후속 태스크의 개시시각까지의 사이에, 대상 태스크 ni의 처리시간분의 공간이 있는지 여부를 판정한다(S194). 빈시간이 있으면(S194의 Y), 그 태스크의 AEST를 출력한다(S196). 빈시간이 없으면(S194의 N), 그 노드 내에서, 대상 태스크를 배치할 가능성이 있는 모든 위치에 대해서 검토했는지 여부를 판정하고(S198), 미검토의 배치가 있으면(S198의 N), S192로 되돌아가 다른 배치에 대해서 검토한다. 모든 위치에 대해서 확인했을 경우에는(S198의 Y), "PUSH형 삽입"에 의한 배치가 가능한지 여부를 판정한다(S200).
여기에서, PUSH형 삽입에 대해서 설명한다. 이미 후보 노드 J에 할당 완료의 각 태스크의 ALST를 지연시킴으로써 대상 태스크 ni(그룹화된 태스크의 경우는 같은 그룹의 태스크 전체)를 후보 노드 J에 할당할 수 있을지 여부를 검토한다. 즉, 어플리케이션 전체의 종료시각이 지연됨을 허용하고, 대상 태스크를 반드시 어느 하나의 실재의 노드에 할당하도록 한다. PUSH형 삽입에 의한 배치가 가능하다면(S200의 Y), 그 태스크의 AEST를 출력한다(S196). PUSH형 삽입에 의한 배치가 불가능하다면(S200의 N), 이 노드 J에는 대상 태스크의 할당이 불가능하게 된다.
도 19(a), 도 19(b)는 도 18의 빈시간검출처리를 모식적으로 설명하는 도이 다. 빈시간검출처리에서는 이미 후보 노드 J에 할당 완료의 각 태스크의 최지개시시각 ALST를 지연시키지 않고, 대상 태스크 ni를 후보 노드 J에 할당할 수 있는지 여부를 판정한다.
빈시간검출부(214)는 후보 노드 J에 태스크 njk와 태스크 njk +1이 이미 할당 완료인 때, 할당 대상 태스크 ni를 더 배치 가능한지 여부를 판정한다. 단, 대상 태스크 ni의 삽입위치(즉, 태스크 njk와 태스크 njk +1의 사이)보다 뒤에는, 대상 태스크 ni의 선행 태스크가 존재하지 않고, 삽입위치보다 앞에는, 대상 태스크 ni의 후속 태스크가 존재하지 않도록 한다.
태스크 nj의 처리종료시각은 AEST와 태스크 nj의 처리시간을 사용해, {ALST(nj,J)+w(nj)}으로 나타낸다. 또한, 태스크 nj의 최선개시시각은 AEST(nj,J)로 나타낸다. 따라서, 할당 대상 태스크를 태스크 njk와 태스크 njk +1의 사이에 배치할 수 있는지는, 태스크 njk의 종료시간과 태스크 njk +1의 개시시각의 차이분인 "태스크 실행가능범위"가, 대상 태스크 ni의 처리시간 이상이면 되므로, 다음 식이 성립하면 좋다.
min{ALST(ni,J)+w(ni),ALST(njk +1,J)}-max{AEST(ni,J),AEST(njk,J)+w(njk)}-
(AEST(ni,j)-ALST(ni,j))≥w(ni) ···(10)
제1항에서는, 태스크 njk +1의 최지개시시각과, 대상 태스크 ni의 처리종료시각 중 가장 느린 경우를 비교해서, 시각이 빠른 쪽이 선택된다. 제2항에서는, 대상 태스크 ni의 최선개시시각과, 태스크 njk의 처리종료시각 중 가장 빠른 경우를 비교해서 시간이 느린 쪽이 선택된다. 이들의 차이분이 대상 태스크 ni자체의 처리시간보다도 길면, 대상 태스크 ni를 태스크 njk와 태스크 njk +1과의 사이에 배치하는 것이 가능하며, 차이분이 대상 태스크 ni자체의 처리시간보다도 짧으면, 대상 태스크 ni를 그들의 사이에 배치하는 것이 불가능하다고 판정된다. 또한, 제3항은 AEST와 ALST의 기준이 되는 시각이 상이한 것에 기초한 보정항이다. 즉 AEST=0 또는 ALST=0이 되는 각 태스크의 기준시각이 그 태스크가 할당되어지는 노드에 따라서 변동하기 때문에, 제3항이 필요하게 된다.
할당 가능하다면, 빈시간검출부(214)는 대상 태스크 nc를 배치할 수 있는 최선의 AEST를 돌려보낸다. 할당 불가하다면, 상술의 "PUSH형 삽입"에 의한 배치를 검토한다.
도 19(a), 도 19(b)를 참조하여 더 설명한다. 간단함을 위해서, 도 19(a), 도 19(b)에서는 식(10)의 제3항은 고려하고 있지 않다. 도 19(a)의 케이스에서는 대상 태스크 ni의 최선개시시각 AEST(ni,J)쪽이 태스크 njk의 처리종료시각 AEST(njk,J)+w(njk)보다도 느린 시간이기 때문에, 대상 태스크 ni의 최선개시시각이 채용된다. 또한, 대상 태스크 ni의 처리종료시각 ALST(ni,J)+w(ni)는, 태스크 njk +1의 최지개시시각 ALST(njk +1,J)보다도 빠른 시간이기 때문, 대상 태스크 ni의 처리종료시각이 채용된다. 따라서, 이 케이스에서는 대상 태스크 ni의 실행가능범위는 다음의 식과 같다.
(실행가능범위)={ALST(ni,J)+w(ni)}-AEST(ni,J) ···(11)
도 19(b)의 케이스에서는 태스크 njk의 처리종료시각 AEST(njk,J)+w(njk)쪽이 대상 태스크 ni의 최선개시시각 AEST(ni,J)보다도 느린 시각이기 때문에, 태스크 njk의 처리종료시각이 채용된다. 또한, 태스크 njk +1의 최지개시시각 ALST(njk +1,J)쪽이 대상 태스크 ni의 처리종료시각 ALST(ni,J)+w(ni)보다도 빠른 시각이기 때문에, 태스크 njk +1의 ALST가 채용된다. 따라서, 이 케이스에서는 대상 태스크 ni의 실행가능범위는 다음 식과 같다.
(실행가능범위)=ALST(njk +1,J)-{AEST(njk,J)+w(njk)} ···(12)
도 20은 도 18의 S200에 있어서의 "PUSH형 삽입"을 설명하는 도이다. 도 20의 좌측의 블록(270)에 나타내는 바와 같이, 대상 태스크 ni의 실행가능 범위 내에서는 대상 태스크 ni의 처리시간을 태스크 njk +1의 처리시간과 중복되지 않는 한 대상 태스크 ni를 노드 J에 배치할 수 없는 경우가 있다. 이러한 때는 빈시간검출 부(214)는 도 20의 우측의 블록(272)에 나타내는 바와 같이, 태스크 njk +1의 ALST를 변경해서 태스크 njk +1의 개시시각을 뒤로 물림으로써, 대상 태스크 ni의 배치를 실현한다. 이것은 어플리케이션 전체의 종료시각을 지연시키는 것으로 이어진다.
이상 설명한 바와 같이, 빈시간검출처리에서는 태스크의 할당처 노드의 선택방법으로서, 대상 태스크와 그 가장 중요한 후속 태스크(즉, 아직 가상 노드에 할당되어 있는 후속 태스크 중, 그 AEST와 ALST와의 차이가 최소의 태스크)를 할당했을 때에, 후속 태스크 AEST가 최소가 되는 노드를 선택하도록 하였다. 이것에 의해서, 대상 태스크의 1스텝 후의 후속 태스크의 할당까지를 고려해서 대상 태스크의 할당처 노드가 선택되게 되므로, 대상 태스크의 AEST는 조기에 있지만, 후속 태스크의 AEST가 지연되어, 결과로서 전체의 처리시간이 장기화되어 버리는 사태를 회피할 수 있다.
(실시예)
본 발명의 실시의 형태에 대해서 상세하게 설명하였다. 이후에서는 실시의 형태에 있어서 서술한 각 처리를 적용하여 태스크를 노드에 할당하는 모습을 구체예를 참조하면서 설명한다.
도 1에 나타낸 5개의 노드를 포함하는 분산 어플리케이션 실행 시스템에 있어서, 도 21에 나타내는 선후관계가 있는 태스크를 처리할 경우에 대해서 설명한다. 도 중, 흰원 내의 숫자는 "플레이어의 번호-태스크 번호"를 나타내며, 예를 들면 "1-1"은 "플레이어(1)의 1번째의 태스크"를 나타내고 있다. 도 21에서는 플레이 어(1)에 관련된 태스크로서 "1-1"∼ "1-6", 플레이어(2)에 관련된 태스크로서 "2-1"∼ "2-6"가 포함되며, 나아가 상술한 대전 게임 어플리케이션의 충돌처리와 같이, 양플레이어에 대한 연산을 동일 노드에서 실행해야 할 태스크로서 "3-1"이 규정된다.
나아가, 노드 사전지정으로서 태스크 "1-1" "1-6"에 대해서는 노드 1이 지정되며, 태스크 "2-1" "2-6"에 대해서는 노드 5가 지정되어 있는 것으로 한다. 이들은 컨트롤러에 의한 입력처리나 디스플레이에의 화면표시 등의, 각 플레이어의 노드에서만 실시되어야 할 태스크이다. 또한 태스크 "3-1"에 대해서는 노드 4가 지정되어 있는 것으로 한다.
또한, 데드라인시각으로서 플레이어(1)의 경로에 대해서는 200ms, 플레이어(2)의 경로에 대해서는 250ms가 설정되어 있다.
더욱 설명을 간단히 하기 위해서, 각 태스크 사이의 통신시간계산을 위한 레이턴시는 5ms, 스루풋은 100Mbps로 통일한다. 또한 각 노드 모두 계산 리소스는 충분히 비어 있는 것으로 한다.
우선, 정보수집부(108)에 의해 각 태스크의 처리시간, 레이턴시, 스루풋, 전송 데이터량을 취득한다. 도 22는 그들을 취득한 후의 태스크 상관도이며, 도 중에 그들의 값이 기재해 있다. 흰원의 좌측밑 또는 우측밑의 숫자가 태스크의 처리시간이며, 화살표를 따라서 적혀진 숫자가 전송 데이터량이다. 태스크간 통신시간은 "레이턴시+(스루풋×전송 데이터량)"으로 산출된다.
계속해서, 노드 사전지정되어 있는 태스크가 각각의 노드에 배치된다. 이때, 태스크 사이의 선후관계는 당연 고려되며, 또한 필요에 따라서 각 노드의 빈리소스량도 확인된다.
계속해서, 노드 사전지정이 없는 태스크를 가상 노드에 배치하고, 개시시각산출부(144)에 의해, 각 태스크에 대해서 AEST 및 ALST가 계산된다. 이 계산에는 먼저 말한 데드라인시각에서, 태스크의 처리시간, 통신시간을 이용해서, 상술한 수식을 사용해서 계산된다. 예를 들면, 태스크 2-6에 대해서는 데드라인시각 250ms로부터 태스크 2-6의 처리시간 10ms를 감한 240ms가 ALST가 된다. 태스크 2-5에 대해서는 태스크 2-6의 AEST 240ms에서, 5Mb분의 통신시간 50ms와, 레이턴시 5ms와, 태스크 2-5의 처리시간 20ms를 감한 165ms가 ALST가 된다. 다른 태스크에 대해서도 동일하다. 또한, 태스크 3-1에 대해서는 태스크 1-6에서 거쳐가는 좌측의 경로와, 태스크 2-6에서 거쳐가는 우측의 경로의 양방에서 산출하기 때문에 ALST가 2개 구해지는데, 이와 같은 경우는 좌측의 경로에서 구해진, 보다 작은 값인 -5ms가 ALST가 된다.
AEST에 대해서는 태스크 1-1 및 2-1의 AEST를 0으로 하고, 그곳에서 태스크 처리시간과 통신시간을 추가해 간다. 예를 들면, 태스크 1-2이면, 태스크 1-1의 처리시간 10ms, 1Mb분의 통신시간 10ms, 및 레이턴시 5ms를 추가한 25ms가 AEST가 된다. 다른 태스크에 대해서도 마찬가지다.
다음으로 (ALST-AEST)에서 구해지는 태스크 가동범위를 산출한다. 이상의 계산의 결과, 각 태스크의 AEST, ALST, 태스크 가동범위는 도 23에 나타내는 표와 같이 된다.
계속해서, 노드의 선택으로 이동한다. 가장 여유가 없는 경로, 즉 태스크 가동범위가 최소(-130ms)의 태스크 중, 통신시간의 가장 긴 것을 검출한다. 도 23에서 알 수 있는 바와 같이, 이것에 적합한 것은 태스크 1-4와 태스크 1-5 사이의 경로(이하, 경로 A라 함), 및 태스크 1-5와 태스크 1-6 사이의 경로(이하, 경로 B라 함)이다. 2개의 경로 A, B의 통신시간은 55ms로 동등하므로, 대상 태스크를 결정하기 위해서, 그들의 후속 태스크의 AEST에 대해서 더욱 검토한다. 이 경우, 경로 A의 후속 태스크 1-5의 AEST(245ms)와 경로 B의 후속 태스크 1-6의 AEST(320ms)를 비교하면, 태스크 1-5의 AEST쪽이 작으므로, 우선 태스크 1-5의 배치를 먼저 고려한다.
대체적으로 두개의 경로 A, B의 통신시간이 55ms로 동등할 때, 다음과 같은 순서로 대상 태스크를 결정해도 좋다. 우선, 경로 A에 대해서 생각하면, 태스크 1-4와 태스크 1-5는 어느 것도 미할당이므로, 상술한 바와 같이, 그룹화를 우선해서 행해야 하는 후속측의 태스크 1-5를 할당 후보로 한다. 다음으로, 경로 B에 대해서 생각하면, 태스크 1-6는 할당 완료이므로, 태스크 1-5가 할당 후보가 된다. 따라서 태스크 1-5의 배치를 먼저 고려한다.
여기에서, 빈시간검출처리에 의해, 태스크 1-5의 베스트 노드, 후속 태스크 AEST, 가상 AEST를 구한다. 최초의 상태에서는 태스크 1-5의 선행 태스크인 1-4이 미할당이므로, 태스크 1-4만을 할당한 가상 노드 0을 상정한다. 이 시점에서는 태스크 1-5의 베스트 노드는 null 값이며, 후속 태스크 AEST, 가상 AEST는 "∞"이다. 또한, 태스크 1-5를 할당 가능한 노드의 리스트에는 가상 노드 0 및 노드 1∼5의 6 개의 노드가 등록된다. 여기에서, 우선 리스트의 선두에 있는 가상 노드 0에 태스크 1-5를 할당할 경우를 생각한다. 상기 식(2)의 계산을 하면, 가상 노드 0에 할당했을 경우의 태스크 1-5의 가상 AEST는 190ms가 된다.
다음으로, 중요후속 태스크 nc로서, 태스크 1-6을 선택한다. 태스크 1-5를 가상 노드 0에 할당했을 경우는 태스크 1-6의 AEST는 265ms가 된다.
따라서, 후속 태스크 AEST(265ms) <최소후속 태스크 AEST(∞)가 되므로, 베스트 노드에 가상 노드 "0", 최소후속 태스크 AEST에 "265", 최소가상 AEST에 "190"이 대입된다.
상기와 동일한 계산을, 나머지의 노드 1∼5에 대해서 반복한다. J=1일 때, 후속 태스크 AEST는 265ms, 가상 AEST는 245ms가 되기 때문에, 베스트 노드는 0인 채 변경되지 않는다. J=2∼5에 대해서도 동일하다.
이와 같이, DCP법과는 다르며, 후속 태스크 AEST의 작은 편을 우선하지만, 후속 태스크 AEST가 동일한 경우에는 가상 AEST가 작은 쪽을 우선한다.
그 결과, 베스트 노드는 "0"이 되므로, 태스크 1-5는 가상 노드 0에 할당된다. 즉, 태스크 1-4와는 같은 노드에 할당해야 하다고 판단되어, 태스크 1-4와 1-5는 그룹화된다(도 24 참조). 그룹화된 태스크는 이후의 계산에서는 하나의 태스크로 간주되어 처리된다. 즉, 그룹 내의 태스크 사이의 통신시간은 0이며, 태스크의 처리시간만 가산된 것으로 계산한다.
1-4와 1-5가 그룹화된 상태에서, 전태스크의 AEST와 ALST를 갱신한다. 그룹 화되어 동일 노드에 배치된 때문에, 1-4와 1-5의 사이의 통신시간이 "0"이 됨으로써 전태스크의 AEST, ALST가 갱신된다. 갱신 후의 각 태스크의 AEST, ALST, 태스크 가동범위를 도 25에 나타낸다.
이 결과, 이번은 태스크 가동범위가 -80ms의 태스크가 할당 대상이 되며, 이들 중 통신시간이 가장 긴 경로로서, 태스크 2-4와 2-5의 사이와, 태스크 2-5와 2-6의 사이(55ms)가 검출된다. 상술과 마찬가지로, 태스크 2-5에 대해서, 노드 선택처리가 실행된다. 그 결과, 2-4와 2-5는 그룹화된다.
다음으로 태스크 1-4와 1-5의 그룹에 대한 계산이 실시되며, 그 계산 결과에 따르면, 태스크 1-4, 1-5, 1-6은 동일한 그룹이 된다. 여기에서 태스크 1-6는 노드 1에 배치되도록 지정되어 있다. 따라서, 태스크 1-4, 1-5, 1-6은 노드 1에 할당되어지는 것이 결정된다(도 26 참조).
이와 같이 계산을 반복해 감으로써 최종적으로 각 태스크는 도 27에 나타내는 바와 같이 노드에 할당되어진다.
이상 설명한 바와 같이, 실시의 형태에 따르면 최선개시시각 AEST와 최지개시시각 ALST의 차이분인 태스크 가동범위가 최소의 태스크에서 노드로의 할당을 실행한다. 또한 태스크의 노드로의 할당을 실행할 때에, 중요한 경로, 즉 태스크 사이의 통신시간이 최대가 되는 태스크를 할당하는 노드에서 순서대로 할당을 실행하도록 하였다. 이것에 의해서, 통신지연시간을 효율적으로 삭감할 수 있다. 또한 보다 중요한 태스크에서 순서대로 할당이 결정되기 때문에, 중요도가 낮은 태스크에 의해서 리소스가 먼저 소비되는 것이 회피되며, 태스크의 실시에 필요한 리소스를 먼저 확보할 수 있다.
또한, 최지개시시각 ALST를 산출할 때에, 태스크의 데드라인시각을 고려해서 산출하도록 하였다. 이것에 의해서, 태스크의 종료기한에 대한 여유시간을 고려해서, 최지개시시각 ALST를 계산할 수 있다.
또한, 태스크 할당을 실행함으로써 네트워크 내의 복수의 노드 사이에서 계산 리소스(예를 들면, CPU시간, 메모리 용량 등)를 융통할 수 있다. 따라서, 단일기기의 성능 이상의 능력을 발휘시키는 것도 가능해진다.
종래는 분산 네트워크 환경에 있어서의 격투 게임 등에서는 충돌판정을 전문으로 담당하는 전용서버를 준비해서 정합성을 유지하고 있었다. 이 방식에서는 서버와 노드 사이의 통신에 의한 지연시간이 커지는 경향이 있다. 또한 참가 플레이어수가 증가함에 따라, 충돌판정의 연산량도 증대하므로 서버를 증강할 필요가 있다.
이것에 대하여, 본 실시의 형태에서는 전용서버를 준비하지 않고 모든 연산은 노드에서 실행되기 때문에, 전용서버의 증강을 생각할 필요는 없다.
또한, 본 발명의 기구를 채용함으로써, 병렬 시스템이나 분산 시스템에서도 리얼타임 처리를 실행할 수 있다.
종래에서는 네트워크에 존재하는 노드수, 각 노드의 성능, 네트워크의 구조 등을 사전에 모를 경우나, 어플리케이션 실행 중에 노드의 증감이 발생하는 분산 네트워크 환경에서는 노드 사이에서 태스크를 리얼타임에서 주고받기하는 처리는 불가능하였다. 이것에 대하여, 본 발명에서는 노드 사이의 접속을 전환함으로써 네 트워크의 구조가 변화하거나, 또는 노드의 추가나 감소 등이 생긴 경우라도, 노드에 대한 정보를 처리함으로써, 적절한 태스크 할당처리를 계속할 수 있다.
나아가, 본 발명에서는 특정한 태스크를 할당하는 노드를 사전으로 지정하는 것이 가능하므로 키입력이나 음성출력, 화상출력 등의, 특정 유저의 담당 노드에서 실행하지 않으면 의미가 없는 태스크를 반드시 담당 노드에 할당할 수 있다.
또한, 복수의 태스크에서 사용하는 동일한 콘텍스트 데이터를 가지는 태스크를 그룹화에 의해서 동일 노드에 정리해서 할당하게끔 지정하는 것도 가능하다. 이것에 의해서, 통신량 및 통신회수를 삭감할 수 있고, 또 통신지연의 영향을 최소로 할 수 있다.
이와 같이, 본 발명에서는 노드 사전지정을 활용함으로써, 다양한 종류 및 성질의 태스크를 취급할 수 있다.
본 발명에서는 종래의 방법과 비교해서 태스크 할당에 필요한 계산량은 증가하는 경향에 있지만, 상술한 여러 가지 특징과 같이 태스크를 할당하는 노드 선택의 유연성이 높기 때문에, 전체의 처리를 보다 조기에 종료 가능한 태스크 배치가 실현될 수 있다.
이상, 실시의 형태를 바탕으로 본 발명을 설명하였다. 이들의 실시의 형태는 예시이며, 각 구성요소 또는 프로세스의 조합에 여러 가지의 변형예가 가능한 것,또한 그러한 변형예도 본 발명의 범위에 있음은 당업자에게 이해될 부분이다.
실시의 형태로 서술한 구성요소의 임의의 조합, 본 발명의 표현을 방법, 장치, 시스템, 컴퓨터 프로그램, 기록매체 등의 사이에서 변환한 것도 또한 본 발명 의 태양으로서 유효하다. 또한 본 명세서에 흐름도로서 기재한 방법은 그 순서에 따라 시계열적으로 실행되는 처리 외에, 병렬적 또는 개별로 실행되는 처리도 포함한다.
본 발명의 일련의 처리를 소프트웨어에 의해 실행시킬 경우에는 그 소프트웨어를 구성하는 프로그램이 전용의 하드웨어에 구비되어 있는 컴퓨터로서 실현해도 좋고, 혹은 각종의 프로그램을 인스톨함으로써 각종의 기능을 실행하는 것이 가능한 범용의 컴퓨터에, 네트워크나 기록매체로부터 소프트웨어를 인스톨함으로써 실현해도 좋다.
실시의 형태에서는 복수 노드가 네트워크로 접속된 분산 어플리케이션 실행환경에 대해서 서술하였으나, 하나의 노드에 복수의 프로세서가 존재하는 멀티프로세서 시스템(multiprocessor system)에 있어서, 그들 프로세서 사이에서 처리를 분담하는 "병렬 어플리케이션 실행환경"에 대해서도 본 발명을 적용할 수 있다. 이 경우, 분산환경에서의 노드간의 레이턴시, 스루풋을, 노드 내의 프로세서 사이의 레이턴시, 스루풋으로 대체함으로써 상술과 같은 알고리즘을 적용할 수 있다.
나아가, 그들 멀티프로세서 시스템의 노드끼리가 네트워크로 접속된 환경에 대해서도 본 발명을 적용할 수 있다. 이 경우, 하나의 노드 내에 존재하는 복수의 프로세서 사이의 레이턴시, 스루풋과, 다른 노드의 프로세서까지의 레이턴시, 스루풋을 적절하게 설정함으로써, 상술과 동일한 알고리즘을 적용할 수 있다.
본 발명에 따르면, 태스크 가동범위에 근거해서 각 태스크의 할당처 노드가 결정되므로, 사전에 대표 노드를 결정짓지 않고, 어플리케이션 태스크를 처리시간의 관점에서 최적의 노드에 할당할 수 있다.

Claims (18)

  1. 각각이 프로세서를 구비해 상호 통신 가능하게 접속된 복수의 노드를 포함하는 분산처리시스템에 있어서, 선후관계를 가지는 복수의 태스크를 각 노드에 할당하는 태스크 할당방법으로써,
    하나 또는 복수의 프로세서에 대해서,
    각 태스크에 대해서, 당해 태스크를 가장 빨리 처리개시 가능한 시각인 최선개시시각과, 시간제약 내에 태스크를 종료하기 위한 가장 느린 개시시각인 최지개시시각을 산출하고,
    상기 최선개시시각과 상기 최지개시시각과의 차이분인 태스크 가동범위를 산출하고,
    상기 태스크 가동범위가 작은 태스크에서 순서대로 할당처 노드를 결정하는 처리를 실행시키는 것을 특징으로 하는 태스크 할당방법.
  2. 제1항에 있어서, 상기 최선개시시각 및 최지개시시각의 산출에 태스크간의 데이터통신시간을 집어넣는 것을 특징으로 하는 태스크 할당방법.
  3. 제1항에 있어서, 선후관계를 가지는 복수의 태스크를 일체적으로 취급하게끔 그룹화하고,
    그룹 단위로 상기 태스크 가동범위를 산출하고,
    상기 태스크 가동범위가 작은 그룹에서 그룹 단위로 할당처 노드를 결정하는 처리를 더욱 실행시키는 것을 특징으로 하는 태스크 할당방법.
  4. 제1항에 있어서, 상기 분산처리시스템에 있어서, 적어도 두 개의 노드경로를 따라서 태스크를 병렬처리할 경우에,
    상기 노드경로상에서 정합성을 보유해야 할 태스크가 할당되어진 노드의 사전지정을 접수하는 것을 특징으로 하는 태스크 할당방법.
  5. 각각이 프로세서를 구비해 상호 통신 가능하게 접속된 복수의 노드를 포함하는 분산처리시스템에 있어서, 선후관계를 가지는 복수의 태스크를 각 노드에 할당하는 태스크 할당방법이며,
    하나 또는 복수의 프로세서에,
    상기 태스크 사이의 통신시간을 고려해서, 할당 대상 태스크와 후속 태스크와의 사이의 통신 비용이 큰 노드경로에서 순서대로 할당처 노드를 결정하는 처리를 실행시키는 것을 특징으로 하는 태스크 할당방법.
  6. 각각이 프로세서를 구비해 상호 통신 가능하게 접속된 복수의 노드를 포함하는 분산처리시스템에 있어서, 선후관계를 가지는 복수의 태스크를 각 노드에 할당하는 태스크 할당장치이며,
    태스크 사이의 선후관계를 취득하는 태스크 선후관계취득부와,
    각 태스크의 시간제약을 취득하는 시간제약취득부와,
    상기 태스크 선후관계 및 상기 시간제약을 참조해서, 각 태스크에 대해서, 당해 태스크를 가장 빨리 처리개시 가능한 시간인 최선개시시각과, 해당 태스크를 상기 시간제약 내에 종료하기 위한 가장 느린 개시시각인 최지개시시각을 산출하는 개시시각산출부와,
    상기 복수의 태스크 중 노드에 미할당의 할당 대상 태스크에 대해서, 상기 최선개시시각 및 최지개시시각을 참조하여 할당처 노드를 선택하는 노드선택부와,
    선택된 노드에 각 태스크를 배치하는 태스크배치부를 구비하는 것을 특징으로 하는 태스크 할당장치.
  7. 제6항에 있어서, 태스크간의 데이터통신시간을 취득하는 태스크간 통신시간취득부를 더 구비하고,
    상기 개시시각산출부는 태스크간 통신시간을 고려해서 상기 최선개시시각 및 상기 최지개시시각을 산출하는 것을 특징으로 하는 태스크 할당장치.
  8. 제6항 또는 제7항에 있어서, 특정한 태스크에 대해서 할당처 노드의 지정을 접수하는 사전지정접수부를 더 구비하고,
    상기 노드선택부는 상기 특정의 태스크를 지정된 할당처 노드에 우선해서 할당한 후, 나머지의 태스크에 대해서 할당처 노드를 선택하는 것을 특징으로 하는 태스크 할당장치.
  9. 제6항 또는 제7항에 있어서, 상기 노드선택부는 상기 최선개시시각과 상기최지개시시각과의 차이분인 태스크 가동범위가 작은 할당 대상 태스크에서 순서대로 할당처 노드를 선택하는 것을 특징으로 하는 태스크 할당장치.
  10. 제9항에 있어서, 상기 노드선택부는 복수의 할당 대상 태스크에 대해서 상기 태스크 가동범위가 동일한 경우, 할당 대상 태스크와 그 후속 태스크와의 사이의 통신시간이 큰 할당 대상 태스크에 대해서, 할당처 노드를 우선적으로 선택하는 것을 특징으로 하는 태스크 할당장치.
  11. 제10에 있어서, 상기 노드선택부는 우선적으로 할당처 노드가 결정된 할당 대상 태스크와 그 후속 태스크를 동일 노드에 할당하는 것을 특징으로 하는 태스크 할당장치.
  12. 제10항에 있어서, 상기 노드선택부는 복수의 할당 대상 태스크에 대해서 후속 태스크와의 사이의 통신시간이 동일한 경우, 모든 할당 대상 태스크에 대해서 가장 중요한 후속 태스크의 최선개시시각을 참조하여, 우선적으로 할당처 노드를 선택해야 할 할당 대상 태스크를 결정하는 것을 특징으로 하는 태스크 할당장치.
  13. 제7항에 있어서, 상기 노드선택부는 1이상의 태스크가 이미 할당되어 있는 노드에 대해서 더욱 할당 대상 태스크를 할당 가능한지 여부를 판정하는 빈시간검출부를 더 포함하는 것을 특징으로 하는 태스크 할당장치.
  14. 제13항에 있어서, 상기 빈시간검출부는 상기 노드에 할당 완료의 태스크의 최지개시시각을 지연시킴으로써, 할당 대상 태스크를 당해 노드에 할당할 수 있을지 여부를 판정하는 것을 특징으로 하는 태스크 할당장치.
  15. 제7항에 있어서, 상기 노드선택부는 선후관계가 있는 대상 태스크와 후속 태스크를 그룹화하는 그룹화부를 더 구비하고,
    상기 개시시각산출부는 상기 그룹을 단위로서 상기 최선개시시각과 최지개시시각을 산출하고,
    상기 노드선택부는 상기 그룹을 단위로서 할당처 노드를 선택하고, 선택한 할당처 노드에 그룹 내의 모든 태스크를 할당하는 것을 특징으로 하는 태스크 할당장치.
  16. 제15항에 있어서, 상기 그룹화부는 할당 대상 태스크와 후속 태스크의 사이의 통신 가격이 소정값보다 크다고 판단했을 때 상기 그룹화를 실행하는 것을 특징으로 하는 태스크 할당장치.
  17. 제15항에 있어서, 상기 사전지정접수부는 복수의 태스크를 그룹화하는 지정 을 접수하고,
    상기 그룹화부는 지정대로 태스크의 그룹화를 실행하는 것을 특징으로 하는 태스크 할당장치.
  18. 각각이 프로세서를 구비해 상호 통신 가능하게 접속된 복수의 노드를 포함하는 분산처리시스템에 있어서, 하나 또는 복수의 프로세서에 있어서 실행 가능한 프로그램이며,
    각 태스크에 대해서, 당해 태스크를 가장 빨리 처리개시 가능한 시각인 최선개시시각과, 시간제약 내에 태스크를 종료하기 위한 가장 느린 개시시각인 최지개시시각을 산출하는 기능과,
    상기 최선개시시각과 상기 최지개시시각과의 차이분인 태스크 가동범위를 산출하는 기능과,
    상기 태스크 가동범위가 작은 태스크에서 순서대로 할당처 노드를 결정하는 기능을 프로세서에 실행시키게 하는 것을 특징으로 하는 태스크 할당 프로그램.
KR1020060111586A 2005-11-15 2006-11-13 태스크 할당방법 및 태스크 할당장치 KR101343020B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005330887A JP4781089B2 (ja) 2005-11-15 2005-11-15 タスク割り当て方法およびタスク割り当て装置
JPJP-P-2005-00330887 2005-11-15

Publications (2)

Publication Number Publication Date
KR20070051703A true KR20070051703A (ko) 2007-05-18
KR101343020B1 KR101343020B1 (ko) 2013-12-18

Family

ID=37946038

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060111586A KR101343020B1 (ko) 2005-11-15 2006-11-13 태스크 할당방법 및 태스크 할당장치

Country Status (5)

Country Link
US (1) US7930339B2 (ko)
EP (1) EP1785861B1 (ko)
JP (1) JP4781089B2 (ko)
KR (1) KR101343020B1 (ko)
CN (1) CN1967488B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180096339A (ko) 2017-02-21 2018-08-29 강태성 전단 보강재 및 그 제작방법

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040725A1 (en) * 2006-08-11 2008-02-14 Barrie Jon Moss Method and apparatus for a parallel model of tasks including abstracted execution and software development
US20080244602A1 (en) * 2007-03-30 2008-10-02 Bennington Bud J Method for task and resource management
JP2009020692A (ja) * 2007-07-11 2009-01-29 Toshiba Corp タスク管理装置、タスク管理方法及びタスク管理プログラム
US8959516B2 (en) 2007-07-30 2015-02-17 International Business Machines Corporation Methods and systems for coordinated financial transactions in distributed and parallel environments
US8397236B2 (en) * 2007-08-24 2013-03-12 Virtualmetrix, Inc. Credit based performance managment of computer systems
KR100953485B1 (ko) 2008-02-26 2010-04-16 연세대학교 산학협력단 항공 레이저 측량 데이터의 병렬 처리 시스템 및 그 방법
US8812578B2 (en) 2008-11-07 2014-08-19 International Business Machines Corporation Establishing future start times for jobs to be executed in a multi-cluster environment
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
US8782653B2 (en) * 2010-03-26 2014-07-15 Virtualmetrix, Inc. Fine grain performance resource management of computer systems
US8973010B2 (en) * 2010-05-28 2015-03-03 Varian Medical Systems International, AG Scheduling image recognition tasks based on task dependency and phase
FR2960732B1 (fr) * 2010-06-01 2012-06-29 Bull Sas Procede de routage pseudo-dynamique dans un cluster comprenant des liens de communication statiques et programme d'ordinateur mettant en oeuvre ce procede
US8930896B1 (en) * 2010-07-23 2015-01-06 Amazon Technologies, Inc. Data anonymity and separation for user computation
US9274862B2 (en) * 2010-12-09 2016-03-01 Mimecast North America Inc. Reducing latency in performing a task among distributed systems
JP5929908B2 (ja) * 2011-05-23 2016-06-08 日本電気株式会社 通信制御装置、通信制御システム、通信制御方法、および、プログラム
KR20130035128A (ko) * 2011-09-29 2013-04-08 한국과학기술정보연구원 지구환경 관측자료에 대한 자료제공시스템 및 지구환경 관측자료에 대한 자료제공방법
US9430286B2 (en) * 2011-12-12 2016-08-30 International Business Machines Corporation Authorizing distributed task processing in a distributed storage network
CN102521056B (zh) * 2011-12-28 2013-08-14 用友软件股份有限公司 任务分配装置和任务分配方法
JP5971334B2 (ja) * 2012-04-18 2016-08-17 日本電気株式会社 タスク配置装置、タスク配置方法、および、コンピュータ・プログラム
WO2014027444A1 (ja) * 2012-08-13 2014-02-20 日本電気株式会社 スケジューリング装置、及び、スケジューリング方法
US9367368B2 (en) 2012-08-30 2016-06-14 Nec Corporation Event processing control device, node device, event processing system, and event processing control method
CN103870317B (zh) * 2012-12-10 2017-07-21 中兴通讯股份有限公司 云计算中的任务调度方法及系统
KR101770191B1 (ko) * 2013-01-30 2017-08-23 한국전자통신연구원 자원 할당 방법 및 그 장치
CN104035747B (zh) * 2013-03-07 2017-12-19 伊姆西公司 用于并行计算的方法和装置
US9836330B2 (en) 2013-07-16 2017-12-05 Hitachi, Ltd. Virtual resource management tool for cloud computing service
JP6213167B2 (ja) * 2013-11-07 2017-10-18 富士通株式会社 分散配備装置、分散配備方法、および分散配備プログラム
CA3128713C (en) 2013-12-05 2022-06-21 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
CN103631751B (zh) * 2013-12-17 2016-04-27 武汉科技大学 一种基于连接特征的多任务集合划分方法
US9418348B2 (en) * 2014-05-05 2016-08-16 Oracle International Corporation Automatic task assignment system
US20160071068A1 (en) * 2014-09-08 2016-03-10 Bernard Ertl Critical Path Scheduling with Early Finish Sets
JP6369257B2 (ja) * 2014-09-19 2018-08-08 富士通株式会社 情報処理システム、情報処理システムの制御方法、管理装置、及び制御プログラム
US10904111B2 (en) 2014-10-02 2021-01-26 International Business Machines Corporation Lightweight framework with dynamic self-organizing coordination capability for clustered applications
US10162341B2 (en) * 2014-10-10 2018-12-25 Applied Materials, Inc. Method for sequencing a plurality of tasks performed by a processing system and a processing system for implementing the same
CN104376407A (zh) * 2014-11-06 2015-02-25 河南智业科技发展有限公司 任务分配应用系统及方法
EP3230885B1 (en) 2014-12-08 2024-04-17 Umbra Technologies Ltd. Method for content retrieval from remote network regions
KR101595967B1 (ko) * 2014-12-16 2016-02-22 충북대학교 산학협력단 데드라인 부여된 작업의 분산 처리 성능 향상을 위한 맵리듀스 스케쥴링 시스템 및 방법
EP3243314A4 (en) 2015-01-06 2018-09-05 Umbra Technologies Ltd. System and method for neutral application programming interface
US10630505B2 (en) 2015-01-28 2020-04-21 Umbra Technologies Ltd. System and method for a global virtual network
JP2018515974A (ja) 2015-04-07 2018-06-14 アンブラ テクノロジーズ リミテッドUmbra Technologies Ltd. グローバル仮想ネットワーク(gvn)において仮想インタフェースとアドバンストスマートルーティングとを提供するためのシステム及び方法
CN112583744B (zh) 2015-06-11 2023-04-18 安博科技有限公司 用于网络挂毯多协议集成的系统和方法
CN106557356B (zh) * 2015-09-25 2020-06-19 阿里巴巴集团控股有限公司 一种任务处理方法及装置
EP3387819B1 (en) 2015-12-11 2022-09-28 Umbra Technologies Ltd. System and method for information slingshot over a network tapestry and granularity of a tick
JP6143981B1 (ja) * 2016-03-22 2017-06-07 三菱電機株式会社 情報処理システム、情報処理装置及び情報処理方法
US11146632B2 (en) 2016-04-26 2021-10-12 Umbra Technologies Ltd. Data beacon pulser(s) powered by information slingshot
CN107784036A (zh) * 2016-08-31 2018-03-09 北京国双科技有限公司 网络爬虫系统和基于网络爬虫系统的数据处理方法
US10558683B2 (en) * 2016-12-07 2020-02-11 Oracle International Corporation Selection of a start time for a periodic operation
JP6885459B2 (ja) * 2017-03-31 2021-06-16 日本電気株式会社 計算システム、計算方法および計算プログラム
WO2018190758A1 (en) * 2017-04-13 2018-10-18 Telefonaktiebolaget Lm Ericsson (Publ) Method and resource manager for scheduling of instances in a data centre
JP6885193B2 (ja) * 2017-05-12 2021-06-09 富士通株式会社 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
US10747546B2 (en) * 2017-06-19 2020-08-18 Mitsubishi Electric Corporation Distributed allocation device, distributed allocation system, and distributed allocation method
CN109508843B (zh) * 2017-09-14 2023-06-02 阿里巴巴集团控股有限公司 一种智能服务实现方法及装置
US10620989B2 (en) 2018-06-08 2020-04-14 Capital One Services, Llc Managing execution of data processing jobs in a virtual computing environment
CN109359828B (zh) * 2018-09-26 2021-07-09 长沙市到家悠享家政服务有限公司 调度费确定方法、装置及电子设备
CN110968406B (zh) * 2018-09-30 2023-04-07 北京国双科技有限公司 处理任务的方法、装置、存储介质和处理器
CN109325703B (zh) * 2018-10-10 2020-12-15 上海海勃物流软件有限公司 一种两端式轨道吊的任务分配方法及系统
CN109522107B (zh) * 2018-10-25 2020-11-20 陕西师范大学 一种面向时空约束的任务分配方法及系统
CN110399207A (zh) * 2019-06-29 2019-11-01 苏州浪潮智能科技有限公司 分布式存储系统中定时任务处理方法、系统及存储介质
CN112667377A (zh) * 2020-12-23 2021-04-16 浙江大学 一种面向电力芯片混合多核系统的任务调度优化方法
CN112988377B (zh) * 2021-01-05 2023-08-04 腾讯科技(深圳)有限公司 用于云服务的资源分配方法、系统和介质
CN113127173B (zh) * 2021-04-21 2021-09-24 浙江大学 一种异构感知的集群调度方法及装置
US20230004440A1 (en) * 2021-06-17 2023-01-05 Sync Computing Corp. Allocating of computing resources for applications
CN116542413B (zh) * 2023-04-28 2024-04-16 北京大数据先进技术研究院 基于时间坐标的任务处理方法、装置、设备及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05242103A (ja) * 1992-02-28 1993-09-21 Mitsubishi Electric Corp スケジューリングシステム
JPH05250338A (ja) * 1992-03-05 1993-09-28 Nippon Telegr & Teleph Corp <Ntt> マルチプロセッサシステムのタスク割当処理方法
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
GB2272085A (en) * 1992-10-30 1994-05-04 Tao Systems Ltd Data processing system and operating system.
US6948172B1 (en) * 1993-09-21 2005-09-20 Microsoft Corporation Preemptive multi-tasking with cooperative groups of tasks
JP2823520B2 (ja) * 1993-12-17 1998-11-11 テキサス インスツルメンツ インコーポレイテツド リアルタイムアプリケーションタスクスケジューリング及び処理システム
US5980093A (en) * 1996-12-04 1999-11-09 Lsi Logic Corporation Integrated circuit layout routing using multiprocessing
JP3037182B2 (ja) 1997-02-17 2000-04-24 日本電気株式会社 タスク管理方式
JPH1153326A (ja) * 1997-07-30 1999-02-26 Internatl Business Mach Corp <Ibm> 分散処理システム、クライアントノード、サーバノードおよび分散処理方法
US6748451B2 (en) * 1998-05-26 2004-06-08 Dow Global Technologies Inc. Distributed computing environment using real-time scheduling logic and time deterministic architecture
US6633942B1 (en) * 1999-08-12 2003-10-14 Rockwell Automation Technologies, Inc. Distributed real-time operating system providing integrated interrupt management
JP2001166816A (ja) * 1999-12-10 2001-06-22 Toshiba Corp 生産管理のスケジュール作成方法、スケジュール作成装置及び記憶媒体
US7325232B2 (en) * 2001-01-25 2008-01-29 Improv Systems, Inc. Compiler for multiple processor and distributed memory architectures
JP2003050709A (ja) * 2001-08-06 2003-02-21 Matsushita Electric Ind Co Ltd タスクスケジューリング方法および装置
EP1318453A1 (en) * 2001-12-07 2003-06-11 Hewlett-Packard Company Scheduling system, method and apparatus for a cluster
JP3975795B2 (ja) * 2002-03-22 2007-09-12 トヨタ自動車株式会社 タスク管理装置、同方法およびプログラム
JP3922070B2 (ja) * 2002-03-29 2007-05-30 株式会社デンソー 分散制御方法及び装置
CN1379567A (zh) * 2002-05-20 2002-11-13 梁宝明 多媒体设备及电器装置的控制系统
US7356655B2 (en) * 2003-05-15 2008-04-08 International Business Machines Corporation Methods, systems, and media for managing dynamic storage
JP3833213B2 (ja) * 2003-12-01 2006-10-11 キヤノン株式会社 情報処理装置、印刷システム、負荷分散印刷方法、及びプログラム並びに記憶媒体

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180096339A (ko) 2017-02-21 2018-08-29 강태성 전단 보강재 및 그 제작방법

Also Published As

Publication number Publication date
KR101343020B1 (ko) 2013-12-18
CN1967488B (zh) 2011-02-09
US20070110094A1 (en) 2007-05-17
EP1785861A2 (en) 2007-05-16
EP1785861A3 (en) 2008-01-23
JP2007140710A (ja) 2007-06-07
EP1785861B1 (en) 2018-10-17
CN1967488A (zh) 2007-05-23
JP4781089B2 (ja) 2011-09-28
US7930339B2 (en) 2011-04-19

Similar Documents

Publication Publication Date Title
KR101343020B1 (ko) 태스크 할당방법 및 태스크 할당장치
US20200257968A1 (en) Self-learning scheduler for application orchestration on shared compute cluster
US8104026B2 (en) Compiler register allocation and compilation
CN107038070A (zh) 一种云环境下执行可靠性感知的并行任务调度方法
US12001868B2 (en) VM migration system and VM migration method
CN105378668B (zh) 多处理器系统中的操作系统管理的中断引导
CN108776833B (zh) 一种数据处理方法、系统及计算机可读存储介质
CN112199196B (zh) 一种资源配置方法、介质及服务端
CN112905317B (zh) 快速可重构信号处理异构平台下任务调度方法和系统
US11348036B1 (en) Optimizing machine learning models with a device farm
CN113127203B (zh) 面向云边计算的深度学习分布式编译器及构造方法
CN103729228A (zh) 编译程序的方法以及任务映射方法和任务调度方法
Zhong et al. Speeding up Paulson’s procedure for large-scale problems using parallel computing
CN116467061A (zh) 一种任务执行的方法、装置、存储介质及电子设备
Feljan et al. Task allocation optimization for multicore embedded systems
Bohler et al. Improved Multiprocessor Task Scheduling Using Genetic Algorithms.
Obaida et al. Simulation of HPC job scheduling and large-scale parallel workloads
US11886901B2 (en) VM performance guaranteeing system and VM performance guaranteeing method
CN115509926A (zh) 一种基于改进粒子群算法的多任务调度云端测试方法
US20160259672A1 (en) Parallel computing system, job management device, and job management method
Hunold et al. Scheduling dynamic workflows onto clusters of clusters using postponing
CN111813525A (zh) 一种异构系统工作流调度方法
Senoussaoui et al. Memory-processor co-scheduling of AECR-DAG real-time tasks on partitioned multicore platforms with scratchpads
CN117992198B (zh) 用于自适应调度的任务处理方法及系统
JP7423757B2 (ja) 同期プロセッサのためのシャーディング

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
FPAY Annual fee payment

Payment date: 20161122

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171120

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181121

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191120

Year of fee payment: 7