JPH06243112A - マルチプロセッサ装置 - Google Patents

マルチプロセッサ装置

Info

Publication number
JPH06243112A
JPH06243112A JP5030613A JP3061393A JPH06243112A JP H06243112 A JPH06243112 A JP H06243112A JP 5030613 A JP5030613 A JP 5030613A JP 3061393 A JP3061393 A JP 3061393A JP H06243112 A JPH06243112 A JP H06243112A
Authority
JP
Japan
Prior art keywords
processing
load
processor
queue
time
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.)
Pending
Application number
JP5030613A
Other languages
English (en)
Inventor
Fumio Nagasaka
文夫 長坂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
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 Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP5030613A priority Critical patent/JPH06243112A/ja
Publication of JPH06243112A publication Critical patent/JPH06243112A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

(57)【要約】 【目的】異機種混在のネットワーク環境でのマルチプロ
セッサ並列処理システムにおいて、他プロセッサの負荷
検出を行ない、最適負荷分散を図る。 【構成】他プロセッサに処理単位を分散し、並列実行に
よって処理時間の短縮を図る際にプロセッサ毎に待ち行
列4および負荷判定手段2を設ける。負荷判定手段2は
待ち行列4の長さ、及び前回までの処理時間の実績ΔT
0、ΔT1を用いて演算を行ない、次の処理の終了時間の
期待値Mを返す。処理分散手段3はこのMの値の最も小
さいプロセッサ装置に処理を分散し、待ち行列4にエン
キューする。また処理分散手段3はどれか処理が完了と
なった場合、処理時間を記録すると共に待ち行列4から
処理単位をデキューする。負荷分散手段1は負荷判定手
段2、処理分散手段3、待ち行列4によって構成され、
通信を用いることなく他プロセッサの負荷を知り、処理
分散を行なう事が出来る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ローカルエリアネット
ワークに代表される通信手段を用いて接続した複数のプ
ロセッサにより構成されるマルチプロセッサシステムに
おいて、目的プログラムの並列実行を行う際に負荷を均
等に分散させる手法に関する。
【0002】
【従来の技術】マルチプロセッサシステムによって処理
対象のプログラムを並列処理し、処理の高速化を図る技
術では、各プロセッサの負荷が均等になる様に処理単位
を配置する手段が重要である。
【0003】個々のプロセッサに過度の負荷の集中ある
いは処理の過疎が発生することのないように処理単位を
配置するためには、各プロセッサの負荷を検出する機構
が必要である。この機構の実現には、プロセッサの結合
状態について、共有メモリの有無、通信速度の高低など
を考慮した手段が要求される。
【0004】ローカルエリアネットワーク等の通信手段
を用いたプロセッサ間の疎結合の並列処理では、プロセ
ッサ負荷検出のための通信時間が処理時間の多くの比率
を占めてはならない。言うまでも無く、このような本来
の処理目的に不要な処理は可能な限り排除し、システム
全体のプロセッサ資源を目的処理に集中することが重要
である。
【0005】この分野に対してなされた従来の発明に
は、特開昭63-211060号がある。この従来発明は、「自
プロセッサの負荷状態を、実行プロセス数や待ち行列の
長さ等から常時判断し、高負荷に変化した時、または低
負荷に変動した時、通信手段により他の全プロセッサに
負荷状態を通知する」という処理を特徴としている。ま
た、この通信により得られた他プロセッサの負荷状態と
自プロセッサの負荷状態は個々に記録され、プロセスの
処理分散の時点で参照される構成である。
【0006】この従来発明は技術要素に分解すると次の
4点で構成された発明と言える。
【0007】(1)個々のプロセッサは自分の負荷状況
を常時監視する。 (2)個々のプロセッサはあらかじめ負荷の値の閾値を
定め、これを上回った時点と下がった時点で他の全プロ
セッサへ通知する。 (3)個々のプロセッサは他プロセッサ、自プロセッサ
の負荷の最新の値を記録として保持している。 (4)プロセッサの負荷は処理中のプロセス数と待ち行
列の長さによって判定される。
【0008】
【発明が解決しようとする課題】しかし、従来発明は上
記(1)と(2)の不必要な処理によってプロセッサ資
源およびネットワーク資源を消費するという問題点があ
った。(1)と(2)が不要であるのは以下の2つの理
由による。 ・あるプロセッサの負荷はこのプロセッサに処理分散を
しようとするプロセスが調べれば良く、要求が無いにも
係らず常に自プロセッサの負荷を調べる必要は無い。 ・各プロセッサが負荷変動のある都度にネットワーク上
の全プロセッサに通信(ブロードキャスト)を発生する
事は、不必要な通信でネットワークの負荷の増大を招
く。
【0009】結局、複数のプロセッサ間の疎結合の並列
処理において、最適負荷分散のために必要な構成技術
は、処理分散対象のプロセッサ(自プロセッサも含め)
の負荷を知る手段だけである。
【0010】さらに、従来発明にはもう一つの問題点が
あった。それは、各プロセッサ装置の性能の差で生じる
処理時間の不均質を評価出来ない点である。これは上記
(4)の構成から生じる問題点である。
【0011】この問題は、ワークステーション等の性能
は著しく向上し、1年で2倍程度の処理速度向上が達成
されているため、一つのネットワーク上に数倍〜10数
倍の処理速度差のあるプロセッサ装置群が接続される異
機種混在環境が現れたために生じたものである。つま
り、異機種混在環境における並列処理では各プロセッサ
の処理待ち行列の長さが同じであってもプロセッサの負
荷は同じとは言えないために、次の処理要求の完了時刻
の期待値が等しくはならないということである。
【0012】
【課題を解決するための手段】この様な課題を解決する
ために本発明のマルチプロセッサ装置では、ローカルエ
リアネットワークによって接続された複数台のプロセッ
サ装置を用いて一つの目的プログラムの処理を複数のプ
ロセスに分割し、これを複数のプロセッサ装置に分散し
て並列して実行する場合において、並列処理開始を記述
した文を含む並列処理要求の発生源プロセスが、該プロ
セス中の分散記述に従って発生した子プロセスを複数の
プロセッサ装置に配置する配置手段と、前記の複数のプ
ロセッサ装置に子プロセスを分散処理要求するための負
荷分散制御手段と、を有し、しかも前述の負荷分散制御
手段が、処理分散対象のプロセッサ装置ごとに要求プロ
セスの待ち行列を作成する待ち行列作成手段と、前記要
求プロセスの発生から完了までの処理時間を計測する計
数手段と、前記待ち行列作成手段によって作成された要
求プロセスの待ち行列の長さと前記計数手段によって計
測された前回以前の要求プロセスの処理時間とをパラメ
ータとする演算によって個々のプロセッサ装置の負荷を
判定する負荷判定手段と、該負荷判定手段の結果に従っ
て処理を分散する処理分散手段と、を有することを特徴
としている。
【0013】
【作用】本発明のマルチプロセッサ装置は、異機種混在
環境で処理の多重化(並列化)による処理時間短縮の効
果を最大限に利用するために、次の処理要求完了時間が
均等になる様に処理単位を分散するよう作用する。
【0014】
【実施例】本発明の実施例について以下の項目に従い、
図を用いて説明を行なう。
【0015】1.本実施例の特徴(従来発明との違い) 2.負荷検出手段の動作 2.1 オペレーティングシステムによるマルチタスク
処理の概要 2.2 処理要求発生源プロセス22の動作 2.3 負荷分散制御手段1の動作 3.説明の補足(並列処理の実現) 1.本実施例の特徴(従来発明との違い) 本発明が実施されるのに好適な一つの環境の説明図を図
3に示す。本実施例は、ワークステーション、パーソナ
ルコンピュータなど、プロセッサ資源を有する複数台の
情報機器がネットワーク21によって接続された環境で
の、プログラムの並列処理を主な応用の対象としてい
る。
【0016】目的プログラム22はパーソナルコンピュ
ータ33で起動される。22に含まれる並列処理のオブ
ジェクトコードが複数のプロセス36、206らを発生
する。これらプロセス36、206は、ネットワーク2
1を介して処理分散される。パーソナルコンピュータ3
4あるいはワークステーション200は、プロセス3
6、206らを実行する。目的プログラム22は、この
プロセス36、206が並列して実行される事によって
逐次実行に比較し短時間で処理を終える事が出来る。
【0017】ここでプロセスとは、オペレーティングシ
ステムにおける、プロセッサ資源、メモリ資源割り当て
の実行時の単位である。本実施例のプロセスの構造を図
4に示す。本実施例において、プロセス40は、プロセ
スの識別子41及び実行管理、メモリ管理のための情報
を含むプロセス管理情報42と、中断の際に現在のプロ
セッサのレジスタの状態を保存するためのカーネルスタ
ック43と、オブジェクト領域46、プロセススタック
44、ヒープ領域45からなる管理単位であるとして説
明を続ける。この意味で目的プログラム22は、やはり
一つのプロセスと見なせる。以下の説明では、”最初に
処理並列化を要求する”という意味で目的プログラムを
「処理要求の発生源プロセス」と呼ぶ。
【0018】本実施例のマルチプロセッサ装置と、従来
発明(特開昭63-211060号)との大きな違いは次の3点
である。
【0019】(1)本実施例の処理要求の発生源プロセ
スは、他のプロセッサへの負荷の均等な分散をそれぞれ
管理する。 (2)本実施例の処理要求の発生源プロセスは、他プロ
セッサの負荷判定に際し、他のプロセッサの状態を通信
により知る処理を必要としない。 (3)本実施例の処理要求の発生源プロセスは、他のプ
ロセッサの負荷を判定する際、待ち行列の長さ情報に加
え、前回までの処理時間の情報を使用する。
【0020】以上の(1)〜(3)によって本実施例で
は発生源プロセスが負荷の判定と処理分散の動作を完全
に自己の処理で完結する。これを「自律的な判定」と書
く。すなわち本実施例が従来発明に比較し異なる最大の
点は、他のプロセッサ装置の負荷を自律的に判定する点
である。これによって、従来発明で行なわれた負荷変動
通知のためのデータ転送は不要になる。
【0021】以上に挙げた本実施例の特徴を次に詳しく
説明する。
【0022】2.負荷検出手段の動作 図2は本実施例のマルチプロセッサ装置全体の概略構成
図である。また図1は、本実施例の中において特徴的な
構成を実現する、負荷分散制御手段1の構成図である。
【0023】本実施例の特徴をなす負荷分散制御手段1
は、負荷判定手段2、処理分散手段3、待ち行列4から
構成される。負荷分散制御手段1は、本実施例のマルチ
プロセッサ装置の処理分散を管理する機構であり、単独
のワークステーション200等に実装されたオペレーテ
ィングシステム201のスケジューラ202とは異な
る。この点を明らかにするために、図2によって全体の
動作を説明する。
【0024】2.1 オペレーティングシステムによる
マルチタスク処理の概要 複数台のワークステーション200が、ネットワーク2
1を介し接続されている。あるパーソナルコンピュータ
33で実行されている処理要求発生源プロセス22は、
説明の簡単のために、直接ネットワーク21に接続され
ているように図示した。ワークステーション200は、
オペレーティングシステム201(以下OS201と
略)によって管理される。OS201はマルチタスクを
行なう。このためにOS201は、スケジューラ202
と、これに対する待ち行列205を持つ。OS201
は、複数のユーザプログラムの中からどれか一つのユー
ザプログラムを選んで実行する。ある条件が成立すると
(後述)、OS201はこのユーザプログラムの実行を
一時中断し、他のユーザプログラムを実行する。これに
よってOS201はマルチタスクを実現する。
【0025】一つのユーザプログラムは、OS201の
管理下で一つのプロセスとして起動される。起動後にこ
のプロセスがOS201の機能のサービスを受けて、更
に別のプロセスを作る事が許される。前述したユーザプ
ログラムのマルチタスクは、OS201の管理から見る
とユーザプログラムを形成する一つないし複数のプロセ
スに対する「プロセッサ割り当ての切り替え」によって
実現される。
【0026】あるプロセスがOS201の機能のサービ
スを利用する手段は、ソフトウェア割り込みである。こ
の割り込みが発生すると、プロセッサのプログラムカウ
ンタがOS201内部の処理番地の値に書き変わる。こ
れによりプロセッサ処理は、ユーザのプロセスからOS
201の内部に入る事ができる。
【0027】ユーザプロセスからの処理要求(上記ソフ
トウェア割り込み)が発生すると、プロセッサ処理は最
初にアプリケーションインターフェース204に移る。
ここで要求の処理内容が判断され、サービスプログラム
203が実行される。一部の要求(ハードディスク装置
からの読み込み等)は、実際の処理完了までに時間待ち
を伴う。この場合、要求を発生したプロセスは休眠状態
に入る。すなわち、プロセスが待ち行列205にエンキ
ューされ、次にOS201によって起動されプロセッサ
割り当てを受けるまで停止する。
【0028】また、これ以外の場合でもプロセスが予め
定められた数ミリ秒〜数10ミリ秒のプロセッサ割り当
て時間を消費した場合は、タイマ割り込みによってOS
201の内部の処理プログラムが動作し、このプロセス
を停止する。この場合も、プロセスが待ち行列205に
エンキューされ、次にOS201によって起動されプロ
セッサ割り当てを受けるまで停止する。
【0029】OS201はタイムスライスの経過または
処理待ちを伴うサービスで、プロセスを休眠させるとス
ケジューラ202を用いて次に実行するプロセスを選択
する。以上がOS201によるマルチタスク処理の概要
である。
【0030】2.2 処理要求発生源プロセス22の動
作 本実施例の処理要求発生源プロセス22は、OS201
と同等のオペレーティングシステムに管理される一つの
プロセスである。処理要求発生源プロセス22はユーザ
プログラムとして起動され、cobegin文等(3節で後述
する)に代表される並列記述により処理単位J1、J
2、J3を並列して動作させる。ここで、処理単位のど
れか、例えばJ2内にさらに並列処理記述がふくまれる
場合、次はJ2が新たな処理要求発生源プロセス22と
して動作する。
【0031】処理要求発生源プロセス22の目的コード
は、ソースコードをコンパイルして得られたものであ
り、特定のプロセッサの機械語で構成される。従って、
プロセス22のオブジェクトコードをそのまま他のワー
クステーション200に転送しても動作は保証されな
い。本実施例は、異機種コンピュータ間の並列処理を目
的とするので、この不都合を除くために仮想プロセッサ
とその機械語を導入する。仮想プロセッサの機械語は特
定のハードウェアに依存しないものであり、仮想機械語
のインタープリタ212によって実行される。
【0032】処理要求発生源プロセス22と処理受け取
りプロセス207は、そのプロセスの構造上は同じであ
り、プロセスの構造40(図4)からなる。オブジェク
ト領域46は各プロセスの動作を記述したオブジェクト
コードを格納した領域であり、仮想機械語のインタープ
リタ212はこの領域に含まれる。また、仮想機械のプ
ログラムカウンタ、スタックポインタ、レジスタ、フラ
グから構成される仮想プロセッサ211は、各プロセス
のヒープ領域45に作られる。また、プロセス自体が動
作のためにメモリ領域を必要とするが、この領域はプロ
セス内に作業メモリ210として確保される。
【0033】仮想機械によるプロセス47はヒープ領域
45に配置される。プロセス47は、仮想機械の機械語
で形成されるオブジェクトコードと、作業メモリ(ヒー
プ、スタック)からなるデータ構造で、OS201が管
理するプロセスの構造40を仮想機械でシミュレートし
た構造である。
【0034】以下の説明において、処理の流れは図5に
示した。
【0035】プロセス22の処理単位J1、J2、J3
はいずれも仮想機械によるプロセス47である(説明の
ため、同様の処理単位を一般にJnと書く)。プロセス
22は、cobegin文による分岐23によってランタイム
・ルーチン24を呼び出してJ1、J2、J3をどのプ
ロセッサ装置に分散すべきか判断し、処理分散を行な
う。
【0036】cobegin文による機械語は、並列処理モー
ドであることを内部フラグに記録する処理を行ない(S
501)、実際の処理分散は処理単位Jnを呼び出す機
械語のランタイム・ルーチン24が行なう。
【0037】負荷判定手段2は、各プロセッサ装置毎に
用意した待ち行列4から、処理完了待ちのプロセス数
(待ち行列の長さ)と、前回までの処理時間とを取り出
し、プロセッサ装置の負荷を求め、次の処理の完了時間
の期待値Mを返す(S502)。処理分散手段3は、こ
の値Mに基づき、最も処理完了時間の予測値の短いプロ
セッサ装置の装置番号Pを返す。すなわち、負荷判定手
段2の返したMが現在最小の値より小さければ(S50
3)、最小値の更新およびプロセッサ装置の装置番号P
の記録を行ない(S504)、これを全プロセッサ検査
完了まで繰り返す(S505)。
【0038】負荷分散制御手段1は、上記手順で見つけ
た装置番号Pのプロセッサに処理単位J1を転送し、処
理要求を発行する(S506)。J2、J3についても
同様の手段が行なわれる。
【0039】もちろん処理の一部は自プロセッサ装置で
実行されても良い。待ち行列4、および負荷判定手段2
は自プロセッサ装置に対しても作られるので、負荷分散
制御手段1が、自プロセッサ装置に処理単位Jnを割り
当てる事がある。この場合Jnを形成する仮想機械のプ
ロセス47は、自プロセッサ上に作られた新しいプロセ
ス207で処理される。割り当ては、とにかく終了時間
の期待値が最も早いプロセッサ装置を指定するだけであ
る。
【0040】上記から分かる様に、処理単位Jnは、他
プロセッサ装置に送られる場合とそうでない場合があ
る。通信手段5は、処理単位Jnと、装置番号Pを受け
取り、処理の転送を行なう。通信手段5は、受け取った
装置番号Pが自プロセッサの値であれば、通信せず処理
し、それ以外の場合、通信を発生し、他プロセッサ装置
の処理受け取りプロセス207と接続する(S50
7)。
【0041】プロセス207は、ネットワーク21を介
して送られてくる処理単位Jnを処理し、処理完了時点
で処理完了を通知し、処理結果を返す動作をする。既に
述べた様に、Jnは仮想機械のプロセス47の構造をと
るから、処理結果はプロセス47のスタックに残され
る。
【0042】プロセス207は、ネットワーク21に接
続された複数のプロセッサ装置らからランダムに到着す
る要求に応えなければならない。そのために、処理単位
Jnを受け取った時プロセス207は直接これを実行す
ることはせず、子プロセス206を生成し、処理を行な
う。プロセス207は、通信手段208によって処理単
位Jnを受け取ると、プロセス生成・起動処理209を
実行する(S508)。プロセス生成・起動処理209
は、OS201のアプリケーションインターフェース2
04を利用し、OS201に子プロセス206の生成を
要求する(S509)。OS201はサービスプログラ
ム203を実行し、子プロセス206を作る。
【0043】OS201の子プロセス生成は、「親のプ
ロセスと同じものを複製する」処理である。この時、ス
タックの内容、プログラムカウンタ等各種レジスタの
値、全てが親プロセスの構造40と同一に作られる。従
って、子プロセス206での次の実行開始番地は、直前
に親プロセスで実行されていた番地に引き続く番地であ
る。親プロセス207では、この直前に仮想機械語のイ
ンタープリタ212を実行する処理位置であった。より
詳しく言うと、通信手段208から仮想機械語を受け取
り、インタープリタ212に入力として与える位置であ
った。一方、受け取った仮想機械語のデータ列は、仮想
機械のプロセス47の構造をとっており、このプロセス
47のプログラムカウンタは、cobegin文から生成され
た仮想機械語に続く、次の命令語の位置を指し示してい
る。そこで、子プロセス206も仮想機械語のインター
プリタ212処理に入り、cobegin文の次に続く文の位
置から処理を開始し、Jnを処理する事ができる(S5
10)。
【0044】プロセス207はプロセス22と同一の構
造である。プロセス207が受け取った処理単位Jnが
更に並列処理を含んでいる場合、今度はプロセス207
が作った子プロセス206が新しい並列処理要求の発生
源のプロセスとなる。
【0045】以上で処理分散に関わる処理要求発生源プ
ロセス22の動作の説明を終わる。続いて、負荷分散制
御手段1の動作を説明する。
【0046】2.3 負荷分散制御手段1の動作 負荷分散制御手段1の構成は図1で示される。既に述べ
た様に、負荷判定手段2、処理分散手段3、待ち行列4
が主たる構成要素である。「1.本実施例の特徴」に述
べた様に、本実施例では通信を発生して他のプロセッサ
装置の負荷を調べる必要が無い。その代わり自プロセッ
サも含め、利用出来る全てのプロセッサ装置について待
ち行列4と、負荷判定手段2を用意する図1は、分かり
やすくするために負荷判定手段2を一つだけ取り出して
記載した。
【0047】利用出来る他プロセッサ装置の装置番号は
予め自プロセッサ装置に初期設定として与える。また各
プロセッサ装置はマルチタスク処理出来ることが必要条
件であり、予め処理受け取りプロセス207がバックグ
ランドで動作している事が必要である。
【0048】既に「2.1 …マルチタスク処理の概
要」に書いた様に、各プロセッサ装置200において、
OS201がプロセス207に処理時間を割り当て、並
列処理の要求が実行される。プロセス22が処理単位J
nを分散してから処理結果が得られるまでには、時間の
遅延が発生する。そこで処理分散手段3はJnをどれか
のプロセッサ装置200に送った時点でその処理単位J
n(仮想機械によるプロセス47と見なされる)にプロ
セス番号を与え、待ち行列4に記録する(エンキュ
ー)。同じく処理分散手段3はJnが処理完了し、処理
結果が戻った場合は、その時点で待ち行列4から該当す
るプロセス番号のエントリを取り除く(デキュー)。
【0049】処理分散手段3は、エンキューからデキュ
ーまでの時間を待ち行列4が併せ持つデータ構造に記録
する。この処理の結果、負荷判定手段2は待ち行列4の
データ構造を調べ、現在の待ち行列4の長さと、前回ま
での処理時間の実績値を取り出すことが出来る。計数手
段6は待ち行列4の長さを取り出す。時間幅測定手段7
は前回までの処理時間の実績値を取り出す。
【0050】メモリスペースが許せば、待ち行列4のデ
ータ構造に前回までの全ての処理の処理時間を記録する
ことも可能である。しかし、それによって次の処理完了
時間の期待値が正確に求まる保証は無い。そこで、本実
施例では直前の処理時間(これをΔT1と書く)とそれ
以前までの実績値(これをΔT0と書く)を用いて今回
実績時間(これをΔTと書く)を決定した。すなわち ΔT=(ΔT1+ΔT0)÷2 とした。またこの次以降の実績値は、現在待ち行列4に
ある未完了のどれかの処理が完了した時点で更新され
る。すなわち新たに完了した処理のプロセス番号が待ち
行列4からデキューされ、処理時間ΔT1が更新され
る。次に代入 ΔT0 = ΔT により、実績値が新しい値で更新される。
【0051】演算手段8は、計数手段6が取り出した待
ち行列の長さと、時間幅測定手段7が求めた今回実績値
ΔTの積を求める。これを M=(待ち行列の長さ)×ΔT で表す。比較手段9はここで求めたMが予め定めた値を
越えた時、「処理不可能」を返し、それ以外は値Mをそ
のまま返す。また、今回初めて処理を割り当てる場合
は、実績値の値として予め定めたΔTの値を与える。ま
た、待ち行列の長さは=1である。
【0052】再び図2に戻り説明を続ける。負荷判定手
段2は比較手段9の値により、各プロセッサ装置200
の負荷を返す。処理分散手段3は、「処理不可能」な場
合を除いて戻り値であるMを比較し、最も短い(つまり
早く処理完了すると期待出来る)プロセッサ装置を選択
し、処理要求を発行する。
【0053】処理単位Jnの大きさ、負荷は様々であ
り、処理時間には大きなバラツキがあると予想される。
従って、本実施例の方法が正しく処理時間の期待値を与
える事にはならない。しかし、処理要求自体がランダム
に発生すること、処理単位Jnのバラツキもランダムで
あることを考えると、およそ適切な負荷配分を定める方
法であると言える。しかも、負荷検出に通信を使用しな
い点が大きな特徴である。
【0054】これまでの説明は、負荷分散制御手段1が
プロセス22の中に実現されている場合について書い
た。しかし、以上の説明から明らかな様に負荷分散制御
手段1は、プロセス22の中で処理の並列化要求が有っ
た場合、プロセッサ装置(の装置番号)を指定して処理
を分散する機能を実現出来れば良い。そこで別の実施例
として負荷分散制御手段1だけを独立したプロセスとす
る方法が考えられる。この場合は、負荷分散制御手段1
のために設けたプロセスに対し、並列処理要求の発生源
プロセス22が、プロセス間通信によって処理依頼を発
行すれば良い。負荷分散制御手段1の独立プロセスは常
時バックグランドに走行させる事が可能で有る。実際、
多くのオペレーティングシステムにバックグランド処理
のための機能と、プロセス間通信の機能が用意されてい
る。従って、負荷分散制御手段1を独立のプロセスとす
る事は簡単な変更である。この場合も処理内容は上記手
順と同様である。
【0055】また負荷判定手段2も別の方法が考えられ
る。一例として前回までの実績値を指数平滑法などで処
理し、次回の処理時間予測値を求めれば良い。いずれに
せよ本実施例は、過去の処理時間の値と待ち行列の長さ
に基づき、他プロセッサの負荷判定を行なう事が特徴の
一つであり、これによって異機種混在環境のマルチプロ
セッサ装置の最適負荷分散を行なうものである。
【0056】以上で本実施例における負荷判定と処理分
散の手段の説明を終わる。次に並列記述の手段について
説明の補足をする。
【0057】3.説明の補足(並列処理の実現) 並列処理を行なうために何らかの並列モデルに従い、問
題の記述と実行のできる処理系が必要である。この処理
系の形式として、比較的容易に実現出来るのは次の3通
りである。
【0058】(A)相互接続された複数のプロセッサ資
源、メモリ資源を動的に管理できるOSを用意し、この
OSの管理下で並列記述が可能な言語仕様の開発言語を
用いて目的プログラムの記述、コンパイル、実行を行な
う。
【0059】(B)目的プログラムに対する任意の開発
言語(C,Fortran,Pascal等の汎用言語)と、これら開発
言語用の「遠隔手続き呼び出し」のライブラリを用意
し、個々の要求に応じて、毎回目的プログラムを書き下
し、コンパイルと実行をオペレーティングシステム(以
下OSと略)の管理下で行なう。
【0060】(C)並列記述が可能な言語仕様の開発言
語を用意し、目的プログラムを記述し、コンパイルと実
行をOSの管理下で行なう。
【0061】以上の中で(A)の実現には少なくとも同
一のOSを実装したプロセッサ装置からなるマルチプロ
セッサ環境が必要である。現時点(1992年)でより
一般的な(B)と(C)は実質的に同様の処理を行なう
ものである。(B)の場合、使用者は「遠隔手続き呼び
出し」の個々の関数仕様に基づいて、正しい手順、正し
い引数を満たす様にソースコードを書く事が要求され
る。一方使用者が(C)の方式を用いる場合は、高水準
の言語記述によって実行の並列化を記述する事が可能で
ある。よって(C)の方式が記述容易性に優れている。
【0062】本実施例では、(C)の方式を用いて並列
記述を行なった場合を例にとり説明を加えた。方式
(C)に必要な事項と、これに対する本実施例の手段を
次に挙げる。
【0063】要請3.1:(B)の「遠隔手続き呼び出
し」または、(A)の動的資源管理に代替する手段が必
要。
【0064】手段3.1:本実施例は、通信手段20
8、プロセス生成・起動処理209により構成された処
理受け取りプロセス207を、並列処理対象の各プロセ
ッサ装置200で予め実行する。これは、プロセッサ装
置200の起動後直ちに実行され、バックグランドで走
り続けるプログラムとして設定することによって実現さ
れる。現在多くのオペレーティングシステムでこのよう
な処理手順は周知である。
【0065】要請3.2:プロセッサの機械語をはじめ
とし、アーキテクチャの異なる機器において、プログラ
ムの処理単位(この実施例では個々のプロセス)の目的
コードを実行するための手段が必要。
【0066】手段3.2:本実施例は、プロセッサ固有
の機械語に依存しない仮想プロセッサ211を論理的に
作りだした。実際の処理は仮想プロセッサ211の機械
語を用い、個々のプロセッサ装置200上で、この仮想
機械語のインタープリタ212実行する。処理受け取り
プロセス207は、OS201のサービスを利用し自己
と同一のプロセスの複製206を生成し、他プロセッサ
装置からの要求を処理する。
【0067】要請3.3:目的プログラムを記述する段
階で処理対象の問題に有る並列性を取り出し、ソースコ
ード中に記述するための開発言語が必要。
【0068】手段3.3:本実施例では簡単のため、
「2.2 処理要求発生源プロセス22の動作」で、”
cobegin文による並列処理”と書いた。cobegin文はPasc
al系の言語を並列処理向けに拡張した際に用いられる事
が多い。図6は言語Pascalに{cobegin, coend}の2語を
拡張した場合の記述の例を示した図である。プログラム
リスト600は、P1という名前を持つプログラムが、
手続きJ1、J2、J3を持ち、これを並列に実行(6
01)するという内容の例である。
【0069】言うまでもなく、手段3.3は目的プログ
ラムを作成する段階で並列処理を記述することが出来る
仕様であれば、どんな言語を用いても良い。リスト60
0は、例えば最も簡単な場合、リスト602の機械語リ
ストの様にコンパイルできる。ここで、各命令語は次の
通りである。
【0070】(1) JP プログラムカウンタを書き換
え処理を移動する(ジャンプ) (2) COBEGIN cobegin文の置き換え (3) COEND coend文の置き換え (4) JSR サブルーチンへの分岐 (5) HALT 処理停止 リスト602の処理において、COBEGIN行603では、
他プロセッサ装置との通信の確立、および並列実行モー
ド内部フラグ設定を行なう。続くJSR行604は、並列
処理時と、それ以外の場合で処理内容が異なる。
【0071】(並列処理時)流れ図5に示した一連の処
理を行なう。
【0072】(逐次処理時)現在の処理番地の次の番地
を戻り番地として記録した後、指定された番地へジャン
プする。
【0073】本実施例は以上の手段で並列処理を記述し
た。
【0074】
【発明の効果】以上の実施例が明らかにした様に、本発
明の構成要素の一つである負荷分散制御手段は、他プロ
セッサへの処理要求待ち行列の長さと、前回までの応答
時間実績値に基づいて、対象となるプロセッサの負荷を
自律的に判断する。この結果、負荷検出に伴う通信が不
要となるために、ネットワーク資源、プロセッサ資源の
それぞれに関し、目的プログラムの処理に割り当てる時
間の比率を向上させることが可能となる。
【0075】さらに、負荷分散制御手段の構成要素であ
る負荷判定手段が、処理時間の時間幅測定手段を持つ構
成とすることで性能の異なる様々なプロセッサ装置から
なる混在環境においても前回実績時間を加味してプロセ
ッサの処理速度を反映した負荷判定を行なう事が可能で
ある。この結果、結合されるプロセッサ装置の速度特性
を事前に設定する等の手順を用いる事無く、自動的に最
適負荷分散を行なう事ができる。これは、マルチプロセ
ッサ装置全体の運用の容易性を向上させる効果が多大で
ある。
【図面の簡単な説明】
【図1】本発明の特徴である負荷分散制御手段の説明
図。
【図2】本発明の一つの実施例の構成図。
【図3】図2の実施例の実行環境の説明図。
【図4】実施例で用いたプロセスの構造の説明図。
【図5】実行単位分散の処理手順の流れ図。
【図6】並列処理記述の例の説明図。
【符号の説明】
1…負荷分散制御手段 2…負荷判定手段 3…処理分散手段 4…待ち行列 5…通信手段 6…計数手段 7…時間幅測定手段 8…演算手段 9…比較手段 21…ネットワーク 22…並列処理要求発生源プロセス(目的プログラム) 23…分岐 24…ランタイム・ルーチン 33、34…パーソナルコンピュータ 36…並行して実行されるプロセス 40…プロセスの構造 41…プロセス識別子 42…プロセス管理情報 43…カーネルスタック 44…プロセススタック 45…ヒープ領域 46…オブジェクト領域 47…仮想機械のプロセス 200…ワークステーション 201…オペレーティングシステム 202…スケジューラ 203…サービスプログラム 204…アプリケーションインターフェース 205…待ち行列 206…子プロセス 207…処理受け取りプロセス 208…通信手段 209…プロセス生成・起動処理 210…作業メモリ 211…仮想プロセッサ 212…仮想機械語インタープリタ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 ローカルエリアネットワークによって接
    続された複数台のワークステーションあるいはパーソナ
    ルコンピュータなど(以下、総称してプロセッサ装置と
    書く)を用いて、一つの目的プログラムの処理を複数の
    プロセスに分割し、これを複数のプロセッサ装置に分散
    して並列して実行することを特徴とするマルチプロセッ
    サ装置において、並列処理開始を記述した文を含むプロ
    グラムの一単位(これを並列処理要求の発生源プロセス
    と書く)が、該プロセス中の分散記述に従って発生した
    子プロセスを複数のプロセッサ装置に配置する配置手段
    と、前記の複数のプロセッサ装置に子プロセスを分散処
    理要求するための負荷分散制御手段と、を有する事を特
    徴とするマルチプロセッサ装置。
  2. 【請求項2】 前述の負荷分散制御手段が、処理分散対
    象のプロセッサ装置ごとに要求プロセスの待ち行列を作
    成する待ち行列作成手段と、前記要求プロセスの発生か
    ら完了までの処理時間を計測する計数手段と、前記待ち
    行列作成手段によって作成された要求プロセスの待ち行
    列の長さと、前記計数手段によって計測された前回以前
    の要求プロセスの処理時間と、をパラメータとする演算
    によって個々のプロセッサ装置の負荷を判定する負荷判
    定手段と、該負荷判定手段の結果に従って処理を分散す
    る処理分散手段と、を有することを特徴とする請求項1
    記載のマルチプロセッサ装置。
JP5030613A 1993-02-19 1993-02-19 マルチプロセッサ装置 Pending JPH06243112A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5030613A JPH06243112A (ja) 1993-02-19 1993-02-19 マルチプロセッサ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5030613A JPH06243112A (ja) 1993-02-19 1993-02-19 マルチプロセッサ装置

Publications (1)

Publication Number Publication Date
JPH06243112A true JPH06243112A (ja) 1994-09-02

Family

ID=12308728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5030613A Pending JPH06243112A (ja) 1993-02-19 1993-02-19 マルチプロセッサ装置

Country Status (1)

Country Link
JP (1) JPH06243112A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1027146A (ja) * 1996-07-11 1998-01-27 Kyushu Nippon Denki Software Kk 通信処理装置及び通信処理方法
JP2000029709A (ja) * 1998-06-03 2000-01-28 Internatl Business Mach Corp <Ibm> 分散コンピュ―タ環境内における発見のためのシステム、方法及びコンピュ―タ・プログラム製品
JP2001101149A (ja) * 1999-09-30 2001-04-13 Nec Corp 分散並列型データ処理装置及び分散並列型データ処理プログラムを記録した記録媒体並びに分散並列型データ処理システム
WO2001084343A1 (fr) 2000-04-28 2001-11-08 Taisho Pharmaceutical Co., Ltd. Procede d'attribution de travail dans un procede de traitement en parallele et procede de traitement en parallele correspondant
JP2004520655A (ja) * 2001-05-08 2004-07-08 イーエムシー コーポレイション 分散型コンピュータシステムにおける資源の選択
JP2005092862A (ja) * 2003-08-11 2005-04-07 Hitachi Ltd 負荷分散方法及びクライアント・サーバシステム
US6986139B1 (en) 1999-10-06 2006-01-10 Nec Corporation Load balancing method and system based on estimated elongation rates
US7062768B2 (en) 2001-03-21 2006-06-13 Nec Corporation Dynamic load-distributed computer system using estimated expansion ratios and load-distributing method therefor
US7584464B2 (en) 2002-12-06 2009-09-01 Panasonic Corporation Software processing method and software processing system
JP2011513807A (ja) * 2008-02-26 2011-04-28 インターナショナル・ビジネス・マシーンズ・コーポレーション ワークロード・マネージャにおいてディスパッチャのシェアを計算する方法、コンピュータ・プログラム及びデータ処理システム
JP2013196320A (ja) * 2012-03-19 2013-09-30 Hitachi Ltd 技術計算方法、技術計算システム及びクライアント装置
JP2018200603A (ja) * 2017-05-29 2018-12-20 富士通株式会社 タスク配備プログラム、タスク配備方法、およびタスク配備装置
JP2019045930A (ja) * 2017-08-30 2019-03-22 富士通株式会社 タスク配備プログラム、タスク配備方法、およびタスク配備装置

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1027146A (ja) * 1996-07-11 1998-01-27 Kyushu Nippon Denki Software Kk 通信処理装置及び通信処理方法
JP2000029709A (ja) * 1998-06-03 2000-01-28 Internatl Business Mach Corp <Ibm> 分散コンピュ―タ環境内における発見のためのシステム、方法及びコンピュ―タ・プログラム製品
JP2001101149A (ja) * 1999-09-30 2001-04-13 Nec Corp 分散並列型データ処理装置及び分散並列型データ処理プログラムを記録した記録媒体並びに分散並列型データ処理システム
US6986139B1 (en) 1999-10-06 2006-01-10 Nec Corporation Load balancing method and system based on estimated elongation rates
EP2204735A1 (en) 2000-04-28 2010-07-07 Taisho Pharmaceutical Co. Ltd. Job assignment method in parallel processing method and parallel processing method
WO2001084343A1 (fr) 2000-04-28 2001-11-08 Taisho Pharmaceutical Co., Ltd. Procede d'attribution de travail dans un procede de traitement en parallele et procede de traitement en parallele correspondant
US7370328B2 (en) 2000-04-28 2008-05-06 Honda Motor Co., Ltd. Method for assigning job in parallel processing method and parallel processing method
CN100394416C (zh) * 2000-04-28 2008-06-11 大正制药株式会社 并行处理方法中的作业分配方法及并行处理方法
EP2202640A1 (en) 2000-04-28 2010-06-30 Taisho Pharmaceutical Co. Ltd. Job assignment method in parallel processing method and parallel processing method
US7062768B2 (en) 2001-03-21 2006-06-13 Nec Corporation Dynamic load-distributed computer system using estimated expansion ratios and load-distributing method therefor
JP2004520655A (ja) * 2001-05-08 2004-07-08 イーエムシー コーポレイション 分散型コンピュータシステムにおける資源の選択
US7584464B2 (en) 2002-12-06 2009-09-01 Panasonic Corporation Software processing method and software processing system
JP2005092862A (ja) * 2003-08-11 2005-04-07 Hitachi Ltd 負荷分散方法及びクライアント・サーバシステム
JP2011513807A (ja) * 2008-02-26 2011-04-28 インターナショナル・ビジネス・マシーンズ・コーポレーション ワークロード・マネージャにおいてディスパッチャのシェアを計算する方法、コンピュータ・プログラム及びデータ処理システム
US8245238B2 (en) 2008-02-26 2012-08-14 International Business Machines Corporation Routing workloads based on relative queue lengths of dispatchers
US8875153B2 (en) 2008-02-26 2014-10-28 International Business Machines Corporation Routing workloads based on relative queue lengths of dispatchers
US9582338B2 (en) 2008-02-26 2017-02-28 International Business Machines Corporation Calculating a dispatcher's relative share based on relative queue length and capacity value of a plurality of workload types and computing systems combinations
JP2013196320A (ja) * 2012-03-19 2013-09-30 Hitachi Ltd 技術計算方法、技術計算システム及びクライアント装置
JP2018200603A (ja) * 2017-05-29 2018-12-20 富士通株式会社 タスク配備プログラム、タスク配備方法、およびタスク配備装置
US10901785B2 (en) 2017-05-29 2021-01-26 Fujitsu Limited Task deployment method, task deployment apparatus, and storage medium
JP2019045930A (ja) * 2017-08-30 2019-03-22 富士通株式会社 タスク配備プログラム、タスク配備方法、およびタスク配備装置

Similar Documents

Publication Publication Date Title
US10073711B2 (en) Virtual machine monitor configured to support latency sensitive virtual machines
JP3989911B2 (ja) グローバル割込み待ち行列の仮想化
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US7926062B2 (en) Interrupt and exception handling for multi-streaming digital processors
EP1839146B1 (en) Mechanism to schedule threads on os-sequestered without operating system intervention
US5390329A (en) Responding to service requests using minimal system-side context in a multiprocessor environment
JP5106036B2 (ja) コンピュータ・システム上のハイパーバイザ内にポリシ・ベースのオペレーティング・システム・サービスを提供する方法、コンピュータ・システム及びコンピュータ・プログラム
US5553291A (en) Virtual machine control method and virtual machine system
US7290261B2 (en) Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US7979861B2 (en) Multi-processor system and program for causing computer to execute controlling method of multi-processor system
US20070124732A1 (en) Compiler-based scheduling optimization hints for user-level threads
US7971205B2 (en) Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status
JP2000330806A (ja) 計算機システム
JPH0673108B2 (ja) ゲストに割り当てられたシステム資源に対するゲストの動作を制限する方法
JPH06243112A (ja) マルチプロセッサ装置
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
Yu et al. Colab: a collaborative multi-factor scheduler for asymmetric multicore processors
US11429424B2 (en) Fine-grained application-aware latency optimization for virtual machines at runtime
US8010963B2 (en) Method, apparatus and program storage device for providing light weight system calls to improve user mode performance
CN115098230A (zh) 管理线程的方法及装置
WO2000070482A1 (en) Interrupt and exception handling for multi-streaming digital processors
JPH0612395A (ja) マルチプロセサシステムにおけるタスク割り付け方法
KR102575773B1 (ko) 대칭적 인터페이스를 이용하여 외부 서비스 요청 처리가 가능한 프로세서
JPH0363768B2 (ja)
JPS62221041A (ja) 仮想計算機システムにおけるデイスパツチ制御装置