説明

管理プログラム、管理方法、および管理装置

【課題】並列処理の効率化を図ること。
【解決手段】サーバSは、プロセスPの起動指定を受け付けると、実行中プロセスP群の中の子プロセスPについて、親プロセスPの並列処理数を取得する。そして、サーバSは、並列処理数が頭打ち並列処理数を超えている場合は、実行中プロセスPは親プロセスPの効率化に貢献していないと判断して、実行中プロセスPを停止する。これにより、サーバSは、親プロセスPの並列処理数を1つ減らして、並列処理数を適正化する。また、サーバSは、CPUリソースを使用可能にし、使用可能にしたCPUリソースを他のプロセスPの実行に使用して、CPUリソースを効率よく使用する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、管理プログラム、管理方法、および管理装置に関する。
【背景技術】
【0002】
近年、製品の設計や製造におけるCAD(Computer Aided Design)処理に必要な時間が増加している。例えば、半導体業界では、微細化によるレイアウト設計やレチクル描画データの作成に必要なCAD処理のTAT(Turn Around Time)が増えており、CPUリソースが不足している。
【0003】
このため、1台のコンピュータ内で一連の処理を実行するのではなく、複数のコンピュータに一連の処理を分散させて実行させる並列処理が普及しており、数十台〜数百台規模のコンピュータに効率よく処理を分散させる技術がある。例えば、複数のコンピュータ上で複数のプログラムが動作する分散処理において、各コンピュータの性能と負荷に応じて、プログラムの優先順位を変更する技術がある(例えば、下記特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平7−282013号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
並列処理においては、或る数までは並列処理数を増加させるごとに一連の処理が効率化されていくものの、或る数を超えると並列処理数を増加させても一連の処理を効率化できなくなるという性質がある。このとき、並列処理を行うコンピュータでは、一連の処理の効率化に貢献しない処理にCPUリソースが割り当てられ、他の処理に割り当てるCPUリソースが不足してしまうという問題がある。
【0006】
本発明は、上述した従来技術による問題点を解消するため、並列処理の効率化を図ることができる管理プログラム、管理方法、および管理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、実行中プロセス群の中からいずれかの実行中プロセスを選択し、選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、親プロセスが通信を行う通信相手のプロセス数を取得し、取得されたプロセス数が、親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断し、並列処理上限数を超えたと判断された場合、いずれかの実行中プロセスの実行を停止させる管理プログラム、管理方法、および管理装置が提案される。
【発明の効果】
【0008】
本発明の一側面によれば、並列処理の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【0009】
【図1】図1は、サーバによる並列処理数適正化処理の内容を示す説明図である。
【図2】図2は、図1に示したサーバSのハードウェア構成例を示すブロック図である。
【図3】図3は、アプリケーションテーブル300の記憶内容の一例を示す説明図である。
【図4】図4は、マシンテーブル400の記憶内容の一例を示す説明図である。
【図5】図5は、起動指定プロセス実行処理の一例を示す説明図である。
【図6】図6は、異常プロセス停止処理の一例を示す説明図である。
【図7】図7は、保留プロセス実行処理の一例を示す説明図である。
【図8】図8は、並列処理数適正化処理の一例を示す説明図である。
【図9】図9は、CPU使用率の低下の一例を示す説明図である。
【図10】図10は、CPU使用率低下タイミング判断処理を示す説明図(その1)である。
【図11】図11は、CPU使用率低下タイミング判断処理を示す説明図(その2)である。
【図12】図12は、サーバSの機能的構成例を示すブロック図である。
【図13】図13は、起動指定プロセス実行処理の詳細な処理手順を示すフローチャート(その1)である。
【図14】図14は、起動指定プロセス実行処理の詳細な処理手順を示すフローチャート(その2)である。
【図15】図15は、異常プロセス停止処理の詳細な処理手順を示すフローチャートである。
【図16】図16は、並列処理数適正化処理の詳細な処理手順を示すフローチャートである。
【図17】図17は、CPU使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。
【図18】図18は、節電時の起動指定プロセス実行処理の一例を示す説明図である。
【図19】図19は、節電時のCPU使用率低下タイミング判断処理を示す説明図(その1)である。
【図20】図20は、節電時のCPU使用率低下タイミング判断処理を示す説明図(その2)である。
【図21】図21は、節電開始処理の詳細な処理手順を示すフローチャート(その1)である。
【図22】図22は、節電開始処理の詳細な処理手順を示すフローチャート(その2)である。
【図23】図23は、節電時の異常プロセス停止処理の詳細な処理手順を示すフローチャートである。
【図24】図24は、節電時のCPU使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。
【図25】図25は、オフライン処理の詳細な処理手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、この発明にかかる管理プログラム、管理方法、および管理装置の実施の形態を詳細に説明する。以下では、管理装置として、サーバを採用して説明を行う。
【0011】
(サーバによる並列処理数適正化処理の内容)
図1は、サーバによる並列処理数適正化処理の内容を示す説明図である。図1において、サーバSは、プロセスPの実行を管理するコンピュータである。例えば、プロセスPとしては、親プロセスPや子プロセスPが挙げられる。親プロセスPとは、自サーバSまたは他サーバSに子プロセスPを起動させて並列処理を行わせて、親プロセスPの処理の効率化を図るプロセスPである。また、子プロセスPとは、親プロセスPによって起動されるプロセスPである。
【0012】
ここで、親プロセスPが並列処理させる子プロセスPの数(以下では「並列処理数」という)の増加による親プロセスPの処理の効率化には限りがある。図1の例では、親プロセスPになるプロセスP10が並列処理数を増加させた場合、並列処理数が3になるまでは処理時間が削減されていくが、並列処理数が4以上に増えても処理時間がほとんど削減されない。また、並列処理させる子プロセスPの数が多いために、サーバSでCPUリソースが不足してプロセスP間で競合が起こり、並列処理数を増加させることで処理時間が増える可能性もある。
【0013】
そのため、サーバSは、並列処理数の上限を保持しておき、実行中の子プロセスPの数が並列処理数の上限を超えている場合、並列処理の効率化を図る。具体的には、サーバSは、並列処理数が多すぎるために並列処理の処理時間の削減に貢献していないプロセスPがあれば、当該プロセスPを停止させて、CPUリソースを効率よく使用できるようにする。
【0014】
図1の例では、サーバSとして、サーバS1〜S5を示す。サーバS2は、親プロセスPになるプロセスP10を実行しているマスター計算機である。サーバS2は、プロセスP10の子プロセスPになるプロセスP11,P12,P13,P14を、スレーブ計算機になる他サーバSに実行させる。サーバS1は、プロセスP10の子プロセスPになるプロセスP11を実行しているスレーブ計算機である。また、サーバS1は、プロセスP11以外にプロセスP31を実行している。
【0015】
サーバS3は、プロセスP10の子プロセスPになるプロセスP12を実行しているスレーブ計算機である。サーバS4は、プロセスP10の子プロセスPになるプロセスP13を実行しているスレーブ計算機である。サーバS5は、プロセスP10の子プロセスPになるプロセスP14を実行しているスレーブ計算機である。また、各サーバSは、プロセスP10の並列処理数の上限として、頭打ち並列処理数「3」を保持している。
【0016】
ここでは、サーバS1を実行主体にした場合を例に挙げて、実行中プロセスPの並列処理数適正化処理について説明する。
【0017】
(1)まず、サーバS1は、プロセスP21の起動指定を受け付ける。サーバS1は、プロセスP21の起動指定を受け付けると、実行中プロセスPの中から子プロセスPを選択する。図1の例では、サーバS1は、実行中プロセスP(図1ではプロセスP11,P31)の中から、プロセスP10の子プロセスPになるプロセスP11を選択する。
【0018】
(2)次に、サーバS1は、選択したプロセスP11の親プロセスPになるプロセスP10の並列処理数を、サーバS2から取得する。図1の例では、並列処理数は、プロセスP10の子プロセスP(プロセスP11,P12,P13,P14)の数「4」である。そして、取得した並列処理数「4」が、保持している頭打ち並列処理数「3」より大きいため、サーバS1は、プロセスP10の並列処理数は適正ではないと判断する。
【0019】
(3)そして、サーバS1は、プロセスP10の子プロセスPになるプロセスP11を停止することで、プロセスP10の並列処理数を1つ少なくする。これにより、サーバS1は、親プロセスPになるプロセスP10の並列処理数を適正化することができる。また、サーバS1は、サーバS1内でプロセスP10の子プロセスPになるプロセスP11に使用されていたCPUリソースを使用可能にすることができる。結果として、サーバS1は、他のプロセスP(例えば起動指定されたプロセスP21)の処理に、使用可能にしたCPUリソースを使用することができるようになる。
【0020】
(サーバSのハードウェア構成例)
図2は、図1に示したサーバSのハードウェア構成例を示すブロック図である。図2において、サーバSは、CPUs(Central Processing Units)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
【0021】
ここで、CPUs201は、1または複数のCPUを含む。CPUs201は、サーバSの全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。また、ROM202は、実行を保留されたプロセスPの待ち行列になるキュー、およびプロセスPの実行および停止を制御するスケジューラを記憶している。RAM203は、CPUs201のワークエリアとして使用される。
【0022】
磁気ディスクドライブ204は、CPUs201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
【0023】
光ディスクドライブ206は、CPUs201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
【0024】
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【0025】
インターフェース(以下、「I/F」と略する。)209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、例えばモデムやLANアダプタなどを採用することができる。
【0026】
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【0027】
スキャナ212は、画像を光学的に読み取り、サーバS内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。
【0028】
(アプリケーションテーブル300の記憶内容)
次に、図3を用いて、アプリケーションテーブル300の記憶内容について説明する。アプリケーションテーブル300は、サーバSが保持するテーブルである。アプリケーションテーブル300は、1または複数のプロセスを含むアプリケーションの性質を示すアプリ情報を記憶するテーブルであり、並列処理数適正化処理において参照される。例えば、図1の例では、アプリケーションテーブルから、頭打ち並列処理数が参照される。アプリケーションテーブル300は、図2に示したROM202、RAM203、磁気ディスク205、または光ディスク207などの記憶装置によって実現される。以下、アプリケーションテーブル300を具体的に説明する。
【0029】
図3は、アプリケーションテーブル300の記憶内容の一例を示す説明図である。図3に示すように、アプリケーションテーブル300は、アプリ項目と、version項目と、種類項目と、クラスタリング項目と、頭打ち並列処理数項目と、処理時平均CPU使用率項目と、通信時平均CPU使用率項目と、処理時最大CPU使用率項目と、通信時最大CPU使用率項目と、平均通信時間項目と、待機時間打ち切り定数項目と、並列処理数打ち切り定数項目と、ロード時間項目と、を有する。アプリケーションテーブル300は、アプリケーションごとにレコードを構成し、アプリ情報をレコードとして記憶する。
【0030】
アプリ項目には、アプリケーションの識別子が記憶される。version項目には、アプリケーションのバージョン情報が記憶される。種類項目には、アプリケーションに含まれるプロセスPの種別が記憶される。プロセスPの種別とは、親プロセスPまたは子プロセスPである。
【0031】
クラスタリング項目には、アプリケーション内のプロセスPがクラスタリングに対応しているか否かが記憶される。クラスタリングとは、複数の計算機を1つの計算機として扱い、いずれかの計算機で処理が中止された場合に他の計算機が当該処理を引き継ぐことができるようにする技術である。頭打ち並列処理数項目には、アプリケーション内の並列処理数の上限が記憶される。
【0032】
処理時平均CPU使用率項目には、アプリケーション内のプロセスPが親プロセスPまたは子プロセスPとの通信を行っていないときの平均CPU使用率が記憶される。通信時平均CPU使用率項目には、アプリケーション内のプロセスPが親プロセスPまたは子プロセスPとの通信を行っているときの平均CPU使用率が記憶される。
【0033】
処理時最大CPU使用率項目には、アプリケーション内のプロセスPが親プロセスPまたは子プロセスPとの通信を行っていないときの最大CPU使用率が記憶される。通信時最大CPU使用率項目には、アプリケーション内のプロセスPが親プロセスPまたは子プロセスPとの通信を行っているときの最大CPU使用率が記憶される。
【0034】
平均通信時間項目には、アプリケーション内のプロセスPが親プロセスPまたは子プロセスPとの通信を開始してから終了するまでの平均時間が記憶される。ここで、平均通信時間項目の「C」とは、並列処理数を示す。待機時間打ち切り定数項目には、アプリケーション内のプロセスPの通信の待機時間が正常か否かを判定するしきい値の算出に使用する定数が記憶される。並列処理数打ち切り定数項目には、アプリケーション内の並列処理数が正常か否かを判定するしきい値の算出に使用する定数が記憶される。ロード時間項目には、アプリケーション内のプロセスPが処理を開始するまでに要する時間が記憶される。
【0035】
(マシンテーブル400の記憶内容)
次に、図4を用いて、マシンテーブル400の記憶内容について説明する。マシンテーブル400は、サーバSが保持するテーブルである。マシンテーブル400は、サーバSの性質を示すサーバ情報を記憶するテーブルであり、例えば、上述した並列処理数適正化処理において参照される。マシンテーブル400は、図2に示したROM202、RAM203、磁気ディスク205、または光ディスク207などの記憶装置によって実現される。
【0036】
図4は、マシンテーブル400の記憶内容の一例を示す説明図である。図4に示すように、マシンテーブル400は、限界CPU使用率項目と、CPU性能項目と、節電開始時間項目と、節電終了時間項目と、節電除外日項目と、節電除外曜日項目と、節電時の目標CPU使用率項目と、停止可能CPU識別子項目と、CPU起動時間項目と、を有する。マシンテーブル400は、サーバSごとに生成されている。
【0037】
限界CPU使用率項目には、サーバSのCPU使用率の上限(以下では「限界CPU使用率」という)が記憶される。CPU性能項目には、サーバSのCPUの性能が記憶される。節電開始時間項目には、サーバSにより節電が開始される時間が記憶される。節電終了時間項目には、サーバSにより節電が終了される時間が記憶される。
【0038】
節電除外日項目には、サーバSにより節電が行われない日付が記憶される。節電除外曜日項目には、サーバSにより節電が行われない曜日が記憶される。節電時の目標CPU使用率項目には、節電を実施しているときのサーバSのCPU使用率の上限(以下では「目標CPU使用率」という)が記憶される。
【0039】
停止可能CPU識別子項目には、節電のために停止可能なCPUの識別子が記憶される。CPU起動時間項目には、CPUをオフラインにした後に、CPUを再びオンラインにして稼働できる状態になるまでの時間が記憶される。なお、オフラインとは、OS(Operating System)からCPUが認識されず、プロセスが割り当てられない状態をいう。これにより、サーバSは、OSから認識されないCPUでの消費電力の増加を抑制することができる。また、オンラインとは、OSからCPUが認識され、プロセスが割り当てられる状態をいう。
【0040】
ここで、サーバSは、節電を実施していないとき(以下では「通常時」という)と、節電を実施しているとき(以下では「節電時」という)とで、異なる処理を実行する。まず、通常時のサーバSによって実行される処理について説明する。なお、節電時については、図18以降で説明する。
【0041】
(起動指定プロセス実行処理)
まず、図5を用いて、サーバSによって実行される起動指定プロセス実行処理について説明する。起動指定プロセス実行処理は、サーバSがプロセスPの起動指定を受け付けると実行され、起動指定されたプロセスPを実行するCPUリソースがあるか否かを判断する処理であり、CPUリソースがあれば、起動指定されたプロセスPを実行する処理である。
【0042】
起動指定プロセス実行処理により、サーバSは、起動指定されたプロセスPを実行するCPUリソースが不足しているときは、起動指定されたプロセスPを実行せずにプロセスP間の競合を回避することができる。また、サーバSは、CPUリソースが不足していないときには、起動指定されたプロセスPを実行することができる。
【0043】
図5は、起動指定プロセス実行処理の一例を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
【0044】
(1)まず、サーバS1は、プロセスP21の起動指定を受け付ける。
【0045】
(2)次に、サーバS1は、アプリケーションテーブル300の処理時平均CPU使用率項目から、起動指定されたプロセスP21と実行中プロセスP11,P31とのそれぞれの処理時平均CPU使用率を取得する。そして、サーバS1は、取得したそれぞれのプロセスPの処理時平均CPU使用率の総和を算出する。これにより、サーバS1においてプロセスP11,P21,P31が並列実行された場合のサーバS1の平均CPU使用率が推定される。
【0046】
次に、サーバS1は、マシンテーブル400の限界CPU使用率項目から、サーバSの限界CPU使用率を取得する。そして、サーバS1は、算出した総和が取得した限界CPU使用率を超えるか否かを判断する。
【0047】
(3)次に、総和が限界CPU使用率を超えない場合、サーバS1は、プロセスP21の実行に使用できるサーバS1内のCPUリソースがあるとして、起動指定されたプロセスP21を実行する。このように、サーバS1は、プロセスP21を実行するサーバS1内のCPUリソースが不足しておらず、プロセスP21を実行してもプロセスP間で競合が起こらない場合に、プロセスP21を実行することができる。
【0048】
一方、総和が限界CPU使用率を超える場合、サーバS1は、プロセスP21の実行に使用できるサーバS1内のCPUリソースが不足しているとして、起動指定されたプロセスP21をキューに登録して、実行を保留する。このように、サーバS1は、プロセスP21を実行するサーバS1内のCPUリソースが不足し、プロセスP21を実行するとプロセスP間で競合が起きる場合には、プロセスP21の実行を保留することができる。
【0049】
(異常プロセス停止処理)
次に、図6を用いて、サーバSによって実行される異常プロセス停止処理について説明する。異常プロセス停止処理は、サーバSの実行中プロセスPの中に、プロセスP間通信時の待機時間が平均通信時間より長い、待機時間が異常なプロセスPがあるか否かを判断する処理であり、待機時間が異常なプロセスPがあれば実行を停止する処理である。異常プロセス停止処理により、サーバSは、待機時間が異常なプロセスPを停止させ、待機時間が異常なプロセスPに使用されていたCPUリソースを他のプロセスPの実行に使用可能にすることができる。
【0050】
図6は、異常プロセス停止処理の一例を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
【0051】
(1)まず、サーバS1は、実行中プロセスPの中から、親プロセスPからの指示待ち状態である子プロセスPを選択する。図6の例では、サーバS1は、親プロセスPになるプロセスP10からの指示待ち状態であるプロセスP11を選択している。
【0052】
(2)次に、サーバS1は、プロセスP11に関するアプリケーションテーブル300の平均通信時間項目の平均通信時間と待機時間打ち切り定数項目の定数とを乗算した値をしきい値として算出する。しきい値は、プロセスP11がプロセスP10からの指示を待つ待機時間が正常か否かを判断する指標となる値である。定数は、プロセスP11の平均通信時間より待機時間がどの程度長くなれば異常とするかを示す値である。そして、サーバS1は、指示待ち状態であるプロセスP11の待機時間が、算出したしきい値を超えているか否かを判断する。
【0053】
(3)ここで、サーバS1は、待機時間がしきい値を超えている場合、プロセスP11の待機時間が異常であると判断し、プロセスP11を停止して、プロセスP11をキューに登録する。待機時間がしきい値を超える場合とは、例えば、CPUリソースの不足によりプロセスP10の処理に異常が起きており、プロセスP11に指示が送信されていない場合が挙げられる。また、待機時間がしきい値を超える場合とは、例えば、CPUリソースの不足によりプロセスP11の処理に異常が起きている場合が挙げられる。これにより、サーバS1は、プロセスP11を停止して、サーバS1内でプロセスP11に使用されていたCPUリソースを使用可能にすることができる。
【0054】
(保留プロセス実行処理)
次に、図7を用いて、サーバSによって実行される保留プロセス実行処理について説明する。保留プロセス実行処理は、起動指定プロセス実行処理により実行が保留された保留中のプロセスPを実行するか否かを判断する処理であり、実行すると判断された場合に保留中のプロセスPを実行する処理である。
【0055】
保留プロセス実行処理により、サーバSは、異常プロセス停止処理により使用可能にされたCPUリソースを、保留中のプロセスPの処理に使用して、CPUリソースを効率よく使用することができる。なお、保留プロセス実行処理により、サーバSは、後述する並列処理数適正化処理により使用可能にされたCPUリソースを、保留中のプロセスPの処理に使用して、CPUリソースを効率よく使用することもできる。
【0056】
図7は、保留プロセス実行処理の一例を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
【0057】
(1)まず、サーバS1は、実行が保留されてキューに登録されたプロセスP21の実行に使用できるサーバS1内のCPUリソースがあるか否かを判断する。具体的には、サーバS1は、アプリケーションテーブル300の処理時平均CPU使用率項目から、キューに登録されたプロセスP21と実行中プロセスP31とのそれぞれの処理時平均CPU使用率を取得する。そして、サーバS1は、取得したそれぞれのプロセスPの処理時平均CPU使用率の総和を算出する。これにより、サーバS1においてプロセスP21,P31が並列実行された場合のサーバS1の平均CPU使用率が推定される。
【0058】
また、サーバS1は、マシンテーブル400の限界CPU使用率項目から、サーバS1の限界CPU使用率を取得する。次に、サーバS1は、算出したそれぞれのプロセスPの処理時平均CPU使用率の総和が、取得したサーバS1の限界CPU使用率を超えるか否かを判断する。
【0059】
(2)そして、総和が限界CPU使用率を超えない場合、サーバS1は、プロセスP21の実行に使用できるサーバS1内のCPUリソースがあるとして、キューに登録されたプロセスP21を実行する。一方、総和が限界CPU使用率を超える場合、サーバS1は、プロセスP21の実行に使用できるサーバS1内のCPUリソースが不足しているとして、キューに登録されたプロセスP21の実行を保留し続ける。
【0060】
これにより、サーバS1は、異常プロセス停止処理により使用可能にされたCPUリソースを、保留中のプロセスP21の処理に使用して、プロセスP21を実行することができる。結果として、サーバS1は、CPUリソースを効率よく使用することができる。
【0061】
(並列処理数適正化処理)
次に、図8を用いて、サーバSによって実行される並列処理数適正化処理について説明する。並列処理数適正化処理は、サーバSの実行中プロセスPについて並列処理数を適正化するために、並列処理数が頭打ち並列処理数を超えている場合に実行中プロセスPを停止する処理である。並列処理数適正化処理により、サーバSは、実行中プロセスPを停止して親プロセスPの並列処理数を1つ減らし、並列処理数を適正化することができる。また、並列処理数適正化処理により、サーバSは、親プロセスPの処理の効率化に貢献していない子プロセスPを停止して、CPU使用率を減少させることができる。
【0062】
図8は、並列処理数適正化処理の一例を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
【0063】
(1)まず、サーバS1は、実行中プロセスPの中から子プロセスPを選択する。例えば、図8では、サーバS1は、実行中プロセスPの中から、プロセスP10の子プロセスPになるプロセスP11を選択する。
【0064】
次に、サーバS1は、アプリケーションテーブル300のクラスタリング項目から、プロセスP11がクラスタリングに対応しているか否かを判断する。サーバS1は、クラスタリングに対応している場合はプロセスP11を停止しても他のサーバSがプロセスP11を引き継ぐことができるため、プロセスP11を停止させうると判断して、プロセスP11を並列処理数適正化処理の対象として登録する。
【0065】
また、サーバS1は、実行中プロセスPの中から選択したプロセスP11とプロセスP10との実通信時間を計測し、計測された実通信時間がしきい値以上になるまで待ってから、プロセスP11を並列処理数適正化処理の対象として登録してもよい。これにより、並列処理数が適正でない場合であっても、プロセスP11の実行が滞りなく行われているうちはプロセスP11を停止させるべきではないとして、プロセスP11を並列処理数適正化処理の対象にしない。
【0066】
(2)そして、サーバS1は、登録されたプロセスP11の親プロセスPになるプロセスP10の並列処理数を、親プロセスPになるプロセスP10を実行しているサーバS2から取得する。具体的には、サーバS1は、プロセスP10の並列処理数を示すプロセスP10のコネクション数「4」を、サーバS2から取得する。
【0067】
(3)次に、サーバS1は、アプリケーションテーブル300の頭打ち並列処理数項目から、プロセスP10の並列処理数の上限になる頭打ち並列処理数「3」を取得する。そして、サーバS1は、サーバS2から取得した並列処理数「4」が、アプリケーションテーブル300から取得した頭打ち並列処理数「3」を超えているため、プロセスP10の並列処理数は適正ではないと判断する。
【0068】
(4)そして、サーバS1は、プロセスP10の子プロセスPになるプロセスP11を停止することで、プロセスP10の並列処理数を1つ少なくする。
【0069】
これにより、サーバS1は、親プロセスPになるプロセスP10の並列処理数を適正化することができる。また、サーバS1は、プロセスP10の処理の効率化に貢献していないプロセスP11を停止して、プロセスP11に使用されていたCPUリソースを使用可能にすることができる。
【0070】
結果として、サーバS1は、他のプロセスP(例えば保留中のプロセスP21)の処理に、使用可能にしたCPUリソースを使用することができるようになる。具体的には、サーバS1は、図7に示した保留プロセス実行処理を行って、並列処理数適正化処理により使用可能にされたCPUリソースを、保留中のプロセスP21の処理に使用して、プロセスP21を実行する。これにより、サーバS1は、CPUリソースを効率よく使用することができる。
【0071】
(CPU使用率低下タイミング判断処理)
次に、図9〜図11を用いて、サーバSによって実行されるCPU使用率低下タイミング判断処理について説明する。CPU使用率低下タイミング判断処理は、プロセスP間通信によりサーバSでのCPU使用率が非通信時よりも低下した場合に、保留中のプロセスPを実行するか否かを判断する処理であり、実行すると判断すると保留中のプロセスPを実行する処理である。CPU使用率低下タイミング判断処理により、サーバSは、プロセスP間通信の開始により一時的に使用可能になったCPUリソースを使用して保留中のプロセスPを実行することができる。
【0072】
図9は、CPU使用率の低下の一例を示す説明図である。ここで、サーバSで実行中のプロセスPには、他プロセスPとのプロセスP間通信を行っている状態でCPU使用率が低下するという性質がある。図9の例では、サーバS1で実行中のプロセスP11には、親プロセスPになるプロセスP10とのプロセスP間通信時にCPU使用率が低下するものとする。
【0073】
このように、プロセスP間通信時にCPU使用率が低下し、CPUリソースが使用可能になるため、サーバS1は、使用可能になったCPUリソースを他のプロセスP(例えばキューに登録された保留中のプロセスP21)の処理に使用できるようになる。結果として、サーバS1は、CPUリソースを効率よく使用できる。図10および図11では、サーバS1を実行主体にした場合を例に挙げて、プロセスP間通信時に保留中のプロセスP21を実行するCPU使用率低下タイミング判断処理について説明する。
【0074】
図10および図11は、CPU使用率低下タイミング判断処理を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
【0075】
図10において、(1)まず、サーバS1は、実行中のプロセスP11と親プロセスPになるプロセスP10との通信の開始を検出する。
【0076】
(2)次に、サーバS1は、アプリケーションテーブル300の処理時平均CPU使用率項目から、キューに登録されたプロセスP21と実行中プロセスP31とのそれぞれの処理時平均CPU使用率を取得する。また、サーバS1は、アプリケーションテーブル300の通信時平均CPU使用率項目から、通信を開始した実行中プロセスP11の通信時平均CPU使用率を取得する。そして、サーバS1は、取得したそれぞれのプロセスPのCPU使用率の総和を算出する。これにより、サーバS1においてプロセスP21,P31が並列実行された場合のサーバS1の平均CPU使用率が推定される。
【0077】
また、サーバS1は、マシンテーブル400の限界CPU使用率項目から、サーバSの限界CPU使用率を取得する。次に、サーバS1は、算出したCPU使用率の総和が、取得したサーバSの限界CPU使用率を超えるか否かを判断する。
【0078】
(3)そして、サーバS1は、CPU使用率の総和がサーバSの限界CPU使用率以下である場合、プロセスP21の実行に使用できるサーバS1内のCPUリソースがあると判断する。これにより、サーバS1は、CPUリソースの観点からプロセスP21が実行可能か否かを判断することができる。
【0079】
次に、サーバSは、プロセスP11が通信を終了する前に、キューに登録されたプロセスP21の実行を開始できるか否かを判断する。これにより、サーバSは、プロセス間通信により一時的にCPU使用率が低下している間に、プロセスP21を実行する時間があるか否かを判断することができる。
【0080】
図10の例では、サーバS1は、アプリケーションテーブル300からプロセスP21のロード時間を取得し、取得したロード時間がプロセスP11の平均通信時間以下である場合、プロセスP21の実行を開始できると判断する。そして、サーバS1は、プロセスP21の実行を開始できると判断した場合、プロセスP21を実行する。
【0081】
また、サーバS1は、平均通信時間の代わりとして、予めプロセスP11の実通信時間を計測しておいてもよい。そして、サーバS1は、アプリケーションテーブル300からプロセスP21のロード時間を取得し、取得したロード時間がプロセスP11の実通信時間以下である場合、プロセスP21の実行を開始できると判断してもよい。これにより、プロセスP11の実通信時間が平均通信時間より短い場合にも、プロセス間通信により一時的にCPU使用率が低下している間に、プロセスP21を実行する時間があるか否かを判断することができる。
【0082】
一方、CPU使用率の総和がサーバSの限界CPU使用率を超える場合、サーバS1は、プロセスP21の実行に使用できるサーバS1内のCPUリソースが不足しているとして、キューに登録されたプロセスP21の実行を保留し続ける。また、サーバS1は、プロセスP11が通信を終了するまでにプロセスP21の実行を開始できないと判断した場合、キューに登録されたプロセスP21の実行を保留し続ける。サーバS1によってプロセスP21が実行された場合、図11に移行する。
【0083】
図11において、(1)まず、サーバS1は、アプリケーションテーブル300の平均通信時間項目から平均通信時間を取得する。次に、サーバS1は、プロセスP21の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバS1は、平均通信時間が経過したことを検出する。これにより、サーバS1は、プロセスP21がプロセスP間通信を終了してデータ処理を開始するタイミングを検出することができる。
【0084】
また、サーバS1は、平均通信時間の代わりとして、予めプロセスP11の実通信時間を計測しておいてもよい。そして、サーバS1は、プロセスP21の実行開始から、計測した実通信時間が経過するまで待機し、実通信時間が経過したことを検出してもよい。これにより、サーバS1は、プロセスP11の実通信時間が平均通信時間より短い場合にも、プロセスP21がプロセスP間通信を終了してデータ処理を開始するタイミングを検出することができる。プロセスP11の実通信時間としては、プロセスP11が通信を開始してから、通信を終了してデータ処理を開始するまでの時間が計測される。
【0085】
(2)サーバS1は、平均通信時間(または実通信時間)が経過したことを検出すると、プロセスP11が通信を終了してCPU使用率が上昇することによりプロセスP間の競合が起こることを回避すべく、実行中のプロセスP21を停止してキューに登録する。
【0086】
これにより、サーバS1は、プロセスP間通信の開始により一時的に使用可能になったCPUリソースを使用して、保留中のプロセスP21を実行することができる。また、サーバS1は、プロセスP間通信の終了によりCPUリソースが不足する前に、実行したプロセスP21を停止して、プロセスP間の競合を回避することができる。結果として、サーバS1は、CPUリソースを効率よく使用することができる。
【0087】
(サーバSの機能的構成例)
次に、図12を用いて、上述した処理を実現するサーバSの機能的構成例について説明する。
【0088】
図12は、サーバSの機能的構成例を示すブロック図である。サーバSは、負荷判断部1201と、実行部1202と、停止部1203と、検出部1204と、異常判断部1205と、選択部1206と、取得部1207と、並列処理判断部1208と、計測部1209と、ロード時間判断部1210と、起動時間判断部1211と、を含む構成である。検出部1204〜起動時間判断部1211は、具体的には、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPUs201に実行させることにより、または、I/F209により、その機能を実現する。
【0089】
負荷判断部1201は、起動が受け付けられたプロセスPのデータ処理に関する負荷と実行中プロセスPのデータ処理に関する負荷との総和が、コンピュータの負荷上限を超えたか否かを判断する。ここで、起動が受け付けられたプロセスPとは、上述した起動指定されたプロセスPである。データ処理に関する負荷とは、CPU使用率であり、例えば、上述した平均CPU使用率や最大CPU使用率である。コンピュータの負荷上限とは、予めサーバSの利用者によって設定されたCPU使用率の上限であり、上述した限界CPU使用率である。また、コンピュータの負荷上限とは、上述した目標CPU使用率であってもよい。
【0090】
これにより、負荷判断部1201は、起動指定されたプロセスPの実行に使用できるCPUリソースがあるか否かを判断することができる。なお、判断結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。なお、負荷判断部1201は、図5に示した起動指定プロセス実行処理、図7に示した保留プロセス実行処理、図8に示した並列処理数適正化処理、および図9〜図11に示したCPU使用率低下タイミング判断処理の実現に用いられる。それぞれの処理における負荷判断部1201の動作については後述する。
【0091】
実行部1202は、負荷判断部1201によって総和が限界CPU使用率を超えていないと判断された場合、起動指定されたプロセスPの実行に使用できるCPUリソースがあるとして、起動指定されたプロセスPを実行する。これにより、実行部1202は、CPUリソースが不足しておらず、起動指定されたプロセスPを実行してもプロセスP間で競合が起こらない場合に、起動指定されたプロセスPを実行することができる。実行部1202は、図5に示した起動指定プロセス実行処理、図7に示した保留プロセス実行処理、図8に示した並列処理数適正化処理、および図9〜図11に示したCPU使用率低下タイミング判断処理の実現に用いられる。それぞれの処理における実行部1202の動作については後述する。
【0092】
停止部1203は、負荷判断部1201によって総和が限界CPU使用率を超えたと判断された場合、起動指定されたプロセスPの実行に使用できるCPUリソースが不足しているとして、起動指定されたプロセスPをキューに登録する。これにより、停止部1203は、プロセスP間での競合を回避することができる。停止部1203は、図5に示した起動指定プロセス実行処理、図6に示した異常プロセス停止処理、図8に示した並列処理数適正化処理、および図9〜図11に示したCPU使用率低下タイミング判断処理の実現に用いられる。それぞれの処理における停止部1203の動作については後述する。
【0093】
検出部1204は、実行中プロセスP群のうち親プロセスPからの指示待ち状態の実行中プロセスPを検出する。これにより、検出部1204は、待機時間に異常がある可能性のあるプロセスPを検出して、図6に示した異常プロセス停止処理のトリガを発生させることができる。なお、検出結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。検出部1204は、図6に示した異常プロセス停止処理の実現に用いられる。異常プロセス停止処理における検出部1204の動作については後述する。
【0094】
異常判断部1205は、検出部1204によって検出された指示待ち状態の実行中プロセスPの待機時間が異常か否かを判断する。これにより、異常判断部1205は、検出部1204によって検出された指示待ち状態の実行中プロセスPが、停止部1203によって実行を停止させるべき待機時間が異常なプロセスPか否かを判断することができる。なお、判断結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。異常判断部1205は、図6に示した異常プロセス停止処理の実現に用いられる。異常プロセス停止処理における異常判断部1205の動作については後述する。
【0095】
選択部1206は、実行中プロセスP群の中からいずれかの実行中プロセスPを選択する。これにより、選択部1206は、並列処理数適正化処理の対象となるプロセスPを選択することができる。なお、選択結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。選択部1206は、図8に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における選択部1206の動作については後述する。
【0096】
取得部1207は、選択部1206によって選択されたいずれかの実行中プロセスPの親プロセスPを実行する計算機から、親プロセスPが通信を行う通信相手のプロセスP数を取得する。ここで、計算機とは、例えば、上述したサーバSである。通信相手のプロセスP数とは、親プロセスPの並列処理数を示す。これにより、取得部1207は、並列処理数適正化処理に使用する並列処理数を取得することができる。なお、取得結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。取得部1207は、図8に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における取得部1207の動作については後述する。
【0097】
並列処理判断部1208は、取得部1207によって取得された並列処理数が、親プロセスPを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する。ここで、並列処理上限数とは、例えば上述した頭打ち並列処理数である。これにより、並列処理判断部1208は、親プロセスPの並列処理数が適正か否かを判断することができる。なお、判断結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。並列処理判断部1208は、図8に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における並列処理判断部1208の動作については後述する。
【0098】
計測部1209は、実行中プロセスPの親プロセスPとの実通信時間を計測する。ここで、実通信時間とは、サーバSがプロセスP間通信を開始してからプロセスP間通信を終了してデータ処理を開始するまでの時間である。これにより、計測部1209は、プロセスPの通信時間が適正か否かを判断する指標として使用される実通信時間を取得することができる。なお、計測結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。計測部1209は、図8に示した並列処理数適正化処理の実現に用いられる。並列処理数適正化処理における計測部1209の動作については後述する。
【0099】
ロード時間判断部1210は、起動指定されたプロセスPのロード時間が、実行中プロセスPの平均通信時間(または実行中プロセスPの実通信時間)を超えるか否かを判断する。ここで、ロード時間とは、プロセスPの処理の開始にかかる時間である。これにより、ロード時間判断部1210は、実行中プロセスPのプロセスP間通信が終了する前に、起動指定されたプロセスPの処理を開始できるか否かを判断することができる。なお、判断結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。ロード時間判断部1210は、図9〜図11に示したCPU使用率低下タイミング判断処理の実現に用いられる。CPU使用率低下タイミング判断処理におけるロード時間判断部1210の動作については後述する。
【0100】
起動時間判断部1211は、プロセッサ群のプロセッサ起動時間が、実行中プロセスPの平均通信時間(または実行中プロセスPの実通信時間)を超えるか否かを判断する。ここで、プロセッサ群とは、例えば上述したCPUs201である。プロセッサ起動時間とは、例えば上述したCPU起動時間である。これにより、起動時間判断部1211は、実行中プロセスPのプロセスP間通信が終了する前に、停止されているCPUを起動できるか否かを判断することができる。なお、判断結果は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。起動時間判断部1211は、後述する節電時のCPU使用率低下タイミング判断処理の実現に用いられる。節電時のCPU使用率低下タイミング判断処理における起動時間判断部1211の動作については後述する。
【0101】
ここで、図5に示した起動指定プロセス実行処理を実現する機能について説明する。起動指定プロセス実行処理は、負荷判断部1201と、実行部1202と、停止部1203と、によって実現される。
【0102】
負荷判断部1201は、プロセスPの起動が受け付けられた場合、起動が受け付けられたプロセスPのデータ処理に関する負荷と、実行中プロセスP群のうち停止部1203によって停止していない実行中プロセスPのデータ処理に関する負荷と、の総和が、コンピュータの負荷上限を超えたか否かを判断する。ここで、起動が受け付けられたプロセスPとは、上述した起動指定されたプロセスPである。
【0103】
サーバS1の負荷判断部1201は、具体的には、例えば、図5の(2)において、アプリケーションテーブル300の処理時平均CPU使用率項目から、起動指定されたプロセスP21と実行中プロセスP11,P31とのそれぞれの処理時平均CPU使用率を取得する。次に、サーバS1の負荷判断部1201は、取得したそれぞれのプロセスPの処理時平均CPU使用率の総和を算出する。そして、サーバS1の負荷判断部1201は、マシンテーブル400の限界CPU使用率項目から、サーバSの限界CPU使用率を取得する。
【0104】
次に、サーバS1の負荷判断部1201は、算出したそれぞれのプロセスPの処理時平均CPU使用率の総和が、取得したサーバSの限界CPU使用率を超えるか否かを判断する。これにより、負荷判断部1201は、起動指定されたプロセスPを実行するCPUリソースがあるか否かを判断することができる。
【0105】
実行部1202は、負荷判断部1201によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスPを実行する。サーバS1の実行部1202は、具体的には、例えば、図5の(3)において、総和が負荷上限以下であると判断された場合、プロセスP21の実行に使用できるサーバS1内のCPUリソースがあるとして、起動指定されたプロセスP21を実行する。これにより、実行部1202は、プロセスP間の競合が起こらない場合にのみ、起動指定されたプロセスPを実行することができる。
【0106】
停止部1203は、負荷判断部1201によって総和が負荷上限を超えたと判断された場合、起動が受け付けられたプロセスPをキューに登録する。サーバS1の停止部1203は、具体的には、例えば、図5の(3)において、総和が負荷上限を超えたと判断された場合、プロセスP21の実行に使用できるCPUリソースが不足しているとして、起動指定されたプロセスP21をキューに登録する。これにより、停止部1203は、CPUリソースの不足が予測される場合、起動指定されたプロセスPの実行を保留して、プロセスP間での競合を回避することができる。
【0107】
次に、図6に示した異常プロセス停止処理を実現する機能について説明する。異常プロセス停止処理は、停止部1203と、検出部1204と、異常判断部1205と、によって実現される。
【0108】
検出部1204は、実行中プロセスP群のうち親プロセスPからの指示待ち状態の実行中プロセスPを検出する。サーバS1の検出部1204は、具体的には、例えば、図6の(1)において、実行中プロセスP群(図6ではプロセスP11,P31)の中から、親プロセスPになるプロセスP10からの指示待ち状態であるプロセスP11を検出する。これにより、検出部1204は、異常プロセス停止処理の対象になるプロセスPを検出し、異常プロセス停止処理のトリガを発生させることができる。
【0109】
異常判断部1205は、検出部1204によって検出された指示待ち状態の実行中プロセスPの待機時間が、指示待ち状態の実行中プロセスPの平均通信時間に応じたしきい値を経過したか否かを判断する。ここで、平均通信時間に応じたしきい値とは、予め設定された定数と平均通信時間とを乗算して得た値である。
【0110】
サーバS1の異常判断部1205は、具体的には、例えば、図6の(2)において、アプリケーションテーブル300の平均通信時間項目の平均通信時間と待機時間打ち切り定数項目の定数とを乗算する。そして、サーバS1の異常判断部1205は、乗算により、プロセスP11がプロセスP10からの指示を待つ待機時間が正常か否かを判断する指標になるしきい値を算出する。そして、異常判断部1205は、指示待ち状態であるプロセスP11の待機時間が、算出したしきい値を超えているか否かを判断する。これにより、異常判断部1205は、プロセスPの待機時間が正常か否かを判断することができる。
【0111】
停止部1203は、異常判断部1205によって、指示待ち状態の実行中プロセスPの待機時間が、指示待ち状態の実行中プロセスPの平均通信時間に応じたしきい値を経過したと判断された場合、指示待ち状態の実行中プロセスPの実行を停止させる。サーバS1の停止部1203は、具体的には、例えば、図6の(3)において、プロセスP11の実行を停止して、プロセスP11をキューに登録する。これにより、停止部1203は、処理異常が起きているプロセスPを停止して、プロセスPに使用されていたCPUリソースを使用可能にすることができる。
【0112】
次に、図7に示した保留プロセス実行処理を実現する機能について説明する。保留プロセス実行処理は、負荷判断部1201と、実行部1202と、によって実現される。
【0113】
負荷判断部1201は、停止部1203によって実行中プロセスPの実行が停止された場合、起動が受け付けられたプロセスPのデータ処理に関する負荷と、実行中プロセスP群のうち停止部1203によって停止していない実行中プロセスPのデータ処理に関する負荷と、の総和が、コンピュータの負荷上限を超えたか否かを判断する。
【0114】
ここで、停止部1203によって実行が停止された実行中プロセスPとは、例えば、上述した異常プロセス停止処理における停止部1203によって停止された指示待ち状態のプロセスPである。また、停止部1203によって実行が停止された実行中プロセスPとは、例えば、後述する並列処理数適正化処理における停止部1203によって停止されたプロセスPであってもよい。起動が受け付けられたプロセスPとは、上述したキューに登録されたプロセスPである。
【0115】
サーバS1の負荷判断部1201は、具体的には、例えば、図7の(1)において、アプリケーションテーブル300の処理時平均CPU使用率項目から、キューに登録されたプロセスP21と実行中プロセスP31とのそれぞれの処理時平均CPU使用率を取得する。次に、サーバS1の負荷判断部1201は、取得したそれぞれのプロセスPの処理時平均CPU使用率の総和を算出する。そして、サーバS1の負荷判断部1201は、マシンテーブル400の限界CPU使用率項目から、サーバSの限界CPU使用率を取得する。
【0116】
次に、サーバS1の負荷判断部1201は、算出したそれぞれのプロセスPの処理時平均CPU使用率の総和が、取得したサーバSの限界CPU使用率を超えるか否かを判断する。これにより、負荷判断部1201は、キューに登録されたプロセスPを実行するCPUリソースがあるか否かを判断することができる。
【0117】
実行部1202は、負荷判断部1201によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスPを実行する。サーバS1の実行部1202は、具体的には、例えば、図7の(2)において、総和が限界CPU使用率以下であると判断された場合、プロセスP21の実行に使用できるサーバS1内のCPUリソースがあるとして、キューに登録されたプロセスP21を実行する。これにより、実行部1202は、プロセスP間の競合が起こらない場合にのみ、プロセスPを実行することができる。
【0118】
次に、図8に示した並列処理数適正化処理を実現する機能について説明する。並列処理数適正化処理は、負荷判断部1201と、実行部1202と、停止部1203と、選択部1206と、取得部1207と、並列処理判断部1208と、計測部1209と、によって実現される。
【0119】
選択部1206は、実行中プロセスP群の中からいずれかの実行中プロセスPを選択する。選択部1206は、具体的には、例えば、実行中プロセスP群のうちCPU使用時間が短い実行中プロセスPから順次選択する。サーバS1の選択部1206は、具体的には、例えば、図8の(1)において、実行中プロセスP群(図8ではプロセスP11,P31)の中から、プロセスP10の子プロセスPになるプロセスP11を選択する。
【0120】
取得部1207は、選択部1206によって選択されたいずれかの実行中プロセスPの親プロセスPを実行する計算機から、親プロセスPが通信を行う通信相手のプロセスP数を取得する。ここで、親プロセスPが通信を行う通信相手のプロセスP数とは、上述した親プロセスPの並列処理数である。
【0121】
サーバS1の取得部1207は、具体的には、例えば、図8の(2)において、親プロセスPになるプロセスP10の並列処理数として、プロセスP10のコネクション数「4」をサーバS2から取得する。これにより、取得部1207は、並列処理判断部1208に取得した並列処理数が適正か否かを判断させることができる。
【0122】
ここで、並列処理判断部1208は、親プロセスPの並列処理の効率化のために、実行中の子プロセスPを停止するか否かを判断する。また、並列処理数適正化処理において、並列処理判断部1208は、親プロセスPの並列処理の効率化のために、親プロセスPとの実通信時間がしきい値以上である実行中の子プロセスPについて、停止するか否かを判断してもよい。
【0123】
まず、並列処理判断部1208によって、親プロセスPの並列処理の効率化のために、実行中の子プロセスPを停止するか否かが判断される場合について説明する。この場合、並列処理判断部1208は、取得部1207によって取得されたプロセスP数が、親プロセスPを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する。親プロセスPを含むソフトウェアに関する並列処理上限数とは、アプリケーションテーブル300の頭打ち並列処理数項目の頭打ち並列処理数である。
【0124】
サーバS1の並列処理判断部1208は、具体的には、例えば、図8の(3)において、アプリケーションテーブル300の頭打ち並列処理数項目から、プロセスP10の並列処理数の上限になる頭打ち並列処理数「3」を取得する。そして、サーバS1の並列処理判断部1208は、サーバS2から取得した並列処理数「4」が、アプリケーションテーブル300から取得した頭打ち並列処理数「3」を超えていると判断する。これにより、並列処理判断部1208は、親プロセスPの並列処理数が適正であるか否かを判断することができる。
【0125】
停止部1203は、並列処理判断部1208によって並列処理上限数を超えたと判断された場合、いずれかの実行中プロセスPの実行を停止させる。サーバS1の停止部1203は、具体的には、例えば、図8の(4)において、プロセスP10の子プロセスPになるプロセスP11を停止する。これにより、停止部1203は、親プロセスPの並列処理数を少なくして、並列処理数を適正化することができる。また、停止部1203は、親プロセスPの処理の効率化に貢献していない子プロセスPを停止して、子プロセスPの実行によって使用されているCPUリソースを使用可能にすることができる。
【0126】
次に、並列処理判断部1208によって、親プロセスPの並列処理の効率化のために、親プロセスPとの実通信時間がしきい値以上である実行中の子プロセスPについて、停止するか否かが判断される場合について説明する。この場合、計測部1209は、実行中プロセスPの親プロセスPとの実通信時間を計測する。サーバS1の計測部1209は、具体的には、例えば、図8の(1)において、プロセスP10とプロセスP11との実通信時間を計測する。
【0127】
並列処理判断部1208は、さらに、計測部1209によって計測された実通信時間が実行中プロセスPの平均通信時間に応じたしきい値以上であるか否かを判断する。サーバS1の並列処理判断部1208は、具体的には、例えば、図8の(1)において、プロセスP11についてアプリケーションテーブル300の平均通信時間項目の平均通信時間と並列処理数打ち切り定数項目の定数とを乗算する。そして、サーバS1の並列処理判断部1208は、計測した実通信時間が、乗算により得たしきい値を超えているか否かを判断する。これにより、並列処理判断部1208は、親プロセスPの並列処理数が適正でなく、かつ、実通信時間がしきい値以上である場合に、実行中の子プロセスPを停止すると判断することができる。
【0128】
停止部1203は、さらに、実通信時間がしきい値以上である場合、実行中プロセスPの実行を停止させる。サーバS1の停止部1203は、具体的には、例えば、図8の(4)において、プロセスP10の並列処理数が適正でなく、計測したプロセスP11とプロセスP10との実通信時間がしきい値を超えている場合、プロセスP11を停止する。これにより、停止部1203は、親プロセスPの並列処理数を少なくして、並列処理数を適正化することができる。また、停止部1203は、親プロセスPの処理の効率化に貢献していない子プロセスPを停止して、子プロセスPの実行によって使用されているCPUリソースを使用可能にすることができる。
【0129】
なお、停止部1203によって実行中プロセスPの実行が停止された場合、上述した保留プロセス実行処理が、負荷判断部1201と、実行部1202と、によって実行され、キューに登録されたプロセスPが実行される。
【0130】
次に、図9〜図11に示したCPU使用率低下タイミング判断処理を実現する機能について説明する。CPU使用率低下タイミング判断処理は、負荷判断部1201と、実行部1202と、停止部1203と、ロード時間判断部1210と、によって実現される。
【0131】
負荷判断部1201は、総和が負荷上限を超えたと判断された場合、実行中プロセスP群のうち親プロセスPと通信中のプロセスPの通信に関する負荷と、実行中プロセスPのうち通信中でないプロセスPのデータ処理に関する負荷と、起動が受け付けられたプロセスPのデータ処理に関する負荷と、の第2の総和が、負荷上限を超えたか否かを判断する。
【0132】
サーバS1の負荷判断部1201は、具体的には、例えば、図10の(2)において、アプリケーションテーブル300の処理時平均CPU使用率項目から、キューに登録されたプロセスP21と実行中プロセスP31とのそれぞれの処理時平均CPU使用率を取得する。次に、サーバS1の負荷判断部1201は、アプリケーションテーブル300の通信時平均CPU使用率項目から、通信を開始した実行中プロセスP11の通信時平均CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、取得したそれぞれのプロセスPのCPU使用率の総和を算出する。
【0133】
次に、サーバS1の負荷判断部1201は、マシンテーブル400の限界CPU使用率項目から、サーバSの限界CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、算出したCPU使用率の総和が、取得したサーバSの限界CPU使用率を超えるか否かを判断する。
【0134】
実行部1202は、負荷判断部1201によって第2の総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスPを実行する。サーバS1の実行部1202は、具体的には、例えば、図10の(3)において、CPU使用率の総和がサーバSの限界CPU使用率以下である場合、プロセスP21の実行に使用できるサーバS1内のCPUリソースがあるとして、キューに登録されたプロセスP21を実行する。
【0135】
ロード時間判断部1210は、さらに、起動が受け付けられたプロセスPが未実行である場合、起動が受け付けられたプロセスPのロード時間が、実行中プロセスPの平均通信時間を超えるか否かを判断する。サーバS1のロード時間判断部1210は、具体的には、例えば、図10の(3)において、アプリケーションテーブル300からプロセスP21のロード時間を取得し、取得したロード時間がプロセスP11の平均通信時間を超えるか否かを判断する。これにより、ロード時間判断部1210は、実行中プロセスPが通信を終了する前に、起動指定されたプロセスPの実行を開始できるか否かを判断することができる。
【0136】
また、ロード時間判断部1210は、さらに、起動が受け付けられたプロセスPのロード時間が、実行中プロセスPの親プロセスPとの実通信時間を超えるか否かを判断する。サーバS1のロード時間判断部1210は、具体的には、例えば、図10の(3)において、アプリケーションテーブル300からプロセスP21のロード時間を取得し、取得したロード時間が計測部1209によって計測された実通信時間を超えるか否かを判断する。これにより、ロード時間判断部1210は、実行中プロセスPが通信を終了する前に、起動指定されたプロセスPの実行を開始できるか否かを判断することができる。
【0137】
また、実行部1202は、さらに、ロード時間判断部1210によって実行中プロセスPの平均通信時間(または実通信時間)以下であると判断された場合、起動が受け付けられたプロセスPを実行する。サーバS1の実行部1202は、具体的には、例えば、図10の(3)において、CPU使用率の総和がサーバSの限界CPU使用率以下であり、かつ、プロセスP21のロード時間がプロセスP11の平均通信時間以下である場合、プロセスP21を実行する。
【0138】
停止部1203は、起動が受け付けられたプロセスPを、実行が開始されてから実行中プロセスPの平均通信時間経過後に停止させる。サーバS1の停止部1203は、具体的には、例えば、図11の(1)および(2)において、アプリケーションテーブル300の平均通信時間項目から平均通信時間を取得する。次に、サーバS1の停止部1203は、プロセスP21の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバS1の停止部1203は、平均通信時間が経過したことを検出すると、実行中のプロセスP21を停止してキューに登録する。これにより、停止部1203は、プロセスP11が通信を終了してCPU使用率が上昇することにより、プロセスP間の競合が起こることを回避することができる。
【0139】
また、停止部1203は、起動が受け付けられたプロセスPを、実行が開始されてから実行中プロセスPの平均通信時間または実通信時間のうちいずれか短い方の時間の経過後に停止させる。サーバS1の停止部1203は、具体的には、例えば、図11の(1)および(2)において、プロセスP21の実行開始から、アプリケーションテーブル300から取得した平均通信時間または計測部1209によって計測された実通信時間が経過するまで待機する。
【0140】
そして、サーバS1の停止部1203は、平均通信時間が経過したことを検出すると、実行中のプロセスP21を停止してキューに登録する。これにより、停止部1203は、プロセスP11が通信を終了してCPU使用率が上昇することにより、プロセスP間の競合が起こることを回避することができる。以下では、通常時にサーバSによって実行されるそれぞれの処理の詳細な処理手順について説明する。
【0141】
(起動指定プロセス実行処理の詳細な処理手順)
次に、図13および図14を用いて、起動指定プロセス実行処理の詳細な処理手順について説明する。なお、ステップS1301〜ステップS1307の処理は、図5においてサーバS1が実行した起動指定プロセス実行処理に対応する。
【0142】
図13および図14は、起動指定プロセス実行処理の詳細な処理手順を示すフローチャートである。図13において、まず、サーバSは、プロセスPの起動指定があったか否かを判定する(ステップS1301)。ここで、起動指定がない場合(ステップS1301:No)、サーバSは、ステップS1301に戻り、起動指定を待つ。
【0143】
一方、起動指定があった場合(ステップS1301:Yes)、サーバSは、起動指定されたプロセスPを含むアプリケーションのアプリ情報を、アプリケーションテーブル300から取得する(ステップS1302)。
【0144】
次に、サーバSは、起動指定されたプロセスPの平均CPU使用率と実行中プロセスPの平均CPU使用率との総和(T1)を算出する(ステップS1303)。そして、サーバSは、マシンテーブル400から、限界CPU使用率(MAX)を取得する(ステップS1304)。
【0145】
次に、サーバSは、ステップS1303で算出した総和(T1)が、ステップS1304で取得した限界CPU使用率(MAX)を超えているか否かを判定する(ステップS1305)。ここで、超えていない場合(ステップS1305:No)、サーバSは、起動指定されたプロセスPを実行して(ステップS1306)、起動指定プロセス実行処理を終了する。
【0146】
一方、超えている場合(ステップS1305:Yes)、サーバSは、起動指定されたプロセスPをキューに登録して実行を保留する(ステップS1307)。次に、サーバSは、実行中プロセスPの種別を判定する(ステップS1308)。
【0147】
ここで、実行中プロセスPの種別が「親」である場合(ステップS1308:親)、実行中プロセスPを含むアプリケーションのコネクション数(Nc)を並列処理数(C)に決定する(ステップS1309)。そして、図14のステップS1401に移行する。
【0148】
一方、実行中プロセスPの種別が「子」である場合(ステップS1308:子)、実行中プロセスPを含むアプリケーションのコネクション数(Nc)を並列処理数(C)に決定する(ステップS1310)。そして、図14のステップS1401に移行する。
【0149】
図14において、まず、サーバSは、異常プロセス停止処理を実行する(ステップS1401)。次に、サーバSは、並列処理数適正化処理を実行する(ステップS1402)。そして、サーバSは、保留中の起動指定されたプロセスPの平均CPU使用率と実行中プロセスPの平均CPU使用率との総和(T1)を算出する(ステップS1403)。
【0150】
次に、サーバSは、マシンテーブル400から、限界CPU使用率(MAX)を取得する(ステップS1404)。そして、サーバSは、ステップS1403で算出した総和(T1)が、ステップS1404で取得した限界CPU使用率(MAX)を超えているか否かを判定する(ステップS1405)。
【0151】
ここで、超えていない場合(ステップS1405:No)、サーバSは、保留中の起動指定されたプロセスPを実行して(ステップS1406)、起動指定プロセス実行処理を終了する。
【0152】
一方、超えている場合(ステップS1405:Yes)、サーバSは、CPU使用率低下タイミング判断処理を実行して(ステップS1407)、起動指定プロセス実行処理を終了する。これにより、サーバSは、起動指定されたプロセスPを実行できるCPUリソースがあれば、起動指定されたプロセスPを実行することができる。また、起動指定されたプロセスPを実行できるCPUリソースが不足していれば、起動指定されたプロセスPを保留することができる。
【0153】
(異常プロセス停止処理の詳細な処理手順)
次に、図15を用いて、異常プロセス停止処理の詳細な処理手順について説明する。なお、ステップS1501〜ステップS1504の処理は、図6においてサーバS1が実行した異常プロセス停止処理に対応する。また、ステップS1505〜ステップS1508の処理は、図7においてサーバS1が実行した保留プロセス実行処理に対応する。
【0154】
図15は、異常プロセス停止処理の詳細な処理手順を示すフローチャートである。まず、サーバSは、実行中プロセスPの中に子プロセスPがあるか否かを判定する(ステップS1501)。ここで、子プロセスPがない場合(ステップS1501:No)、サーバSは、ステップS1505に移行する。
【0155】
一方、子プロセスPがある場合(ステップS1501:Yes)、サーバSは、子プロセスPの中に、親プロセスPからの指示待ちの状態である子プロセスPがあるか否かを判定する(ステップS1502)。ここで、指示待ちの状態である子プロセスPがない場合(ステップS1502:No)、サーバSは、ステップS1505に移行する。
【0156】
一方、指示待ちの状態である子プロセスPがある場合(ステップS1502:Yes)、サーバSは、待機時間がしきい値を経過した子プロセスPがあるか否かを判定する(ステップS1503)。しきい値は、子プロセスPの平均通信時間(CT)に、アプリケーションテーブル300の待機時間打ち切り定数項目の定数(LW)を乗じた値である。ここで、待機時間がしきい値を経過した子プロセスPがない場合(ステップS1503:No)、サーバSは、ステップS1505に移行する。
【0157】
一方、待機時間がしきい値を経過した子プロセスPがある場合(ステップS1503:Yes)、サーバSは、該当する子プロセスPを停止しキューに登録して(ステップS1504)、ステップS1501に戻る。
【0158】
ステップS1505において、サーバSは、保留中の起動指定されたプロセスPの平均CPU使用率と実行中プロセスPの平均CPU使用率との総和(T1)を算出する(ステップS1505)。
【0159】
次に、サーバSは、マシンテーブル400から、限界CPU使用率(MAX)を取得する(ステップS1506)。そして、サーバSは、ステップS1505で算出した総和(T1)が、ステップS1506で取得した限界CPU使用率(MAX)を超えているか否かを判定する(ステップS1507)。
【0160】
ここで、超えていない場合(ステップS1507:No)、サーバSは、保留中の起動指定されたプロセスPを実行して(ステップS1508)、異常プロセス停止処理を終了する。なお、サーバSは、異常プロセス停止処理の終了とともに、起動指定プロセス実行処理を終了する。
【0161】
一方、超えている場合(ステップS1507:Yes)、サーバSは、図14のステップS1402に移行する。これにより、サーバSは、待機時間が異常である実行中プロセスPを停止して、実行中プロセスにより使用されていたCPUリソースを使用可能にすることができる。
【0162】
(並列処理数適正化処理の詳細な処理手順)
次に、図16を用いて、並列処理数適正化処理の詳細な処理手順について説明する。なお、ステップS1606〜ステップS1610の処理は、図8においてサーバS1が実行した並列処理数適正化処理に対応する。
【0163】
図16は、並列処理数適正化処理の詳細な処理手順を示すフローチャートである。まず、サーバSは、実行中のプロセスPの中に、未選択の子プロセスPがあるか否かを判定する(ステップS1601)。ここで、未選択の子プロセスPがない場合(ステップS1601:No)、サーバSは、ステップS1606に移行する。
【0164】
一方、未選択の子プロセスPがある場合(ステップS1601:Yes)、サーバSは、未選択の子プロセスPを選択する(ステップS1602)。次に、サーバSは、選択した子プロセスPのアプリケーション情報を取得する(ステップS1603)。
【0165】
そして、サーバSは、選択した子プロセスPがクラスタリングに対応しているか否かを判定する(ステップS1604)。ここで、クラスタリングに対応していない場合(ステップS1604:No)、サーバSは、ステップS1601に戻る。
【0166】
一方、クラスタリングに対応している場合(ステップS1604:Yes)、サーバSは、クラスタリングに対応している子プロセスPを並列処理数適正化処理の対象として登録して(ステップS1605)、ステップS1601に戻る。
【0167】
ステップS1606において、サーバSは、登録された子プロセスP群の各子プロセスPについて、CPU使用時間の少ない順にプロセスP間通信の開始から、データ処理開始までの時間(W1)を計測する(ステップS1606)。
【0168】
次に、サーバSは、登録された子プロセスP群の中に、計測された時間(W1)が、しきい値を超えている子プロセスPがあるか否かを判定する(ステップS1607)。しきい値は、子プロセスPの平均通信時間(CT)に、アプリケーションテーブル300の並列処理打ち切り定数項目の定数(LT)を乗じた値である。ここで、しきい値を超えている子プロセスPがない場合(ステップS1607:No)、サーバSは、図14のステップS1403に移行する。
【0169】
一方、しきい値を超えている子プロセスPがある場合(ステップS1607:Yes)、サーバSは、該当する子プロセスPの親プロセスPを特定し、親プロセスPのコネクション数(Nc)を取得する(ステップS1608)。
【0170】
次に、サーバSは、取得したコネクション数(Nc)が、頭打ち並列処理数(PR)を超えているか否かを判定する(ステップS1609)。ここで、頭打ち並列処理数を超えていない場合(ステップS1609:No)、サーバSは、図14のステップS1403に移行する。
【0171】
一方、頭打ち並列処理数を超えている場合(ステップS1609:Yes)、サーバSは、該当する子プロセスPを停止しキューに登録して(ステップS1610)、図14のステップS1403に移行する。これにより、サーバSは、実行中のプロセスを中止して、親プロセスの並列処理数を適正化することができる。
【0172】
(CPU使用率低下タイミング判断処理の詳細な処理手順)
次に、図17を用いて、CPU使用率低下タイミング判断処理の詳細な処理手順について説明する。なお、ステップS1701〜ステップS1711の処理は、図10および図11においてサーバS1が実行したCPU使用率低下タイミング判断処理に対応する。
【0173】
図17は、CPU使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。まず、サーバSは、実行中の子プロセスPについて、プロセスP間通信の開始タイミングを監視する(ステップS1701)。
【0174】
次に、サーバSは、プロセスP間通信を開始した子プロセスPがあるか否かを判定する(ステップS1702)。ここで、プロセスP間通信を開始した子プロセスPがない場合(ステップS1702:No)、サーバSは、ステップS1701に戻り、監視を続ける。
【0175】
一方、プロセスP間通信を開始した子プロセスPがある場合(ステップS1702:Yes)、サーバSは、保留中の起動指定されたプロセスPの平均CPU使用率と、プロセスP間通信時の実行中プロセスPの平均CPU使用率と、の総和(T2)を算出する(ステップS1703)。
【0176】
次に、サーバSは、マシンテーブル400から、限界CPU使用率(MAX)を取得する(ステップS1704)。そして、サーバSは、ステップS1703で算出した総和(T2)が、ステップS1704で取得した限界CPU使用率(MAX)を超えているか否かを判定する(ステップS1705)。ここで、超えていない場合(ステップS1705:No)、サーバSは、ステップS1701に戻る。
【0177】
一方、超えている場合(ステップS1705:Yes)、サーバSは、保留中の起動指定されたプロセスPは未実行か否かを判定する(ステップS1706)。ここで、保留中の起動指定されたプロセスPが実行中である場合(ステップS1706:No)、サーバSは、ステップS1711に移行する。
【0178】
一方、保留中の起動指定されたプロセスPが未実行である場合(ステップS1706:Yes)、サーバSは、起動指定されたプロセスPのロード時間(LD)を取得する(ステップS1707)。
【0179】
次に、サーバSは、実通信時間(W1)がロード時間(LD)を超えており、かつ、平均通信時間(CT)がロード時間(LD)を超えているかを判定する(ステップS1708)。ここで、実通信時間(W1)がロード時間(LD)以下であるか、または平均通信時間(CT)がロード時間(LD)以下である場合(ステップS1708:No)、サーバSは、図14のステップS1403に移行する。
【0180】
一方、実通信時間(W1)がロード時間(LD)を超えており、かつ、平均通信時間(CT)がロード時間(LD)を超えている場合(ステップS1708:Yes)、サーバSは、起動指定されたプロセスPを実行する(ステップS1709)。
【0181】
次に、サーバSは、起動指定されたプロセスPを実行開始してから、実通信時間(W1)または平均通信時間(CT)のいずれか短い方の時間が経過したか否かを判定する(ステップS1710)。ここで、経過していない場合(ステップS1710:No)、サーバSは、ステップS1710に戻り、時間の経過を待つ。
【0182】
一方、経過した場合(ステップS1710:Yes)、サーバSは、起動指定されたプロセスPが終了したか否かを判定する(ステップS1711)。ここで、終了していない場合(ステップS1711:No)、サーバSは、起動指定されたプロセスPを停止しキューに登録して(ステップS1712)、ステップS1701に戻る。
【0183】
一方、終了した場合(ステップS1711:Yes)、サーバSは、図14に戻り、起動指定プロセス実行処理を終了する。これにより、サーバSは、プロセスP間通信の開始により一時的に使用可能になったCPUリソースを使用して、保留中のプロセスPを実行することができる。また、サーバSは、プロセスP間通信の終了によりCPU使用率が増加して、CPUリソースが不足する前に、実行したプロセスPを停止して、プロセスP間の競合を回避することができる。
【0184】
以上では、通常時のサーバSによって実行される処理について説明した。以下では、節電時のサーバSによって実行される処理について説明する。節電時においては、上述した起動指定プロセス実行処理、保留プロセス実行処理、並列処理数適正化処理、およびCPU使用率低下タイミング判断処理は、異なる処理を行う。
【0185】
(節電時の起動指定プロセス実行処理)
まず、図18を用いて、節電時の起動指定プロセス実行処理について説明する。節電時の起動指定プロセス実行処理は、サーバSがプロセスPの起動指定を受け付けると実行され、節電時において起動指定されたプロセスPを実行するCPUリソースがあるか否かを判断する処理である。そして、節電時の起動指定プロセス実行処理は、CPUリソースがあれば、起動指定されたプロセスPを実行する処理である。
【0186】
節電時の起動指定プロセス実行処理により、サーバSは、節電を実施している状態では起動指定されたプロセスPを実行するCPUリソースが不足するときは、起動指定されたプロセスPを実行せずにプロセスP間の競合を回避することができる。また、サーバSは、節電を実施している状態でもCPUリソースが不足していないときには、起動指定されたプロセスPを実行することができる。
【0187】
図18は、節電時の起動指定プロセス実行処理の一例を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
【0188】
(1)まず、サーバS1は、プロセスP21の起動指定を受け付ける。
【0189】
(2)次に、サーバS1は、アプリケーションテーブル300の処理時平均CPU使用率項目から、起動指定されたプロセスP21と実行中プロセスP11,P31とのそれぞれの処理時平均CPU使用率を取得する。そして、サーバS1は、取得したそれぞれのプロセスPの処理時平均CPU使用率の総和を算出する。これにより、サーバS1においてプロセスP11,P21,P31が並列実行された場合のサーバS1の平均CPU使用率が推定される。
【0190】
次に、サーバS1は、マシンテーブル400の目標CPU使用率項目から、節電時のサーバSの目標CPU使用率を取得する。そして、サーバS1は、算出したそれぞれのプロセスPの処理時平均CPU使用率の総和が、取得したサーバS1の目標CPU使用率を超えるか否かを判断する。
【0191】
(3)そして、総和が目標CPU使用率を超えない場合、サーバS1は、消費電力を削減した状態でもプロセスP21の実行に使用できるサーバS1内のCPUリソースがあるとして、キューに登録されたプロセスP21を実行する。このように、サーバS1は、消費電力を削減した状態でも、プロセスP21を実行するサーバS1内のCPUリソースが不足しておらず、プロセスP21を実行してもプロセスP間で競合が起こらない場合に、プロセスP21を実行することができる。
【0192】
一方、総和が目標CPU使用率を超える場合、サーバS1は、消費電力を削減した状態では、プロセスP21の実行に使用できるサーバS1内のCPUリソースが不足しているとして、起動指定されたプロセスP21をキューに登録し、実行を保留する。このように、サーバS1は、消費電力を削減した状態では、プロセスP21を実行するサーバS1内のCPUリソースが不足し、プロセスP21を実行するとプロセスP間で競合が起きる場合には、プロセスP21の実行を保留することができる。
【0193】
なお、上述のように、節電時の起動指定プロセス実行処理は、図5に示した通常時の起動指定プロセス実行処理において、CPU使用率の上限として使用された限界CPU使用率が、目標CPU使用率に置き換えられた処理内容である。
【0194】
(節電時の保留プロセス実行処理)
次に、節電時の保留プロセス実行処理について説明する。保留プロセス実行処理は、実行が保留され、キューに登録されたプロセスPを実行するか否かを判断する処理である。保留プロセス実行処理により、サーバSは、消費電力を削減した状態でもプロセスP21を実行するサーバS1内のCPUリソースが不足しておらず、プロセスP21を実行してもプロセスP間で競合が起こらない場合に、プロセスP21を実行することができる。
【0195】
図18に示した節電時の起動指定プロセス実行処理と同様に、節電時の保留プロセス実行処理は、図7に示した通常時の保留プロセス実行処理において、CPU使用率の上限として使用された限界CPU使用率を、目標CPU使用率に置き換えた処理内容である。そのため、節電時の保留プロセス実行処理については説明を省略する。
【0196】
(節電時の異常プロセス停止処理)
次に、節電時の異常プロセス停止処理について説明する。節電時の異常プロセス停止処理は、サーバSの実行中プロセスPの中に、待機時間が異常なプロセスPがあるか否かを判断する処理であり、待機時間が異常なプロセスPがあれば実行を停止する処理である。節電時の異常プロセス停止処理により、サーバSは、待機時間が異常なプロセスPを停止させ、CPU使用率を減少させることができる。
【0197】
ここで、節電時の異常プロセス停止処理は、図6に示した異常プロセス停止処理と同様の処理内容であるため、説明を省略する。さらに、節電時の異常プロセス停止処理によりCPU使用率を減少させても、CPU使用率が目標CPU使用率を下回らない場合、サーバSは、CPUs201の中のCPUを停止して消費電力を削減してもよい。
【0198】
(節電時の並列処理数適正化処理)
次に、節電時の並列処理数適正化処理について説明する。並列処理数適正化処理は、サーバSの実行中プロセスPについて並列処理数を適正化するために、並列処理数が頭打ち並列処理数を超えている場合に実行中プロセスPを停止する処理である。親プロセスPの並列処理数を適正化する処理である。並列処理数適正化処理により、サーバSは、実行中プロセスPを停止して親プロセスPの並列処理数を1つ減らし、並列処理数を適正化することができる。また、並列処理数適正化処理により、サーバSは、親プロセスPの処理の効率化に貢献していない子プロセスPを停止して、CPU使用率を減少させることができる。
【0199】
ここで、節電時の並列処理数適正化処理は、図8に示した並列処理数適正化処理と同様の処理内容であるため、説明を省略する。さらに、節電時の異常プロセス停止処理によりCPU使用率を減少させても、CPU使用率が目標CPU使用率を下回らない場合、サーバSは、CPUs201の中のCPUを停止して消費電力を削減してもよい。
【0200】
(節電時のCPU使用率低下タイミング判断処理)
次に、図19および図20を用いて、節電時のCPU使用率低下タイミング判断処理について説明する。CPU使用率低下タイミング判断処理は、サーバSでのCPU使用率が低下した場合に、CPUを停止してCPUリソースを減少させてもプロセスPの実行に支障がないかを判断する処理である。また、CPU使用率低下タイミング判断処理は、プロセスPの実行に支障がないと判断されると、CPUを停止して消費電力を削減する処理である。CPU使用率低下タイミング判断処理により、サーバSは、プロセスP間通信の開始により一時的にCPU使用率が低下した場合に、CPUを停止して消費電力を削減することができる。
【0201】
図19および図20は、節電時のCPU使用率低下タイミング判断処理を示す説明図である。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
【0202】
図19において、(1)まず、サーバS1は、実行中のプロセスP11と親プロセスPになるプロセスP10との通信の開始を検出する。
【0203】
(2)次に、サーバS1は、アプリケーションテーブル300の処理時平均CPU使用率項目から、実行中プロセスP31の処理時平均CPU使用率を取得する。また、サーバS1は、アプリケーションテーブル300の通信時平均CPU使用率項目から、通信を開始した実行中プロセスP11の通信時平均CPU使用率を取得する。そして、サーバS1は、取得したそれぞれのプロセスPのCPU使用率の総和を算出する。これにより、サーバS1においてプロセスP21,P31が並列実行された場合のサーバS1の平均CPU使用率が推定される。
【0204】
また、サーバS1は、マシンテーブル400の目標CPU使用率項目から、節電時のサーバSの目標CPU使用率を取得する。次に、サーバS1は、算出したCPU使用率の総和が、取得した節電時のサーバSの目標CPU使用率を超えるか否かを判断する。
【0205】
(3)そして、サーバS1は、算出したCPU使用率の総和が取得した節電時のサーバSの目標CPU使用率を超える場合、消費電力を削減するために、CPUs201の中のCPUを停止してオフラインにする。これにより、サーバS1は、CPUの動作に消費されていた消費電力を削減することができる。一方、サーバS1は、算出したCPU使用率の総和が取得した節電時のサーバSの目標CPU使用率を超えない場合、CPUs201の中のCPUを停止しない。サーバS1によってCPUが停止された場合、図20に移行する。
【0206】
図20において、(1)まず、サーバS1は、アプリケーションテーブル300の平均通信時間項目から平均通信時間を取得する。次に、サーバS1は、プロセスP21の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバS1は、平均通信時間が経過したことを検出する。これにより、サーバS1は、プロセスP21がプロセスP間通信を終了してデータ処理を開始するタイミングを検出することができる。
【0207】
また、サーバS1は、平均通信時間の代わりとして、予めプロセスP11の実通信時間を計測しておき、プロセスP21の実行開始から、計測した実通信時間が経過するまで待機し、実通信時間が経過したことを検出してもよい。これにより、サーバS1は、プロセスP11の実通信時間が平均通信時間より短い場合にも、プロセスP21がプロセスP間通信を終了してデータ処理を開始するタイミングを検出することができる。プロセスP11の実通信時間としては、プロセスP11が通信を開始してから、通信を終了してデータ処理を開始するまでの時間が計測される。
【0208】
(2)サーバS1は、平均通信時間(または実通信時間)が経過したことを検出すると、プロセスP11が通信を終了してCPU使用率が上昇するのに備えて、停止させたCPUをオンラインにしてCPUリソースを増やす。
【0209】
これにより、サーバS1は、プロセスP間通信の開始により一時的にCPU使用率が低下したときに、CPUs201の中のCPUを停止させてオフラインにして、消費電力を削減することができる。また、サーバS1は、プロセスP間通信の終了によりCPU使用率が増加する前に、停止させたCPUをオンラインにして、CPUリソースの不足を回避することができる。
【0210】
(節電時のサーバSの機能的構成例)
次に、図12に示したブロック図を用いて、上述した節電時の処理を実現するサーバSの機能的構成例について説明する。まず、節電時の起動指定プロセス実行処理を実現する機能について説明する。節電時の起動指定プロセス実行処理は、負荷判断部1201と、実行部1202と、によって実現される。
【0211】
負荷判断部1201は、起動が受け付けられたプロセスPのデータ処理に関する負荷と実行中プロセスP群のうち停止部1203によって停止していない実行中プロセスPのデータ処理に関する負荷と、の総和を算出する。次に、負荷判断部1201は、算出した総和がコンピュータの節電に関する負荷上限を超えたか否かを判断する。ここで、節電に関する負荷上限とは、例えば上述した目標CPU使用率である。
【0212】
サーバS1の負荷判断部1201は、具体的には、例えば、図18の(2)において、アプリケーションテーブル300の処理時平均CPU使用率項目から、起動指定されたプロセスP21と実行中プロセスP11,P31とのそれぞれの処理時平均CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、取得したそれぞれのプロセスPの処理時平均CPU使用率の総和を算出する。
【0213】
次に、サーバS1の負荷判断部1201は、マシンテーブル400の目標CPU使用率項目から、節電時のサーバSの目標CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、算出したそれぞれのプロセスPの処理時平均CPU使用率の総和が、節電時の計算機のCPU使用率の取得した上限を超えるか否かを判断する。これにより、負荷判断部1201は、消費電力を削減した状態で、起動指定されたプロセスPの実行に使用できるCPUリソースがあるか否かを判断することができる。
【0214】
実行部1202は、負荷判断部1201によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスPを実行する。サーバS1の実行部1202は、具体的には、例えば、図18の(3)において、総和が目標CPU使用率以下であると判断された場合、消費電力を削減した状態でも、プロセスP21の実行に使用できるCPUリソースがあると判断する。そして、サーバS1の実行部1202は、起動指定されたプロセスP21を実行する。これにより、実行部1202は、消費電力を削減した状態でも、プロセスP間の競合が起こらない場合にのみ、起動指定されたプロセスPを実行することができる。
【0215】
次に、節電時の保留プロセス実行処理を実現する機能について説明する。節電時の保留プロセス実行処理は、負荷判断部1201と、実行部1202と、によって実現される。
【0216】
負荷判断部1201は、実行中プロセスP群について並列処理判断部1208による判断が実行された場合、起動が受け付けられたプロセスPのデータ処理に関する負荷と実行中プロセスP群のうち停止部1203によって停止していない実行中プロセスPのデータ処理に関する負荷と、の総和が、コンピュータの節電に関する負荷上限を超えたか否かを判断する。
【0217】
サーバS1の負荷判断部1201は、具体的には、例えば、アプリケーションテーブル300の処理時平均CPU使用率項目から、キューに登録されたプロセスP21と実行中プロセスP11,P31とのそれぞれの処理時平均CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、取得したそれぞれのプロセスPの処理時平均CPU使用率の総和を算出する。
【0218】
次に、サーバS1の負荷判断部1201は、マシンテーブル400の目標CPU使用率項目から、節電時のサーバSの目標CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、算出したそれぞれのプロセスPの処理時平均CPU使用率の総和が、節電時の計算機のCPU使用率の取得した上限を超えるか否かを判断する。これにより、負荷判断部1201は、消費電力を削減した状態で、キューに登録されたプロセスPの実行に使用できるCPUリソースがあるか否かを判断することができる。
【0219】
実行部1202は、負荷判断部1201によって総和が負荷上限以下であると判断された場合、起動が受け付けられたプロセスPを実行する。サーバS1の実行部1202は、具体的には、例えば、総和が目標CPU使用率以下であると判断された場合、消費電力を削減した状態でも、プロセスP21の実行に使用できるCPUリソースがあると判断する。そして、サーバS1の実行部1202は、キューに登録されたプロセスP21を実行する。これにより、実行部1202は、消費電力を削減した状態でも、プロセスP間の競合が起こらない場合にのみ、プロセスPを実行することができる。
【0220】
次に、図19および図20に示した節電時のCPU使用率低下タイミング判断処理を実現する機能について説明する。節電時のCPU使用率低下タイミング判断処理は、負荷判断部1201と、停止部1203と、起動時間判断部1211と、によって実現される。
【0221】
負荷判断部1201は、総和が負荷上限を超えたと判断された場合、実行中プロセスP群のうち親プロセスPと通信中のプロセスPの通信に関する負荷と、実行中プロセスPのうち通信中でないプロセスPのデータ処理に関する負荷と、の第3の総和が、節電に関する負荷上限を超えたか否かを判断する。
【0222】
サーバS1の負荷判断部1201は、具体的には、例えば、図19の(2)において、アプリケーションテーブル300の処理時平均CPU使用率項目から、実行中プロセスP31の処理時平均CPU使用率を取得する。また、サーバS1の負荷判断部1201は、アプリケーションテーブル300の通信時平均CPU使用率項目から、通信を開始した実行中プロセスP11の通信時平均CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、取得したそれぞれのプロセスPのCPU使用率の総和を算出する。
【0223】
また、サーバS1の負荷判断部1201は、マシンテーブル400の目標CPU使用率項目から、節電時のサーバSの目標CPU使用率を取得する。次に、サーバS1の負荷判断部1201は、算出したCPU使用率の総和が、取得した節電時のサーバSの目標CPU使用率を超えるか否かを判断する。これにより、負荷判断部1201は、プロセスP間通信時にCPU使用率が低下したときに、CPUを停止させて、消費電力の削減を行うか否かを判断することができる。
【0224】
停止部1203は、プロセッサ群のうち、節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させる。サーバS1の停止部1203は、具体的には、例えば、図19の(3)において、CPU使用率の総和が目標CPU使用率を超える場合、CPUs201の中のCPUを停止してオフラインにする。これにより、停止部1203は、消費電力を削減することができる。
【0225】
また、停止部1203は、さらに、起動時間判断部1211によって実行中プロセスPの平均通信時間(または実通信時間)以下であると判断された場合、節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させてもよい。サーバS1の停止部1203は、具体的には、例えば、図19の(3)において、CPU使用率の総和が目標CPU使用率を超え、かつ、CPUの起動時間がプロセスP11の平均通信時間以下である場合に、CPUs201の中のCPUを停止してオフラインにする。これにより、停止部1203は、実行中プロセスPのプロセスP間通信が終了する前に停止したCPUを起動できる場合にのみ、CPUを停止して、消費電力を削減することができる。
【0226】
停止部1203は、CPUを停止した場合、さらに、以下の処理を行う。停止部1203は、停止したプロセッサを、停止してから実行中プロセスPの平均通信時間経過後に停止解除する。サーバS1の停止部1203は、具体的には、例えば、図20の(1)および(2)において、アプリケーションテーブル300の平均通信時間項目から平均通信時間を取得する。次に、サーバS1の停止部1203は、プロセスP21の実行開始から、取得した平均通信時間が経過するまで待機する。そして、サーバS1の停止部1203は、平均通信時間が経過したことを検出すると、停止させたCPUをオンラインにする。
【0227】
また、停止部1203は、停止したプロセッサを、停止してから実行中プロセスPの平均通信時間または実通信時間のうちいずれか短い方の時間の経過後に停止解除してもよい。サーバS1の停止部1203は、具体的には、例えば、図20の(1)および(2)において、アプリケーションテーブル300から取得した平均通信時間と、計測部1209によって計測された実通信時間と、のうち、短い方を選択する。
【0228】
そして、平均通信時間が選択された場合は、サーバS1の停止部1203は、プロセスP21の実行開始から、平均通信時間が経過したことを検出すると、停止させたCPUをオンラインにする。また、実通信時間が選択された場合は、サーバS1の停止部1203は、プロセスP21の実行開始から、実通信時間が経過したことを検出すると、停止させたCPUをオンラインにする。これにより、停止部1203は、プロセスP間通信の終了によりCPU使用率が上昇するのに備えて、CPUリソースを増やして、プロセスP間での競合を回避することができる。
【0229】
次に、節電時の異常プロセス停止処理および節電時の並列処理数適正化処理を実現する機能について説明する。節電時の異常プロセス停止処理および節電時の並列処理数適正化処理は、図12を用いて上述した通常時のサーバSによって実行される異常プロセス停止処理および並列処理数適正化処理と同様のため、説明を省略する。
【0230】
ここで、節電時の異常プロセス停止処理および節電時の並列処理数適正化処理の終了後、オフライン処理を実行して、CPUを停止させてもよい。オフライン処理により、CPUを停止させることで、消費電力を削減することができる。オフライン処理は、負荷判断部1201と、停止部1203と、起動時間判断部1211と、によって実現される。
【0231】
負荷判断部1201は、実行中プロセスP群について並列処理判断部1208による判断が実行された場合、実行中プロセスP群のうち停止部1203によって停止していない実行中プロセスPのデータ処理に関する負荷の総和が、コンピュータの節電に関する負荷上限を超えたか否かを判断する。
【0232】
サーバS1の負荷判断部1201は、具体的には、例えば、アプリケーションテーブル300の処理時平均CPU使用率項目から、実行中プロセスP11,P31の処理時平均CPU使用率を取得する。そして、サーバS1の負荷判断部1201は、取得したそれぞれのプロセスPのCPU使用率の総和を算出する。
【0233】
また、サーバS1の負荷判断部1201は、マシンテーブル400の目標CPU使用率項目から、節電時のサーバSの目標CPU使用率を取得する。次に、サーバS1の負荷判断部1201は、算出したCPU使用率の総和が、取得した節電時のサーバSの目標CPU使用率を超えるか否かを判断する。これにより、負荷判断部1201は、CPUを停止させて、消費電力の削減を行うか否かを判断することができる。
【0234】
なお、停止部1203および起動時間判断部1211の機能は、節電時のCPU使用率低下タイミング判断処理を実現する機能と同様のため、説明を省略する。
【0235】
(節電開始処理の詳細な処理手順)
次に、図21および図22を用いて、節電開始処理の詳細な処理手順について説明する。
【0236】
図21および図22は、節電開始処理の詳細な処理手順を示すフローチャートである。図21において、まず、サーバSは、現在時刻が節電時間帯に含まれているか否かを判定する(ステップS2101)。ここで、含まれていない場合(ステップS2101:No)、サーバSは、ステップS2101に戻る。
【0237】
一方、含まれている場合(ステップS2101:Yes)、サーバSは、現在日時が適用除外日に含まれているか否かを判定する(ステップS2102)。ここで、含まれている場合(ステップS2102:Yes)、サーバSは、ステップS2101に戻る。
【0238】
一方、含まれていない場合(ステップS2102:No)、サーバSは、実行中プロセスPのアプリ情報を、アプリケーションテーブル300から取得する(ステップS2103)。次に、サーバSは、実行中プロセスPの平均CPU使用率の総和(T1)を算出する(ステップS2104)。そして、サーバSは、マシンテーブル400から、節電時の目標CPU使用率(SAVE)を取得する(ステップS2105)。
【0239】
次に、サーバSは、ステップS2104で算出した総和(T1)が、ステップS2105で取得した目標CPU使用率(SAVE)を超えているか否かを判定する(ステップS2106)。ここで、超えていない場合(ステップS2106:No)、サーバSは、オフライン処理を実行して(ステップS2107)、ステップS2101に戻る。
【0240】
一方、超えている場合(ステップS2106:Yes)、サーバSは、実行中プロセスPの種別を判定する(ステップS2108)。ここで、実行中プロセスPの種別が「親」である場合(ステップS2108:親)、サーバSは、実行中プロセスPを含むアプリケーションのコネクション数(Nc)を並列処理数(C)に決定する(ステップS2109)。そして、サーバSは、図22のステップS2201に移行する。
【0241】
一方、実行中プロセスPの種別が「子」である場合(ステップS2108:子)、サーバSは、実行中プロセスPを含むアプリケーションのコネクション数(Nc)を並列処理数(C)に決定する(ステップS2110)。そして、サーバSは、図22のステップS2201に移行する。
【0242】
図22において、まず、サーバSは、節電時の異常プロセス停止処理を実行する(ステップS2201)。次に、サーバSは、節電時の並列処理数適正化処理を実行する(ステップS2202)。そして、サーバSは、実行中プロセスPの平均CPU使用率の総和(T1)を算出する(ステップS2203)。
【0243】
次に、サーバSは、マシンテーブル400から、節電時の目標CPU使用率(SAVE)を取得する(ステップS2204)。そして、サーバSは、ステップS2203で算出した総和(T1)が、ステップS2204で取得した目標CPU使用率(SAVE)を超えているか否かを判定する(ステップS2205)。
【0244】
ここで、超えていない場合(ステップS2205:No)、サーバSは、オフライン処理を実行する(ステップS2206)。
【0245】
一方、超えている場合(ステップS2205:Yes)、サーバSは、節電時のCPU使用率低下タイミング判断処理を実行して(ステップS2207)、ステップS2101に戻る。
【0246】
(節電時の異常プロセス停止処理の詳細な処理手順)
次に、図23を用いて、節電時の異常プロセス停止処理の詳細な処理手順について説明する。
【0247】
図23は、節電時の異常プロセス停止処理の詳細な処理手順を示すフローチャートである。まず、サーバSは、実行中プロセスPの中に子プロセスPがあるか否かを判定する(ステップS2301)。ここで、子プロセスPがない場合(ステップS2301:No)、サーバSは、ステップS2305に移行する。
【0248】
一方、子プロセスPがある場合(ステップS2301:Yes)、サーバSは、子プロセスPの中に、親プロセスPからの指示待ちの状態である子プロセスPがあるか否かを判定する(ステップS2302)。ここで、指示待ちの状態である子プロセスPがない場合(ステップS2302:No)、サーバSは、ステップS2305に移行する。
【0249】
一方、指示待ちの状態である子プロセスPがある場合(ステップS2302:Yes)、サーバSは、待機時間がしきい値(CT×LW)を経過した子プロセスPがあるか否かを判定する(ステップS2303)。ここで、待機時間がしきい値を経過した子プロセスPがない場合(ステップS2303:No)、サーバSは、ステップS2305に移行する。
【0250】
一方、待機時間がしきい値を経過した子プロセスPがある場合(ステップS2303:Yes)、サーバSは、該当する子プロセスPを停止しキューに登録して(ステップS2304)、ステップS2301に戻る。
【0251】
ステップS2305において、サーバSは、実行中プロセスPの平均CPU使用率の総和(T1)を算出する(ステップS2305)。次に、サーバSは、マシンテーブル400から、節電時の目標CPU使用率(SAVE)を取得する(ステップS2306)。そして、サーバSは、ステップS2305で算出した総和(T1)が、ステップS2306で取得した節電時の目標CPU使用率(SAVE)を超えているか否かを判定する(ステップS2307)。
【0252】
ここで、超えていない場合(ステップS2307:No)、サーバSは、オフライン処理を実行する(ステップS2308)。一方、超えている場合(ステップS2307:Yes)、サーバSは、図22のステップS2202に移行する。これにより、サーバSは、待機時間が異常である実行中プロセスPを停止して、消費電力を削減することができる。
【0253】
(節電時の並列処理数適正化処理の詳細な処理手順)
次に、節電時の並列処理数適正化処理の詳細な処理手順について説明する。ここで、節電時の並列処理数適正化処理の処理内容は、図16に示した並列処理数適正化処理の処理内容と同様のため、説明を省略する。なお、節電時の並列処理数適正化処理の終了後、サーバSは、図22のステップS2203に移行する。
【0254】
(節電時のCPU使用率低下タイミング判断処理の詳細な処理手順)
次に、図24を用いて、節電時のCPU使用率低下タイミング判断処理の詳細な処理手順について説明する。
【0255】
図24は、節電時のCPU使用率低下タイミング判断処理の詳細な処理手順を示すフローチャートである。まず、サーバSは、実行中の子プロセスPについて、プロセスP間通信の開始タイミングを監視する(ステップS2401)。
【0256】
次に、サーバSは、プロセスP間通信を開始した子プロセスPがあるか否かを判定する(ステップS2402)。ここで、プロセスP間通信を開始した子プロセスPがない場合(ステップS2402:No)、サーバSは、ステップS2401に戻り、監視を続ける。
【0257】
一方、プロセスP間通信を開始した子プロセスPがある場合(ステップS2402:Yes)、サーバSは、プロセスP間通信時の実行中プロセスPの平均CPU使用率の総和(T3)を算出する(ステップS2403)。次に、サーバSは、マシンテーブル400から、節電時の目標CPU使用率(SAVE)を取得する(ステップS2404)。
【0258】
そして、サーバSは、ステップS2403で算出した総和(T3)が、ステップS2404で取得した節電時の目標CPU使用率(SAVE)を超えているか否かを判定する(ステップS2405)。ここで、超えていない場合(ステップS2405:No)、サーバSは、ステップS2401に戻る。
【0259】
一方、超えている場合(ステップS2405:Yes)、サーバSは、CPU起動時間(CA)をマシンテーブル400から取得する(ステップS2406)。次に、サーバSは、実通信時間(W1)がCPU起動時間(CA)を超えており、かつ、平均通信時間(CT)がCPU起動時間(CA)を超えているかを判定する(ステップS2407)。ここで、実通信時間(W1)がCPU起動時間(CA)以下であるか、または平均通信時間(CT)がCPU起動時間(CA)以下である場合(ステップS2407:No)、サーバSは、図22のステップS2203に移行する。
【0260】
一方、実通信時間(W1)がCPU起動時間(CA)を超えており、かつ、平均通信時間(CT)がCPU起動時間(CA)を超えている場合(ステップS2407:Yes)、サーバSは、停止させるCPU数を算出する(ステップS2408)。
【0261】
次に、サーバSは、停止させるCPU数分のCPUを停止しオフラインにする(ステップS2409)。そして、サーバSは、実通信時間(W1)または平均通信時間(CT)のいずれか短い方の時間が経過したか否かを判定する(ステップS2410)。ここで、経過していない場合(ステップS2410:No)、サーバSは、ステップS2410に戻り、時間の経過を待つ。
【0262】
一方、経過した場合(ステップS2410:Yes)、サーバSは、停止させたCPUをオンラインにして(ステップS2411)、図21のステップS2101に戻る。これにより、サーバSは、プロセスP間通信時にCPU使用率が低下した場合、CPUを停止させて、消費電力を削減することができる。
【0263】
(オフライン処理の詳細な処理手順)
次に、図25を用いて、オフライン処理の詳細な処理手順について説明する。
【0264】
図25は、オフライン処理の詳細な処理手順を示すフローチャートである。まず、サーバSは、停止させるCPU数を算出する(ステップS2501)。次に、サーバSは、停止させるCPU数分のCPUを停止しオフラインにする(ステップS2502)。
【0265】
そして、サーバSは、節電時間が終了したか否かを判定する(ステップS2503)。ここで、終了していない場合(ステップS2503:No)、サーバSは、ステップS2503に戻り、節電時間の終了を待つ。
【0266】
一方、終了した場合(ステップS2503:Yes)、サーバSは、停止させたCPUをオンラインにして(ステップS2504)、図21のステップS2101に戻る。これにより、サーバSは、CPUを停止させて、消費電力を削減することができる。
【0267】
以上説明したように、管理装置になるサーバSは、実行中プロセスPの親プロセスPの並列処理数を取得し、取得した並列処理数が頭打ち並列処理数を超えている場合、実行中プロセスPを停止する。これにより、サーバSは、親プロセスPの並列処理数を適正化することができる。また、サーバSは、親プロセスPの処理の効率化に貢献していない実行中プロセスPを停止して、実行中プロセスPに使用されていたCPUリソースを使用可能にすることができる。結果として、サーバSは、使用可能にされたCPUリソースを、保留中のプロセスPの処理に使用して実行することができるようになり、CPUリソースを効率よく使用することができる。
【0268】
また、サーバSは、節電時には、実行中プロセスPを停止させることでCPU使用率が低下した場合に、CPUs201のいずれかのCPUを停止しても実行中プロセスのCPUリソースが不足しないかを判断する。そして、CPUリソースが不足しないと判断した場合、CPUを停止して、CPUの動作に消費されていた消費電力を削減することができる。
【0269】
また、サーバSは、プロセスP間通信によりCPU使用率が低下した場合に、保留中のプロセスPを実行できるCPUリソースがあるか否かを判定し、CPUリソースがある場合、保留中のプロセスPを実行する。これにより、サーバSは、プロセスP間通信の開始により一時的に使用可能になったCPUリソースを使用して、保留中のプロセスPを実行することができる。
【0270】
また、サーバSは、プロセスを実行してから実行中プロセスの平均通信時間の経過を監視して、プロセスP間通信の終了より前に、実行したプロセスを停止して、CPUリソースを増やす。これにより、サーバSは、プロセスP間通信の終了によりCPU使用率が増加して、CPUリソースが不足する前に、実行したプロセスPを停止して、プロセスP間の競合を回避することができる。結果として、サーバSは、CPUリソースを効率よく使用することができる。
【0271】
また、サーバSは、節電時には、プロセスP間通信によりCPU使用率が低下した場合に、CPUs201のいずれかのCPUを停止しても実行中プロセスのCPUリソースが不足しないかを判断する。そして、サーバSは、CPUリソースが不足しないと判断された場合、CPUを停止して、CPUの動作に消費されていた消費電力を削減することができる。
【0272】
また、サーバSは、CPUを停止してから実行中プロセスの平均通信時間(または実通信時間)の経過を監視して、プロセスP間通信の終了より前に、CPUをオンラインにして、CPUリソースを増やす。これにより、サーバSは、プロセスP間通信の終了によりCPU使用率が増加しCPUリソースが不足してしまう前に、CPUをオンラインにして、プロセスP間の競合を回避することができる。
【0273】
また、サーバSは、実行中プロセスPの待機時間がしきい値を超えている場合、実行中プロセスPの待機時間が異常であると判断し、実行中プロセスPを停止する。これにより、サーバSは、待機時間が異常である実行中プロセスPを停止して、実行中プロセスPに使用されていたCPUリソースを使用可能にすることができる。結果として、サーバSは、使用可能にされたCPUリソースを、保留中のプロセスPの処理に使用して実行することができるようになり、CPUリソースを効率よく使用することができる。
【0274】
また、サーバSは、節電時には、実行中プロセスPを停止させることでCPU使用率が低下した場合、CPUs201のいずれかのCPUを停止しても実行中プロセスのCPUリソースが不足しないかを判断する。そして、CPUリソースが不足しないと判断した場合、CPUを停止して、CPUの動作に消費されていた消費電力を削減することができる。
【0275】
なお、本実施の形態で説明した管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本管理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本管理プログラムは、インターネット等のネットワークを介して配布してもよい。
【0276】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0277】
(付記1)実行中プロセス群の中からいずれかの実行中プロセスを選択し、
選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得し、
取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断し、
前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる、
処理をコンピュータに実行させることを特徴とする管理プログラム。
【0278】
(付記2)前記実行中プロセスの前記親プロセスとの実通信時間を計測する処理を前記コンピュータに実行させ、
前記並列処理上限数を超えたか否かを判断する処理は、
さらに、計測された実通信時間が前記実行中プロセスの平均通信時間に応じたしきい値以上であるか否かを判断し、
前記停止させる処理は、
さらに、前記実通信時間が前記しきい値以上である場合、前記実行中プロセスの実行を停止させることを特徴とする付記1に記載の管理プログラム。
【0279】
(付記3)前記選択する処理は、
前記実行中プロセス群のうちCPU使用時間が短い実行中プロセスから順次選択することを特徴とする付記1または2に記載の管理プログラム。
【0280】
(付記4)前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、起動が受け付けられたプロセスのデータ処理に関する負荷と、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の総和が、前記コンピュータの負荷上限を超えたか否かを判断し、
前記総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行する、
処理を前記コンピュータに実行させることを特徴とする付記1〜3のいずれか一つに記載の管理プログラム。
【0281】
(付記5)前記負荷上限を超えたか否かを判断する処理は、
前記総和(以下、「第1の総和」)が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、前記起動が受け付けられたプロセスのデータ処理に関する負荷と、の第2の総和が、前記負荷上限を超えたか否かを判断し、
前記実行する処理は、
前記第2の総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行することを特徴とする付記4に記載の管理プログラム。
【0282】
(付記6)前記起動が受け付けられたプロセスが未実行である場合、前記起動が受け付けられたプロセスのロード時間が、前記実行中プロセスの平均通信時間を超えるか否かを判断する処理を前記コンピュータに実行させ、
前記実行する処理は、
前記実行中プロセスの平均通信時間以下であると判断された場合、前記起動が受け付けられたプロセスを実行することを特徴とする付記5に記載の管理プログラム。
【0283】
(付記7)前記ロード時間を判断する処理は、
さらに、前記起動が受け付けられたプロセスのロード時間が、前記実行中プロセスの前記親プロセスとの実通信時間を超えるか否かを判断し、
前記実行する処理は、
前記実通信時間以下であると判断された場合、前記起動が受け付けられたプロセスを実行することを特徴とする付記6に記載の管理プログラム。
【0284】
(付記8)前記停止させる処理は、
前記起動が受け付けられたプロセスを、実行が開始されてから前記実行中プロセスの平均通信時間経過後に停止させ、
前記負荷上限を超えたか否かを判断する処理は、
前記起動が受け付けられたプロセスの停止後に、前記第2の総和が前記負荷上限を超えたか否かを判断することを特徴とする付記6または7に記載の管理プログラム。
【0285】
(付記9)前記停止させる処理は、
前記起動が受け付けられたプロセスを、実行が開始されてから前記実行中プロセスの平均通信時間または前記実通信時間のうちいずれか短い方の時間の経過後に停止させ、
前記負荷上限を超えたか否かを判断する処理は、
前記起動が受け付けられたプロセスの停止後に、前記第2の総和が前記負荷上限を超えたか否かを判断することを特徴とする付記7に記載の管理プログラム。
【0286】
(付記10)前記実行中プロセス群のうち前記親プロセスからの指示待ち状態の実行中プロセスを検出し、
検出された指示待ち状態の実行中プロセスの待機時間が、前記指示待ち状態の実行中プロセスの平均通信時間に応じたしきい値を経過したか否かを判断する処理を前記コンピュータに実行させ、
前記停止させる処理は、
前記指示待ち状態の実行中プロセスの待機時間が、前記指示待ち状態の実行中プロセスの平均通信時間に応じたしきい値を経過したと判断された場合、前記指示待ち状態の実行中プロセスの実行を停止させることを特徴とする付記1〜9のいずれか一つに記載の管理プログラム。
【0287】
(付記11)前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の総和が、前記コンピュータの節電に関する負荷上限を超えたか否かを判断し、
前記総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行する、
処理を前記コンピュータに実行させることを特徴とする付記1〜3のいずれか一つに記載の管理プログラム。
【0288】
(付記12)前記負荷上限を超えたか否かを判断する処理は、
前記総和(以下、「第1の総和」)が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、の第3の総和が、前記節電に関する負荷上限を超えたか否かを判断し、
前記停止させる処理は、
プロセッサ群のうち、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させることを特徴とする付記11に記載の管理プログラム。
【0289】
(付記13)前記プロセッサ群のプロセッサ起動時間が、前記実行中プロセスの平均通信時間を超えるか否かを判断する処理を前記コンピュータに実行させ、
前記停止させる処理は、
前記実行中プロセスの平均通信時間以下であると判断された場合、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させることを特徴とする付記12に記載の管理プログラム。
【0290】
(付記14)さらに、前記プロセッサ群のプロセッサ起動時間が、前記実行中プロセスの前記親プロセスとの実通信時間を超えるか否かを判断する処理を前記コンピュータに実行させ、
前記停止させる処理は、
前記実通信時間以下であると判断された場合、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させることを特徴とする付記13に記載の管理プログラム。
【0291】
(付記15)前記停止させる処理は、
停止したプロセッサを、停止してから前記実行中プロセスの平均通信時間経過後に停止解除することを特徴とする付記13または14に記載の管理プログラム。
【0292】
(付記16)前記停止させる処理は、
停止したプロセッサを、停止してから前記実行中プロセスの平均通信時間または前記実通信時間のうちいずれか短い方の時間の経過後に停止解除することを特徴とする付記14に記載の管理プログラム。
【0293】
(付記17)実行中プロセス群の中からいずれかの実行中プロセスを選択し、
選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得し、
取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断しと、
前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる、
処理をコンピュータが実行することを特徴とする管理方法。
【0294】
(付記18)実行中プロセス群の中からいずれかの実行中プロセスを選択する選択部と、
前記選択部によって選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得する取得部と、
前記取得部によって取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する並列処理判断部と、
前記並列処理判断部によって前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる停止部と、
を備えることを特徴とする管理装置。
【符号の説明】
【0295】
S サーバ
P プロセス
1201 負荷判断部
1202 実行部
1203 停止部
1204 検出部
1205 異常判断部
1206 選択部
1207 取得部
1208 並列処理判断部
1209 計測部
1210 ロード時間判断部
1211 起動時間判断部

【特許請求の範囲】
【請求項1】
実行中プロセス群の中からいずれかの実行中プロセスを選択し、
選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得し、
取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断し、
前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる、
処理をコンピュータに実行させることを特徴とする管理プログラム。
【請求項2】
前記実行中プロセスの前記親プロセスとの実通信時間を計測する処理を前記コンピュータに実行させ、
前記並列処理上限数を超えたか否かを判断する処理は、
さらに、計測された実通信時間が前記実行中プロセスの平均通信時間に応じたしきい値以上であるか否かを判断し、
前記停止させる処理は、
さらに、前記実通信時間が前記しきい値以上である場合、前記実行中プロセスの実行を停止させることを特徴とする請求項1に記載の管理プログラム。
【請求項3】
前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、起動が受け付けられたプロセスのデータ処理に関する負荷と、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の総和が、前記コンピュータの負荷上限を超えたか否かを判断し、
前記総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行する、
処理を前記コンピュータに実行させることを特徴とする請求項1または2に記載の管理プログラム。
【請求項4】
前記負荷上限を超えたか否かを判断する処理は、
前記総和(以下、「第1の総和」)が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、前記起動が受け付けられたプロセスのデータ処理に関する負荷と、の第2の総和が、前記負荷上限を超えたか否かを判断し、
前記実行する処理は、
前記負荷上限を超えたか否かを判断する処理によって前記第2の総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行することを特徴とする請求項3に記載の管理プログラム。
【請求項5】
前記実行中プロセス群について前記並列処理上限数を超えたか否かの判断が実行された場合、前記実行中プロセス群のうち停止していない実行中プロセスのデータ処理に関する負荷と、の総和が、前記コンピュータの節電に関する負荷上限を超えたか否かを判断し、
前記総和が前記負荷上限以下であると判断された場合、前記起動が受け付けられたプロセスを実行する、
処理を前記コンピュータに実行させることを特徴とする請求項1または2に記載の管理プログラム。
【請求項6】
前記負荷上限を超えたか否かを判断する処理は、
前記総和(以下、「第1の総和」)が前記負荷上限を超えたと判断された場合、前記実行中プロセス群のうち前記親プロセスと通信中のプロセスの通信に関する負荷と、前記実行中プロセスのうち前記通信中でないプロセスのデータ処理に関する負荷と、の第3の総和が、前記節電に関する負荷上限を超えたか否かを判断し、
前記停止させる処理は、
プロセッサ群のうち、前記節電に関する負荷上限に応じたプロセッサ数分のプロセッサを停止させることを特徴とする請求項5に記載の管理プログラム。
【請求項7】
実行中プロセス群の中からいずれかの実行中プロセスを選択し、
選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得し、
取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断し、
前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる、
処理をコンピュータが実行することを特徴とする管理方法。
【請求項8】
実行中プロセス群の中からいずれかの実行中プロセスを選択する選択部と、
前記選択部によって選択されたいずれかの実行中プロセスの親プロセスを実行する計算機から、前記親プロセスが通信を行う通信相手のプロセス数を取得する取得部と、
前記取得部によって取得されたプロセス数が、前記親プロセスを含むソフトウェアに関する並列処理上限数を超えたか否かを判断する並列処理判断部と、
前記並列処理判断部によって前記並列処理上限数を超えたと判断された場合、前記いずれかの実行中プロセスの実行を停止させる停止部と、
を備えることを特徴とする管理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2013−105277(P2013−105277A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2011−248036(P2011−248036)
【出願日】平成23年11月11日(2011.11.11)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)