JP6082305B2 - 計算機及び演算処理方法 - Google Patents

計算機及び演算処理方法 Download PDF

Info

Publication number
JP6082305B2
JP6082305B2 JP2013084371A JP2013084371A JP6082305B2 JP 6082305 B2 JP6082305 B2 JP 6082305B2 JP 2013084371 A JP2013084371 A JP 2013084371A JP 2013084371 A JP2013084371 A JP 2013084371A JP 6082305 B2 JP6082305 B2 JP 6082305B2
Authority
JP
Japan
Prior art keywords
computer
program
request
load
execution
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
JP2013084371A
Other languages
English (en)
Other versions
JP2014206879A (ja
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 JP2013084371A priority Critical patent/JP6082305B2/ja
Publication of JP2014206879A publication Critical patent/JP2014206879A/ja
Application granted granted Critical
Publication of JP6082305B2 publication Critical patent/JP6082305B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ネットワークに接続される計算機及び、それら計算機の演算処理方法に関する。
近年、電気、ガス、水道等の社会インフラストラクチャを効率良く且つ安全に運用するために、情報ネットワークの利用が広がっている。特に、電力設備においては、需要家の負荷変動に対して安定した電力を供給する必要があることから、情報ネットワークの活用が必要とされている。また、今後増加する可能性がある自然エネルギー由来の発電設備によって生じる電力供給量の変動に対しても、需要家に影響が及ばないように工夫しなければならなくなることが容易に予想される。このような、情報ネットワークを用いて高度に制御される電力設備網は、スマートグリッドと呼ばれる。
スマートグリッド等の社会インフラストラクチャに用いられる情報ネットワークシステムは、社会インフラストラクチャと同様に、高度な可用性(availability)が求められる。ネットワークに接続される計算機は、負荷が集中してスラッシングが発生し、演算結果が得られなくなるような状況を避けなければならない。そこで、ネットワークに接続される計算機同士で演算能力を融通し合い、負荷を分散させる仕組みが考えられている。
なお、本発明に近いと思われる技術が開示されている先行技術文献を、特許文献1に示す。特許文献1には、負荷分散を行うための監視用計算機システムを必要とせず、また、各計算機システムの負荷状態を監視することなく計算機システム間の負荷分散を制御する負荷分散制御システムが開示されている。
特開平11−143839号公報
ネットワークに配置された複数の計算機に対して負荷分散を行う方法の一つは、負荷分散の対象となる計算機と同一のネットワーク上に、各計算機の負荷情報を監視する専用のシステムを設置し、各計算機の負荷情報を収集することで、負荷の分散制御を実施する方法がある。この方法では、負荷分散を行うための監視用計算機システムが別途必要になる。また、監視用計算機システムが各計算機の負荷情報を常時収集するため、ネットワークの通信トラフィックを高める恐れがあるという問題点がある。
このような監視用計算機システムを設けることによる問題点を解決した技術が、特許文献1に開示される技術である。特許文献1に開示される技術は、ある高負荷状態の計算機が他の計算機に問い合わせを実施する。そして、低負荷状態の計算機から応答を受信した高負荷状態の計算機は、応答した低負荷状態の計算機に対して目的のアプリケーションプログラムを転送する。その後、低負荷状態の計算機はアプリケーションプログラム処理を実施し、処理結果を高負荷状態の計算機へ返信する。
しかしながらこの方法では、他の計算機が全て高負荷状態であった場合は、他計算機にアプリケーションプログラムの処理を依頼できず、結果的に自計算機で行わなければならなくなる。例えば、緊急時において即時の処理応答を求められるアプリケーションのプログラム処理を行う必要がある場合に、高負荷状態によって要求が処理できず応答性を損ねてしまう問題がある。すなわち、緊急時に優先的にプログラムを実行させるといった冗長化が考慮されていない。
本発明は係る状況に鑑みてなされたものであり、可用性を高めた計算機及び演算処理方法を提供することを目的とする。
上記課題を解決するために、本発明の計算機は、プログラム実行処理部と、入出力制御部と、プログラム転送先計算機管理テーブルを備える。
プログラム実行処理部は、指示を受けて所定のプログラムを実行する機能と、指示を受けて実行中のプログラムにおけるCPUに対する負荷を低減させる機能と、指示を受けて前記CPUに対する負荷を低減させた前記プログラムの、前記CPUに対する負荷を復旧させる機能を持っている。
また、入出力制御部は、ネットワークを通じて他の計算機から所定のメッセージを受信したことに基づいて、実行中のプログラムにおけるCPUに対する負荷を低減させる処理をプログラム実行処理部に指示し、他の計算機から受信した実行依頼プログラムの実行をプログラム実行処理部に指示する。そして、実行依頼プログラムの実行が終了したことに基づいて実行依頼プログラムの実行結果を他の計算機に返信すると共に、CPUに対する負荷を低減させたプログラムの、CPUに対する負荷を復旧させる処理をプログラム実行処理部に指示する。
更に、プログラム転送先計算機管理テーブルは、計算機を一意に識別する情報が格納される計算機アドレスフィールドと、前記計算機のCPUに対する負荷の値である計算機負荷値が格納される計算機負荷値フィールドと、前記計算機負荷値フィールドの値と所定の閾値とを比較して、所望の実行依頼プログラムを実行可能か否かを判定した判定結果が格納される判定結果フィールドを持つっている。
そして、入出力制御部は、実行依頼プログラムの実行を依頼するために、ネットワークを通じて他の計算機に計算機負荷値を問い合わせ、他の計算機から受信した計算機負荷値をプログラム転送先計算機管理テーブルの計算機負荷値フィールドに格納する。また、所望の実行依頼プログラムを実行可能か否かを判定した判定結果を判定結果フィールドに格納する。
また、入出力制御部は、プログラム転送先計算機管理テーブルの全レコードの判定結果フィールドが否定的結果であった場合に、ネットワークを通じて、実行依頼プログラムの優先順位を伴って再度前記計算機負荷値を問い合わせ、ネットワークを通じて他の計算機から受信した計算機負荷値をプログラム転送先計算機管理テーブルの計算機負荷値フィールドに格納し、再度所望の実行依頼プログラムを実行可能か否かを判定した判定結果を前記判定結果フィールドに格納する。そして、プログラム転送先計算機管理テーブルの判定結果フィールドに肯定的結果のレコードがあった場合に、レコードに係る計算機に実行依頼プログラムを送信する
本発明により、可用性を高めた計算機及び演算処理方法を提供できる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本発明の実施形態であるネットワークシステムの模式図である。 計算機のハードウェア構成を示すブロック図である。 計算機のソフトウェア上における機能を示すブロック図である。 各種データの構成と内容の一例を示す図である。 依頼元計算機が依頼先計算機にサスペンドを伴わないプログラムの実行を依頼するタイムチャートである。 依頼元計算機が依頼先計算機にサスペンドを伴うプログラムの実行を依頼するタイムチャートである。 依頼元計算機が他計算機にプログラムの実行を依頼できず、自己実行するタイムチャートである。 依頼元計算機における動作の流れを示すフローチャートである。 依頼元計算機における負荷問い合わせ処理の流れを示すフローチャートである。 依頼元計算機における問い合わせ応答受信処理の流れを示すフローチャートである。 依頼元計算機における計算機選択処理の流れを示すフローチャートである。 他計算機における動作の流れを示すフローチャートである。 依頼先計算機におけるプログラム受信処理の流れを示すフローチャートである。 依頼先計算機におけるサスペンド処理の流れを示すフローチャートである。 依頼先計算機におけるサスペンド解除処理の流れを示すフローチャートである。
本実施形態の概要を説明する。
ある計算機が他の計算機に対して負荷状態を問い合わせた際に、全ての計算機が高負荷状態である場合、問い合わせを行った計算機はもう一度、他の計算機に対して負荷状態を問い合わせる。この時、問い合わせには「要求サスペンドレベル」を付加する。これに対し、問い合わせを受けた計算機は、実行中のプログラムのうち、要求サスペンドレベルに合致するプログラムを一時停止(サスペンド:suspend)する。そして、処理能力に余裕ができた計算機を選択して、プログラムの実行を依頼する。
なお、プログラム、転じてプロセスを一時停止する機能は、一例としてPOSIX系OSでは「kill -STOP」というコマンドで標準装備されている。
[ネットワークシステム101の全体構成]
図1は、本発明の実施形態であるネットワークシステム101の模式図である。
今、ネットワーク102には複数の計算機103が接続されている。これら計算機103は、その計算機103自身が置かれている状況に応じて、所定のプログラムを実行する。このうち、ある計算機103は、自身の負荷が重くなり、その処理能力を超えてしまいそうな状況に陥る。この計算機103は、ネットワーク102に接続されている他の計算機103に負荷の状況を問い合わせて、負荷が軽く、演算能力に余裕がある計算機103を見つける。そして、その負荷が軽い計算機103に、プログラムの実行を依頼する。
これ以降、負荷が重くなり、他の計算機103へプログラムの実行を依頼する計算機103を「依頼元計算機104」、依頼元計算機104以外の他の計算機103を「他計算機105」と称する。そして、他計算機105のうち、プログラムの実行を依頼された計算機103を「依頼先計算機106」と称する。
なお、説明を簡単にするため、ネットワーク102はTCP/IPネットワークであり、図1のネットワーク102に接続されている依頼元計算機104及び他計算機105は、全て同一のサブネットに属するプライベートIPアドレスが付与されているものとする。
すなわち、依頼元計算機104はネットワーク102上に存在する全ての他計算機105に対し、負荷の状況を問い合わせる。そして、全ての他計算機105の中から依頼先計算機106を一台決定して、プログラムの実行を依頼する。
[計算機103のハードウェア構成]
図2は、計算機103のハードウェア構成を示すブロック図である。
計算機103は、CPU201、ROM202、RAM203、不揮発性ストレージ204とNIC(Network Information Card)205が、バス206に接続されて構成される。なお、計算機103にパーソナルコンピュータを用いる場合、表示部207及び操作部208を伴うが、表示部207及び操作部208は必ずしも必要とはされない。
不揮発性ストレージ204にはネットワークOSと、本実施形態の計算機103を機能させるためのプログラムが格納されている。
[計算機103のソフトウェア機能]
図3は、計算機103のソフトウェア上における機能を示すブロック図である。
入出力制御部301は、ネットワーク102を通じて他計算機105或は依頼元計算機104との間で、メッセージ、プログラム、そしてプログラムの実行結果の送受信を行う。
なお、入出力制御部301が他計算機105或は依頼元計算機104との間で、メッセージ、プログラム、そしてプログラムの実行結果の送受信を行う際に用いるプロトコルには、特に限定される要素はない。したがって、実装が容易なHTTP(Hyper Text Transfer Protocol)等、適切なものを用いればよい。
プログラム実行処理部302は、不揮発性ストレージ204内に設けられる、プログラム記憶領域303に格納されているプログラムを実行する。
タスクマネージャとも呼ばれるシステムモニタ304は、現在実行中のプログラムと、それらプログラムが使用しているCPUの演算能力を逐一入出力制御部301に報告する。
プログラム転送先計算機管理テーブル305は、ネットワーク102上に存在する全ての計算機103のIPアドレスと、それら計算機103毎の負荷状態等に関する情報を格納する。このプログラム転送先計算機管理テーブル305は、計算機103が依頼元計算機104として動作する際に必要なテーブルである。
実行中プログラム管理テーブル306は、プログラム実行処理部302が現在実行しているプログラムに関する情報を格納する。但し、実行中プログラム管理テーブル306に登録されるプログラムは、計算機103が属する環境に起因するプログラムに限られ、ネットワークOSのカーネルやシェル等、計算機103自身が動作するために必要なプログラムは除外される。計算機103が属する環境に起因するプログラムとは、スマートグリッドやプラント設備等の制御対象に直接的に起因する、種々の演算プログラムであり、計算機負荷判断ルール403のサスペンドレベルが付与されている。これら、計算機負荷判断ルール403のサスペンドレベルが付与されている演算プログラムは、プログラム管理テーブル308に登録されている。
この実行中プログラム管理テーブル306は、計算機103が依頼先計算機106として動作する際に必要なテーブルである。
実行中依頼プログラム情報307はRAM203内に設けられる変数である。この実行中依頼プログラム情報307は、計算機103が依頼先計算機106として動作している状態において、依頼元計算機104のIPアドレスと、現在依頼元計算機104から受信して実行中のプログラムに関する情報を格納する。計算機103が依頼先計算機106として動作していない状態では、実行中依頼プログラム情報307は何れのフィールドも空(NULL)になる。
改めて図1を参照して説明する。
ネットワーク102に接続される全ての計算機103は、依頼元計算機104であっても他計算機105であっても、そのハードウェア構成とソフトウェアの機能は殆ど変わらない。したがって、どの計算機103同士も絶対的な上下関係は存在しない。高負荷状態になった場合、その計算機103は依頼元計算機104になり、それ以外の計算機103は他計算機105となり、その中で依頼元計算機104から選ばれた一台の計算機103が依頼先計算機106になる。
[メッセージ、ルール、テーブルの構成]
図4は、各種データの構成と内容の一例を示す図である。
要求メッセージ401は、要求種別フィールドと、要求サスペンドレベルフィールドよりなる。
要求種別フィールドには、依頼元計算機104が他計算機105に対し、何を伝えたいのかを示す種別情報が格納される。この種別情報は、「負荷問い合わせ」と「プログラム実行依頼」の二種類である。
要求サスペンドレベルフィールドには、依頼元計算機104が他計算機105に対して、種別情報に伴うサスペンドレベルを示す情報が格納される。サスペンドレベルについては後述する計算機負荷判断ルールにて詳述する。
図4では、「負荷問い合わせ」と「プログラム実行依頼」を列挙して表示しているが、実際に送信されるメッセージはこれら二種類のメッセージのうちのいずれか片方である。
負荷応答メッセージ402は、計算機IPアドレスフィールドと、計算機負荷値フィールドよりなる。
計算機IPアドレスフィールドは、依頼元計算機104のIPアドレスが格納される。
計算機負荷値フィールドは、依頼元計算機104に返答する、現在のCPUの負荷状態を示す値が格納される。
この負荷応答メッセージ402は、依頼元計算機104から受信した要求メッセージ401が「負荷問い合わせ」であった場合に、当該計算機103から依頼元計算機104へ返送されるメッセージである。
計算機負荷判断ルール403は、サスペンドレベルと、許容負荷閾値よりなる。図4中、計算機負荷判断ルール403はテーブルの形式にて示されているが、入出力制御部301を構成するプログラムに組み込まれていてもよい。
サスペンドレベルは、あるプログラムの優先順位或は重要度を示す。サスペンドレベルは「A」が最も高く、「B」が「A」の次に高く、「C」が最も低い。
許容負荷閾値は、あるサスペンドレベルに対応するプログラムを実行するに際し、許容されるCPUの負荷状態の閾値である。
サスペンドレベル「A」のプログラムの実行を許可できる場合は、CPUの許容負荷閾値は0%以上5%未満迄である。
サスペンドレベル「B」のプログラムの実行を許可できる場合は、CPUの許容負荷閾値は5%以上10%未満迄である。
サスペンドレベル「C」のプログラムの実行を許可できる場合は、CPUの許容負荷閾値は10%以上20%未満迄である。
再び要求メッセージ401を説明する。
要求サスペンドレベルとは、サスペンド、すなわちプログラムの一時停止を要求する対象となるサスペンドレベルである。
本実施形態の計算機103は、実行を依頼するプログラムと同じサスペンドレベルのプログラムを一時停止の対象とする。
すなわち、依頼元計算機104が依頼先計算機106へサスペンドレベル「A」のプログラムの実行を依頼する場合、依頼先計算機106は、実行中のプログラムのうち、サスペンドレベル「A」のプログラムの実行を一時停止する。
同様に、依頼元計算機104が依頼先計算機106へサスペンドレベル「B」のプログラムの実行を依頼する場合、依頼先計算機106は、実行中のプログラムのうち、サスペンドレベル「B」のプログラムの実行を一時停止する。
同様に、依頼元計算機104が依頼先計算機106へサスペンドレベル「C」のプログラムの実行を依頼する場合、依頼先計算機106は、実行中のプログラムのうち、サスペンドレベル「C」のプログラムの実行を一時停止する。
なお、依頼元計算機104から送信される要求メッセージ401の要求サスペンドレベルが「NULL」の場合、依頼先計算機106は実行中のプログラムに対して一時停止を行わない。
プログラム転送先計算機管理テーブル305は、計算機IPアドレスフィールドと、計算機負荷値フィールドと、第一判定結果フィールドとを有する。更に、サスペンド時負荷値フィールドと、第二判定結果フィールドと、受信完了フラグフィールドと、計算機選択フラグフィールドよりなる。
計算機IPアドレスフィールドには、計算機103のIPアドレスが格納される。なお、IPアドレスは計算機103を一意に識別する情報であることを鑑みれば、本実施形態のネットワークシステム101がTCP/IPネットワークでない場合であっても、計算機を一意に識別する情報がこのフィールドに格納される。そのような場合、このフィールドは「計算機アドレスフィールド」と呼ぶこともできる。
計算機負荷値フィールドには、計算機103の負荷値が格納される。
第一判定結果フィールドには、第一回目の判定結果が格納される。
サスペンド時負荷値フィールドには、仮に計算機103が依頼先計算機106となり、依頼元計算機104の要求メッセージ401を受けて、所定のサスペンドレベルに該当するプログラムの実行を一時停止した場合における、計算機103の負荷値が格納される。
第二判定結果フィールドには、第二回目の判定結果が格納される。
受信完了フラグフィールドには、他計算機105の負荷値を受信して、その負荷値に基いて第一判定結果フィールド又は第二判定結果フィールドに判定結果を格納したか否かを示すフラグが格納される。
計算機選択フラグフィールドには、プログラムの実行を依頼する対象となった計算機103を示すフラグが格納される。
実行中プログラム管理テーブル306は、プログラム名フィールドと、動作状態フィールドと、サスペンドレベルフィールドと、CPU占有率フィールドよりなる。
プログラム名フィールドには、実行中又はサスペンド中のプログラムの名称が格納される。
動作状態フィールドには、プログラムの動作状態、すなわち当該プログラムが実行中であるのか、又はサスペンド中であるのかを示すフラグが格納される。
サスペンドレベルフィールドには、プログラムのサスペンドレベルが格納される。
CPU占有率フィールドには、プログラムがCPUの演算能力を占有している割合が格納される。
実行中依頼プログラム情報307は、プログラム名フィールドと、依頼元IPアドレスフィールドよりなる。
プログラム名フィールドには、依頼元計算機104から依頼されて現在実行中であるプログラムの名称が格納される。
依頼元IPアドレスフィールドには、依頼元計算機104のIPアドレスが格納される。
計算機103が依頼先計算機106として動作していない状態では、図4の矢印に示すように実行中依頼プログラム情報307は何れのフィールドも空(NULL)になる。
プログラム管理テーブル308は、プログラム名フィールドと、サスペンドレベルフィールドよりなる。
プログラム名フィールドには、プログラムの名称が格納される。
サスペンドレベルフィールドには、プログラムのサスペンドレベルが格納される。
[依頼元計算機104と依頼先計算機106の動作の流れ]
図5は、依頼元計算機104が依頼先計算機106にサスペンドを伴わないプログラムの実行を依頼するタイムチャートである。
先ず、依頼元計算機104は他計算機105に要求メッセージ401を送信して、計算機103の負荷値を問い合わせる(S501)。この時、要求メッセージ401の要求種別は「負荷問い合わせ」であり、要求サスペンドレベルは無指定を意味する「NULL」である。
すると、要求メッセージ401を受信した他計算機105は、システムモニタ304を通じて現在の自身の負荷状態、即ち計算機負荷値を取得して、依頼元計算機104へ負荷応答メッセージ402を返信する(S502)。
依頼元計算機104は、他計算機105から負荷応答メッセージ402を受信すると、負荷応答メッセージ402に含まれる計算機負荷値を見て、当該他計算機105がプログラムの実行を依頼できるものと判断する(S503のYES)。そこで、依頼元計算機104は当該他計算機105を依頼先計算機106と認定し、依頼先計算機106に要求メッセージ401を送信して、プログラムの送信を要求する(S504)。この時、要求メッセージ401の要求種別は「プログラム実行依頼」であり、要求サスペンドレベルは無指定を意味する「NULL」である。
すると、要求メッセージ401を受信した依頼先計算機106は、即座に依頼元計算機104へ準備が完了した旨を示す準備完了メッセージを返信する(S505)。
依頼元計算機104は、依頼先計算機106から準備完了メッセージを受信すると、実行を依頼するプログラムを依頼先計算機106へ送信する(S506)。
すると、プログラムを受信した依頼先計算機106は、当該プログラムを一旦プログラム記憶領域303に記憶した後、プログラムを実行する。そして、プログラムの実行が終了したら、その実行結果を依頼元計算機104へ返信する(S507)。
依頼元計算機104は、依頼先計算機106から実行結果を受信して、一連の処理を終了する(S508)。
図6は、依頼元計算機104が依頼先計算機106にサスペンドを伴うプログラムの実行を依頼するタイムチャートである。図6のタイムチャートは、図5のタイムチャートにおいて、ステップS503の判定結果がNOである場合の流れである。
先ず、依頼元計算機104は他計算機105に要求メッセージ401を送信して、計算機103の負荷値を問い合わせる(S601=S501)。この時、要求メッセージ401の要求種別は「負荷問い合わせ」であり、要求サスペンドレベルは無指定を意味する「NULL」である。
すると、要求メッセージ401を受信した他計算機105は、システムモニタ304を通じて現在の自身の負荷状態、即ち計算機負荷値を取得して、依頼元計算機104へ負荷応答メッセージ402を返信する(S602=S502)。
依頼元計算機104は、他計算機105から負荷応答メッセージ402を受信すると、負荷応答メッセージ402に含まれる計算機負荷値を見て、当該他計算機105がプログラムの実行を依頼できないものと判断する(S603=S503のNO)。そこで、依頼元計算機104は他計算機105に再度要求メッセージ401を送信して、計算機103の負荷値を問い合わせる(S604)。この時、要求メッセージ401の要求種別は「負荷問い合わせ」であり、要求サスペンドレベルは実行を依頼したいプログラムのサスペンドレベルである。ここでは一例として「B」であるものとする。
すると、要求メッセージ401を受信した他計算機105は、要求サスペンドレベルが同じプログラムを一時停止させた状態における、自身の負荷状態、即ち「サスペンドを伴う計算機負荷値」を算出する。そして、依頼元計算機104へ負荷応答メッセージ402を返信する(S605)。
依頼元計算機104は、他計算機105から負荷応答メッセージ402を受信すると、負荷応答メッセージ402に含まれる「サスペンドを伴う計算機負荷値」を見て、当該他計算機105がプログラムの実行を依頼できるものと判断する(S606のYES)。そこで、依頼元計算機104は当該他計算機105を依頼先計算機106と認定し、依頼先計算機106に要求メッセージ401を送信して、プログラムの送信を要求する(S607)。この時、要求メッセージ401の要求種別は「プログラム実行依頼」であり、要求サスペンドレベルは実行を依頼したいプログラムのサスペンドレベルである。ここでは前述の通り「B」である。
すると、要求メッセージ401を受信した依頼先計算機106は、要求サスペンドレベルが同じプログラムを全て一時停止させる(S608)。そして、依頼元計算機104へ準備が完了した旨を示す準備完了メッセージを返信する(S609)。
依頼元計算機104は、依頼先計算機106から準備完了メッセージを受信すると、実行を依頼するプログラムを依頼先計算機106へ送信する(S610)。
すると、プログラムを受信した依頼先計算機106は、当該プログラムを一旦プログラム記憶領域303に記憶した後、プログラムを実行する。そして、プログラムの実行が終了したら、その実行結果を依頼元計算機104へ返信する(S611)。更に、依頼先計算機106は依頼元計算機104に実行結果を送信したらサスペンドを解除し、一時停止していたプログラムを動作状態に復帰させる(S612)。
依頼元計算機104は、依頼先計算機106から実行結果を受信して(S613)、一連の処理を終了する。
図7は、依頼元計算機104が他計算機105にプログラムの実行を依頼できず、自己実行するタイムチャートである。図7のタイムチャートは、図6のタイムチャートにおいて、ステップS606の判定結果がNOである場合の流れである。
先ず、依頼元計算機104は他計算機105に要求メッセージ401を送信して、計算機103の負荷値を問い合わせる(S701=S601)。この時、要求メッセージ401の要求種別は「負荷問い合わせ」であり、要求サスペンドレベルは無指定を意味する「NULL」である。
すると、要求メッセージ401を受信した他計算機105は、システムモニタ304を通じて現在の自身の負荷状態、即ち計算機負荷値を取得して、依頼元計算機104へ負荷応答メッセージ402を返信する(S702=S602)。
依頼元計算機104は、他計算機105から負荷応答メッセージ402を受信すると、負荷応答メッセージ402に含まれる計算機負荷値を見て、当該他計算機105がプログラムの実行を依頼できないものと判断する(S703=S603のNO)。そこで、依頼元計算機104は他計算機105に再度要求メッセージ401を送信して、計算機103の負荷値を問い合わせる(S704=S604)。この時、要求メッセージ401の要求種別は「負荷問い合わせ」であり、要求サスペンドレベルは実行を依頼したいプログラムのサスペンドレベルである。ここでは一例として「B」であるものとする。
すると、要求メッセージ401を受信した他計算機105は、要求サスペンドレベルが同じプログラムを一時停止させた状態における、自身の負荷状態、即ち「サスペンドを伴う計算機負荷値」を算出して、依頼元計算機104へ負荷応答メッセージ402を返信する(S705=S605)。
依頼元計算機104は、他計算機105から負荷応答メッセージ402を受信すると、負荷応答メッセージ402に含まれる計算機負荷値を見て、当該他計算機105がプログラムの実行を依頼できないものと判断する(S706=S606のNO)。そこで、依頼元計算機104は他計算機105にプログラムの実行依頼を諦め、自身で当該プログラムを実行して(S707)、一連の処理を終了する。
従来技術では、負荷問い合わせを一度きり行っていた。
本実施形態では、負荷問い合わせを二回行う。更に、二回目の負荷問い合わせは、実行中のプログラムを一時停止させた状態における計算機負荷値を問い合わせている。これにより、依頼元計算機104は他計算機105にプログラムの実行を依頼できる可能性が高まる。
[依頼元計算機104の動作の流れ]
図8は、依頼元計算機104における動作の流れを示すフローチャートである。
依頼元計算機104が処理を開始すると(S801)、依頼元計算機104の入出力制御部301はプログラム転送先計算機管理テーブル305に登録されている他計算機105に対し、負荷問い合わせ処理を行う(S802)。その結果、他計算機105の中にプログラムの実行を依頼できる計算機103が存在するなら(S803のYES)、入出力制御部301は当該計算機103を依頼先計算機106と認定する。そして、依頼先計算機106に対してプログラムの送信を要求するメッセージ、すなわち要求種別フィールドが「プログラム実行依頼」である要求メッセージ401を送信する(S804)。その後、入出力制御部301は処理を依頼するプログラムを依頼先計算機106へ送信し、実行結果を受信して(S805)、一連の処理を終了する(S806)。
なお、ステップS805において、依頼先計算機106から実行結果を受信したら、入出力制御部301はプログラム転送先計算機管理テーブル305を初期化する。プログラム転送先計算機管理テーブル305は、全レコードの第一判定結果フィールド、第二判定結果フィールド、受信完了フラグフィールド及び計算機選択フラグフィールドが「偽」に書き換えられる。そして、計算値負荷値フィールド及びサスペンド時負荷値フィールドが「NULL」に書き換えられる。
ステップS803にて、他計算機105の中にプログラムの実行を依頼できる計算機103が存在しないなら(S803のNO)、次に入出力制御部301は先に送信した要求メッセージ401は要求サスペンドレベルを設定していたか否かを確認する(S807)。要求サスペンドレベルを設定していなかったならば(S807のNO)、要求サスペンドレベルを設定して(S808)、再び要求サスペンドレベルを伴う負荷問い合わせを実行する(S802)。
ステップS807にて、要求サスペンドレベルを設定していたならば(S807のYES)、もはや他計算機105の中にプログラムの実行を依頼できる計算機103は存在しない。そこで、依頼元計算機104は自身で当該プログラムを実行して(S809)、一連の処理を終了する(S806)。
図9は、依頼元計算機104における負荷問い合わせ処理の流れを示すフローチャートである。図8のステップS802に該当する。
なお、これ以降に説明するフローチャートにおいて、動作の判断に使用するカウンタ変数iが表記されるが、このカウンタ変数iは局所変数である。すなわち、他のフローチャートに用いられるカウンタ変数iとは独立しており、相互に影響しない。
依頼元計算機104が処理を開始すると(S901)、最初に依頼元計算機104の入出力制御部301はカウンタ変数iの値を「1」に初期化する。そしてこれと共に、入出力制御部301はプログラム転送先計算機管理テーブル305の全てのレコードの第一判定結果フィールド、第二判定結果フィールド及び受信完了フラグフィールドの値を「偽」に初期化する(S902)。
次に、入出力制御部301はプログラム転送先計算機管理テーブル305のi番目のレコードが存在するか否か、確認する(S903)。レコードが存在するなら(S903のYES)、入出力制御部301はi番目のレコードの計算機IPアドレスフィールドに記載されている他計算機105に対し、「負荷問い合わせ」の要求メッセージ401を送信する(S904)。そして、カウンタ変数iを1インクリメントする(S905)。なお、図9中「++」はインクリメントの意味である。後述する図11、図14、図15も同様である。その後、入出力制御部301は再びステップS903に戻って、処理を繰り返す。
ステップS903にて、プログラム転送先計算機管理テーブル305のi番目のレコードが存在しないなら(S903のNO)、入出力制御部301はステップS906に推移する。すなわち、入出力制御部301はプログラム転送先計算機管理テーブル305の全てのレコードの受信完了フラグフィールドの値が「真」に変化するまで待つ(S906のNO)。全てのレコードの受信完了フラグフィールドの値が「真」に変化したならば(S906のYES)、入出力制御部301は計算機選択処理を実行して(S907)、一連の処理を終了する(S908)。
図10は、依頼元計算機104における問い合わせ応答受信処理の流れを示すフローチャートである。図10のフローチャートに示す処理は、他計算機105から負荷応答メッセージ402を受信した際に実行される処理である。すなわち、図9のステップS904において、依頼元計算機104がプログラム転送先計算機管理テーブル305に登録されている全ての他計算機105に対し、「負荷問い合わせ」の要求メッセージ401を送信した後に実行される。
依頼元計算機104が処理を開始すると(S1001)、依頼元計算機104の入出力制御部301は他計算機105から受信した負荷応答メッセージ402に含まれている計算機IPアドレスを用いて、プログラム転送先計算機管理テーブル305のレコードを特定する(S1002)。そして、入出力制御部301は他計算機105から受信した計算機103の負荷値を計算機負荷値フィールド又はサスペンド時負荷値フィールドへ、また負荷値に基づく判定結果を第一判定結果フィールド又は第二判定結果フィールドへ書き込む。更に、入出力制御部301は当該レコードの受信完了フラグフィールドの値を「真」に設定して(S1003)、一連の処理を終了する(S1004)。
図10の問い合わせ応答受信処理は、図9の負荷問い合わせ処理と並行して、他計算機105から負荷応答メッセージ402を受信したことに呼応して起動され、マルチタスク或はマルチスレッドにて実行される。
図11は、依頼元計算機104における計算機選択処理の流れを示すフローチャートである。図9のステップS907に該当する。
依頼元計算機104が処理を開始すると(S1101)、依頼元計算機104の入出力制御部301は最初にカウンタ変数iを「1」に初期化する(S1102)。
次に、入出力制御部301はプログラム転送先計算機管理テーブル305のi番目のレコードが存在するか否か、確認する(S1103)。レコードが存在するなら(S1103のYES)、入出力制御部301はi番目のレコードの第一判定結果フィールド及び第二判定結果フィールドの何れかの値が「真」であるか否かを確認する(S1104)。何れの値も共に「偽」であるなら(S1104のNO)、入出力制御部301はカウンタ変数iを1インクリメントして(S1105)、再びステップS1103から処理を繰り返す。
ステップS1104にて、i番目のレコードの第一判定結果フィールド及び第二判定結果フィールドの何れかの値が「真」であるなら(S1104のYES)、入出力制御部301はi番目のレコードの計算機選択フラグフィールドを「真」に書き換える(S1106)。そして、一連の処理を終了する(S1107)。
この時点で、プログラム転送先計算機管理テーブル305には、計算機選択フラグフィールドが「真」であるレコードが一つだけ存在する。
ステップS1103にて、i番目のレコードが存在しないなら(S1103のNO)、入出力制御部301は一連の処理を終了する(S1107)。
この時点で、プログラム転送先計算機管理テーブル305には、計算機選択フラグフィールドが「真」であるレコードが一つもない。
[他計算機105の動作の流れ]
図12は、他計算機105における動作の流れを示すフローチャートである。
他計算機105が依頼元計算機104から要求メッセージ401を受信すると(S1201)、他計算機105の入出力制御部301は、受信した要求メッセージ401の要求種別が「負荷問い合わせ」なのか「プログラム実行依頼」なのかを確認する(S1202)。
受信した要求メッセージ401の要求種別が「負荷問い合わせ」であれば(S1202のYES)、入出力制御部301は次に要求メッセージ401の要求サスペンドレベルが「A」、「B」又は「C」の有効な値であるか否かを確認する(S1203)。
要求メッセージ401の要求サスペンドレベルが「A」、「B」又は「C」の有効な値でない「NULL」ならば(S1203のNO)、入出力制御部301はシステムモニタ304から現在の計算機103自身の負荷状態、すなわち計算機負荷値を取得する(S1204)。そして、依頼元計算機104へ負荷応答メッセージ402を返信し(S1205)、一連の処理を終了する(S1206)。
ステップS1207において算出する計算機負荷値は、サスペンドを行った場合ならCPU占有率はどうなるのかを予測する演算処理によって得られる「予想負荷状態」である。
ステップS1203において、要求メッセージ401の要求サスペンドレベルが「A」、「B」又は「C」のうちのいずれか有効な値であるならば(S1203のYES)、入出力制御部301は先ず、システムモニタ304から現在の計算機103自身の計算機負荷値を取得する。次に、実行中プログラム管理テーブル306に登録されているプログラムの、要求サスペンドレベルに合致するサスペンドレベルのプログラムのCPU占有率を計算機負荷値から減算する。こうして、入出力制御部301はサスペンドが有効に機能している場合における計算機負荷値を算出する(S1207)。そして、入出力制御部301は依頼元計算機104へ負荷応答メッセージ402を返信し(S1205)、一連の処理を終了する(S1206)。
ステップS1202において、受信した要求メッセージ401の要求種別が「プログラム実行依頼」であれば(S1202のNO)、この時点で他計算機105は依頼先計算機106となる。先ず、入出力制御部301は次に要求メッセージ401の要求サスペンドレベルが「A」、「B」又は「C」の有効な値であるか否か、すなわちサスペンドの要求があるか否かを確認する(S1208)。
要求メッセージ401の要求サスペンドレベルが「NULL」ならば(S1208のNO)、入出力制御部301は依頼元計算機104へ準備完了メッセージを返信し(S1209)、プログラム受信処理を実行する(S1210)。その後、一連の処理を終了する(S1206)。
ステップS1208において、要求メッセージ401の要求サスペンドレベルが「A」、「B」又は「C」のうちのいずれか有効な値であるならば(S1208のYES)、入出力制御部301はサスペンド処理を実行する(S1211)。サスペンド処理が完了したら、入出力制御部301は依頼元計算機104へ準備完了メッセージを返信し(S1209)、プログラム受信処理を実行する(S1210)。その後、一連の処理を終了する(S1206)。
図13は、依頼先計算機106におけるプログラム受信処理の流れを示すフローチャートである。図12のステップS1210に該当する。
依頼先計算機106が処理を開始すると(S1301)、依頼先計算機106の入出力制御部301は依頼元計算機104から実行の依頼対象となるプログラムを受信する(S1302)。そして、プログラムを実行して(S1303)、実行結果を依頼元計算機104に送信して(S1304)、サスペンド解除処理を行い(S1305)、一連の処理を終了する(S1306)。
図14は、依頼先計算機106におけるサスペンド処理の流れを示すフローチャートである。図12のステップS1211に該当する。
依頼先計算機106が処理を開始すると(S1401)、依頼先計算機106の入出力制御部301は最初にカウンタ変数iを「1」に初期化する(S1402)。
次に、入出力制御部301は実行中プログラム管理テーブル306のi番目のレコードが存在するか否か、確認する(S1403)。レコードが存在するなら(S1403のYES)、入出力制御部301は次にi番目のレコードのサスペンドレベルフィールドを見て、i番目のレコードのプログラムはサスペンドの対象であるか否かを確認する(S1404)。
ステップS1404にて、i番目のレコードのプログラムがサスペンドの対象であるなら(S1404のYES)、入出力制御部301は次の処理を行う。すなわち、プログラム実行処理部302を通じて、i番目のレコードのプログラム名フィールドに記載されているプログラムをサスペンド(一時停止)させる(S1405)。そして、入出力制御部301はi番目のレコードの動作状態フィールドの値を「サスペンド」に変更する(S1406)。
その後、入出力制御部301はカウンタ変数iを1インクリメントして(S1407)、再びステップS1403から処理を繰り返す。
ステップS1404にて、i番目のレコードのプログラムがサスペンドの対象でないなら(S1404のNO)、入出力制御部301はカウンタ変数iを1インクリメントして(S1407)、再びステップS1403から処理を繰り返す。
ステップS1403にて、i番目のレコードが存在しないなら(S1403のNO)、入出力制御部301は一連の処理を終了する(S1408)。
図15は、依頼先計算機106におけるサスペンド解除処理の流れを示すフローチャートである。図13のステップS1305に該当する。
依頼先計算機106が処理を開始すると(S1501)、依頼先計算機106の入出力制御部301は最初にカウンタ変数iを「1」に初期化する(S1502)。
次に、入出力制御部301は実行中プログラム管理テーブル306のi番目のレコードが存在するか否か、確認する(S1503)。レコードが存在するなら(S1503のYES)、入出力制御部301は次にi番目のレコードのサスペンドレベルフィールドを見て、i番目のレコードのプログラムは現在サスペンド中であるか否かを確認する(S1504)。
ステップS1504にて、i番目のレコードのプログラムがサスペンド中であるなら(S1504のYES)、入出力制御部301は次の処理を行う。すなわち、プログラム実行処理部302を通じて、i番目のレコードのプログラム名フィールドに記載されているプログラムについて、サスペンド状態を解除(動作再開)させる(S1505)。そして、入出力制御部301はi番目のレコードの動作状態フィールドの値を「動作中」に変更する(S1506)。
その後、入出力制御部301はカウンタ変数iを1インクリメントして(S1507)、再びステップS1503から処理を繰り返す。
ステップS1504にて、i番目のレコードのプログラムがサスペンド中でないなら(S1504のNO)、入出力制御部301はカウンタ変数iを1インクリメントして(S1507)、再びステップS1503から処理を繰り返す。
ステップS1503にて、i番目のレコードが存在しないなら(S1503のNO)、入出力制御部301は一連の処理を終了する(S1508)。
計算機103は、負荷が重くなり、他の計算機103へプログラムの実行を依頼する必要が生じた時、依頼元計算機104になる。そして、依頼元計算機104以外の計算機103は他計算機105となり、その中で依頼元計算機104がプログラムの実行を依頼することと決定した計算機103が、依頼先計算機106となる。言い換えれば、計算機103は依頼元計算機104になった時に「クライアント」となり、その他の他計算機105と依頼先計算機106は「サーバ」となる。
入出力制御部301は、図8、図9、図10及び図11に示したフローチャートに従い、依頼元計算機104、すなわちクライアントとして動作して、他の計算機103へ種々のメッセージを送信する。
クライアントから種々のメッセージを受信した入出力制御部301は、図12、図13、図14及び図15に示したフローチャートに従い、他計算機105又は依頼先計算機106、すなわちサーバとして動作して、種々のメッセージを返信する。
すなわち、入出力制御部301はクライアントとしてもサーバとしても動作する。
以上説明した実施形態には、以下に記す応用例が可能である。
(1)例えば、POSIX系OSにおける「kill -STOP」コマンドを実行すると、CPUの負荷は低減するが、RAM203は開放されない。そこで、プログラム実行処理部302が所定のプログラムを実行する際、プログラムが利用するRAM203のアドレスを管理する。そして、当該プログラムを一時停止する際、プログラムが専有していたRAM203の内容を不揮発性ストレージ204に書き出し、一時停止から復帰する際に不揮発性ストレージ204からRAM203の内容を読み戻せば、RAM203も余裕ができる。
(2)上記の実施形態では、サスペンドの対象にするプログラムは、実行を依頼されたプログラムのサスペンドレベルと等しいサスペンドレベルのプログラムを対象としていた。この、サスペンドするプログラムを選ぶ基準を、「プログラムの実行優先度」という観点で考えれば、実行を依頼されるプログラムの実行優先度に比べて、より低い実行優先度のプログラムをサスペンドする、という方法もある。
例えば、実行を依頼されるプログラムのサスペンドレベルが「A」なら、サスペンドレベル「B」と「C」のプログラムをサスペンドする。
同様に、実行を依頼されるプログラムのサスペンドレベルが「B」なら、サスペンドレベル「C」のプログラムをサスペンドする。
同様に、実行を依頼されるプログラムのサスペンドレベルが「B」なら、何れのプログラムもサスペンドしない。
(3)上記の実施形態では、実行中依頼プログラム情報307が1レコードのみ保持する場合について説明した。すなわち、ある計算機103が他の依頼元計算機104からプログラムの実行を依頼された後、他の依頼元計算機104からプログラムの実行を依頼されても、そのプログラムを実行できない。しかし、実行中依頼プログラム情報307が複数のレコードを有することを許し、実行中依頼プログラム情報307に登録されているプログラムはサスペンドの対象外とすることで、複数の依頼元計算機104からプログラムの実行を受け付けることが可能になる。
また逆に、ある計算機103において、他の依頼元計算機104から実行を依頼されるプログラムが同時に実行される数を、厳密に一つだけに限定することもできる。これを実現するには、既に依頼元計算機104からプログラムの実行を受け付けている場合には、負荷応答メッセージのホスト負荷値をプログラムの実行の受付が不可能な値に、例えば100%として報告する。こうすることで、既にプログラムの実行を受け付けた後から来るプログラムの実行依頼を拒否することができる。
(4)実行中プログラム管理テーブル306及び実行中依頼プログラム情報307は、プログラム名の代わりにプロセス番号を用いることができる。
(5)本実施形態では、プログラムを一時停止させたが、プログラムの実行優先度を低くしてもよい。例えばPOSIX系OSでは、実行中のプログラムの優先度を操作する「renice」コマンドがある。このように、プログラムの実行優先度を操作することも、プログラムの実行を一時停止させることも、CPUに対する負荷を低減させる点では共通する。
(6)本実施形態ではわかり易さのために、プログラム転送先計算機管理テーブル305には、計算機負荷値フィールド、第一判定結果フィールド、サスペンド時負荷値フィールド及び第二判定結果フィールドが設けられていた。しかし、計算機負荷値フィールドとサスペンド時負荷値フィールドは共用が可能である。同様に、第一判定結果フィールドと第二判定結果フィールドも共用が可能である。すなわち、第一回目の判定において第一判定結果フィールドの値が全て「偽」であった場合、第二回目は計算値負荷値フィールドにサスペンド時負荷値を上書きし、第二判定結果は第一判定結果フィールドに上書きする。
この場合、プログラム転送先計算機管理テーブル305は、次の二つのフィールドを有する。一つは、サスペンドを伴わない計算値負荷値又はサスペンドを伴うサスペンド時負荷値が格納される「計算機負荷値フィールド」である。もう一つは、サスペンドを伴わない場合の第一判定結果又はサスペンドを伴う場合の第二判定結果が格納される「判定結果フィールド」である。
(7)図11の計算機選択処理では、プログラム転送先計算機管理テーブル305のレコードを1番目から順に検証して(S1103及びS1104)、ステップS1104の検証に合致した最初のレコードを選択した。この処理に換えて、全レコードを検証し、条件に当てはまったレコードを計算機負荷値フィールド又はサスペンド時負荷値フィールドでソートして、最も負荷値が低い計算機を採用してもよい。
本実施形態では、ネットワークシステム101と、これを構成する計算機103を開示した。
依頼元計算機104が他計算機105に対して負荷状態を問い合わせた際に、全ての計算機が高負荷状態である場合、問い合わせを行った依頼元計算機104はもう一度、他計算機105に対して負荷状態を問い合わせる。この時、問い合わせには「要求サスペンドレベル」を付加する。これに対し、問い合わせを受けた他計算機105は、実行中のプログラムのうち、要求サスペンドレベルに合致するプログラムをサスペンドする。そして、処理能力に余裕ができた計算機を依頼先計算機106と決定して、プログラムの実行を依頼する。
このように、処理の優先度が高いプログラムを優先的にネットワークシステム101全体の演算能力へ割り当てることで、ネットワークシステム101全体の可用性が向上する。計算機103がこのような機能を備えることで、緊急性の高いプログラムは優先的に実行される。したがって、制御対象の安全性も向上する。
以上、本発明の実施形態例について説明したが、本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
例えば、上記した実施形態例は本発明をわかりやすく説明するために装置及びシステムの構成を詳細且つ具体的に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることは可能であり、更にはある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることも可能である。
また、上記の各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の揮発性或は不揮発性のストレージ、または、ICカード、光ディスク等の記録媒体に保持することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
101…ネットワークシステム、102…ネットワーク、103…計算機、104…依頼元計算機、105…他計算機、106…依頼先計算機、201…CPU、301…入出力制御部、302…プログラム実行処理部、304…システムモニタ、305…プログラム転送先計算機管理テーブル、306…実行中プログラム管理テーブル、307…実行中依頼プログラム情報、401…要求メッセージ、402…負荷応答メッセージ、403…計算機負荷判断ルール

Claims (6)

  1. 指示を受けて所定のプログラムを実行する機能と、指示を受けて実行中のプログラムにおけるCPUに対する負荷を低減させる機能と、指示を受けて前記CPUに対する負荷を低減させた前記プログラムの、前記CPUに対する負荷を復旧させる機能とを備える、プログラム実行処理部と、
    ネットワークに接続され、前記ネットワークを通じて他の計算機から所定のメッセージを受信したことに基づいて、実行中のプログラムにおけるCPUに対する負荷を低減させる処理を前記プログラム実行処理部に指示し、前記他の計算機から受信した実行依頼プログラムの実行を前記プログラム実行処理部に指示し、前記実行依頼プログラムの実行が終了したことに基づいて前記実行依頼プログラムの実行結果を前記他の計算機に返信すると共に、前記CPUに対する負荷を低減させた前記プログラムの、前記CPUに対する負荷を復旧させる処理を前記プログラム実行処理部に指示する、入出力制御部と、
    計算機を一意に識別する情報が格納される計算機アドレスフィールドと、前記計算機のCPUに対する負荷の値である計算機負荷値が格納される計算機負荷値フィールドと、前記計算機負荷値フィールドの値と所定の閾値とを比較して、所望の実行依頼プログラムを実行可能か否かを判定した判定結果が格納される判定結果フィールドとを有するプログラム転送先計算機管理テーブルと、を備え、
    前記入出力制御部は、前記実行依頼プログラムの実行を依頼するために、前記ネットワークを通じて他の計算機に前記計算機負荷値を問い合わせ、前記ネットワークを通じて前記他の計算機から受信した前記計算機負荷値を前記プログラム転送先計算機管理テーブルの前記計算機負荷値フィールドに格納し、前記所望の実行依頼プログラムを実行可能か否かを判定した判定結果を前記判定結果フィールドに格納すると共に、
    前記プログラム転送先計算機管理テーブルの全レコードの前記判定結果フィールドが否定的結果であった場合に、前記ネットワークを通じて、前記実行依頼プログラムの優先順位を伴って再度前記計算機負荷値を問い合わせ、前記ネットワークを通じて他の計算機から受信した前記計算機負荷値を前記プログラム転送先計算機管理テーブルの前記計算機負荷値フィールドに格納し、再度前記所望の実行依頼プログラムを実行可能か否かを判定した判定結果を前記判定結果フィールドに格納して、
    前記プログラム転送先計算機管理テーブルの前記判定結果フィールドに肯定的結果のレコードがあった場合に、前記レコードに係る計算機に前記実行依頼プログラムを送信する、
    ことを特徴とする計算機。
  2. 更に、実行中又は負荷低減中のプログラムの名称が格納されるプログラム名フィールドと、前記プログラムの優先順位が格納されるサスペンドレベルフィールドとを有する実行中プログラム管理テーブルとを具備し、
    前記入出力制御部は、前記実行依頼プログラムの優先順位と前記実行中プログラム管理テーブルのサスペンドレベルフィールドの値とを比較して、前記CPUに対する負荷を低減させる処理を実施するプログラムを選ぶ、
    請求項1記載の計算機。
  3. 更に、前記CPUの負荷状態を報告するシステムモニタを具備し、
    前記入出力制御部は、前記他の計算機から所定のメッセージを受信したことに基づいて、前記システムモニタから得た前記CPUの負荷状態を前記他の計算機へ報告し、前記他の計算機から前記優先順位を伴う所定のメッセージを受信したことに基づいて、前記システムモニタから得た前記CPUの負荷状態から、前記CPUに対する負荷を低減させる処理を実施するプログラムを選んだ場合における、前記CPUの予想負荷状態を前記他の計算機へ報告する、請求項2記載の計算機。
  4. 前記入出力制御部は、前記実行依頼プログラムの優先順位と前記実行中プログラム管理テーブルのサスペンドレベルフィールドの値とが同じプログラムに対して、前記CPUに対する負荷を低減させる処理を実施する、
    請求項3記載の計算機。
  5. 前記入出力制御部は、前記実行依頼プログラムの優先順位に比べて前記実行中プログラム管理テーブルのサスペンドレベルフィールドの値が低いプログラムに対して、前記CPUに対する負荷を低減させる処理を実施する、
    請求項3記載の計算機。
  6. 依頼元計算機からネットワークを通じてプログラム転送先計算機管理テーブルに登録されている他の計算機に計算機負荷値を問い合わせる要求メッセージを送信するステップと
    前記要求メッセージを受信した前記他の計算機における、現在の自身の負荷状態である計算機負荷値を負荷応答メッセージとして前記依頼元計算機に返信するステップと、
    前記他の計算機からの前記負荷応答メッセージに基づいて、前記他の計算機の中にプログラムの実行を依頼できる前記他の計算機が存在するか否かを判定するステップと
    前記他の計算機が前記プログラムの実行を依頼できる、他の計算機が存在すると判定された場合には、入出力制御部において、前記他の計算機を依頼先計算機と認定するステップと
    前記依頼元計算機から前記依頼先計算機に、実行を依頼する前記プログラムを送信し、依頼先計算機から実行結果を受信して一連の処理を終了するステップと、
    前記依頼先計算機からの実行結果を受信した後に、前記入出力制御部がプログラム転送先計算機管理テーブルを初期化するステップと
    前記他の計算機の中にプログラムの実行を依頼できる他の計算機が存在しないと判定された場合には、前記入出力制御部において、先に送信した前記要求メッセージに要求サスペンドレベルを設定していたか否かを確認するステップと
    前記要求メッセージが要求サスペンドレベルを設定していない場合には、要求サスペンドレベルを設定して、再び要求サスペンドレベルを伴う計算機負荷値を問い合わせる要求メッセージを送信するステップと
    前記他の計算機の全てが要求サスペンドレベルを設定しており、他の計算機の全てにおいて、前記他の計算機の中にプログラムの実行を依頼できる計算機が存在しない場合には、依頼元計算機自身が当該プログラムを実行して、一連の処理を終了するステップと、
    含む演算処理方法。
JP2013084371A 2013-04-12 2013-04-12 計算機及び演算処理方法 Expired - Fee Related JP6082305B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013084371A JP6082305B2 (ja) 2013-04-12 2013-04-12 計算機及び演算処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013084371A JP6082305B2 (ja) 2013-04-12 2013-04-12 計算機及び演算処理方法

Publications (2)

Publication Number Publication Date
JP2014206879A JP2014206879A (ja) 2014-10-30
JP6082305B2 true JP6082305B2 (ja) 2017-02-15

Family

ID=52120376

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013084371A Expired - Fee Related JP6082305B2 (ja) 2013-04-12 2013-04-12 計算機及び演算処理方法

Country Status (1)

Country Link
JP (1) JP6082305B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6415405B2 (ja) 2015-07-31 2018-10-31 本田技研工業株式会社 タスク制御システム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05101019A (ja) * 1991-10-09 1993-04-23 Nec Corp 自動負荷検出分配型分散処理方法
JP2000330799A (ja) * 1999-05-21 2000-11-30 Casio Comput Co Ltd ジョブ処理装置及び記憶媒体

Also Published As

Publication number Publication date
JP2014206879A (ja) 2014-10-30

Similar Documents

Publication Publication Date Title
US10069749B1 (en) Method and apparatus for disaggregated overlays via application services profiles
US10715460B2 (en) Opportunistic resource migration to optimize resource placement
CN108667867B (zh) 数据存储方法及装置
CN103999031B (zh) 云服务器的虚拟私有存储阵列服务
JP5088366B2 (ja) 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
JP6190969B2 (ja) マルチテナントリソース調停方法
JP5931196B2 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
JP5000456B2 (ja) 資源管理システム、資源管理装置およびその方法
US20110145153A1 (en) Negotiating agreements within a cloud computing environment
US10235047B2 (en) Memory management method, apparatus, and system
TW201214284A (en) Virtualization and dynamic resource allocation aware storage level reordering
Psaras Decentralised edge-computing and IoT through distributed trust
JP6293683B2 (ja) 計算機システム及び計算機システムの性能障害の対処方法
CN111443870A (zh) 一种数据处理的方法、设备及存储介质
WO2015145598A1 (ja) 並列演算処理システムのデータ配分装置、データ配分方法、及びデータ配分プログラム
CN107528871B (zh) 存储系统中的数据分析
US10776173B1 (en) Local placement of resource instances in a distributed system
JP6082305B2 (ja) 計算機及び演算処理方法
KR102357308B1 (ko) 쇼핑몰업 대상 세무 서비스 제공을 위한 서버의 부하 분산 운영 방법, 장치 및 시스템
US11336519B1 (en) Evaluating placement configurations for distributed resource placement
JP2013186520A (ja) コンピュータシステム、サーバ装置、負荷分散方法、及びプログラム
Butt et al. Integration of cloud-fog based environment with smart grid
Sakib et al. A proposal on cloud based data centre using shared memory of mobile storage by virtualization
JP7230632B2 (ja) 情報処理装置、システム、プログラム及び制御方法
JP2019101965A (ja) 情報配信システム、情報配信方法及びサーバ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160303

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161212

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: 20170117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170120

R150 Certificate of patent or registration of utility model

Ref document number: 6082305

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees