JP4133068B2 - Computer system - Google Patents

Computer system Download PDF

Info

Publication number
JP4133068B2
JP4133068B2 JP2002213341A JP2002213341A JP4133068B2 JP 4133068 B2 JP4133068 B2 JP 4133068B2 JP 2002213341 A JP2002213341 A JP 2002213341A JP 2002213341 A JP2002213341 A JP 2002213341A JP 4133068 B2 JP4133068 B2 JP 4133068B2
Authority
JP
Japan
Prior art keywords
node
job
reception
data
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.)
Expired - Fee Related
Application number
JP2002213341A
Other languages
Japanese (ja)
Other versions
JP2004054727A (en
Inventor
直伸 助川
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2002213341A priority Critical patent/JP4133068B2/en
Priority to US10/341,505 priority patent/US7293092B2/en
Publication of JP2004054727A publication Critical patent/JP2004054727A/en
Application granted granted Critical
Publication of JP4133068B2 publication Critical patent/JP4133068B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/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

Description

【0001】
【発明の属する技術分野】
本発明は、複数のノードで構築される並列型又はグリッド型の計算機システムにおけるジョブスケジューリングに関し、システム全体の効率を向上するジョブ間の優先度の決定方法、及びその決定方法を実現するための通信方式に関する。
【0002】
【従来の技術】
1つもしくは複数のCPUと主記憶とからなるノードを単位とし、このノードをネットワークを経由して結合し、ノード間でジョブやデータを移動したり、複数ノードを連動させて大きな計算を実行するシステムを、並列型又はグリッド型の計算機システムと呼ぶ。並列型、グリッド型の計算機システムには、1000個を超えるCPUを使う大規模システム構築に必須の構成である。グリッド型の計算機システムと、並列型計算機との呼称の差異は、システムの物理的な広がりや接続するネットワークの性能や仕様により発生するが、本発明では両者の区別は行わない。
【0003】
この並列型又はグリッド型の計算機システムで複数のノードを同時に使用する大きな計算(以下、「マルチノード計算」と呼ぶ)を実行する時には、各ノードをいかに効率よくマッピングするかが重要である。このマッピングは、各ノードを1つのジョブで占有することが基本である。ここで言うジョブとは、マルチノード計算を各ノードに分割したもの、つまりマルチノード計算の一部を表す。各ノードを1つのジョブで占有することは高い処理性能を必要とするためで、1ノードが複数のジョブを同時に実行すること、つまり複数のマルチノード計算に同じノードが同時に関わることはシステムの計算効率を落とすだけでメリットは無い。
【0004】
しかし、各ノードが所有するデータが均質でなく、あるノードだけが持っているデータを複数のマルチノード計算が必要とする場合には、データを所有するノードが複数のマルチノード計算に関わることでシステム全体の効率が上がる場合がある。例えば、あるノード(以下、「ノードA」と呼ぶ)だけが計算に必要な元データ(以下、「データL」と呼ぶ)を主記憶やディスク上に持っており、そのデータLを計算の途中で何度も参照するようなマルチノード計算を2つ同時に実行する場合には、次の2つの実行方法が考えられる。
【0005】
(実行方法1)ノードAの持つデータLを別のノードにコピーすることでデータLを持つノードを2つに増やし、各マルチノード計算それぞれに1ノードずつ加わる。
【0006】
(実行方法2)データLを所有するノードAを2つのマルチノード計算両方で使う。ノードAは2つのジョブをスイッチしながら実行する。
【0007】
一般的な計算処理では、元データは巨大であるが計算で使用するデータは元データのうち一部である。しかし計算開始時には元データのうちどのデータを使用するかは不明で、計算実行途中で初めてどのデータを使用するかを決定することが多い。そのため、実行方法1の方法ではデータLのうちどのデータを使用するか分からないためデータLの全てをコピーすることとなり無駄が多い。そのため、多くの場合には実行方法2を用いる方が現実的である。つまり、ノードAは2つのマルチノード計算両方に関わることになる。
【0008】
このように、ノードAが2つのマルチノード計算に関わる場合は、ノードAにおける2つのジョブの実行方法がシステム全体の効率を左右する。つまり、ノードAにおいて2つのジョブをどのようなスケジュールに基づいて実行するか(例えば、両方のジョブを1秒ずつ切り替えながら実行することで両者のジョブを均等に実行する、片方のジョブを0.5秒実行した後にもう一つのジョブを1秒実行することを繰り返すことで後者のジョブを優先実行する)がシステム全体の効率向上の重要な要素となる。システム全体の効率を改善するようにスケジューリングを決定することを、ここでは「ジョブスケジューリングの最適化」と呼ぶ。
【0009】
このジョブスケジューリングの最適化の問題に関し、特開平8−137910に記載の発明では、計算開始時に最適化を図る手段が開示されている。具体的には、計算開始時に各ノードの終了予定時刻を計算し、最も遅いノード、つまりマルチノード計算の速度を決定するノードについてはそのマルチノード計算に関わるジョブを最優先で実行し、他のノードについては終了予定時刻を越えない範囲で他ジョブの実行を許すことで、ジョブスケジューリングの最適化を図る。
【0010】
【発明が解決しようとする課題】
特開平8−137910に記載の発明では、ジョブ開始時に終了予定時刻が決定できる処理に対しては有効であるが、計算途中結果によりその先の処理量が決定される計算、例えば収束計算(計算結果が収束するまで繰り返し計算する)のような処理では有効に利用できない。
【0011】
また、特開平8−137910に記載の発明では、各ノードの計算状態を一元管理するテーブルを持つ処理方法が開示されているが、数百ノードを使用するような大規模なマルチノード計算にも対応できるスケーラブルなジョブスケジューリングの最適化を実現するためには、このような形態はテーブルアクセスのぶつかりの発生を招くことから適切ではなく、各ノードが自律的にジョブスケジューリングの最適化を図ることが必要である。
【0012】
【課題を解決するための手段】
本発明は、データの送信及び受信を行い当該送受信されたデータを元にマルチノード計算を実行する複数のノードと、前記ノード間のデータ通信を行う通信経路と、を備え、前記マルチノード計算を構成する複数のジョブのうち一のジョブを所定のスケジューリングにより前記複数のノードに占有させて実行し、当該実行させるジョブを順次切り換えることにより前記マルチノード計算を実行する並列型又はグリッド型の計算機システムにおいて、前記ノードは、データを送信する送信側のノードと、送信されるデータに依存するジョブを処理する受信側のノードとを備え、前記受信側のノードが前記一のジョブの処理に必要なデータを必要としてから、当該必要なデータを受信するまでの間に要した時間値を計測する待ち時間計測手段と、前記時間値を前記複数のジョブ毎に集計して前記一のジョブに対して各ノードが要した前記時間値の累計値を計算する負荷バランス集計手段と、前記一のジョブの処理に前記ノードを占有させる時間である持ち時間を前記計算された累計値に応じて計算し、当該累計値が大きいジョブは前記持ち時間を大きくし、当該累計値か小さいジョブは前記持ち時間を小さくすることにより前記複数のジョブの優先度を制御するジョブスケジューリング手段と、を備えた。
【0013】
【発明の作用と効果】
本発明は、データの送信及び受信を行い当該送受信されたデータを元にマルチノード計算を実行する複数のノードと、前記ノード間のデータ通信を行う通信経路と、を備え、前記マルチノード計算を構成する複数のジョブのうち一のジョブを所定のスケジューリングにより前記複数のノードに占有させて実行し、当該実行させるジョブを順次切り換えることにより前記マルチノード計算を実行する並列型又はグリッド型の計算機システムにおいて、前記ノードは、データを送信する送信側のノードと、送信されるデータに依存するジョブを処理する受信側のノードとを備え、前記受信側のノードが前記一のジョブの処理に必要なデータを必要としてから、当該必要なデータを受信するまでの間に要した時間値を計測する待ち時間計測手段と、前記時間値を前記複数のジョブ毎に集計して前記一のジョブに対して各ノードが要した前記時間値の累計値を計算する負荷バランス集計手段と、前記一のジョブの処理に前記ノードを占有させる時間である持ち時間を前記計算された累計値に応じて計算し、当該累計値が大きいジョブは前記持ち時間を大きくし、当該累計値か小さいジョブは前記持ち時間を小さくすることにより前記複数のジョブの優先度を制御するジョブスケジューリング手段と、を備えたので、終了予定時刻の不明なマルチノード計算においても、動的にジョブスケジューリングを行うことでスケジューリングの最適化が実現できる。また、各送信ノードが自律的にジョブスケジューリングを行うことで、システム全体のジョブ実行状態を一元管理する必要がなくなり、一元管理に伴う処理のぶつかりを回避することで、ノード数に対してスケーラブルなジョブスケジューリング最適化が実現できる。
【0014】
【発明の実施の形態】
以下に、本発明の第1の実施の形態の計算機システムについて図面を用いて詳細を説明する。
【0015】
図1は本発明の第1の実施の形態の計算機システムの概念図を示す。
【0016】
ノードA10、B20、C30、D40、E50の5つのノードが計算に関わる。これらの各ノードによって行われるマルチノード計算はマルチノード計算200とマルチノード計算300との2つである。ノードAはマルチノード計算200のジョブ(以下「ジョブP」と呼ぶ)とマルチノード計算300のジョブ(以下「ジョブQ」と呼ぶ)とを実行する。なお、ノードBとノードCとはジョブPのみを実行し、ノードDとノードEとはジョブQのみを実行する。
【0017】
各マルチノード計算においてはノード間のデータ通信が繰り返し実行される。つまり、ノードA10からノードB20、C30、D40、E50に対してデータが繰り返し送信される。ノードB20、C30、D40、E50は計算途中でノードA10から送られるデータを使用するため、ノードA10でジョブPの実行が遅れるとノードB20とノードC30とはノードA10からのデータ待ち時間が増え、ノードA10でジョブQの実行が遅れるとノードD40とノードE50とはノードA10からの待ち時間が増える。すなわち、ノードA10におけるジョブPとジョブQとのスケジューリング方法がシステム全体の効率を決定することになる。
【0018】
このジョブスケジューリング方法の最適化についはいくつかの方法が考えられるが、例えば、ノードA10においてジョブPを大幅に優先した場合(例えばジョブPを10秒実行した後にジョブQを1秒実行することを繰り返す場合)は、一般にはノードD40とノードE50との待ち時間が大きくなりシステム全体の効率が低下する。しかし、ジョブPがジョブQに対して大幅に処理時間を必要とするものであり、ジョブPを大幅に優先しているにも関わらずノードB20とノードC30とは待ち時間が多くノードD40とノードE50とには待ち時間が発生していないケースでは、ジョブPをさらに優先させる方がシステム全体の効率を上げることになる。
【0019】
第1の実施の形態の計算機システムでは、実際に受信側ノードB20、C30、D40、E50で発生した待ち時間量を送信側であるノードA10に返信して(図1の処理120〜150)、この待ち時間量を送信側ノードA10においてジョブ毎に集計し、ジョブスケジューリングの決定を行う。
【0020】
なお、第1の実施の形態においては、各ノードが何れかのノードと送受信する関係にあり各ノードの通信ポートが何れのジョブに使用されているかについては、情報スーパバイザ役であるSノード100が把握し各ノードに配信する。また、各ノードの処理が不均質な場合、Sノード100からは各ノードの処理の差に応じた重み付け情報も配信する。この重み付け情報は、例えばノードB20は他ノードに比べて高速で、ノードB20を1秒待たせることが他のノードを1秒待たせることよりもシステム全体の効率の上で問題であるような場合には、ノードB20を他のノードより大きな重み付けとし待ち時間量集計時に考慮する(具体的な方法については後述する)。なおノードの重み付け情報は、システム構築時に1回、マルチノード計算開始時に1回、それぞれ各ノードに配信すればよいので、Sノード100の処理量は少ない。そのため、図1のように独立したSノード100を用意するのではなく、計算を実行するノードのいずれかのノードがSノードを兼ねる構成にしても良い。
【0021】
以下に、第1の実施の形態の計算機システムについて、データの送受信の手順を説明し、その後に、ジョブスケジューリング方法を説明する。
【0022】
まず、データの送受信方法について説明する。
【0023】
図2は第1の実施の形態の計算機システムの構成を表すブロック図である。
【0024】
ノードA10はデータを送信し、ノードB20、C30、D40、E50はデータを受信する。ノードA10には送信側のリソース(送信バッファ520、送信制御回路525、重み付け情報テーブル560、ノードグループ情報テーブル570、負荷バランス計算回路580)のみ、ノードB20、C30、D40、E50には受信側のリソース(受信バッファ620、720、820、920、受信待ち計測回路625、725、825、925)のみを示す。なお、第1の実施の形態では送信を行うノードと受信を行うノードが分かれているが、各ノードが送信受信双方を実行する構成にしても良い。各ノードが送受信を行う場合には、各ノードが送信側のリソース、および受信側のリソースを持つ必要があるが、本実施の形態の説明には不要なので省略する。
【0025】
ノードA10は送信ポートを4ポート持ち、4つのノードに対して送信できる。具体的には送信バッファ520〜550の4つである。なお、マルチノード計算の分割数が多く、ノードA10がさらに多くのジョブへとデータを送信する必要がある場合にはこのポート数をさらに増やす必要がある。
【0026】
第1の実施の形態では、各ポートの通信先が全て別のノードと接続しているが、ポートはノードに対して1つ用意するのではなく、送信先のジョブの数により決定される。例えばノードB20において2つのジョブが実行されておりノードA10から各ジョブへと送信するケースにおいては、2つのポートをノードB20に対して使用することになる。なお、ポート数をさらに増やしても本発明の本質は変わらず、その実施方法は容易に類推することができることから、ここでは4ポートの構成で説明する。
【0027】
次に、ノードA10からノードB20に対するデータ送信方法を説明する。
【0028】
データ送信は、送信バッファ520と受信バッファ620とを使って行われるが、この場合、「送信バッファ520に空きがないのに送信データを書き込むこと」、「受信バッファ620に空きがないのに送信バッファ520から受信バッファ620にデータが書き込まれること」、「受信バッファ620にまだ送信データが書き込まれていないのに受信バッファ620を読み出すこと」、を防ぐ必要がある。そのため、データの送信ではCPU500、CPU600、送信制御回路525、受信待ち計測回路625を各種フラグを用いて制御する。
【0029】
このデータ送信の制御の手順を図3を用いて説明する。
【0030】
図3は、図2に示すノードA10の送信制御回路525の詳細な構成を示す。
【0031】
この送信制御回路525は、送信要求生成回路1010、送信要求フラグ1020、受信バッファ開放フラグ1030を備える。
【0032】
CPU500は信号線1000を経由して送信要求フラグ1020をチェックする。この送信要求フラグ1020は、データの送信要求があるかどうかを表すフラグである。この送信要求フラグ1020が“0”である場合(すなわち送信要求が出ていない、もしくは送信が終了している)には、送信データを主記憶505(図2)から送信バッファ520にコピーする。送信要求フラグ1020が“1”の場合(すなわち送信途中)には、CPU500は、送信要求フラグ1020が“0”になるまで待ってから送信データを送信バッファ520にコピーする。送信要求フラグ1020を“1”から“0”にセットするのは送信要求生成回路1010であるが、この動作については後述する。
【0033】
送信要求フラグ1020が“0”であった場合、CPU500は、送信データを送信バッファ520にコピーした後、信号線1000を経由して送信要求フラグ1020に“1”をセットする。この送信要求フラグ1020がセットされたことは信号線1050を経由して送信要求生成回路1010へと通知される。
【0034】
この通知を受けて、送信要求生成回路1010は信号線1060を経由して通知される受信バッファ開放フラグ1030の値を調べる。受信バッファ開放フラグ1030は、受信側の受信バッファが空いているかどうかを表すフラグである。受信バッファ開放フラグ1030の初期値は“1”であり、これは受信バッファが空いていることを示す。受信バッファが使用中であれば“0”となる。送信要求生成回路1010が受信バッファ開放フラグ1030を調べたときに“1”であれば受信バッファは開いているので、信号線510を経由して送信バッファ520にデータの送信を要求すると共に、信号線1065を経由して受信バッファ開放フラグ1030を“0”にセットする。
【0035】
また、送信要求生成回路1010が受信バッファ開放フラグ1030を調べたときに“0”であれば受信バッファは使用中なので、受信バッファ開放フラグ1030が“1”にセットされるまで送信せずに待つ。受信バッファ開放フラグ1030が“0”から“1”にセットされるには、信号線120を経由して受信側ノードB20からバッファの開放が通知される必要があるが、これは後述する。
【0036】
送信バッファ520は信号線510を経由してデータの送信要求を受け取ると、信号線110を経由して受信側のノードB20の受信バッファ620にデータを送る。データの送信が終了すると、信号線515を経由して送信要求生成回路1010にデータ送信の終了を通知する。通知を受けた送信要求生成回路1010は、信号線1055を経由して送信要求フラグ1020を“1”から“0”にセットする。この送信要求フラグ1020によって、CPU500はデータの送信が完了したことを信号線1000を経由して知ることができる。
【0037】
図4は、図2に示すノードB20の受信待ち計測回路625の詳細な構成を示す。この受信待ち計測回路625は、受信完了フラグ1100、カウント1120、受信確認フラグ1130、受信通知回路1140を備える。
【0038】
受信バッファ620にデータが書き込まれると、受信バッファ620は信号線610を経由して受信完了フラグ1100を“0”から“1”にセットする。この受信完了フラグ1100は初期値“0”のフラグであり、データが到着してからCPU600により読み出されるまで“1”となる。受信完了フラグが“1”から“0”にセットされる動作は後述する。
【0039】
受信完了フラグ1100が“1”となったことは信号線1150を経由して受信通知回路1140に通知される。この通知を受けて、受信通知回路1140は信号線1160を経由して受信確認フラグ1130の値をチェックする。受信通知回路1140は、受信確認フラグ1130の値が“0”のである場合は何もせず、フラグが“1”となった場合は信号線1190を経由してCPU600に対して割り込み(受信データ到着通知)を通知する。受信確認フラグ1130は、初期値“0”のフラグであり、受信側であるノードB20のCPU600が受信バッファ620に到着する予定の受信データを待つ状態になったときにCPU600が信号線1180を経由して受信確認フラグ1130を“1”にセットする。
【0040】
なお、この受信確認フラグ1130をCPU600が“1”にするタイミングは、「他の処理もあるが受信データを使った処理も開始できるタイミング」とするか、「受信データを使った処理以外の処理が無くなり、受信データの着信を待つだけとなったタイミング」とするか、どちらが適当かはアプリケーションに依存する。本実施の形態では、受信確認フラグ1130の設定を、後述するカウンタによる待ち時間のカウント測定にも使用するため、「受信データを使った処理以外の処理が無くなり、受信データの着信を待つだけとなったタイミング」とする。
【0041】
信号線1190を経由して割り込みを通知されたCPU600は、受信バッファ620から主記憶605(図2)にデータをコピーする。コピーが完了すると、CPU600は信号線1180を経由して受信確認フラグ1130を“1”から“0”にセットする。
【0042】
受信通知回路1140は、受信確認フラグ1130が“1”から“0”となったことを信号線1160を経由して通知されると、受信完了フラグ1100を“1”から“0”にセットする。同時に受信通知回路1140は受信の完了すなわち受信バッファ620が空きであることを信号線120を経由してノードA10の送信制御回路525に通知する。この通知によって受信バッファ開放フラグ1030(図3)が“1”から“0”にセットされ、新たなデータの送信が可能になる。
【0043】
以上の動作によってノードA10からノードB20へのデータ送信が行われ、一連の動作によって各フラグはそれぞれ初期値に戻る。
【0044】
なお、本実施の形態では、図2に示すように、ノードA10とノードB20、C30、D40、E50の各ノードとの間に双方向の別々の信号線110〜150を用意しているが、LANなどを用いることでノードA10のデータ送信の物理的な信号線が1つの場合や、制御信号とデータ送受信の物理的な信号線が1つの場合でも、本質的な動作は変わらない。
【0045】
以下に、本実施の形態の、データ送受信での待ち時間を利用したジョブスケジューリング方法について説明する。
【0046】
まず、待ち時間量計測のためのカウンタとそれを制御するフラグの動作について説明する。
【0047】
受信側のノードB20内の受信待ち計測回路625についての動作を上記に説明したが、このうち受信確認フラグ1130を図5に、受信完了フラグ1100の状態を図6に示す。
【0048】
図5では、受信確認フラグ1130は、初期値は“0”であり、CPU600が受信データ待ちを開始すると“1”にセットされ、CPU600が受信データの読み込みを終了すると“0”にセットされる。
【0049】
図6では、受信確認フラグ1100は、初期値は“0”であり、受信バッファ620にデータが到着すると“1”にセットされ、CPU600が受信データの読み込みを終了すると“0”にセットされる。
【0050】
ここで、図5及び図6において、受信確認フラグ1130が“1”であり、受信完了フラグ1100が“0”である場合は、受信側のノードB20はデータ到着待ちで処理が止まっていることを示す。
【0051】
カウンタ1120(図4)は、受信確認フラグ1130が“1”で受信完了フラグ1100が“0”であること(すなわち受信側ノードB20がデータ待ちであり、かつ受信データがまだバッファに到着していないためデータを待っている状態)を信号線1150および信号線1160から検知すると、カウント動作を開始する。受信完了フラグ1100が“1”となるとカウント動作を止め、受信確認フラグ1130が“1”から“0”となるとカウント値をリセットする。なお、CPU600がデータの受信待ちとなる前に受信データが受信バッファ620に到着する場合、すなわち受信確認フラグが“1”となる前に受信完了フラグが“1”となる場合もあるが、この場合にはカウント動作の条件である「受信確認フラグ1130が“1”であり、受信完了フラグ1100が“0”であること」が一度も成立しないので、カウンタ1120はカウント動作を開始しない。
【0052】
このカウンタ1120によってカウントされた待ち時間値は信号線1170を経由して受信通知回路1140に伝わる。受信通知回路1140は、前述した受信バッファ620の空きを通知する際にこの待ち時間値を信号線120を経由してノードA10に通知する。
【0053】
次に、ジョブ毎の待ち時間の累積量を集計する負荷バランス計算回路580(図2)の動作を説明する。
【0054】
図7は、ノードA10の負荷バランス計算回路580の詳細な構成を表すブロック図である。
【0055】
負荷バランス計算回路580は、受信待ち時間レジスタ1200〜1240、積算器1250〜1280、加算機1300〜1330、積分レジスタ1350〜1380、スイッチ1400〜1440、加算機1450〜1460、レジスタP1460、レジスタQ1480、タイマ1340、を備えている。
【0056】
ノードA10に通知された待ち時間量は、信号線120を経由して受信待ち時間レジスタ1200に書き込まれる。
【0057】
受信待ち時間レジスタ1200は、書き込まれた待ち時間を積算器1250に通知すると共に、信号線1510を経由して積分レジスタ1350に待ち時間の加算を要求する。積算器1250では、受信待ち時間レジスタ1200から伝わった待ち時間量と重み付けテーブル560(図2)に記録されている対応ポートの重み付けとの積が演算される。
【0058】
この重み付けテーブル560の例を図8に示す。ポートXは送信バッファ520を、ポートYは送信バッファ530を、ポートZは送信バッファ540を、ポートUは送信バッファ550を表すポートIDである。積算器1250が演算するのは送信バッファ520、つまりポートXの重み付けであるので、ポートXに対応する値「0.5」が信号線1550を経由して積算器1250に伝達される。積算器1250では受信待ち時間レジスタ1200と「0.5」との積を演算し加算器1300に通知する。重み付けテーブル560の値は、後述するノードグループ情報テーブル570(図2)の値とともに、Sノード100(図2)から信号線180を経由してノードA10に通知される。
【0059】
なお、図2ではこの信号線180を専用の信号線として表しているが、LAN等を用いてデータの送受信と物理的に同じ信号線を使う場合にも本発明は適用できる。また本実施例では重み付け情報をデータ送信側ノード、すなわち受信待ち時間情報を受ける側のノードで演算しているが、データ受信側ノード、すなわち受信待ち時間情報を送る側のノードで演算してもよい。この場合、重み付けテーブルの情報はそれぞれのノードが自ノード(もしくは自ノードの各受信ポート)について持つことになる。
【0060】
加算器1300は、積算器1250から通知される値と既に積分レジスタ1350に入っている値との和を演算し積分レジスタ1350に通知する。ここで積分レジスタ1350は、信号線1510を経由して受信待ち時間レジスタ1200から新たに待ち時間量情報の書き込みがされたことを検知すると、値の更新、すなわち既に積分レジスタ1350に登録されていた値と受信待ち時間レジスタ1200から積算器1250を経由して加算器1300に新たに届いた値との和を演算し、積分レジスタ1350の値として設定する。
【0061】
各レジスタに入る値を整理すると、受信待ち時間レジスタ1200は、対応するポートを使った通信(この場合は送信バッファ520を使用する通信)における受信側ノードの待ち時間量を記録し、積分レジスタ1350は複数回の通信での待ち時間量の累計を記録する。この待ち時間の累計は、タイマ1340が信号線1500を経由して通知するインターバル信号(例えば1分毎に発生する信号)によってリセットされる。これは、適宜積分値のリセットを行うことで各ジョブの最新のスケジューリングに従った待ち時間量を積分レジスタ1350に反映するためである。
【0062】
なお、他の各ポートについても同様の動作が行われる。積分レジスタ1350にはポートX、すなわち送信バッファ520から送られるデータの待ち時間累計、積分レジスタ1360にはポートY、すなわち送信バッファ530から送られるデータの待ち時間累計、積分レジスタ1370にはポートZ、すなわち送信バッファ540から送られるデータの待ち時間累計、積分レジスタ1380にはポートU、すなわち送信バッファ550から送られるデータの待ち時間累計が、それぞれ記録される。なお、タイマ1340のリセット信号をトリガとして、信号線1500によって全積分レジスタ1350〜1380が同時にリセットされる。
【0063】
各積分レジスタ1350〜1380に記録された待ち時間累計は、スイッチ1400〜1430を経由して、加算器1450、1470によってジョブ毎の総和が演算される。加算器1450にて演算された値はレジスタP1460に、加算器1470にて演算された値はレジスタQ1480に記録される。
【0064】
待ち時間の累計がいずれのジョブの総和であるかは、ノードグループ情報テーブル570(図2)から信号線1600〜1630を経由して伝達される情報に従って、スイッチ1400〜1430にて加算器1450に出力するか加算器1470に出力するかを切り換えることで、各レジスタに分けられる。
【0065】
このノードグループ情報テーブル570の内容の例を図9に示す。ポートX〜UのIDは、重み付け情報テーブル560と同様に各送信バッファ520〜550に対応する。例えば積分レジスタ1350に記録された待ち時間累計はポートXの情報に従ってジョブP=1、ジョブQ=0となり、この情報が信号線1600を経由してスイッチ1400に通達される。スイッチ1400は積分レジスタ1350の値を加算器1450に出力し、結果としてレジスタP1460に加算されることとなる。
【0066】
なお、総和をレジスタP1460とレジスタQ1480との2つのレジスタに保存するのは、本実施の形態ではノードA10が同時実行するジョブ数が2つ(ジョブPとジョブQ)であることによるものであり、同時実行するジョブの数に従って、加算器、レジスタをそれぞれ用意する必要がある。
【0067】
上記の処理によりレジスタP1460、レジスタQ1480に記録される値は、レジスタP1460はジョブPに関して各ノードが待たされている時間のそれぞれの累計の総和、レジスタQ1480はジョブQに関して各ノードが待たされている時間のそれぞれの累計の総和、となる。
【0068】
ノードA10のCPU500は、信号線1650及び信号線1660(図7)を経由してレジスタP及びQを読み出すことができる。レジスタはタイマ1340によりリセットされるので、CPU500はレジスタP1460とレジスタQ1480とを同時に読み出す必要がある。
【0069】
次に、CPU500が上記レジスタP1460、レジスタQ1480の情報を読み出し、ジョブスケジューリングに利用する際の動作を説明する。
【0070】
まず、CPU500はジョブスケジューリングを変更するタイミング(例えば30秒毎)でレジスタP1460の値及びレジスタQ1480の値を読み出す。この結果、例えばレジスタP1460の値が10、レジスタQ1480の値が20であったとする。これは、ジョブPの進捗によって他のノードが受ける待ち時間よりも、ジョブQの進捗によって他のノードが受ける待ち時間の方が深刻であることを表す。この場合、ジョブQの優先度をジョブPよりも大きくすることでシステム全体の効率を向上することができる。
【0071】
次に、ジョブの優先度の制御方法について説明する。
【0072】
ジョブの優先度の制御は、各ジョブの持ち時間初期値を決定することで行う。持ち時間初期値の使用方法は、例えばジョブPの持ち時間初期値が3秒、ジョブQの持ち時間初期値が2秒だった場合には、ジョブPを3秒実行しジョブPの持ち時間が0になった後に、ジョブQを2秒実行し、その後に再びジョブPを3秒実行するということになる。
【0073】
各ジョブの持ち時間初期値の決定は、本実施形態では、次の数式1及び数式2を用いて決定する。
【0074】
【数1】

Figure 0004133068
【0075】
【数2】
Figure 0004133068
数式1及び数式2において、レジスタP値はレジスタP1460を読み出した時の値、レジスタQ値はレジスタQ1480を読み出した時の値、平均レジスタ値はレジスタP値とレジスタQ値との平均値である。
【0076】
Tdは時間変量を決めるパラメータで、各持ち時間初期値に比べて小さい値とする。例えば前記の「ジョブPの持ち時間初期値が3秒、ジョブQの持ち時間初期値が2秒」のように各持ち時間初期値が数秒のオーダであれば、Tdは1秒以下、具体的には0.2〜0.5秒程度の値とする。上記式は例えばジョブPの優先度を高めたいときは、一度に変化する量はTd以下となるようにジョブPの持ち時間初期値を増やし、同じ量だけジョブQの持ち時間初期値を減らすことを表す。
【0077】
ここで、例えばジョブの数3つとなり、さらにジョブRを扱う必要がある場合(レジスタRも用意し、レジスタR値も読み出せるとする)には、以下の式を用いれば良い。
【0078】
【数3】
Figure 0004133068
【0079】
【数4】
Figure 0004133068
【0080】
【数5】
Figure 0004133068
ジョブRを含めた場合の平均レジスタ値は、レジスタP値、レジスタQ値、レジスタR値の平均値を意味する。更にレジスタの数が増加した場合にも同様に平均値を用いる。
【0081】
次に、上記数式1から2又は3から5によって各ジョブの持ち時間初期値を決定した後ジョブスイッチ動作を行う処理について、ジョブを管理するOSに関する操作を説明する。
【0082】
図10は、ジョブをスイッチするOSの処理をフローチャートで表したものである。この処理は、各ジョブ(P及びQ)において発生した待ち時間値に対して、ジョブPの処理はジョブPの待ち時間値と同じだけ実行し、ジョブをスイッチして、ジョブQはジョブQの待ち時間値と同じ時間だけ実行する、といった処理を繰り返すことでジョブスケジューリングを行うものである。
【0083】
まず初期状態として、カレントジョブを「ジョブP」に、待ち時間を「P初期値」に設定する(処理2000)。
【0084】
次に、システムモードからユーザモードに処理を移行し、OSからカレントジョブに処理をスイッチし、ジョブを実行する(処理2010)。
【0085】
ここで、処理をシステムモードに移行しOSに処理をスイッチし、P初期値(待ち時間値)からタイムスライス割込値(一般に10m秒間隔)を減ずる(処理2020)。
【0086】
次に、この減算された待ち時間値の値を調べる(処理2030)。待ち時間値が0以上であれば処理2010に移行し、カレントジョブを実行し、待ち時間値からさらにタイムスライス値を減ずる(処理2020)処理を繰り返す。時間値0以下になれば、処理2040に移行しジョブのスイッチを行う。
【0087】
処理2040では、ジョブをPからQ、又はQからPに切り替え、処理2010に移行し、この新たなジョブに対して処理を実行する。
【0088】
上記の操作によってジョブのスイッチ動作が実行される。
【0089】
第1の実施の形態の計算機システムは、以上の一連の処理によって、受信側ノードが送信側ノードに対してデータを待っている時間を計測し、各ジョブ毎に集計し、その集計された待ち時間蓄積値に応じて各々のジョブをスイッチしながら実行することで、ジョブスケジューリングの最適化を行うものである。
【0090】
以上のように構成された第1の実施の形態の計算機システムでは、データの送信及び受信を行う複数のノードと、前記ノード間のデータ通信を行う通信経路と、を備えた並列型又はグリッド型の計算機システムにおいて、前記ノードは、データを送信する送信側のノードと、送信されるデータに依存するジョブを処理する受信側のノードとを備え、ジョブがデータを必要としてから前記送信側のノードから前記受信側のノードにデータ送信されるまでの間の時間を受信側のノードで計測し、各ノードにおいて計測された待ち時間値をジョブ毎に集計し、集計された待ち時間量に応じてジョブの優先度を決定しジョブのスケジューリングを行うことを特徴とするので、終了予定時刻の不明なマルチノード計算においても、動的にジョブスケジューリングを行うことでスケジューリングの最適化が実現できる。また、各送信ノードが自律的にジョブスケジューリングを行うことで、システム全体のジョブ実行状態を一元管理する必要がなくなり、一元管理に伴う処理のぶつかりを回避することで、ノード数に対してスケーラブルなジョブスケジューリング最適化が実現できる。
【0091】
次に、第2の実施の形態の計算機システムについて図面を用いて詳細を説明する。
【0092】
前記第1の実施の形態では、各ノードがデータ受信の度に受信待ち情報を送信側ノードに送り返すという動作を行う。しかし送信側のジョブスケジューリングの頻度は例えば30秒毎であり、データ受信の度に受信待ち情報を送り返すことは、受信側ノードの負荷を増やすだけでなく余分な情報がネットワークに混在する原因となる。
【0093】
第2の実施の形態の計算機システムでは、受信側ノードにおいて待ち時間を一定時間集計して、これをジョブスケジューリングに活用する。なお、第1の実施の形態と同一の動作をする構成には同一の処理を付して、その詳細な説明は省略する。
【0094】
図11は第2の実施の形態の受信待ち計測回路625の構成を表すブロック図である。
【0095】
基本的な構成は図4に示す第1の実施の形態の受信待ち計測回路625と同じであるが、タイマ3000、加算機3010、積分レジスタ3020を備えること、カウンタ1120の出力を積分レジスタ3020に集計すること、集計した結果をタイマ3000が発生するインターバル信号を受けたタイミングで送信側ノードA10へ返送すること、が異なる。なお本実施の形態のタイマ3000のインターバルは10秒とする。
【0096】
以下に、この第2の実施の形態の受信待ち計測回路625の動作を説明する。
【0097】
第1の実施の形態では、受信確認フラグ1130がCPU600により“0”にセットされること、すなわち受信データを必要とする処理以外の処理が無くなり、受信データの着信を待つだけとなったタイミング、をトリガとしてノードA10に対して待ち時間情報を返送していたが、本実施の形態では、後述する通りタイマ3000からの一定間隔の同期信号(インターバル信号)をトリガにして待ち時間情報を返送する。
【0098】
また、カウンタ1120はカウントを終了した時点、すなわち受信確認フラグ1130が“1”であり受信完了フラグ1100が“0”から“1”にセットされたこと、を信号線1150及び信号線1160を経由して検知すると、カウントした待ち時間情報を信号線1170を通じて加算器3010に出力すると共に、信号線3070を通じて積分レジスタ3020に対してトリガ信号を出力する。積分レジスタ3020はこのトリガ信号を受けて値を更新する。すなわち現在の積分レジスタ3020の値とカウンタ1120の出力との和を加算器3010にて演算した値を新たに積分レジスタ3020の値とする。
【0099】
受信通知回路1140は、積分レジスタ3020に蓄積された待ち時間情報、すなわち待ち時間累計情報を、タイマ3000から信号線3080を経由して送られるインターバル信号をトリガとして信号線120を通じて送信側のノードA10に送る。このトリガによって同時に積分レジスタ3020はリセットされる。
【0100】
この際、各ノードによってタイマ3000のインターバルが異なることを考慮して、ノードA10に送る待ち時間累計情報は積分レジスタ3020の値をタイマ3000のインターバルの値で除算した値、すなわち経過した時間のうち受信を待っていた時間の割合とする。
【0101】
まず、本実施の形態の負荷バランス計算回路580の動作について説明する。
【0102】
図12は、本実施の形態の負荷バランス計測回路580の構成を表すブロック図である。
【0103】
基本的な構成は図7に示す第1の実施の形態の負荷バランス計測回路580と同じであるが、タイマ1340のリセット信号の動作が異なる。すなわち、受信待ち計測回路625から送られてきた待ち時間情報を扱う負荷バランス計算回路580は、原理的には第1の実施の形態の動作と完全に同一としても動作はするが、待ち時間情報が前述した第1の実施の形態の受信待ち計測回路625(図4)の例である10秒毎にのみ送られてくるとすると、レジスタP1460とレジスタQ1480とをCPU500が読み出すタイミングによっては待ち時間累積情報が到着した直後のノードと待ち時間累積情報が到着した直前のノードとが存在する場合があり、レジスタ値に大幅な差が発生し適切なジョブスケジューリングが行えないという問題が発生する。
【0104】
各ノードからの待ち時間累積情報が到着するタイミングが完全に一致する場合は問題にはならないが、一般にネットワーク経由ではタイミングは完全に制御できないため、本実施の形態では次のような手段を用いる。
【0105】
本実施の形態の負荷バランス計算回路580では、積分レジスタ1350〜1380の値更新のタイミングを受信待ち時間レジスタ1200〜1230の更新タイミングではなく、タイマ1340が生成し信号線1590を経由して通知されるインターバル信号を用いる。このインターバル信号は、信号線1500を通して通知されるリセット信号のインターバル及びタイマ3000(図11)のインターバル信号よりも充分に短いインターバルとすることを前提としている。例えば、信号線1500のインターバルが1分、タイマ3000のインターバルが10秒だった場合には、信号線1590のインターバルは0.1秒という値に設定する。
【0106】
各積分レジスタ1350〜1380は、0.1秒毎に、受信待ち時間レジスタ1200〜1230に記録されている値に積算器1250によって重み付けした値を積算する。これによって、受信待ち時間レジスタ1200〜1230が各ノードの受信待ち計測回路によって10秒毎にしか更新されない場合でも、積分レジスタ1350〜1380の値は0.1秒毎に更新されることになり、レジスタP1460やレジスタQ1480の値が10秒毎に大きく変更すること、すなわちレジスタP1460及びレジスタQ1480を読み出すタイミングによっては、待ち時間累積情報が到着した直後のノードと待ち時間累積情報が到着した直前のノードとが存在しレジスタ値に大幅な差が発生すること、は無くなる。
【0107】
ただし、各ノードの受信待ち計測回路から通知される待ち時間累積値そのものは受信待ちレジスタ1200〜1230の更新時、すなわち10秒毎にしか変更されないので、第1の実施の形態と比較するとジョブスケジューリングの精度は落ちるが、受信待ち時間情報については各ノードのデータ受信毎ではなく一律に10秒毎に更新するので、各ノードやノード間通信に用いるネットワークの負荷を軽減することができる。
【0108】
上記のように構成された第2の実施の形態の計算機システムは、第1の実施の形態の効果に加え、各ノードにおいて待ち時間累積値を演算し、受信側ノードに備えられたタイマのインターバル信号のタイミングによって待ち時間累積値を送信ノードに通知するので、各ノードの負荷やデータの送受信に用いるネットワークの負荷を低減することができる。
【0109】
次に、第3の実施の形態の計算機システムについて図面を用いて詳細を説明する。
【0110】
前記第1及び第2の実施の形態の計算機システムでは、ノード間のデータの送受信及びジョブスケジューリングの最適化をハードウェア動作によって実現するものであるが、第3の実施の形態の計算機システムは、それらをソフトウェアによって実現するものである。なお、第1の及び第2の実施の形態と同一の動作をする構成には同一の処理を付して、その詳細な説明は省略する。
【0111】
まず、送信側のノードにおけるデータ送信動作を説明する。
【0112】
図13は、第3の実施の形態の計算機システムのブロック図を示す。
【0113】
ノードA10はデータ送信側のノード、ノードB20、C30、D40、E50は受信側のノードである。なお、ノードB20、C30、D40、E50の内部は同一の構成とする。
【0114】
送信バッファ520はノードB20の受信バッファ620に、送信バッファ530はノードC30の受信バッファ720に、送信バッファ540はノードD40の受信バッファ820に、送信バッファ550はノードE50の受信バッファ920にそれぞれ対応する。
【0115】
図14は、送信側のノードから受信側のノードにデータを送信する動作を表すフローチャートである。ここではノードA10からノードB20にデータを送信する動作を説明する。
【0116】
ユーザジョブは、受信側のノードB20に対してデータ送信が必要になると、まず送信側のノードA10の主記憶505(図13)中の送信要求フラグが“0”である、もしくは“0”にセットされるまで待ってから、送信バッファ520にデータを書き込み、システムコールを発行してユーザモードからシステムモードへと移行しOSに処理を渡す。これを受けてOSが送信要求処理を行う(処理5000)。
【0117】
まず、OSは送信要求フラグを“0”から“1”に変更する(処理5010)。この送信要求フラグは主記憶505内に存在する初期値は“0”のフラグで、OSが管理している。フラグが“0”であれば送信バッファ520が空いていることを表し、“1”であれば送信バッファ520には未送信のデータが残っていることを表す。
【0118】
次に、受信側のノードB20の受信バッファ620が空いているかどうかを示す受信バッファ開放フラグが“1”であるかどうかを確認する(処理5040)。受信バッファ開放フラグは主記憶505内に存在する初期値は“1”のフラグで、OSが管理している。“0”であれば受信側ノードの受信バッファ620が空いていることを表し、“1”であれば受信側ノードの受信バッファ620内に送信済みだがまだ受信側ノードのユーザジョブにより読み出されていないデータが残っていることを表す。
【0119】
受信バッファ開放フラグが“1”である場合は直ちにデータの送信が可能であることを示すので、まず受信バッファ開放フラグを“0”にセットしてから(処理5050)、信号線4010を経由して受信バッファ620にデータを送る(処理5060)。データが受信バッファ620に送られると送信バッファ520は開放され空きとなるので、送信要求フラグを“1”から“0”にリセットしてから(処理5070)、OS処理からユーザジョブに復帰する(処理5080)。
【0120】
また、処理5040において受信バッファ開放フラグが“0”である場合には、受信側ノードB20から受信バッファ620の開放の通知を受けてからでないとデータを送信できないので、一旦ユーザモードに処理を切り換えユーザジョブの処理を実行する(処理5080)。
【0121】
次に受信側であるノードB20の動作を説明する。
【0122】
まず、送信側のノードA10からデータが送られてきたときの処理(図15)を説明する。
【0123】
送信側のノードA10からデータが送られてくると、CPU600(図13)に割り込みが通知される。この割り込みを受けてユーザモードからシステムモードに切り替わり、OSに処理を移行しデータを受信する(処理5350)。
【0124】
受信が完了すると、OSは受信完了フラグを“0”から“1”にセットする(処理5360)。この受信完了フラグは主記憶605内に存在する初期値“0”のフラグで、OSが管理している。フラグが“0”の場合は受信バッファが開いていることを表し、フラグが“1”の場合は受信が完了したがまだ読み出していないデータが受信バッファに残っていることを表す。
【0125】
次に、受信確認フラグを調べる(処理5370)。受信確認フラグは主記憶605内に存在する初期値“0”のフラグで、OSが管理している。フラグが“1”の場合は、受信側のノードB20のユーザジョブがデータを受信する準備ができたがまだデータを受信していないことを表す。フラグが“0”の場合は、まだユーザジョブ側の処理が済んでおらずデータを受信可能でないことを表す。この場合はシステムモードからユーザモードに処理を切り換え、ユーザジョブにスイッチする(処理5420)。
【0126】
受信確認フラグが“1”の場合には、受信バッファ読み出し処理5500に移行する。
【0127】
次に、受信側ノードB20のユーザジョブがデータを受信する準備ができ、送信側ノードA10に対しデータ受信要求を発行する場合の処理(図16)を説明する。
【0128】
ユーザジョブは、データを受信する準備ができるとシステムコールを発行し、ユーザモードからシステムモードへと移行しOSに処理を渡す。OSは受信データを受ける処理を開始する(処理5300)。
【0129】
次に、OSは受信確認フラグを“1”に変更する(処理5310)。
【0130】
次に、カウンタ4050(図13)を起動し、カウントを開始する(処理5320)。このカウンタ4050は、データ受信の準備ができてから実際にデータが送られてくるまでの時間をカウントする。
【0131】
次に、受信完了フラグを調べる(処理5330)。まだ受信データが到着していない場合(受信完了フラグが“0”の場合)には、システムモードからユーザモードに処理を切り換えユーザジョブにスイッチする(処理5340)。この場合、送信側ノードからのデータを必要とするユーザジョブに復帰したとしても、一般的には受信データ待ちである場合が多く事実上実行できる処理がないため、通信を行わない別のジョブがあればそちらにスイッチした方が効率的である。
【0132】
既に受信データが到着している場合(受信完了フラグが“1”の場合)には、受信バッファ読み出し処理5500を行う。
【0133】
次に、受信バッファ読み出す処理(図17)を説明する。
【0134】
この処理は、送信データが到着して受信が完了したときに受信確認フラグを調べたときにフラグが“1”だった場合(図15の処理5370)及び、ユーザジョブからデータ受信要求を受けて受信完了フラグを調べたときにフラグが“1”だった場合(図16の処理5330)、すなわち、必要な受信データが受信バッファ620に存在し、更にユーザジョブもデータを受信可能な状態になっているため、受信バッファからデータを読み出す処理である。
【0135】
まず、カウンタ4050のカウントを止めてカウントされた値を読み出す(処理5510)。
【0136】
この値は「ユーザジョブがデータを受信できるようになってから実際に受信できるまでの値」を表す。ユーザジョブが受信の準備ができる前に送信側ノードA10からデータが到着していた場合には、カウンタは図15の処理5320から処理5510までの間をカウントするので、極めて小さい値(すなわち待ち時間は殆ど0)となる。しかし、ユーザジョブが受信の準備ができた後に送信側ノードA10からデータが到着した場合(図16)には、カウンタを起動する図16の処理5320の後、処理5330でNO側に分岐し別のジョブを実行している時に送信側ノードからデータが到着し、これにより図15の処理5350に移行する。この後、受信確認フラグが“1”であるので図15の処理5370でYES側に分岐し、処理5510でカウンタを止めるので、「ユーザジョブがデータを受信できるようになってから実際に受信できるまでの間」をカウントする。
【0137】
次に、受信バッファを読み出し、読み出したデータをユーザジョブに渡す(処理5520)。
【0138】
受信バッファからデータが読み出されると受信バッファは空きとなるので、受信完了フラグを“0”にセットする。また、ユーザジョブの受信待ちも解消するので、受信確認フラグを“0”にセットする。この時同時にカウンタ値もリセットする(処理5530)。
【0139】
以上により、受信処理は完了するので、送信側のノードA10に受信バッファの開放を信号線4010を通じて通知すると共に、カウンタでカウントした待ち時間情報も送信側のノードA10に通知する(処理5540)。
【0140】
最後に、システムモードからユーザモードに処理を切り換え、ユーザジョブにスイッチする(処理5550)。
【0141】
次に、送信側のノードA10が受信側のノードB20から受信完了の通知を受けた場合の処理(図18)について説明する。
【0142】
まず、受信完了の通知を受けると、ユーザモードからシステムモードの処理を切り換え、ユーザジョブからOSに処理をスイッチする(処理5100)。
【0143】
次に、受信完了の通知によって受信バッファは開放されたことを示すので、受信バッファ開放フラグを“1”にセットする(処理5110)。
【0144】
次に、受信完了の通知と共に送られてきた待ち時間情報を蓄積するために、まず重み付け情報テーブル560を読み出し、該当する受信側ノードの重み付けを把握する(処理5120)。
【0145】
次に、送られてきた待ち時間情報と処理5120で把握した重み付けとの積を演算し、この値と対応する送信バッファの待ち時間蓄積値との和を新たな待ち時間蓄積値とする(処理5130)。待ち時間蓄積値は主記憶505内に存在する初期値は“0”のデータで、OSが管理する。この待ち時間蓄積値は後述するジョブのスイッチ手段に使用する。
【0146】
次に、送信要求フラグを調べる(処理5140)。この時、送信要求フラグが“0”であれば、受信側ノードB20の受信バッファ620は開放されたが、次に送るべきデータはまだ送信側バッファ520に無いことを示すので、ユーザジョブへ復帰する(処理5180)。送信要求フラグが“1”であれば、受信側ノードB20の受信バッファ620にデータを送出し、送信側ノードA10の送信バッファ520が空いた後、受信側ノード20のユーザジョブがデータ受信要求を発行し受信バッファ620からデータを読み出して受信バッファ620が空くまでの間に、送信側ノードA10のユーザジョブから次のデータ送信要求が発行され再び送信バッファ520に送信データが準備されたことを示すので、直ちにデータの送信が可能である。
【0147】
そこで、受信バッファ開放フラグを“0”にセットしてから(処理5150)、信号線4010を経由して受信バッファ620にデータを送る(処理5160)。データが受信バッファ620に送られると送信バッファ520は開放され空きとなるので、送信要求フラグを“1”から“0”にリセットしてから(処理5170)、OS処理からユーザジョブに復帰する(処理5180)。
【0148】
また、処理5140において受信バッファ開放フラグが“0”である場合には、受信側ノードB20から受信バッファ620の開放の通知を受けてからでないとデータを送信できないので、一旦ユーザモードに処理を切り換えユーザジョブの処理を実行する(処理5180)。
【0149】
上記の処理によって、OSがフラグを操作し、送信側のノードから送信バッファ、受信バッファを用いて受信側ノードにデータを送信することができる。
【0150】
次に、送信側ノードA10が演算し記録している待ち時間蓄積値を用いて、ユーザジョブを適切にスイッチする処理(図19)を説明する。
【0151】
ジョブスイッチはタイマ4000(図13)がCPU500に対して発生する割り込みにより開始する(処理5200)。
【0152】
ジョブスイッチの処理が開始されると、まずOSは各ポートの待ち時間蓄積値を読み出す(処理5210)、次に、各ポートの待ち時間蓄積値をリセットする(処理5220)。
【0153】
読み出した待ち時間蓄積値からジョブスイッチの設定値を計算するために、まず、ノードグループ情報テーブル570(図13)を読み出す(処理5230)。このノードグループ情報テーブル570によって、各ポートがいずれのユーザジョブに属するかを把握し、それぞれで待ち時間累計を出すため、各ポートの待ち時間蓄積値のジョブ毎の和を演算する(処理5240)。本実施の形態では、第1の実施の形態と同様にジョブP及びジョブQのいずれかに属するとする。
【0154】
この待ち時間累積値の和は、第1の実施の形態と同じくジョブの優先度に使用するため、計算によりジョブPとジョブQとのジョブスイッチの初期値を算出し、第1の実施の形態と同じくタイムスライス毎に図10で示す処理を行い、ユーザジョブのスイッチを適切な割合で行う。
【0155】
最後に、システムモードからユーザモードに処理を切り換え、ユーザジョブにスイッチする(処理5250)。
【0156】
以上のように構成された第3の実施の形態では、第1及び第2のの実施の形態と同一の作用及び効果、すなわち、送信側ノードから受信側ノードに対するデータの送信、各ノードの待ち時間情報の集計、待ち時間情報によってユーザジョブをスイッチするジョブスケジューリングの最適化、をOSの動作(ソフトウェア)によって実現することができる。
【図面の簡単な説明】
【図1】第1の実施の形態の計算機システムの概念図。
【図2】第1の実施の形態の計算機システムの構成を表すブロック図。
【図3】第1の実施の形態の送信制御回路525の詳細な構成を表すブロック図。
【図4】第1の実施の形態の受信待ち計測回路625の詳細な構成を表すブロック図。
【図5】第1の実施の形態の受信確認フラグ1130の状態を表す表。
【図6】第1の実施の形態の受信完了フラグ1100の状態を表す表。
【図7】第1の実施の形態の負荷バランス計算回路580の詳細な構成を表すブロック図。
【図8】第1の実施の形態の重み付けテーブル560の例を表す表。
【図9】第1の実施の形態のノードグループ情報570の例を示す表。
【図10】第1の実施の形態のジョブをスイッチするOSの処理を表したフローチャート。
【図11】第2の実施の形態の受信待ち計測回路625の構成を表すブロック図。
【図12】第2の実施の形態の負荷バランス計測回路580の構成を表すブロック図。
【図13】第3の実施の形態の計算機システムのブロック図。
【図14】第3の実施の形態の、送信側のノードから受信側のノードにデータを送信する動作を表すフローチャート。
【図15】第3の実施の形態の、送信側のノードからデータが送られてきたときの処理を表すフローチャート。
【図16】受信側ノードのユーザジョブがデータを受信する準備ができ、送信側ノードに対しデータ受信要求を発行する場合の処理を表すフローチャート。
【図17】第3の実施の形態の受信バッファ読み出す処理を表すフローチャート。
【図18】第3の実施の形態の、送信側のノードが受信側のノードから受信完了の通知を受けた場合の処理を表すフローチャート。
【図19】第3の実施の形態の、送信側ノードAが演算し記録している待ち時間蓄積値を用いてユーザジョブをスイッチする処理を表すフローチャート。
【符号の説明】
10 ノードA
20 ノードB
30 ノードC
40 ノードD
50 ノードE
100 Sノード
200、300 マルチノード計算
500、600 CPU
505、605 主記憶
520、530、540、550 送信バッファ
525、535、545、555 送信制御回路
560 重み付け情報テーブル
570 ノードグループ情報テーブル
580 負荷バランス計算回路
620、720、820、920 受信バッファ
625、725、825、925 受信待ち計測回路
1100 受信完了フラグ
1120 カウンタ
1130 受信確認フラグ
1140 受信通知回路
1200〜1230 受信待ち時間レジスタ
1250〜1280 積算器
1300〜1330 加算器
1340 タイマ
1350〜1380 積分レジスタ
1400〜1430 スイッチ
1450、1470 加算器
1460 レジスタP
1480 レジスタQ
2000〜2040 処理
3000 タイマ
3010 加算器
3020 積分レジスタ
4000 タイマ
4010〜4040 信号線
4050 カウンタ
110〜180、510、515、610、1000、1050〜1065、1150〜1190、1500〜1650、3050〜3080 信号線[0001]
BACKGROUND OF THE INVENTION
The present invention relates to job scheduling in a parallel type or grid type computer system constructed by a plurality of nodes, and relates to a method for determining priority between jobs for improving the efficiency of the entire system, and communication for realizing the determination method. Regarding the method.
[0002]
[Prior art]
A single node consisting of one or more CPUs and main memory is used as a unit, and this node is connected via a network to move jobs and data between nodes, or to perform large calculations by linking multiple nodes. The system is called a parallel type or grid type computer system. A parallel type or grid type computer system is an essential component for constructing a large-scale system using more than 1000 CPUs. Although the difference between the names of the grid type computer system and the parallel type computer occurs depending on the physical spread of the system and the performance and specifications of the connected network, the present invention does not distinguish between the two.
[0003]
When executing a large calculation (hereinafter referred to as “multi-node calculation”) using a plurality of nodes simultaneously in this parallel or grid type computer system, it is important how to map each node efficiently. This mapping is basically based on occupying each node with one job. The job here refers to a part of multi-node calculation that is obtained by dividing multi-node calculation into each node. Occupying each node with one job requires high processing performance. One node executes multiple jobs at the same time, that is, the same node is involved in multiple multi-node calculations at the same time. There is no merit just to reduce efficiency.
[0004]
However, if the data owned by each node is not homogeneous and multiple nodes need data that only one node has, the node that owns the data is involved in multiple nodes. The overall system efficiency may increase. For example, only a certain node (hereinafter referred to as “node A”) has original data (hereinafter referred to as “data L”) necessary for calculation on the main memory or disk, and the data L is being calculated. In the case of executing two multi-node calculations that are referred to many times at the same time, the following two execution methods are conceivable.
[0005]
(Execution Method 1) The data L of the node A is copied to another node to increase the number of nodes having the data L to two, and one node is added to each multi-node calculation.
[0006]
(Execution method 2) The node A that owns the data L is used in both two multi-node calculations. Node A executes two jobs while switching them.
[0007]
In general calculation processing, the original data is huge, but the data used in the calculation is a part of the original data. However, it is unclear which data of the original data is used at the start of calculation, and it is often determined which data is used for the first time during the execution of the calculation. For this reason, the execution method 1 does not know which data L is to be used, and therefore all of the data L is copied, which is wasteful. Therefore, in many cases, it is more realistic to use the execution method 2. That is, node A is involved in both two multi-node calculations.
[0008]
Thus, when node A is involved in two multi-node calculations, the execution method of the two jobs in node A affects the efficiency of the entire system. That is, based on what schedule the two jobs are executed in node A (for example, both jobs are executed equally by switching both jobs one second at a time. Repeating the execution of another job for 1 second after executing it for 5 seconds preferentially executes the latter job) is an important factor for improving the efficiency of the entire system. Determining scheduling so as to improve the efficiency of the entire system is referred to herein as “job scheduling optimization”.
[0009]
Regarding the job scheduling optimization problem, the invention described in JP-A-8-137910 discloses means for optimization at the start of calculation. Specifically, the scheduled end time of each node is calculated at the start of calculation, and the job related to the multi-node calculation is executed with the highest priority for the slowest node, that is, the node that determines the speed of multi-node calculation. For the node, job scheduling is optimized by allowing execution of other jobs within a range not exceeding the scheduled end time.
[0010]
[Problems to be solved by the invention]
The invention described in Japanese Patent Laid-Open No. 8-137910 is effective for a process in which a scheduled end time can be determined at the start of a job, but a calculation in which the amount of processing ahead is determined based on the calculation result, for example, a convergence calculation (calculation It is not possible to use it effectively in a process such as repeatedly calculating until the result converges.
[0011]
Further, in the invention described in Japanese Patent Laid-Open No. 8-137910, a processing method having a table for centrally managing the calculation state of each node is disclosed, but also for a large-scale multi-node calculation using several hundred nodes. In order to realize scalable job scheduling optimization that can be handled, this form is not appropriate because it causes table access collisions. Each node can autonomously optimize job scheduling. is necessary.
[0012]
[Means for Solving the Problems]
The present invention Send and receive data and perform multi-node calculations based on the sent and received data A plurality of nodes, and a communication path for performing data communication between the nodes, One job among a plurality of jobs constituting the multi-node calculation is executed by occupying the plurality of nodes by predetermined scheduling, and the multi-node calculation is executed by sequentially switching the jobs to be executed. In a parallel type or grid type computer system, the node includes a transmission-side node that transmits data, and a reception-side node that processes a job depending on the transmitted data, The receiving node is required to process the one job After you need the data , Receive the necessary data Until It took A waiting time measuring means for measuring a time value, and the time value The plurality of Aggregate by job And calculate the cumulative value of the time value required by each node for the one job. Load balance counting means to A time for occupying the node for the processing of the one job is calculated according to the calculated cumulative value, and a job with a large cumulative value increases the holding time, and a job with a smaller cumulative value Controls the priority of the plurality of jobs by reducing the holding time Job scheduling means.
[0013]
[Operation and effect of the invention]
The present invention Send and receive data and perform multi-node calculations based on the sent and received data A plurality of nodes, and a communication path for performing data communication between the nodes, One job among a plurality of jobs constituting the multi-node calculation is executed by occupying the plurality of nodes by predetermined scheduling, and the multi-node calculation is executed by sequentially switching the jobs to be executed. In a parallel type or grid type computer system, the node includes a transmission-side node that transmits data, and a reception-side node that processes a job depending on the transmitted data, The receiving node is required to process the one job After you need the data , Receive the necessary data Until It took A waiting time measuring means for measuring a time value, and the time value The plurality of Aggregate by job And calculate the cumulative value of the time value required by each node for the one job. Load balance counting means to A time for occupying the node for the processing of the one job is calculated according to the calculated cumulative value, and a job with a large cumulative value increases the holding time, and a job with a smaller cumulative value Controls the priority of the plurality of jobs by reducing the holding time Therefore, even in multi-node calculation where the scheduled end time is unknown, the scheduling can be optimized by dynamically performing job scheduling. In addition, each sending node autonomously performs job scheduling, which eliminates the need to centrally manage the job execution status of the entire system, and avoids collisions in the processing associated with centralized management, making it scalable to the number of nodes. Job scheduling optimization can be realized.
[0014]
DETAILED DESCRIPTION OF THE INVENTION
Details of the computer system according to the first embodiment of this invention will be described below with reference to the drawings.
[0015]
FIG. 1 is a conceptual diagram of a computer system according to the first embodiment of this invention.
[0016]
Five nodes of nodes A10, B20, C30, D40, and E50 are involved in the calculation. There are two multi-node calculations performed by each of these nodes: a multi-node calculation 200 and a multi-node calculation 300. The node A executes a job of the multi-node calculation 200 (hereinafter referred to as “job P”) and a job of the multi-node calculation 300 (hereinafter referred to as “job Q”). Node B and node C execute only job P, and node D and node E execute only job Q.
[0017]
In each multi-node calculation, data communication between nodes is repeatedly executed. That is, data is repeatedly transmitted from the node A10 to the nodes B20, C30, D40, and E50. Since the nodes B20, C30, D40, and E50 use data sent from the node A10 during the calculation, if the execution of the job P is delayed in the node A10, the node B20 and the node C30 increase the data waiting time from the node A10, When execution of job Q is delayed at node A10, node D40 and node E50 increase the waiting time from node A10. That is, the scheduling method of job P and job Q in node A10 determines the efficiency of the entire system.
[0018]
There are several methods for optimizing the job scheduling method. For example, when job P is greatly prioritized in node A10 (for example, job Q is executed for 1 second after job P is executed for 10 seconds). In general, the waiting time between the node D40 and the node E50 increases, and the efficiency of the entire system decreases. However, since the job P requires much processing time for the job Q, the node B20 and the node C30 have a large waiting time even though the job P is greatly prioritized, and the node D40 and the node In the case where there is no waiting time for E50, the priority of the job P further increases the efficiency of the entire system.
[0019]
In the computer system according to the first embodiment, the amount of waiting time actually generated at the receiving side nodes B20, C30, D40, and E50 is returned to the transmitting side node A10 (processing 120 to 150 in FIG. 1). The waiting time amount is totaled for each job in the transmission side node A10, and job scheduling is determined.
[0020]
In the first embodiment, the S-node 100 serving as the information supervisor determines whether each node is in a transmission / reception relationship with any node and the communication port of each node is used for which job. Grasp and distribute to each node. Further, when the processing of each node is inhomogeneous, the S node 100 also distributes weighting information corresponding to the difference in processing of each node. This weighting information is used when, for example, the node B20 is faster than the other nodes, and waiting for the node B20 for 1 second is more problematic in terms of the efficiency of the entire system than waiting for another node for 1 second. In this case, the node B20 is weighted more than other nodes and is taken into consideration when calculating the waiting time amount (a specific method will be described later). Since the node weighting information only needs to be distributed to each node once at the time of system construction and once at the start of multi-node calculation, the processing amount of the S node 100 is small. Therefore, instead of preparing the independent S node 100 as shown in FIG. 1, any one of the nodes that execute the calculation may also serve as the S node.
[0021]
Hereinafter, a data transmission / reception procedure for the computer system according to the first embodiment will be described, and then a job scheduling method will be described.
[0022]
First, a data transmission / reception method will be described.
[0023]
FIG. 2 is a block diagram showing the configuration of the computer system according to the first embodiment.
[0024]
Node A10 transmits data, and nodes B20, C30, D40, and E50 receive data. Node A10 has only resources on the transmission side (transmission buffer 520, transmission control circuit 525, weighting information table 560, node group information table 570, load balance calculation circuit 580), and nodes B20, C30, D40, and E50 have reception side resources. Only resources (reception buffers 620, 720, 820, 920, reception waiting measurement circuits 625, 725, 825, 925) are shown. In the first embodiment, a node that performs transmission and a node that performs reception are separated. However, each node may perform both transmission and reception. When each node performs transmission / reception, it is necessary for each node to have a resource on the transmission side and a resource on the reception side.
[0025]
The node A10 has 4 transmission ports and can transmit to 4 nodes. Specifically, there are four transmission buffers 520 to 550. When the number of divisions for multi-node calculation is large and the node A10 needs to transmit data to more jobs, it is necessary to further increase the number of ports.
[0026]
In the first embodiment, all communication destinations of each port are connected to another node, but one port is not prepared for each node, but is determined by the number of destination jobs. For example, in a case where two jobs are executed in the node B20 and transmitted from the node A10 to each job, two ports are used for the node B20. Even if the number of ports is further increased, the essence of the present invention does not change, and the implementation method can be easily analogized.
[0027]
Next, a data transmission method from the node A10 to the node B20 will be described.
[0028]
Data transmission is performed using the transmission buffer 520 and the reception buffer 620. In this case, “transmission data is written when there is no space in the transmission buffer 520”, “transmission is performed when there is no space in the reception buffer 620”. It is necessary to prevent “data being written from the buffer 520 to the reception buffer 620” and “reading the reception buffer 620 when transmission data has not yet been written to the reception buffer 620”. Therefore, in data transmission, the CPU 500, the CPU 600, the transmission control circuit 525, and the reception waiting measurement circuit 625 are controlled using various flags.
[0029]
This data transmission control procedure will be described with reference to FIG.
[0030]
FIG. 3 shows a detailed configuration of the transmission control circuit 525 of the node A10 shown in FIG.
[0031]
The transmission control circuit 525 includes a transmission request generation circuit 1010, a transmission request flag 1020, and a reception buffer release flag 1030.
[0032]
The CPU 500 checks the transmission request flag 1020 via the signal line 1000. This transmission request flag 1020 is a flag indicating whether or not there is a data transmission request. When the transmission request flag 1020 is “0” (that is, no transmission request has been issued or transmission has ended), the transmission data is copied from the main memory 505 (FIG. 2) to the transmission buffer 520. When the transmission request flag 1020 is “1” (that is, during transmission), the CPU 500 waits until the transmission request flag 1020 becomes “0” before copying the transmission data to the transmission buffer 520. The transmission request generation circuit 1010 sets the transmission request flag 1020 from “1” to “0”. This operation will be described later.
[0033]
If the transmission request flag 1020 is “0”, the CPU 500 copies transmission data to the transmission buffer 520 and then sets “1” to the transmission request flag 1020 via the signal line 1000. The transmission request generation circuit 1010 is notified via the signal line 1050 that the transmission request flag 1020 is set.
[0034]
Upon receiving this notification, the transmission request generation circuit 1010 checks the value of the reception buffer release flag 1030 notified via the signal line 1060. The reception buffer release flag 1030 is a flag indicating whether or not the reception buffer on the reception side is free. The initial value of the reception buffer release flag 1030 is “1”, which indicates that the reception buffer is empty. It is “0” if the reception buffer is in use. When the transmission request generation circuit 1010 checks the reception buffer release flag 1030, if it is “1”, the reception buffer is open, so that the transmission buffer 520 is requested to transmit data via the signal line 510, and the signal The reception buffer release flag 1030 is set to “0” via the line 1065.
[0035]
When the transmission request generation circuit 1010 checks the reception buffer release flag 1030, if it is “0”, the reception buffer is in use, so it waits without transmitting until the reception buffer release flag 1030 is set to “1”. . In order for the reception buffer release flag 1030 to be set from “0” to “1”, it is necessary to notify the reception side node B 20 of the release of the buffer via the signal line 120, which will be described later.
[0036]
When the transmission buffer 520 receives a data transmission request via the signal line 510, the transmission buffer 520 transmits the data to the reception buffer 620 of the receiving node B 20 via the signal line 110. When the data transmission is completed, the transmission request generation circuit 1010 is notified of the end of the data transmission via the signal line 515. Upon receiving the notification, the transmission request generation circuit 1010 sets the transmission request flag 1020 from “1” to “0” via the signal line 1055. The transmission request flag 1020 allows the CPU 500 to know via the signal line 1000 that data transmission has been completed.
[0037]
FIG. 4 shows a detailed configuration of the reception waiting measurement circuit 625 of the node B 20 shown in FIG. The reception waiting measurement circuit 625 includes a reception completion flag 1100, a count 1120, a reception confirmation flag 1130, and a reception notification circuit 1140.
[0038]
When data is written in the reception buffer 620, the reception buffer 620 sets the reception completion flag 1100 from “0” to “1” via the signal line 610. The reception completion flag 1100 is a flag having an initial value “0”, and is “1” until data is read by the CPU 600 after arrival. The operation of setting the reception completion flag from “1” to “0” will be described later.
[0039]
The reception notification circuit 1140 is notified via the signal line 1150 that the reception completion flag 1100 has become “1”. In response to this notification, the reception notification circuit 1140 checks the value of the reception confirmation flag 1130 via the signal line 1160. If the value of the reception confirmation flag 1130 is “0”, the reception notification circuit 1140 does nothing, and if the flag is “1”, it interrupts the CPU 600 via the signal line 1190 (received data arrival). Notification). The reception confirmation flag 1130 is a flag having an initial value “0”, and the CPU 600 passes through the signal line 1180 when the CPU 600 of the receiving node B 20 waits for reception data scheduled to arrive at the reception buffer 620. The reception confirmation flag 1130 is set to “1”.
[0040]
The timing at which the CPU 600 sets the reception confirmation flag 1130 to “1” is “a timing at which processing using received data can be started although there are other processing” or “processing other than processing using received data”. It depends on the application whether or not it is appropriate to wait for the reception of received data. In this embodiment, since the setting of the reception confirmation flag 1130 is also used for the measurement of the waiting time by a counter, which will be described later, “no processing other than the processing using the received data is eliminated and only waiting for the reception of the received data. Timing.
[0041]
The CPU 600 notified of the interrupt via the signal line 1190 copies the data from the reception buffer 620 to the main memory 605 (FIG. 2). When the copying is completed, the CPU 600 sets the reception confirmation flag 1130 from “1” to “0” via the signal line 1180.
[0042]
The reception notification circuit 1140 sets the reception completion flag 1100 from “1” to “0” when notified through the signal line 1160 that the reception confirmation flag 1130 has changed from “1” to “0”. . At the same time, the reception notification circuit 1140 notifies the transmission control circuit 525 of the node A 10 via the signal line 120 that reception is complete, that is, the reception buffer 620 is empty. By this notification, the reception buffer release flag 1030 (FIG. 3) is set from “1” to “0”, and new data can be transmitted.
[0043]
Through the above operation, data transmission from the node A10 to the node B20 is performed, and each flag returns to the initial value by a series of operations.
[0044]
In this embodiment, as shown in FIG. 2, separate bidirectional signal lines 110 to 150 are prepared between the node A10 and the nodes B20, C30, D40, and E50. By using a LAN or the like, the essential operation does not change even when the data transmission physical signal line of the node A10 is one or when the control signal and the data transmission / reception physical signal line are one.
[0045]
The job scheduling method using the waiting time for data transmission / reception according to this embodiment will be described below.
[0046]
First, the operation of the counter for measuring the waiting time amount and the flag for controlling the counter will be described.
[0047]
The operation of the reception waiting measurement circuit 625 in the reception-side node B 20 has been described above. Of these, the reception confirmation flag 1130 is shown in FIG. 5, and the state of the reception completion flag 1100 is shown in FIG.
[0048]
In FIG. 5, the initial value of the reception confirmation flag 1130 is “0”, and is set to “1” when the CPU 600 starts waiting for received data, and is set to “0” when the CPU 600 finishes reading the received data. .
[0049]
In FIG. 6, the initial value of the reception confirmation flag 1100 is “0”, and is set to “1” when data arrives at the reception buffer 620, and is set to “0” when the CPU 600 finishes reading the received data. .
[0050]
Here, in FIG. 5 and FIG. 6, when the reception confirmation flag 1130 is “1” and the reception completion flag 1100 is “0”, the reception-side Node B 20 has stopped processing waiting for data arrival. Indicates.
[0051]
The counter 1120 (FIG. 4) indicates that the reception confirmation flag 1130 is “1” and the reception completion flag 1100 is “0” (that is, the receiving side node B 20 is waiting for data and the received data has not yet arrived at the buffer). When the signal line 1150 and the signal line 1160 are detected), the count operation is started. The count operation is stopped when the reception completion flag 1100 becomes “1”, and the count value is reset when the reception confirmation flag 1130 changes from “1” to “0”. In addition, there is a case where the reception data arrives at the reception buffer 620 before the CPU 600 waits for data reception, that is, the reception completion flag becomes “1” before the reception confirmation flag becomes “1”. In this case, since the count operation condition “reception confirmation flag 1130 is“ 1 ”and reception completion flag 1100 is“ 0 ”” is never satisfied, the counter 1120 does not start the count operation.
[0052]
The waiting time value counted by the counter 1120 is transmitted to the reception notification circuit 1140 via the signal line 1170. The reception notification circuit 1140 notifies the node A 10 of this waiting time value via the signal line 120 when notifying that the reception buffer 620 is free.
[0053]
Next, the operation of the load balance calculation circuit 580 (FIG. 2) that totals the accumulated amount of waiting time for each job will be described.
[0054]
FIG. 7 is a block diagram illustrating a detailed configuration of the load balance calculation circuit 580 of the node A10.
[0055]
The load balance calculation circuit 580 includes reception waiting time registers 1200 to 1240, accumulators 1250 to 1280, adders 1300 to 1330, integration registers 1350 to 1380, switches 1400 to 1440, adders 1450 to 1460, register P1460, register Q1480, Timer 1340.
[0056]
The waiting time amount notified to the node A 10 is written into the reception waiting time register 1200 via the signal line 120.
[0057]
The reception wait time register 1200 notifies the integrator 1250 of the written wait time and requests the integration register 1350 to add the wait time via the signal line 1510. The accumulator 1250 calculates the product of the waiting time amount transmitted from the reception waiting time register 1200 and the weight of the corresponding port recorded in the weighting table 560 (FIG. 2).
[0058]
An example of this weighting table 560 is shown in FIG. Port X is a transmission buffer 520, port Y is a transmission buffer 530, port Z is a transmission buffer 540, and port U is a port ID representing a transmission buffer 550. Since the integrator 1250 calculates the weighting of the transmission buffer 520, that is, the port X, the value “0.5” corresponding to the port X is transmitted to the integrator 1250 via the signal line 1550. The accumulator 1250 calculates the product of the reception wait time register 1200 and “0.5” and notifies the adder 1300 of the product. The values of the weighting table 560 are notified from the S node 100 (FIG. 2) to the node A10 via the signal line 180 together with the values of the node group information table 570 (FIG. 2) described later.
[0059]
In FIG. 2, the signal line 180 is represented as a dedicated signal line. However, the present invention can also be applied to the case where a signal line physically used for data transmission / reception is used using a LAN or the like. In this embodiment, the weighting information is calculated at the data transmission side node, that is, the node that receives the reception waiting time information. However, the weighting information may be calculated at the data reception side node, that is, the node that sends the reception waiting time information. Good. In this case, the information of the weighting table is held by each node for its own node (or each reception port of its own node).
[0060]
The adder 1300 calculates the sum of the value notified from the integrator 1250 and the value already in the integration register 1350 and notifies the integration register 1350. Here, when the integration register 1350 detects that the waiting time amount information has been newly written from the reception waiting time register 1200 via the signal line 1510, the integration register 1350 has already been registered in the integration register 1350. The sum of the value and the value newly arrived at the adder 1300 from the reception wait time register 1200 via the integrator 1250 is calculated and set as the value of the integration register 1350.
[0061]
When the values entered in each register are arranged, the reception waiting time register 1200 records the waiting time amount of the receiving node in communication using the corresponding port (in this case, communication using the transmission buffer 520), and the integration register 1350 Records the cumulative amount of waiting time in multiple communications. The accumulated waiting time is reset by an interval signal (for example, a signal generated every minute) notified by the timer 1340 via the signal line 1500. This is because the waiting time amount according to the latest scheduling of each job is reflected in the integration register 1350 by appropriately resetting the integration value.
[0062]
The same operation is performed for each of the other ports. Integration register 1350 has port X, that is, accumulated waiting time of data sent from transmission buffer 520, integration register 1360 has port Y, that is, accumulated waiting time of data sent from transmission buffer 530, integration register 1370 has port Z, That is, the accumulated waiting time of data sent from the transmission buffer 540 is recorded in the integration register 1380, and the accumulated waiting time of data sent from the port U, that is, the transmission buffer 550 is recorded. Note that all integration registers 1350 to 1380 are simultaneously reset by the signal line 1500 using the reset signal of the timer 1340 as a trigger.
[0063]
The total waiting time recorded in each integration register 1350 to 1380 is summed up for each job by adders 1450 and 1470 via switches 1400 to 1430. The value calculated by the adder 1450 is recorded in the register P1460, and the value calculated by the adder 1470 is recorded in the register Q1480.
[0064]
Which job is the sum total of the waiting time is determined by the switches 1400 to 1430 to the adder 1450 according to the information transmitted from the node group information table 570 (FIG. 2) via the signal lines 1600 to 1630. By switching whether to output to the adder 1470, it is divided into each register.
[0065]
An example of the contents of this node group information table 570 is shown in FIG. The IDs of the ports X to U correspond to the transmission buffers 520 to 550 as in the weighting information table 560. For example, the accumulated waiting time recorded in the integration register 1350 becomes job P = 1 and job Q = 0 according to the information of the port X, and this information is notified to the switch 1400 via the signal line 1600. The switch 1400 outputs the value of the integration register 1350 to the adder 1450, and as a result, is added to the register P1460.
[0066]
The total is stored in the two registers, register P1460 and register Q1480, because in this embodiment, node A10 has two jobs (job P and job Q) executed simultaneously. It is necessary to prepare an adder and a register according to the number of jobs executed simultaneously.
[0067]
The values recorded in the register P1460 and the register Q1480 by the above processing are as follows: the register P1460 is the sum total of the time each node has been waiting for the job P, and the register Q1480 is the node that is waiting for the job Q. The total sum of each time.
[0068]
The CPU 500 of the node A10 can read out the registers P and Q via the signal line 1650 and the signal line 1660 (FIG. 7). Since the register is reset by the timer 1340, the CPU 500 needs to read the register P1460 and the register Q1480 at the same time.
[0069]
Next, the operation when the CPU 500 reads the information in the registers P1460 and Q1480 and uses it for job scheduling will be described.
[0070]
First, the CPU 500 reads the value of the register P1460 and the value of the register Q1480 at the timing of changing job scheduling (for example, every 30 seconds). As a result, for example, it is assumed that the value of the register P1460 is 10 and the value of the register Q1480 is 20. This indicates that the waiting time received by the other nodes due to the progress of the job Q is more serious than the waiting time received by the other nodes due to the progress of the job P. In this case, the efficiency of the entire system can be improved by making the priority of job Q higher than that of job P.
[0071]
Next, a job priority control method will be described.
[0072]
The job priority is controlled by determining the initial time for each job. For example, when the initial time for job P is 3 seconds and the initial time for job Q is 2 seconds, job P is executed for 3 seconds and the time for job P is used. After reaching 0, job Q is executed for 2 seconds, and then job P is executed again for 3 seconds.
[0073]
In this embodiment, the initial time value of each job is determined using the following Equation 1 and Equation 2.
[0074]
[Expression 1]
Figure 0004133068
[0075]
[Expression 2]
Figure 0004133068
In Equations 1 and 2, the register P value is the value when the register P1460 is read, the register Q value is the value when the register Q1480 is read, and the average register value is the average value of the register P value and the register Q value. .
[0076]
Td is a parameter for determining a time variable, and is set to a smaller value than each initial time value. For example, if each initial time value is on the order of several seconds, such as “initial value of job P is 3 seconds and initial value of job Q is 2 seconds”, Td is 1 second or less. Is a value of about 0.2 to 0.5 seconds. For example, when the priority of job P is to be increased, the initial value of job P is increased so that the amount that changes at a time is equal to or less than Td, and the initial value of job Q is decreased by the same amount. Represents.
[0077]
Here, for example, when the number of jobs is three and it is necessary to handle the job R (the register R is also prepared and the register R value can be read out), the following equation may be used.
[0078]
[Equation 3]
Figure 0004133068
[0079]
[Expression 4]
Figure 0004133068
[0080]
[Equation 5]
Figure 0004133068
The average register value when job R is included means the average value of the register P value, the register Q value, and the register R value. Further, the average value is similarly used when the number of registers increases.
[0081]
Next, an operation related to an OS that manages jobs will be described for the process of performing the job switch operation after determining the initial time for each job according to Equations 1 to 2 or 3 to 5.
[0082]
FIG. 10 is a flowchart showing OS processing for switching jobs. In this process, for the waiting time value generated in each job (P and Q), the processing of job P is executed as much as the waiting time value of job P, and the job is switched. Job scheduling is performed by repeating processing such as executing for the same time as the waiting time value.
[0083]
First, as an initial state, the current job is set to “job P” and the waiting time is set to “P initial value” (process 2000).
[0084]
Next, the processing is shifted from the system mode to the user mode, the processing is switched from the OS to the current job, and the job is executed (processing 2010).
[0085]
Here, the process is shifted to the system mode and the process is switched to the OS, and the time slice interrupt value (generally at an interval of 10 milliseconds) is subtracted from the P initial value (waiting time value) (process 2020).
[0086]
Next, the value of the subtracted waiting time value is checked (processing 2030). If the waiting time value is equal to or greater than 0, the processing proceeds to processing 2010, the current job is executed, and processing for further subtracting the time slice value from the waiting time value (processing 2020) is repeated. If the time value is 0 or less, the process proceeds to processing 2040 and the job is switched.
[0087]
In process 2040, the job is switched from P to Q, or from Q to P, the process proceeds to process 2010, and the process is executed for the new job.
[0088]
The job switching operation is executed by the above operation.
[0089]
The computer system according to the first embodiment measures the time that the receiving node waits for data from the transmitting side node by the series of processes described above, totals each job, and counts the waiting time. Job scheduling is optimized by switching and executing each job according to the time accumulation value.
[0090]
In the computer system according to the first embodiment configured as described above, a parallel type or a grid type including a plurality of nodes that transmit and receive data and a communication path that performs data communication between the nodes. In this computer system, the node includes a transmission-side node that transmits data, and a reception-side node that processes a job that depends on the data to be transmitted. The time from when the data is transmitted to the receiving node is measured at the receiving node, the waiting time value measured at each node is counted for each job, and the waiting time amount is counted according to the total waiting time amount. Since job priority is determined and job scheduling is performed, job scheduling can be performed dynamically even in multi-node calculations where the scheduled end time is unknown. Optimization scheduling by performing ring can be realized. In addition, each sending node autonomously performs job scheduling, which eliminates the need to centrally manage the job execution status of the entire system, and avoids collisions in the processing associated with centralized management, making it scalable to the number of nodes. Job scheduling optimization can be realized.
[0091]
Next, details of the computer system according to the second embodiment will be described with reference to the drawings.
[0092]
In the first embodiment, each node performs an operation of sending reception waiting information back to the transmitting side node every time data is received. However, the frequency of job scheduling on the transmission side is, for example, every 30 seconds, and sending back reception waiting information every time data is received not only increases the load on the reception side node but also causes extra information to be mixed in the network. .
[0093]
In the computer system of the second embodiment, the waiting time is totaled for a certain time in the receiving side node, and this is used for job scheduling. In addition, the same process is attached | subjected to the structure which performs the same operation | movement as 1st Embodiment, and the detailed description is abbreviate | omitted.
[0094]
FIG. 11 is a block diagram illustrating a configuration of the reception waiting measurement circuit 625 according to the second embodiment.
[0095]
The basic configuration is the same as the reception waiting measurement circuit 625 of the first embodiment shown in FIG. 4 except that it includes a timer 3000, an adder 3010, and an integration register 3020, and outputs the counter 1120 to the integration register 3020. The counting is different from returning the counting result to the transmitting side node A10 at the timing when the interval signal generated by the timer 3000 is received. Note that the interval of the timer 3000 in this embodiment is 10 seconds.
[0096]
The operation of the reception waiting measurement circuit 625 according to the second embodiment will be described below.
[0097]
In the first embodiment, the timing when the reception confirmation flag 1130 is set to “0” by the CPU 600, that is, there is no processing other than the processing that requires the reception data, and only waiting for the reception of the reception data, However, in this embodiment, the waiting time information is returned by using a synchronization signal (interval signal) from the timer 3000 as a trigger, as will be described later. .
[0098]
When the counter 1120 finishes counting, that is, the reception confirmation flag 1130 is set to “1” and the reception completion flag 1100 is set from “0” to “1” via the signal line 1150 and the signal line 1160. Then, the counted waiting time information is output to the adder 3010 through the signal line 1170, and a trigger signal is output to the integration register 3020 through the signal line 3070. The integration register 3020 receives this trigger signal and updates the value. That is, a value obtained by calculating the sum of the current value of the integration register 3020 and the output of the counter 1120 by the adder 3010 is newly set as the value of the integration register 3020.
[0099]
The reception notification circuit 1140 uses the interval signal sent from the timer 3000 via the signal line 3080 as a trigger for the waiting time information accumulated in the integration register 3020, that is, the waiting time accumulated information, as a trigger through the signal line 120. Send to. The integration register 3020 is simultaneously reset by this trigger.
[0100]
At this time, considering that the interval of the timer 3000 is different for each node, the waiting time cumulative information to be sent to the node A10 is a value obtained by dividing the value of the integration register 3020 by the interval value of the timer 3000, that is, the elapsed time. The percentage of time waiting for reception.
[0101]
First, the operation of the load balance calculation circuit 580 of this embodiment will be described.
[0102]
FIG. 12 is a block diagram showing the configuration of the load balance measurement circuit 580 of the present embodiment.
[0103]
Although the basic configuration is the same as that of the load balance measuring circuit 580 of the first embodiment shown in FIG. 7, the operation of the reset signal of the timer 1340 is different. That is, the load balance calculation circuit 580 that handles the waiting time information sent from the reception waiting measuring circuit 625 operates in principle even if it is completely the same as the operation of the first embodiment. Is sent only every 10 seconds, which is an example of the reception waiting measurement circuit 625 (FIG. 4) of the first embodiment described above, depending on the timing at which the CPU 500 reads the register P1460 and the register Q1480. There may be a node immediately after the accumulated information arrives and a node immediately before the waiting time accumulated information arrives, which causes a problem that a significant difference occurs in register values and appropriate job scheduling cannot be performed.
[0104]
This is not a problem when the timings at which the accumulated waiting time information from the nodes arrives completely coincide with each other, but generally the timing cannot be controlled completely via the network, and therefore, the following means is used in this embodiment.
[0105]
In the load balance calculation circuit 580 according to the present embodiment, the value update timing of the integration registers 1350 to 1380 is not the update timing of the reception wait time registers 1200 to 1230, but is generated by the timer 1340 and notified via the signal line 1590. An interval signal is used. This interval signal is assumed to be sufficiently shorter than the interval of the reset signal notified through the signal line 1500 and the interval signal of the timer 3000 (FIG. 11). For example, when the interval of the signal line 1500 is 1 minute and the interval of the timer 3000 is 10 seconds, the interval of the signal line 1590 is set to a value of 0.1 seconds.
[0106]
Each integration register 1350 to 1380 integrates the value weighted by the accumulator 1250 to the value recorded in the reception waiting time register 1200 to 1230 every 0.1 second. As a result, even when the reception waiting time registers 1200 to 1230 are updated only every 10 seconds by the reception waiting measurement circuit of each node, the values of the integration registers 1350 to 1380 are updated every 0.1 seconds. Depending on the timing at which the values of the register P1460 and the register Q1480 change greatly every 10 seconds, that is, the timing at which the register P1460 and the register Q1480 are read, the node immediately after the arrival of the waiting time accumulation information and the node immediately before the arrival of the waiting time accumulation information And there will be no significant difference in register values.
[0107]
However, since the accumulated waiting time value notified from the reception waiting measurement circuit of each node is changed only when the reception waiting registers 1200 to 1230 are updated, that is, every 10 seconds, job scheduling is compared with the first embodiment. However, since the reception waiting time information is uniformly updated every 10 seconds instead of every data reception of each node, the load on the network used for each node and inter-node communication can be reduced.
[0108]
In the computer system according to the second embodiment configured as described above, in addition to the effects of the first embodiment, the waiting time accumulated value is calculated in each node, and the interval of the timer provided in the receiving side node is calculated. Since the waiting time accumulated value is notified to the transmitting node according to the signal timing, the load on each node and the load on the network used for data transmission / reception can be reduced.
[0109]
Next, details of the computer system according to the third embodiment will be described with reference to the drawings.
[0110]
In the computer systems of the first and second embodiments, data transmission / reception between nodes and optimization of job scheduling are realized by hardware operations. The computer system of the third embodiment They are realized by software. In addition, the same process is attached | subjected to the structure which performs the same operation | movement as 1st and 2nd embodiment, The detailed description is abbreviate | omitted.
[0111]
First, the data transmission operation in the transmission side node will be described.
[0112]
FIG. 13 is a block diagram of a computer system according to the third embodiment.
[0113]
Node A10 is a data transmission side node, and nodes B20, C30, D40, and E50 are reception side nodes. The insides of the nodes B20, C30, D40, and E50 have the same configuration.
[0114]
The transmission buffer 520 corresponds to the reception buffer 620 of the node B20, the transmission buffer 530 corresponds to the reception buffer 720 of the node C30, the transmission buffer 540 corresponds to the reception buffer 820 of the node D40, and the transmission buffer 550 corresponds to the reception buffer 920 of the node E50. .
[0115]
FIG. 14 is a flowchart showing an operation of transmitting data from a transmission side node to a reception side node. Here, an operation of transmitting data from the node A10 to the node B20 will be described.
[0116]
When a user job needs to transmit data to the node B 20 on the receiving side, first, the transmission request flag in the main memory 505 (FIG. 13) of the node A 10 on the transmitting side is “0” or set to “0”. After waiting until it is set, data is written to the transmission buffer 520, a system call is issued, the mode is changed from the user mode to the system mode, and the process is passed to the OS. In response to this, the OS performs a transmission request process (process 5000).
[0117]
First, the OS changes the transmission request flag from “0” to “1” (process 5010). This transmission request flag is an initial value flag “0” existing in the main memory 505, and is managed by the OS. If the flag is “0”, it indicates that the transmission buffer 520 is empty, and if it is “1”, it indicates that untransmitted data remains in the transmission buffer 520.
[0118]
Next, it is confirmed whether or not the reception buffer release flag indicating whether or not the reception buffer 620 of the reception-side Node B 20 is free is “1” (process 5040). The reception buffer release flag is an initial value “1” in the main memory 505 and is managed by the OS. If it is “0”, it indicates that the reception buffer 620 of the reception side node is empty, and if “1”, it has been transmitted to the reception buffer 620 of the reception side node but is still read by the user job of the reception side node. This means that there is no data left.
[0119]
When the reception buffer release flag is “1”, it indicates that data can be transmitted immediately. First, the reception buffer release flag is set to “0” (process 5050), and then the signal line 4010 is used. Then, the data is sent to the reception buffer 620 (process 5060). When the data is sent to the reception buffer 620, the transmission buffer 520 is released and becomes empty, so the transmission request flag is reset from “1” to “0” (processing 5070), and then the OS processing returns to the user job ( Processing 5080).
[0120]
If the reception buffer release flag is “0” in the process 5040, data can be transmitted only after the reception side node B 20 receives a notification of the release of the reception buffer 620. Therefore, the process is temporarily switched to the user mode. A user job process is executed (process 5080).
[0121]
Next, the operation of the node B 20 on the receiving side will be described.
[0122]
First, processing (FIG. 15) when data is sent from the node A10 on the transmission side will be described.
[0123]
When data is sent from the node A10 on the transmission side, an interrupt is notified to the CPU 600 (FIG. 13). In response to this interrupt, the mode is switched from the user mode to the system mode, the processing is shifted to the OS, and data is received (processing 5350).
[0124]
When reception is completed, the OS sets the reception completion flag from “0” to “1” (processing 5360). This reception completion flag is an initial value “0” flag existing in the main memory 605 and is managed by the OS. When the flag is “0”, it indicates that the reception buffer is open, and when the flag is “1”, it indicates that data that has been received but has not yet been read remains in the reception buffer.
[0125]
Next, the reception confirmation flag is checked (processing 5370). The reception confirmation flag is an initial value “0” flag existing in the main memory 605 and is managed by the OS. When the flag is “1”, the user job of the receiving node B 20 is ready to receive data but has not yet received data. When the flag is “0”, it means that the user job has not been processed yet and data cannot be received. In this case, the processing is switched from the system mode to the user mode and switched to the user job (processing 5420).
[0126]
When the reception confirmation flag is “1”, the process proceeds to the reception buffer read processing 5500.
[0127]
Next, a process (FIG. 16) when the user job of the receiving side node B 20 is ready to receive data and issues a data receiving request to the transmitting side node A 10 will be described.
[0128]
When the user job is ready to receive data, it issues a system call, shifts from the user mode to the system mode, and passes the processing to the OS. The OS starts processing to receive the received data (processing 5300).
[0129]
Next, the OS changes the reception confirmation flag to “1” (process 5310).
[0130]
Next, the counter 4050 (FIG. 13) is activated to start counting (process 5320). The counter 4050 counts the time from when preparation for data reception is made until data is actually sent.
[0131]
Next, the reception completion flag is checked (process 5330). If the received data has not yet arrived (when the reception completion flag is “0”), the processing is switched from the system mode to the user mode and switched to the user job (processing 5340). In this case, even when returning to a user job that requires data from the sending node, there are generally many processes that are waiting for received data, and there is virtually no processing that can be executed. If so, it is more efficient to switch there.
[0132]
If the received data has already arrived (when the reception completion flag is “1”), a reception buffer read process 5500 is performed.
[0133]
Next, the reception buffer reading process (FIG. 17) will be described.
[0134]
This process is performed when the reception confirmation flag is checked when the transmission data arrives and the reception is completed. When the flag is “1” (process 5370 in FIG. 15), a data reception request is received from the user job. When the reception completion flag is checked and the flag is “1” (process 5330 in FIG. 16), that is, the necessary reception data exists in the reception buffer 620, and the user job is also ready to receive data. Therefore, it is a process of reading data from the reception buffer.
[0135]
First, the count of the counter 4050 is stopped and the counted value is read (process 5510).
[0136]
This value represents “a value from when a user job can receive data until it can be received”. If data has arrived from the sending node A10 before the user job is ready to receive, the counter counts from processing 5320 to processing 5510 in FIG. Is almost 0). However, if data arrives from the sending node A 10 after the user job is ready to receive (FIG. 16), after processing 5320 in FIG. When the job is executed, data arrives from the transmission side node, and the process shifts to processing 5350 in FIG. Thereafter, since the reception confirmation flag is “1”, the process branches to YES in the process 5370 of FIG. 15 and the counter is stopped in the process 5510, so that “the user job can receive data after it can receive data. Count until.
[0137]
Next, the reception buffer is read, and the read data is transferred to the user job (process 5520).
[0138]
When data is read from the reception buffer, the reception buffer becomes empty, so the reception completion flag is set to “0”. In addition, since the waiting for user job reception is also eliminated, the reception confirmation flag is set to “0”. At the same time, the counter value is reset (step 5530).
[0139]
As described above, the reception process is completed, so that the transmission side node A10 is notified of the release of the reception buffer through the signal line 4010, and the waiting time information counted by the counter is also notified to the transmission side node A10 (process 5540).
[0140]
Finally, the processing is switched from the system mode to the user mode and switched to the user job (processing 5550).
[0141]
Next, processing when the transmission side node A10 receives a reception completion notification from the reception side node B20 (FIG. 18) will be described.
[0142]
First, when a reception completion notification is received, the process is switched from the user mode to the system mode, and the process is switched from the user job to the OS (process 5100).
[0143]
Next, since a reception completion notification indicates that the reception buffer has been released, the reception buffer release flag is set to “1” (process 5110).
[0144]
Next, in order to accumulate the waiting time information sent together with the reception completion notification, the weighting information table 560 is first read to grasp the weighting of the corresponding receiving side node (process 5120).
[0145]
Next, the product of the received waiting time information and the weighting grasped in processing 5120 is calculated, and the sum of this value and the waiting time accumulated value of the corresponding transmission buffer is set as a new waiting time accumulated value (processing) 5130). The accumulated waiting time value is data “0” in the initial value existing in the main memory 505 and is managed by the OS. This waiting time accumulation value is used for job switching means described later.
[0146]
Next, the transmission request flag is checked (process 5140). At this time, if the transmission request flag is “0”, it indicates that the reception buffer 620 of the reception side node B 20 has been released, but there is no data to be transmitted next in the transmission side buffer 520 yet. (Processing 5180). If the transmission request flag is “1”, the data is sent to the reception buffer 620 of the reception side node B 20, and after the transmission buffer 520 of the transmission side node A 10 becomes empty, the user job of the reception side node 20 makes a data reception request. This indicates that the next data transmission request is issued from the user job of the transmission side node A10 and the transmission data is prepared in the transmission buffer 520 again until the reception buffer 620 becomes empty after issuance and reading of data from the reception buffer 620. Therefore, data can be transmitted immediately.
[0147]
Therefore, after setting the reception buffer release flag to “0” (process 5150), data is sent to the reception buffer 620 via the signal line 4010 (process 5160). When the data is sent to the reception buffer 620, the transmission buffer 520 is released and becomes empty, so the transmission request flag is reset from “1” to “0” (processing 5170), and then the OS processing returns to the user job (step 5170). Process 5180).
[0148]
If the reception buffer release flag is “0” in processing 5140, data can be transmitted only after receiving notification of reception buffer 620 release from the receiving node B 20, so the processing is temporarily switched to the user mode. The user job process is executed (process 5180).
[0149]
Through the above processing, the OS operates the flag, and data can be transmitted from the transmission side node to the reception side node using the transmission buffer and the reception buffer.
[0150]
Next, a process (FIG. 19) for appropriately switching a user job using the accumulated waiting time value calculated and recorded by the transmission side node A10 will be described.
[0151]
The job switch is started by an interrupt generated by the timer 4000 (FIG. 13) to the CPU 500 (process 5200).
[0152]
When job switch processing is started, the OS first reads the waiting time accumulation value of each port (processing 5210), and then resets the waiting time accumulation value of each port (processing 5220).
[0153]
In order to calculate the setting value of the job switch from the read waiting time accumulation value, first, the node group information table 570 (FIG. 13) is read (process 5230). The node group information table 570 determines which user job each port belongs to, and calculates the sum of the waiting time accumulated value of each port for each job in order to calculate the waiting time accumulation for each port (processing 5240). . In the present embodiment, it is assumed that the job belongs to either job P or job Q, as in the first embodiment.
[0154]
Since the sum of the waiting time accumulated values is used for the job priority as in the first embodiment, the initial values of the job switches of job P and job Q are calculated by calculation, and the first embodiment is used. Similarly to the above, the processing shown in FIG. 10 is performed for each time slice, and user jobs are switched at an appropriate ratio.
[0155]
Finally, the processing is switched from the system mode to the user mode and switched to the user job (processing 5250).
[0156]
In the third embodiment configured as described above, the same operations and effects as the first and second embodiments, that is, transmission of data from the transmission side node to the reception side node, and waiting of each node Aggregation of time information and optimization of job scheduling for switching user jobs based on waiting time information can be realized by the operation (software) of the OS.
[Brief description of the drawings]
FIG. 1 is a conceptual diagram of a computer system according to a first embodiment.
FIG. 2 is a block diagram showing a configuration of a computer system according to the first embodiment.
FIG. 3 is a block diagram illustrating a detailed configuration of a transmission control circuit 525 according to the first embodiment.
FIG. 4 is a block diagram illustrating a detailed configuration of a reception waiting measurement circuit 625 according to the first embodiment.
FIG. 5 is a table showing a state of a reception confirmation flag 1130 according to the first embodiment.
FIG. 6 is a table showing a state of a reception completion flag 1100 according to the first embodiment.
FIG. 7 is a block diagram showing a detailed configuration of a load balance calculation circuit 580 according to the first embodiment.
FIG. 8 is a table showing an example of a weighting table 560 according to the first embodiment.
FIG. 9 is a table showing an example of node group information 570 according to the first embodiment;
FIG. 10 is a flowchart illustrating processing of an OS that switches a job according to the first embodiment.
FIG. 11 is a block diagram illustrating a configuration of a reception waiting measurement circuit 625 according to the second embodiment.
FIG. 12 is a block diagram illustrating a configuration of a load balance measurement circuit 580 according to the second embodiment.
FIG. 13 is a block diagram of a computer system according to the third embodiment.
FIG. 14 is a flowchart illustrating an operation of transmitting data from a transmitting node to a receiving node according to the third embodiment.
FIG. 15 is a flowchart illustrating processing when data is transmitted from a transmission-side node according to the third embodiment.
FIG. 16 is a flowchart showing processing when a user job of the receiving node is ready to receive data and issues a data reception request to the transmitting node.
FIG. 17 is a flowchart illustrating a reception buffer reading process according to the third embodiment.
FIG. 18 is a flowchart illustrating processing when a transmission-side node receives a reception completion notification from a reception-side node according to the third embodiment.
FIG. 19 is a flowchart illustrating processing for switching a user job using a waiting time accumulation value calculated and recorded by a transmission side node A according to the third embodiment.
[Explanation of symbols]
10 Node A
20 Node B
30 Node C
40 Node D
50 Node E
100 S node
200, 300 Multi-node calculation
500, 600 CPU
505, 605 Main memory
520, 530, 540, 550 transmission buffer
525, 535, 545, 555 transmission control circuit
560 Weighting information table
570 Node group information table
580 Load balance calculation circuit
620, 720, 820, 920 receive buffer
625, 725, 825, 925 Receive waiting measurement circuit
1100 Reception completion flag
1120 counter
1130 Reception confirmation flag
1140 Reception notification circuit
1200 to 1230 Reception wait time register
1250-1280 integrator
1300-1330 Adder
1340 timer
1350-1380 Integration register
1400-1430 switch
1450, 1470 Adder
1460 Register P
1480 Register Q
2000-2040 treatment
3000 timer
3010 Adder
3020 Integration register
4000 timer
4010-4040 signal line
4050 counter
110 to 180, 510, 515, 610, 1000, 1050 to 1065, 1150 to 1190, 1500 to 1650, 3050 to 3080

Claims (5)

データの送信及び受信を行い当該送受信されたデータを元にマルチノード計算を実行する複数のノードと、前記ノード間のデータ通信を行う通信経路と、を備え、前記マルチノード計算を構成する複数のジョブのうち一のジョブを所定のスケジューリングにより前記複数のノードに占有させて実行し、当該実行させるジョブを順次切り換えることにより前記マルチノード計算を実行する並列型又はグリッド型の計算機システムにおいて、
前記ノードは、データを送信する送信側のノードと、送信されるデータに依存するジョブを処理する受信側のノードとを備え、
前記受信側のノードが前記一のジョブの処理に必要なデータを必要としてから、当該必要なデータを受信するまでの間に要した時間値を計測する待ち時間計測手段と、
前記時間値を前記複数のジョブ毎に集計して前記一のジョブに対して各ノードが要した前記時間値の累計値を計算する負荷バランス集計手段と、
前記一のジョブの処理に前記ノードを占有させる時間である持ち時間を前記計算された累計値に応じて計算し、当該累計値が大きいジョブは前記持ち時間を大きくし、当該累計値か小さいジョブは前記持ち時間を小さくすることにより前記複数のジョブの優先度を制御するジョブスケジューリング手段と、
を備えたことを特徴とする計算機システム。
A plurality of nodes that perform transmission and reception of data and perform multi-node calculation based on the transmitted and received data, and a communication path that performs data communication between the nodes, and a plurality of nodes constituting the multi-node calculation In a parallel type or grid type computer system that executes one of the jobs by occupying the plurality of nodes by predetermined scheduling and executing the multi-node calculation by sequentially switching the jobs to be executed ,
The node includes a transmission-side node that transmits data, and a reception-side node that processes a job that depends on the data to be transmitted.
A waiting time measuring means for measuring a time value required from the time when the node on the receiving side needs the data necessary for processing the one job to receiving the necessary data ;
Load balance counting means for calculating the cumulative value of the time values required by each node for the one job by counting the time values for each of the plurality of jobs;
A time for occupying the node for the processing of the one job is calculated according to the calculated cumulative value, and a job with a large cumulative value increases the holding time, and a job with a smaller cumulative value Is a job scheduling means for controlling the priority of the plurality of jobs by reducing the holding time ;
A computer system characterized by comprising:
前記待ち時間計測手段は、前記時間値を送信側ノードにデータ要求と共に通知し、前記負荷バランス集計手段にて単位時間あたりの時間値の積算値の演算を行うことを特徴とする請求項1に記載の計算機システム。The said waiting time measurement means notifies the said time value to a transmission side node with a data request | requirement, and calculates the integrated value of the time value per unit time in the said load balance totaling means. The computer system described. 前記待ち時間計測手段は、前記時間値を受信側ノードにて単位時間あたりの時間値の積算値の演算を行い、
演算された前記単位時間あたりの時間値の積算値を前記負荷バランス集計手段に通知することを特徴とする請求項1に記載の計算機システム。
The waiting time measuring means calculates the integrated value of the time value per unit time at the receiving side node,
The computer system according to claim 1, wherein the calculated integrated value of the time value per unit time is notified to the load balance counting means.
前記演算された前記単位時間あたりの時間値の積算値を、前記待ち時間計測手段が発生する一定間隔の信号に同期して、前記負荷バランス集計手段に通知することを特徴とする請求項3に記載の計算機システム。The integrated value of the calculated time value per unit time is notified to the load balance counting means in synchronization with a signal at a constant interval generated by the waiting time measuring means. The computer system described. 前記負荷バランス集計手段は、各ノードにおいて実行されているジョブ処理の負荷に応じた重み付け情報を備え、
前記時間値と重み付け情報との積を演算し、演算された値の積算値を演算することを特徴とする請求項2ないし4の何れか一つに記載の計算機システム。
The load balance counting means includes weighting information corresponding to the load of job processing being executed in each node,
5. The computer system according to claim 2, wherein a product of the time value and the weighting information is calculated, and an integrated value of the calculated values is calculated.
JP2002213341A 2002-07-23 2002-07-23 Computer system Expired - Fee Related JP4133068B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002213341A JP4133068B2 (en) 2002-07-23 2002-07-23 Computer system
US10/341,505 US7293092B2 (en) 2002-07-23 2003-01-14 Computing system and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002213341A JP4133068B2 (en) 2002-07-23 2002-07-23 Computer system

Publications (2)

Publication Number Publication Date
JP2004054727A JP2004054727A (en) 2004-02-19
JP4133068B2 true JP4133068B2 (en) 2008-08-13

Family

ID=30767837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002213341A Expired - Fee Related JP4133068B2 (en) 2002-07-23 2002-07-23 Computer system

Country Status (2)

Country Link
US (1) US7293092B2 (en)
JP (1) JP4133068B2 (en)

Families Citing this family (236)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004073657A2 (en) * 2003-02-19 2004-09-02 Protein Design Labs, Inc. Methods of diagnosis of cancer and other diseases, composition and methods of screening for modulators of cancer and other diseases
US7644408B2 (en) * 2003-04-25 2010-01-05 Spotware Technologies, Inc. System for assigning and monitoring grid jobs on a computing grid
US7287179B2 (en) * 2003-05-15 2007-10-23 International Business Machines Corporation Autonomic failover of grid-based services
US7073932B2 (en) * 2003-07-31 2006-07-11 Harry Lee Wainwright Optical fiber decorative assembly
US9081620B1 (en) * 2003-09-11 2015-07-14 Oracle America, Inc. Multi-grid mechanism using peer-to-peer protocols
US20050132270A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation Method, system, and computer program product for automatic code generation in an object oriented environment
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7464159B2 (en) * 2004-01-14 2008-12-09 International Business Machines Corporation Managing analysis of a degraded service in a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US20050165912A1 (en) * 2004-01-23 2005-07-28 Colbeck Scott J. GUI-based grid computing data management apparatus method and system
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US7490325B2 (en) 2004-03-13 2009-02-10 Cluster Resources, Inc. System and method for providing intelligent pre-staging of data in a compute environment
US7441241B2 (en) * 2004-05-20 2008-10-21 International Business Machines Corporation Grid non-deterministic job scheduling
US7266547B2 (en) 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7861246B2 (en) * 2004-06-17 2010-12-28 Platform Computing Corporation Job-centric scheduling in a grid environment
US7844969B2 (en) * 2004-06-17 2010-11-30 Platform Computing Corporation Goal-oriented predictive scheduling in a grid environment
US7340654B2 (en) * 2004-06-17 2008-03-04 Platform Computing Corporation Autonomic monitoring in a grid environment
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8521687B2 (en) * 2004-08-03 2013-08-27 International Business Machines Corporation Apparatus, system, and method for selecting optimal replica sources in a grid computing environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US7712100B2 (en) * 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
JP4168281B2 (en) * 2004-09-16 2008-10-22 日本電気株式会社 Parallel processing system, interconnection network, node and network control program
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
JP2006142898A (en) * 2004-11-17 2006-06-08 Auto Network Gijutsu Kenkyusho:Kk On-vehicle electronic control system
US20060167966A1 (en) * 2004-12-09 2006-07-27 Rajendra Kumar Grid computing system having node scheduler
US7730122B2 (en) * 2004-12-09 2010-06-01 International Business Machines Corporation Authenticating a node requesting another node to perform work on behalf of yet another node
US7461102B2 (en) 2004-12-09 2008-12-02 International Business Machines Corporation Method for performing scheduled backups of a backup node associated with a plurality of agent nodes
US7793308B2 (en) * 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US7533170B2 (en) * 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7761557B2 (en) 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7502850B2 (en) * 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7590623B2 (en) 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7707288B2 (en) * 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7472079B2 (en) * 2005-01-12 2008-12-30 International Business Machines Corporation Computer implemented method for automatically controlling selection of a grid provider for a grid job
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US9075657B2 (en) 2005-04-07 2015-07-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US8930536B2 (en) 2005-03-16 2015-01-06 Adaptive Computing Enterprises, Inc. Virtual private cluster
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
US9015324B2 (en) 2005-03-16 2015-04-21 Adaptive Computing Enterprises, Inc. System and method of brokering cloud computing resources
US8782120B2 (en) 2005-04-07 2014-07-15 Adaptive Computing Enterprises, Inc. Elastic management of compute resources between a web server and an on-demand compute environment
US7707579B2 (en) * 2005-07-14 2010-04-27 International Business Machines Corporation Method and system for application profiling for purposes of defining resource requirements
US7995474B2 (en) * 2005-09-13 2011-08-09 International Business Machines Corporation Grid network throttle and load collector
US7853948B2 (en) * 2005-10-24 2010-12-14 International Business Machines Corporation Method and apparatus for scheduling grid jobs
US20070118839A1 (en) * 2005-10-24 2007-05-24 Viktors Berstis Method and apparatus for grid project modeling language
US7831971B2 (en) * 2005-10-24 2010-11-09 International Business Machines Corporation Method and apparatus for presenting a visualization of processor capacity and network availability based on a grid computing system simulation
US7831972B2 (en) * 2005-11-03 2010-11-09 International Business Machines Corporation Method and apparatus for scheduling jobs on a network
US20080049254A1 (en) * 2006-08-24 2008-02-28 Thomas Phan Method and means for co-scheduling job assignments and data replication in wide-area distributed systems
US7979858B2 (en) * 2006-10-03 2011-07-12 Sas Institute Inc. Systems and methods for executing a computer program that executes multiple processes in a multi-processor environment
US8959516B2 (en) * 2007-07-30 2015-02-17 International Business Machines Corporation Methods and systems for coordinated financial transactions in distributed and parallel environments
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8230439B2 (en) * 2008-08-22 2012-07-24 International Business Machines Corporation Green computing interchange switching function
WO2011039762A2 (en) * 2009-09-07 2011-04-07 Tata Consultancy Services Ltd. System for real-time radio / physical layer simulation
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
WO2013070152A2 (en) * 2011-11-07 2013-05-16 Binary Bio Ab Dynamic dataflow network
US10205239B1 (en) 2014-05-07 2019-02-12 Energous Corporation Compact PIFA antenna
US9859757B1 (en) 2013-07-25 2018-01-02 Energous Corporation Antenna tile arrangements in electronic device enclosures
US10211680B2 (en) 2013-07-19 2019-02-19 Energous Corporation Method for 3 dimensional pocket-forming
US10263432B1 (en) 2013-06-25 2019-04-16 Energous Corporation Multi-mode transmitter with an antenna array for delivering wireless power and providing Wi-Fi access
US10270261B2 (en) 2015-09-16 2019-04-23 Energous Corporation Systems and methods of object detection in wireless power charging systems
US9876648B2 (en) 2014-08-21 2018-01-23 Energous Corporation System and method to control a wireless power transmission system by configuration of wireless power transmission control parameters
US9831718B2 (en) 2013-07-25 2017-11-28 Energous Corporation TV with integrated wireless power transmitter
US9806564B2 (en) 2014-05-07 2017-10-31 Energous Corporation Integrated rectifier and boost converter for wireless power transmission
US10141791B2 (en) 2014-05-07 2018-11-27 Energous Corporation Systems and methods for controlling communications during wireless transmission of power using application programming interfaces
US9899873B2 (en) 2014-05-23 2018-02-20 Energous Corporation System and method for generating a power receiver identifier in a wireless power network
US9853458B1 (en) 2014-05-07 2017-12-26 Energous Corporation Systems and methods for device and power receiver pairing
US10206185B2 (en) 2013-05-10 2019-02-12 Energous Corporation System and methods for wireless power transmission to an electronic device in accordance with user-defined restrictions
US10186913B2 (en) 2012-07-06 2019-01-22 Energous Corporation System and methods for pocket-forming based on constructive and destructive interferences to power one or more wireless power receivers using a wireless power transmitter including a plurality of antennas
US10038337B1 (en) 2013-09-16 2018-07-31 Energous Corporation Wireless power supply for rescue devices
US10090699B1 (en) 2013-11-01 2018-10-02 Energous Corporation Wireless powered house
US9939864B1 (en) 2014-08-21 2018-04-10 Energous Corporation System and method to control a wireless power transmission system by configuration of wireless power transmission control parameters
US9941747B2 (en) 2014-07-14 2018-04-10 Energous Corporation System and method for manually selecting and deselecting devices to charge in a wireless power network
US10243414B1 (en) 2014-05-07 2019-03-26 Energous Corporation Wearable device with wireless power and payload receiver
US9900057B2 (en) 2012-07-06 2018-02-20 Energous Corporation Systems and methods for assigning groups of antenas of a wireless power transmitter to different wireless power receivers, and determining effective phases to use for wirelessly transmitting power using the assigned groups of antennas
US10148097B1 (en) 2013-11-08 2018-12-04 Energous Corporation Systems and methods for using a predetermined number of communication channels of a wireless power transmitter to communicate with different wireless power receivers
US9368020B1 (en) 2013-05-10 2016-06-14 Energous Corporation Off-premises alert system and method for wireless power receivers in a wireless power network
US9124125B2 (en) 2013-05-10 2015-09-01 Energous Corporation Wireless power transmission with selective range
US9893554B2 (en) 2014-07-14 2018-02-13 Energous Corporation System and method for providing health safety in a wireless power transmission system
US10211674B1 (en) 2013-06-12 2019-02-19 Energous Corporation Wireless charging using selected reflectors
US10199849B1 (en) 2014-08-21 2019-02-05 Energous Corporation Method for automatically testing the operational status of a wireless power receiver in a wireless power transmission system
US10063064B1 (en) 2014-05-23 2018-08-28 Energous Corporation System and method for generating a power receiver identifier in a wireless power network
US9824815B2 (en) 2013-05-10 2017-11-21 Energous Corporation Wireless charging and powering of healthcare gadgets and sensors
US20150326070A1 (en) 2014-05-07 2015-11-12 Energous Corporation Methods and Systems for Maximum Power Point Transfer in Receivers
US11502551B2 (en) 2012-07-06 2022-11-15 Energous Corporation Wirelessly charging multiple wireless-power receivers using different subsets of an antenna array to focus energy at different locations
US9954374B1 (en) 2014-05-23 2018-04-24 Energous Corporation System and method for self-system analysis for detecting a fault in a wireless power transmission Network
US10224982B1 (en) 2013-07-11 2019-03-05 Energous Corporation Wireless power transmitters for transmitting wireless power and tracking whether wireless power receivers are within authorized locations
US9899861B1 (en) 2013-10-10 2018-02-20 Energous Corporation Wireless charging methods and systems for game controllers, based on pocket-forming
US10992185B2 (en) 2012-07-06 2021-04-27 Energous Corporation Systems and methods of using electromagnetic waves to wirelessly deliver power to game controllers
US20140008993A1 (en) 2012-07-06 2014-01-09 DvineWave Inc. Methodology for pocket-forming
US10103582B2 (en) 2012-07-06 2018-10-16 Energous Corporation Transmitters for wireless power transmission
US9793758B2 (en) 2014-05-23 2017-10-17 Energous Corporation Enhanced transmitter using frequency control for wireless power transmission
US10124754B1 (en) 2013-07-19 2018-11-13 Energous Corporation Wireless charging and powering of electronic sensors in a vehicle
US9912199B2 (en) 2012-07-06 2018-03-06 Energous Corporation Receivers for wireless power transmission
US10312715B2 (en) 2015-09-16 2019-06-04 Energous Corporation Systems and methods for wireless power charging
US9859797B1 (en) 2014-05-07 2018-01-02 Energous Corporation Synchronous rectifier design for wireless power receiver
US9887739B2 (en) 2012-07-06 2018-02-06 Energous Corporation Systems and methods for wireless power transmission by comparing voltage levels associated with power waves transmitted by antennas of a plurality of antennas of a transmitter to determine appropriate phase adjustments for the power waves
US9923386B1 (en) 2012-07-06 2018-03-20 Energous Corporation Systems and methods for wireless power transmission by modifying a number of antenna elements used to transmit power waves to a receiver
US9853692B1 (en) 2014-05-23 2017-12-26 Energous Corporation Systems and methods for wireless power transmission
US9838083B2 (en) 2014-07-21 2017-12-05 Energous Corporation Systems and methods for communication with remote management systems
US10128693B2 (en) 2014-07-14 2018-11-13 Energous Corporation System and method for providing health safety in a wireless power transmission system
US10193396B1 (en) 2014-05-07 2019-01-29 Energous Corporation Cluster management of transmitters in a wireless power transmission system
US9843201B1 (en) 2012-07-06 2017-12-12 Energous Corporation Wireless power transmitter that selects antenna sets for transmitting wireless power to a receiver based on location of the receiver, and methods of use thereof
US9882430B1 (en) 2014-05-07 2018-01-30 Energous Corporation Cluster management of transmitters in a wireless power transmission system
US10063105B2 (en) 2013-07-11 2018-08-28 Energous Corporation Proximity transmitters for wireless power charging systems
US9893768B2 (en) 2012-07-06 2018-02-13 Energous Corporation Methodology for multiple pocket-forming
US10128699B2 (en) 2014-07-14 2018-11-13 Energous Corporation Systems and methods of providing wireless power using receiver device sensor inputs
US10230266B1 (en) 2014-02-06 2019-03-12 Energous Corporation Wireless power receivers that communicate status data indicating wireless power transmission effectiveness with a transmitter using a built-in communications component of a mobile device, and methods of use thereof
US9966765B1 (en) 2013-06-25 2018-05-08 Energous Corporation Multi-mode transmitter
US10050462B1 (en) 2013-08-06 2018-08-14 Energous Corporation Social power sharing for mobile devices based on pocket-forming
US9812890B1 (en) 2013-07-11 2017-11-07 Energous Corporation Portable wireless charging pad
US9876379B1 (en) 2013-07-11 2018-01-23 Energous Corporation Wireless charging and powering of electronic devices in a vehicle
US10090886B1 (en) 2014-07-14 2018-10-02 Energous Corporation System and method for enabling automatic charging schedules in a wireless power network to one or more devices
US9438045B1 (en) 2013-05-10 2016-09-06 Energous Corporation Methods and systems for maximum power point transfer in receivers
US9847679B2 (en) 2014-05-07 2017-12-19 Energous Corporation System and method for controlling communication between wireless power transmitter managers
US10291066B1 (en) 2014-05-07 2019-05-14 Energous Corporation Power transmission control systems and methods
US9906065B2 (en) 2012-07-06 2018-02-27 Energous Corporation Systems and methods of transmitting power transmission waves based on signals received at first and second subsets of a transmitter's antenna array
US10381880B2 (en) 2014-07-21 2019-08-13 Energous Corporation Integrated antenna structure arrays for wireless power transmission
US9787103B1 (en) 2013-08-06 2017-10-10 Energous Corporation Systems and methods for wirelessly delivering power to electronic devices that are unable to communicate with a transmitter
US10199835B2 (en) 2015-12-29 2019-02-05 Energous Corporation Radar motion detection using stepped frequency in wireless power transmission system
US10063106B2 (en) 2014-05-23 2018-08-28 Energous Corporation System and method for a self-system analysis in a wireless power transmission network
US10439448B2 (en) 2014-08-21 2019-10-08 Energous Corporation Systems and methods for automatically testing the communication between wireless power transmitter and wireless power receiver
US10218227B2 (en) 2014-05-07 2019-02-26 Energous Corporation Compact PIFA antenna
US9893555B1 (en) 2013-10-10 2018-02-13 Energous Corporation Wireless charging of tools using a toolbox transmitter
US9843213B2 (en) 2013-08-06 2017-12-12 Energous Corporation Social power sharing for mobile devices based on pocket-forming
US10008889B2 (en) 2014-08-21 2018-06-26 Energous Corporation Method for automatically testing the operational status of a wireless power receiver in a wireless power transmission system
US9941707B1 (en) 2013-07-19 2018-04-10 Energous Corporation Home base station for multiple room coverage with multiple transmitters
US10224758B2 (en) 2013-05-10 2019-03-05 Energous Corporation Wireless powering of electronic devices with selective delivery range
US9973021B2 (en) 2012-07-06 2018-05-15 Energous Corporation Receivers for wireless power transmission
US10141768B2 (en) 2013-06-03 2018-11-27 Energous Corporation Systems and methods for maximizing wireless power transfer efficiency by instructing a user to change a receiver device's position
US9867062B1 (en) 2014-07-21 2018-01-09 Energous Corporation System and methods for using a remote server to authorize a receiving device that has requested wireless power and to determine whether another receiving device should request wireless power in a wireless power transmission system
US10992187B2 (en) 2012-07-06 2021-04-27 Energous Corporation System and methods of using electromagnetic waves to wirelessly deliver power to electronic devices
US9871398B1 (en) 2013-07-01 2018-01-16 Energous Corporation Hybrid charging method for wireless power transmission based on pocket-forming
US9143000B2 (en) 2012-07-06 2015-09-22 Energous Corporation Portable wireless charging pad
US10211682B2 (en) 2014-05-07 2019-02-19 Energous Corporation Systems and methods for controlling operation of a transmitter of a wireless power network based on user instructions received from an authenticated computing device powered or charged by a receiver of the wireless power network
US10075008B1 (en) 2014-07-14 2018-09-11 Energous Corporation Systems and methods for manually adjusting when receiving electronic devices are scheduled to receive wirelessly delivered power from a wireless power transmitter in a wireless power network
US9991741B1 (en) 2014-07-14 2018-06-05 Energous Corporation System for tracking and reporting status and usage information in a wireless power management system
US9876394B1 (en) 2014-05-07 2018-01-23 Energous Corporation Boost-charger-boost system for enhanced power delivery
US10223717B1 (en) 2014-05-23 2019-03-05 Energous Corporation Systems and methods for payment-based authorization of wireless power transmission service
US9252628B2 (en) 2013-05-10 2016-02-02 Energous Corporation Laptop computer as a transmitter for wireless charging
US9847677B1 (en) 2013-10-10 2017-12-19 Energous Corporation Wireless charging and powering of healthcare gadgets and sensors
US9891669B2 (en) 2014-08-21 2018-02-13 Energous Corporation Systems and methods for a configuration web service to provide configuration of a wireless power transmitter within a wireless power transmission system
US9859756B2 (en) 2012-07-06 2018-01-02 Energous Corporation Transmittersand methods for adjusting wireless power transmission based on information from receivers
US9948135B2 (en) 2015-09-22 2018-04-17 Energous Corporation Systems and methods for identifying sensitive objects in a wireless charging transmission field
US9882427B2 (en) 2013-05-10 2018-01-30 Energous Corporation Wireless power delivery using a base station to control operations of a plurality of wireless power transmitters
US9887584B1 (en) 2014-08-21 2018-02-06 Energous Corporation Systems and methods for a configuration web service to provide configuration of a wireless power transmitter within a wireless power transmission system
US10291055B1 (en) 2014-12-29 2019-05-14 Energous Corporation Systems and methods for controlling far-field wireless power transmission based on battery power levels of a receiving device
US10965164B2 (en) 2012-07-06 2021-03-30 Energous Corporation Systems and methods of wirelessly delivering power to a receiver device
US10256657B2 (en) 2015-12-24 2019-04-09 Energous Corporation Antenna having coaxial structure for near field wireless power charging
US9825674B1 (en) 2014-05-23 2017-11-21 Energous Corporation Enhanced transmitter that selects configurations of antenna elements for performing wireless power transmission and receiving functions
US9941754B2 (en) 2012-07-06 2018-04-10 Energous Corporation Wireless power transmission with selective range
US9373074B2 (en) * 2012-10-09 2016-06-21 Qualcomm Incorporated Method and apparatus for time management and scheduling for sychronous processing on a cluster of processing nodes
US9419443B2 (en) 2013-05-10 2016-08-16 Energous Corporation Transducer sound arrangement for pocket-forming
US9537357B2 (en) 2013-05-10 2017-01-03 Energous Corporation Wireless sound charging methods and systems for game controllers, based on pocket-forming
US9866279B2 (en) 2013-05-10 2018-01-09 Energous Corporation Systems and methods for selecting which power transmitter should deliver wireless power to a receiving device in a wireless power delivery network
US9819230B2 (en) 2014-05-07 2017-11-14 Energous Corporation Enhanced receiver for wireless power transmission
US9538382B2 (en) 2013-05-10 2017-01-03 Energous Corporation System and method for smart registration of wireless power receivers in a wireless power network
US10103552B1 (en) 2013-06-03 2018-10-16 Energous Corporation Protocols for authenticated wireless power transmission
US10003211B1 (en) 2013-06-17 2018-06-19 Energous Corporation Battery life of portable electronic devices
US10021523B2 (en) 2013-07-11 2018-07-10 Energous Corporation Proximity transmitters for wireless power charging systems
US9979440B1 (en) 2013-07-25 2018-05-22 Energous Corporation Antenna tile arrangements configured to operate as one functional unit
US10075017B2 (en) 2014-02-06 2018-09-11 Energous Corporation External or internal wireless power receiver with spaced-apart antenna elements for charging or powering mobile devices using wirelessly delivered power
US9935482B1 (en) 2014-02-06 2018-04-03 Energous Corporation Wireless power transmitters that transmit at determined times based on power availability and consumption at a receiving mobile device
US9966784B2 (en) 2014-06-03 2018-05-08 Energous Corporation Systems and methods for extending battery life of portable electronic devices charged by sound
US10158257B2 (en) 2014-05-01 2018-12-18 Energous Corporation System and methods for using sound waves to wirelessly deliver power to electronic devices
US10153645B1 (en) 2014-05-07 2018-12-11 Energous Corporation Systems and methods for designating a master power transmitter in a cluster of wireless power transmitters
US10153653B1 (en) 2014-05-07 2018-12-11 Energous Corporation Systems and methods for using application programming interfaces to control communications between a transmitter and a receiver
US9973008B1 (en) 2014-05-07 2018-05-15 Energous Corporation Wireless power receiver with boost converters directly coupled to a storage element
US10170917B1 (en) 2014-05-07 2019-01-01 Energous Corporation Systems and methods for managing and controlling a wireless power network by establishing time intervals during which receivers communicate with a transmitter
US9800172B1 (en) 2014-05-07 2017-10-24 Energous Corporation Integrated rectifier and boost converter for boosting voltage received from wireless power transmission waves
US9876536B1 (en) 2014-05-23 2018-01-23 Energous Corporation Systems and methods for assigning groups of antennas to transmit wireless power to different wireless power receivers
US9465645B1 (en) * 2014-06-25 2016-10-11 Amazon Technologies, Inc. Managing backlogged tasks
US10116143B1 (en) 2014-07-21 2018-10-30 Energous Corporation Integrated antenna arrays for wireless power transmission
US10068703B1 (en) 2014-07-21 2018-09-04 Energous Corporation Integrated miniature PIFA with artificial magnetic conductor metamaterials
US9871301B2 (en) 2014-07-21 2018-01-16 Energous Corporation Integrated miniature PIFA with artificial magnetic conductor metamaterials
US9965009B1 (en) 2014-08-21 2018-05-08 Energous Corporation Systems and methods for assigning a power receiver to individual power transmitters based on location of the power receiver
US9917477B1 (en) 2014-08-21 2018-03-13 Energous Corporation Systems and methods for automatically testing the communication between power transmitter and wireless receiver
US10366358B1 (en) 2014-12-19 2019-07-30 Amazon Technologies, Inc. Backlogged computing work exchange
US10122415B2 (en) 2014-12-27 2018-11-06 Energous Corporation Systems and methods for assigning a set of antennas of a wireless power transmitter to a wireless power receiver based on a location of the wireless power receiver
US9893535B2 (en) 2015-02-13 2018-02-13 Energous Corporation Systems and methods for determining optimal charging positions to maximize efficiency of power received from wirelessly delivered sound wave energy
US9906275B2 (en) 2015-09-15 2018-02-27 Energous Corporation Identifying receivers in a wireless charging transmission field
US10523033B2 (en) 2015-09-15 2019-12-31 Energous Corporation Receiver devices configured to determine location within a transmission field
US9893538B1 (en) 2015-09-16 2018-02-13 Energous Corporation Systems and methods of object detection in wireless power charging systems
US10199850B2 (en) 2015-09-16 2019-02-05 Energous Corporation Systems and methods for wirelessly transmitting power from a transmitter to a receiver by determining refined locations of the receiver in a segmented transmission field associated with the transmitter
US9871387B1 (en) 2015-09-16 2018-01-16 Energous Corporation Systems and methods of object detection using one or more video cameras in wireless power charging systems
US9941752B2 (en) 2015-09-16 2018-04-10 Energous Corporation Systems and methods of object detection in wireless power charging systems
US10008875B1 (en) 2015-09-16 2018-06-26 Energous Corporation Wireless power transmitter configured to transmit power waves to a predicted location of a moving wireless power receiver
US10186893B2 (en) 2015-09-16 2019-01-22 Energous Corporation Systems and methods for real time or near real time wireless communications between a wireless power transmitter and a wireless power receiver
US11710321B2 (en) 2015-09-16 2023-07-25 Energous Corporation Systems and methods of object detection in wireless power charging systems
US10778041B2 (en) 2015-09-16 2020-09-15 Energous Corporation Systems and methods for generating power waves in a wireless power transmission system
US10211685B2 (en) 2015-09-16 2019-02-19 Energous Corporation Systems and methods for real or near real time wireless communications between a wireless power transmitter and a wireless power receiver
US10158259B1 (en) 2015-09-16 2018-12-18 Energous Corporation Systems and methods for identifying receivers in a transmission field by transmitting exploratory power waves towards different segments of a transmission field
US10128686B1 (en) 2015-09-22 2018-11-13 Energous Corporation Systems and methods for identifying receiver locations using sensor technologies
US10020678B1 (en) 2015-09-22 2018-07-10 Energous Corporation Systems and methods for selecting antennas to generate and transmit power transmission waves
US10050470B1 (en) 2015-09-22 2018-08-14 Energous Corporation Wireless power transmission device having antennas oriented in three dimensions
US10153660B1 (en) 2015-09-22 2018-12-11 Energous Corporation Systems and methods for preconfiguring sensor data for wireless charging systems
US10027168B2 (en) 2015-09-22 2018-07-17 Energous Corporation Systems and methods for generating and transmitting wireless power transmission waves using antennas having a spacing that is selected by the transmitter
US10135294B1 (en) 2015-09-22 2018-11-20 Energous Corporation Systems and methods for preconfiguring transmission devices for power wave transmissions based on location data of one or more receivers
US10135295B2 (en) 2015-09-22 2018-11-20 Energous Corporation Systems and methods for nullifying energy levels for wireless power transmission waves
US10033222B1 (en) 2015-09-22 2018-07-24 Energous Corporation Systems and methods for determining and generating a waveform for wireless power transmission waves
US10734717B2 (en) 2015-10-13 2020-08-04 Energous Corporation 3D ceramic mold antenna
US10333332B1 (en) 2015-10-13 2019-06-25 Energous Corporation Cross-polarized dipole antenna
US9853485B2 (en) 2015-10-28 2017-12-26 Energous Corporation Antenna for wireless charging systems
US9899744B1 (en) 2015-10-28 2018-02-20 Energous Corporation Antenna for wireless charging systems
US10027180B1 (en) 2015-11-02 2018-07-17 Energous Corporation 3D triple linear antenna that acts as heat sink
US10135112B1 (en) 2015-11-02 2018-11-20 Energous Corporation 3D antenna mount
US10063108B1 (en) 2015-11-02 2018-08-28 Energous Corporation Stamped three-dimensional antenna
US10320446B2 (en) 2015-12-24 2019-06-11 Energous Corporation Miniaturized highly-efficient designs for near-field power transfer system
US10027159B2 (en) 2015-12-24 2018-07-17 Energous Corporation Antenna for transmitting wireless power signals
US10256677B2 (en) 2016-12-12 2019-04-09 Energous Corporation Near-field RF charging pad with adaptive loading to efficiently charge an electronic device at any position on the pad
US10027158B2 (en) 2015-12-24 2018-07-17 Energous Corporation Near field transmitters for wireless power charging of an electronic device by leaking RF energy through an aperture
US11863001B2 (en) 2015-12-24 2024-01-02 Energous Corporation Near-field antenna for wireless power transmission with antenna elements that follow meandering patterns
US10038332B1 (en) 2015-12-24 2018-07-31 Energous Corporation Systems and methods of wireless power charging through multiple receiving devices
US10079515B2 (en) 2016-12-12 2018-09-18 Energous Corporation Near-field RF charging pad with multi-band antenna element with adaptive loading to efficiently charge an electronic device at any position on the pad
US10164478B2 (en) 2015-12-29 2018-12-25 Energous Corporation Modular antenna boards in wireless power transmission systems
WO2017117277A1 (en) * 2015-12-30 2017-07-06 Energous Corporation Systems and methods for real time or near real time wireless communications between electronic devices
US10923954B2 (en) 2016-11-03 2021-02-16 Energous Corporation Wireless power receiver with a synchronous rectifier
KR102226403B1 (en) 2016-12-12 2021-03-12 에너저스 코포레이션 Methods of selectively activating antenna zones of a near-field charging pad to maximize wireless power delivered
US10439442B2 (en) 2017-01-24 2019-10-08 Energous Corporation Microstrip antennas for wireless power transmitters
US10680319B2 (en) 2017-01-06 2020-06-09 Energous Corporation Devices and methods for reducing mutual coupling effects in wireless power transmission systems
US10389161B2 (en) 2017-03-15 2019-08-20 Energous Corporation Surface mount dielectric antennas for wireless power transmitters
US11011942B2 (en) 2017-03-30 2021-05-18 Energous Corporation Flat antennas having two or more resonant frequencies for use in wireless power transmission systems
US10511097B2 (en) 2017-05-12 2019-12-17 Energous Corporation Near-field antennas for accumulating energy at a near-field distance with minimal far-field gain
US11462949B2 (en) 2017-05-16 2022-10-04 Wireless electrical Grid LAN, WiGL Inc Wireless charging method and system
US10848853B2 (en) 2017-06-23 2020-11-24 Energous Corporation Systems, methods, and devices for utilizing a wire of a sound-producing device as an antenna for receipt of wirelessly delivered power
US10122219B1 (en) 2017-10-10 2018-11-06 Energous Corporation Systems, methods, and devices for using a battery as a antenna for receiving wirelessly delivered power from radio frequency power waves
US11342798B2 (en) 2017-10-30 2022-05-24 Energous Corporation Systems and methods for managing coexistence of wireless-power signals and data signals operating in a same frequency band
WO2019089601A1 (en) 2017-10-31 2019-05-09 Ab Initio Technology Llc Managing a computing cluster interface
US10615647B2 (en) 2018-02-02 2020-04-07 Energous Corporation Systems and methods for detecting wireless power receivers and other objects at a near-field charging pad
US11159057B2 (en) 2018-03-14 2021-10-26 Energous Corporation Loop antennas with selectively-activated feeds to control propagation patterns of wireless power signals
US11515732B2 (en) 2018-06-25 2022-11-29 Energous Corporation Power wave transmission techniques to focus wirelessly delivered power at a receiving device
US11437735B2 (en) 2018-11-14 2022-09-06 Energous Corporation Systems for receiving electromagnetic energy using antennas that are minimally affected by the presence of the human body
KR20210117283A (en) 2019-01-28 2021-09-28 에너저스 코포레이션 Systems and methods for a small antenna for wireless power transmission
EP3921945A1 (en) 2019-02-06 2021-12-15 Energous Corporation Systems and methods of estimating optimal phases to use for individual antennas in an antenna array

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5559710A (en) * 1993-02-05 1996-09-24 Siemens Corporate Research, Inc. Apparatus for control and evaluation of pending jobs in a factory
JPH0877029A (en) 1994-09-09 1996-03-22 Hitachi Ltd Processing request execution order control system based upon load rate
JPH08137910A (en) 1994-11-15 1996-05-31 Hitachi Ltd Parallel data base processing method and its executing device
JPH10240698A (en) 1997-02-24 1998-09-11 Nec Corp Load distribution system for high load job
JP3730740B2 (en) * 1997-02-24 2006-01-05 株式会社日立製作所 Parallel job multiple scheduling method
US6618820B1 (en) * 2000-01-10 2003-09-09 Imagex.Com, Inc. Method for configuring an application server system
US6832263B2 (en) * 2000-04-27 2004-12-14 Hyperion Solutions Corporation Method and apparatus for implementing a dynamically updated portal page in an enterprise-wide computer system

Also Published As

Publication number Publication date
US20040019624A1 (en) 2004-01-29
JP2004054727A (en) 2004-02-19
US7293092B2 (en) 2007-11-06

Similar Documents

Publication Publication Date Title
JP4133068B2 (en) Computer system
US10558595B2 (en) Sending data off-chip
US10949266B2 (en) Synchronization and exchange of data between processors
US11836524B2 (en) Memory interface for a multi-threaded, self-scheduling reconfigurable computing fabric
Hwang et al. {TCP}{≈}{RDMA}:{CPU-efficient} Remote Storage Access with i10
US20190121680A1 (en) Synchronization with a host processor
CN109697122B (en) Task processing method, device and computer storage medium
US10705999B1 (en) Exchange of data between processor modules
CN107454017A (en) Mixed data flow coordinated dispatching method in a kind of cloud data center network
Hać et al. Dynamic load balancing in a distributed system using a sender-initiated algorithm
Zhou et al. Swallow: Joint online scheduling and coflow compression in datacenter networks
WO2011131010A1 (en) Method and apparatus for timing
Ibanez et al. The nanoPU: Redesigning the CPU-network interface to minimize RPC tail latency
Li et al. Co-Scheduler: A coflow-aware data-parallel job scheduler in hybrid electrical/optical datacenter networks
Jyothi et al. Towards An Application {Objective-Aware} Network Interface
JP4292705B2 (en) Task scheduling device
Jajoo et al. Saath: Speeding up coflows by exploiting the spatial dimension
Atar et al. Replicate to the shortest queues
JP6280237B2 (en) Computer system and data processing method
CN105308918B (en) Dispatching device
Tang et al. A Deadline-aware coflow scheduling approach for big data applications
Wang et al. Skipping congestion-links for coflow scheduling
US20230062402A1 (en) Information processing apparatus and job scheduling method
Yang et al. Traffic Management for Distributed Machine Learning in RDMA-enabled Data Center Networks
CN113934518A (en) Scheduling management method, device and system, computer equipment and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070607

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080507

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080602

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110606

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110606

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120606

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees