(57)【要約】複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントする際に、まず各ジョブに使用されたＣＰＵ使用時間をカウントし、次に各ジョブを実行する毎に、各ＣＰＵのメモリアクセスにおける演算待ち時間をカウントし、各ジョブ毎にＣＰＵ使用時間から各ＣＰＵの演算待ち時間を差し引いて算出した補正ＣＰＵ使用時間を、実際のＣＰＵ使用時間として設定する方法である。ジョブ制御装置はこの方法を実現する手段を有し、この手段により得られたＣＰＵ使用時間と補正ＣＰＵ使用時間を使用してジョブを制御すると共に、ユーザーに課金を行う。
2004088518.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントする方法であって、
各ジョブに使用されたＣＰＵ使用時間をカウントし、
前記各ジョブを実行する毎に、各ＣＰＵのメモリアクセスにおける演算待ち時間をカウントし、
各ジョブ毎にＣＰＵ使用時間から前記各ＣＰＵの演算待ち時間を差し引いて算出した補正ＣＰＵ使用時間を、実際のＣＰＵ使用時間として設定することを特徴とするＣＰＵ使用時間カウント方法。
【請求項２】
請求項１に記載のＣＰＵ使用時間カウント方法であって、前記ＣＰＵ使用時間が、前記コンピュータシステムの基本ソフトウエアに備えられている、該当ジョブが使用した時間をカウントする機能で取得された時間であり、前記ＣＰＵの演算待ち時間が、メモリアクセス性能値をカウントするハードウエアモニタを使用して算出した該当ジョブのメモリアクセス時間から、当該コンピュータシステムのハードウエア設計上最も高速な該当ジョブのメモリアクセス時間を引いた時間であるもの。
【請求項３】
請求項１又は２に記載のＣＰＵ使用時間カウント方法であって、算出した前記補正ＣＰＵ使用時間をＣＰＵ使用時間制限値と比較し、前記補正ＣＰＵ使用時間が前記ＣＰＵ使用時間制限値以上になった時には、前記該当ジョブを終了するもの。
【請求項４】
請求項１から３の何れか１項に記載のＣＰＵ使用時間カウント方法であって、前記該当ジョブからの要求により、前記補正ＣＰＵ使用時間の表示出力、及び記録出力を出力するもの。
【請求項５】
複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントし、この実際の使用時間によってジョブを制御するジョブ制御装置であって、
前記ジョブを実行する毎に、各ＣＰＵの演算待ち時間をカウントするカウント手段と、
各ジョブ毎に、各ＣＰＵ使用時間から前記各ＣＰＵの演算待ち時間を差し引くことにより、補正ＣＰＵ使用時間を算出する補正ＣＰＵ使用時間算出手段と、
前記補正ＣＰＵ使用時間を使用して前記ジョブを制御するジョブ制御手段と、
を備えることを特徴とするジョブ制御装置。
【請求項６】
請求項５に記載のジョブ制御装置であって、前記ジョブ制御装置のメモリ内に前記ＣＰＵ使用時間を記憶すると共に、前記補正ＣＰＵ使用時間を記憶するＣＰＵ時間管理構造体が設けられているもの。
【請求項７】
請求項６に記載のジョブ制御装置であって、前記ＣＰＵ時間管理構造体に、更にＣＰＵ時間制限値を記憶する領域が設けられているもの。
【請求項８】
請求項７に記載のジョブ制御装置であって、前記ジョブ制御手段は、ジョブ実行中に算出された前記補正ＣＰＵ使用時間を、前記ＣＰＵ時間管理構造体に記憶されたＣＰＵ時間制限値と比較し、前記設定された実ＣＰＵ使用時間の値が、前記ＣＰＵ時間制限値以上になった時には、当該ジョブを停止させるもの。
【請求項９】
請求項５から８の何れかに記載のジョブ制御装置であって、前記ジョブ制御手段は、ジョブからの要求により、そのジョブの実行中に算出した前記補正ＣＰＵ使用時間をリアルタイムに前記ジョブに通知するもの。
【請求項１０】
請求項５から９の何れかに記載のジョブ制御装置であって、前記ジョブ制御手段に、前記ジョブの実行中に算出した前記補正ＣＰＵ使用時間を外部に出力するデータ出力端子が接続されているもの。
【請求項１１】
請求項１０に記載のジョブ制御装置であって、前記ジョブ制御装置は、前記データ出力端子に接続する表示装置を備えていることを特徴とする。
【請求項１２】
請求項５から１１の何れかに記載のジョブ制御装置であって、前記ジョブ制御手段に、前記ジョブの実行中に算出した前記補正ＣＰＵ使用時間を記録するデータ記録手段が接続されているもの。
【発明の詳細な説明】
【技術分野】  本発明はＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置に関し、特に、大規模アプリケーション処理を多数のプロセッサ（ＣＰＵ）に分散して行わせる場合の、各ＣＰＵの実際の使用時間をカウントする方法及びこのＣＰＵ使用時間を用いるジョブ制御装置に関する。
【背景技術】  一般に、コンピュータやプロセッサを使用し、数値流体力学等に使用される大規模アプリケーションにおいては、コンピュータやプロセッサに数百ＧＦＬＯＰＳを超える性能が必要となり、このような高性能を実現する場合には並列処理が行われる。並列処理とは、多数のコンピュータやプロセッサに処理を分割して、処理全体の高速化を図ろうとするものである。
一方、大規模アプリケーションに対応したメモリ構成も必要であり、このメモリ構成は以下のような並列システムに分類される。
（ａ）集中メモリ型
この型は、図１Ａに示されるように、同等の機能を持つ複数のプロセッサ（図にはＣＰＵと記載）１と、このＣＰＵ１に統合ネットワーク２を介して接続された１つのメモリ空間（共有メモリのことで、以後単にメモリと言う）３から構成される。全てのＣＰＵ１は同じデータをアクセスすることができる。ＣＰＵ１には通常キャッシュメモリ４が設けられている。
（ｂ）分散共有メモリ型
この型は、図１Ｂに示されるように、各ＣＰＵ１が統合ネットワーク２を介して、分散配置されたローカルメモリ３Ａ〜３Ｎ（Ａ〜Ｎは任意の自然数）に接続されたものである。ローカルメモリ３Ａ〜３Ｎは、論理的には共有メモリとして参照できる。この例ではＣＰＵ１内のキャッシュメモリの図示は省略してある。
（ｃ）分散メモリ型
この型は、図１Ｃに示されるように、ＣＰＵ１とメモリ３から成る複数のシステム要素４が結合ネットワーク２で結合された形態である。異なるシステム要素４のメモリ３にあるデータへのアクセスは、統合ネットワーク２を介した通信によって実現される。この例でもＣＰＵ１内のキャッシュメモリの図示は省略してある。
上述のように、科学技術分野のハイエンドコンピュータ（分散並列コンピュータシステム）１０は、多数ＣＰＵ（数十〜数千個のＣＰＵ）および巨大メモリ（論理的／物理的）から構成されている。図２はこのようなハイエンドコンピュータにおけるジョブ実行環境の一例を示すものである。ハイエンドコンピュータでは、複数の並列コンピュータシステム５が統合ネットワーク５で並列に接続されており、各並列コンピュータシステム５には、ＣＰＵ１とメモリ３がある。また、統合ネットワーク５にはハードディスク装置や磁気ディスク装置、光ディスク装置等のディスク装置７が接続される。実際のデータやプログラム等はこのディスク装置７に格納されている。
ハイエンドコンピュータ１０のサーバー８にユーザーからジョブが与えられると、サーバー８はそのジョブを実行させる並列コンピュータシステム６を決定する。このジョブ６は、１つの並列コンピュータシステム５の中で行われることもあるが、複数の並列コンピュータシステム５に跨がって実行されることもある。このように、ハイエンドコンピュータ１０は、大小様々なジョブが混在して実行される環境になっている。
このようなジョブ実行環境では、大規模システムの資源（ＣＰＵ、メモリ）を効率的に有効活用（高いシステム稼働率）でき、かつエンドユーザ（ジョブ）への安定したサービス（ジョブ実行時間保証、ブレの少ない実行時間、木目細かいジョブ制御機能）を実現する運用技術が求められている。
コンピュータシステムにおいて複数のジョブが動作する従来の環境では、あるジョブを設定した時間に処理するために、あるジョブの現時点の処理量から終了時間を予測し、このジョブを他のジョブに優先して制御することで、このジョブの終了予想時刻を終了希望時刻に近づけることが行われている。そして、あるジョブの終了時間を予測する場合は、ＣＰＵの使用時間に加えて、データの入出力量等のコンピュータシステムの負荷の変動を考慮にいれて終了時間を予測する方式が取られてきた。（例えば、特開平５−２６５７７５号公報を参照）。
また、ＣＰＵの使用時間は単体で理想的に実行された場合の性能を表すため、複数ジョブが実行される環境でのＣＰＵの性能を予測する場合は、実際のジョブのＣＰＵ使用時間（課金時間）と、課金時間に加算されないジョブにＣＰＵが使われる時間とを加算することで各ジョブの総ＣＰＵ使用時間を求めて予測を行っていた（例えば、特開平５−２８９８９１号公報を参照）。この予測方法は、例えば、システムデーモンがジョブ実行のために行うサービスに使うＣＰＵの使用時間をジョブのＣＰＵ使用時間に加えた総ＣＰＵ使用時間から、複数ジョブが実行される環境でのＣＰＵの性能を予測する方式であった。
しかしながら、特開平５−２６５７７５号公報や特開平５−２８９８９１号公報に記載の技術では、いずれの場合も、ジョブ自身のＣＰＵ使用時間は、どのような環境下でも一定（理想的）としていたために、あるジョブの終了時間を予測する場合や、複数ジョブが実行される環境でのＣＰＵの性能を予測する場合に、予測にズレが生じていた。この予測ズレの発生の原因について以下に説明する。
原理的には、同一のプログラムを複数回実行した場合、または、複数ジョブを同時に実行した場合は、処理の実行開始から終了までの時間は、「経過時間は毎回変動する。」「ＣＰＵの使用時間は毎回一定である。」と見なされる。ところが、ＣＰＵ使用時間が毎回一定になることは、理想的なコンピュータにおいてのみ成立するものであり、実際のコンピュータにおいては、メモリアクセス性能が毎回一定ではないため、ＣＰＵ使用時間は毎回変動することになる。
例えば、ＣＰＵにキャッシュメモリを持つ場合、次に読み出すデータがこのキャッシュメモリにある（キャッシュにヒットする）か、読み出すデータがキャッシュメモリに無く、共有メモリ等から新たに読み出す（キャッシュにミスヒットする）かにより、データの読み出し時間に差が生じてメモリアクセス性能が異なってしまう。また、複数のシステムボードを持つコンピュータシステムの場合、ＣＰＵとそのアクセスするメモリが同一のシステムボードに配置される場合と、ＣＰＵとそのアクセスするメモリが異なるシステムボードに配置される場合とでは、これから処理しようとするジョブにおけるＣＰＵのメモリアクセス性能が異なってしまうことになる。更に、複数のジョブ、または並列のジョブがメモリを共有して実行されている場合、ジョブ毎のメモリアクセス負荷状況に依存して、あるジョブのメモリ競合によるメモリアクセス待ち時間が変動するので、ＣＰＵ使用時間は毎回動的に変動することになる。
このように、従来の技術では、そのジョブ自身のＣＰＵ使用時間が理想的でない限り、ＣＰＵ使用時間は毎回変動することになり、あるジョブの終了時間を予測する場合や、複数ジョブが実行される環境でのＣＰＵの性能を予測する場合において、予測にズレが生じてしまうという課題や、ＣＰＵ使用時間に対する課金が正確に行われないという課題があった。
【発明の開示】
従って、本発明の目的は、この課題を解決するために、前述のジョブの実行毎に異なるメモリアクセス性能によるＣＰＵ使用時間の違いを補正することにより、実質的なＣＰＵ使用時間を補正ＣＰＵ時間として演算し、同一プログラムの処理であれば、毎回同じ補正ＣＰＵ使用時間を演算によって求めることができ、あるジョブの終了時間を正確に予測できると共に、複数ジョブが実行される環境でのＣＰＵの性能を予測することができ、更にはＣＰＵ使用時間に対する課金に対しても安定したサービスを提供することができるＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置を提供することである。
上記目的を達成する本発明のＣＰＵ使用時間カウント方法は、複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントする方法であって、各ジョブに使用されたＣＰＵ使用時間をカウントし、各ジョブを実行する毎に、各ＣＰＵのメモリアクセスにおける演算待ち時間をカウントし、各ジョブ毎にＣＰＵ使用時間から各ＣＰＵのメモリアクセスにおける演算待ち時間を差し引いて算出した補正ＣＰＵ使用時間を、実際のＣＰＵ使用時間として設定することを特徴とするものである。
このＣＰＵ使用時間は、コンピュータシステムの基本ソフトウエアに備えられている、該当ジョブが使用した時間をカウントする機能で取得された時間であり、ＣＰＵの演算待ち時間は、メモリアクセス性能値をカウントするハードウエアモニタを使用して算出した該当ジョブのメモリアクセス時間から、当該コンピュータシステムのハードウエア設計上最も高速な該当ジョブのメモリアクセス時間を引いた時間である。
また、算出した補正ＣＰＵ使用時間をＣＰＵ使用時間制限値と比較し、補正ＣＰＵ使用時間がＣＰＵ使用時間制限値以上になった時には、該当ジョブを終了するようにしても良い。
更に、該当ジョブからの要求により、補正ＣＰＵ使用時間の表示出力、及び記録出力を出力しても良い。
一方、前記目的を達成する本発明のＣＰＵ使用時間を用いるジョブ制御装置は、複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントし、この実際の使用時間によってジョブを制御するジョブ制御装置であって、ジョブを実行する毎に、各ＣＰＵのメモリアクセス待ちによる演算待ち時間をカウントするカウント手段と、各ジョブ毎に、各ＣＰＵ使用時間から各ＣＰＵのメモリアクセス待ちによる演算待ち時間を差し引くことにより、補正ＣＰＵ使用時間を算出する補正ＣＰＵ使用時間算出手段と、補正ＣＰＵ使用時間を使用してジョブを制御するジョブ制御手段とを備えることを特徴としている。
本発明のＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置によれば、実質的なＣＰＵ使用時間を演算し、同一プログラムの処理であれば、毎回同じＣＰＵ使用時間を演算によって求めることができ、あるジョブの終了時間を正確に予測できると共に、複数ジョブが実行される環境でのＣＰＵの性能を予測することができ、更にはＣＰＵ使用時間に対する課金に対しても安定したサービスを提供することができる。
【図面の簡単な説明】  本発明の上記目的、特徴、利点等を以下に添付図面に示す実施例に従って詳細に説明する。添付図面の内容は以下の通りである。
図１Ａは従来の集中メモリ型の並列処理型コンピュータの構成を示すブロック構成図である。
図１Ｂは従来の分散共有メモリ型の並列処理型コンピュータの構成を示すブロック構成図である。
図１Ｃは従来の分散メモリ型の並列処理型コンピュータの構成を示すブロック構成図である。
図２は本発明のＣＰＵ使用時間カウント方法が適用される分散並列コンピュータシステムにおけるジョブの実行環境を説明する図である。
図３Ａは本発明のＣＰＵ使用時間カウント方法が適用される分散並列コンピュータシステムの構成の一例を示すブロック図である。
図３Ｂは図３Ａのジョブ管理機構の機能を説明するブロック図である。
図４は図３Ａに示したジョブ管理機構のＣＰＵ使用時間カウント動作の第１の実施例を説明するフローチャートである。
図５は図３に示したジョブ管理機構のＣＰＵ使用時間カウント動作の第２の実施例を説明するフローチャートである。
図６は図３に示したジョブ管理機構のＣＰＵ使用時間カウント動作の第３の実施例を説明するフローチャートである。
図７は本発明の方法による補正ＣＰＵ使用時間と、従来方法によるＣＰＵ使用時間との比較を示す線図である。
図８は、１つのジョブを２つのＣＰＵによって行った時の、ジョブ管理機構のＣＰＵ使用時間カウント動作の第４の実施例を説明するフローチャートである。
図９は、１つのジョブを２つのＣＰＵによって行った時の、ＣＰＵとキャッシュメモリの動作を説明するタイムチャートである。
発明を実施するための最良の態様
以下、添付図面に基づいて発明を実施するための最良の態様を説明するが、図１Ａから図２で説明した部材と同じ構成の部材については、同じ符号を付して説明する。
図３Ａは、本発明のＣＰＵ使用時間カウント方法が適用される分散並列コンピュータシステム１０の構成の一例を示すブロック図である。分散並列コンピュータシステム１０では、複数の並列コンピュータシステム５が、統合ネットワーク２を介して接続されている。この統合ネットワーク５には、一般に、電源をオフしてもデータやプログラムを保持できるハードディスク装置等のディスク装置７が接続されている。
各並列コンピュータシステム５の構成は同じであるので、図３Ａにはそのうちの１つの並列コンピュータシステム５の内部構成のみが示してある。並列コンピュータシステム５には、キャッシュメモリ４を備えた複数のＣＰＵ１が並列に設けられている。これら複数のＣＰＵ１は、統合ネットワーク２に接続するメモリ（共有メモリ）３に接続されており、各ＣＰＵ１はメモリ３に記憶されたデータをそれぞれのキャッシュメモリ４に取り込んで演算を行う。
各ＣＰＵ１は、その動作がＣＰＵ動作監視手段（ハードウエアモニタ）１１によって監視されている。また、並列コンピュータシステム５の中にはジョブ管理機構２０が設けられており、この中にはＣＰＵ使用時間カウント手段２１、補正ＣＰＵ使用時間カウント手段２２、およびＣＰＵ時間管理構造体（メモリ）２３がある。このＣＰＵ時間管理構造体２３には、ＣＰＵ使用時間を記憶するための領域２４、補正ＣＰＵ使用時間を記憶するための領域２５、及び、ＣＰＵの使用時間の制限値（図にはＣＰＵ時間制限値と記載）を記憶するための領域２６がある。ＣＰＵの使用時間の制限値は、各ユーザーが設定するものである。また、このＣＰＵ時間管理構造体２３はメモリ３の一部を使用して設けることもできる。
ＣＰＵ使用時間カウント手段２１は、ＣＰＵ動作監視手段１１にアクセスすることにより各ＣＰＵの使用時間（メモリアクセスによる演算待ち時間を含む）をカウントし、このカウント値をＣＰＵ時間管理構造体２３のＣＰＵ使用時間記憶領域２４に記憶する。補正ＣＰＵ使用時間カウント手段２２は、ＣＰＵ動作監視手段１１にアクセスすることにより各ＣＰＵのメモリアクセスによる演算待ち時間をカウントし、ＣＰＵ使用時間カウント手段２１でカウントされた各ＣＰＵの使用時間から前述の各ＣＰＵの演算待ち時間を減算し、実際に各ＣＰＵ１が演算のために稼働した補正ＣＰＵ使用時間を算出する。補正ＣＰＵ使用時間カウント手段２２は、算出した補正ＣＰＵ使用時間をＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間記憶領域２５に記憶する。
また、ジョブ管理機構２０には、補正ＣＰＵ時間表示／記録出力作成手段１２が接続されている。補正ＣＰＵ時間表示／記録出力作成手段１２は、ＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間記憶領域２５に記憶されている補正ＣＰＵ使用時間のデータを、図示しない表示装置や記録装置に出力するものである。
図３Ｂは図３Ａのジョブ管理機構２０の機能を説明するブロック図である。ジョブ管理機構２０には、ジョブを受け付けてジョブを起動して実行する機能、ＣＰＵ時間補正プログラムにより、入力されたＣＰＵ使用時間データを用いて実際のＣＰＵ使用時間を算出する機能、消費補正値のジョブインターフェースプログラムを用いて、ジョブからの要求があった時に、ＣＰＵ使用時間、補正ＣＰＵ使用時間、ＣＰＵ時間制限値等の現在のデータをジョブに通知する機能、及び補正値を用いたジョブ制御プログラムにより、補正ＣＰＵ使用時間の表示／記録データを出力する機能等がある。また、ＣＰＵ使用時間、補正ＣＰＵ使用時間、及びＣＰＵ時間制限値のデータは、ＣＰＵ時間管理機能により、ソフトウエアによって管理することができる。
ここで、本発明のＣＰＵ使用時間カウント方法の原理について説明する。一般に、複数のコンピュータシステムを使用して分散処理を行うコンピュータシステムにおいては、メモリ競合等のコンピュータリソースの競合やジョブの配置により、ジョブ実行毎に各ＣＰＵに異なる演算待ち時間（メモリアクセス時間）が発生する。従って、これまでの分散処理を行うコンピュータシステムでは、ＣＰＵのこの演算待ち時間の長短によって、同一プログラムを実行しても毎回同じＣＰＵ使用時間とならなかった。
そこで、本発明のＣＰＵ使用時間カウント方法では、このＣＰＵの待ち時間に応じてＣＰＵ使用時間に生じる偏差を補正し、同一プログラムの場合には、毎回同じＣＰＵ使用時間となる補正ＣＰＵ使用時間を算出する。
この補正ＣＰＵ使用時間は、以下の演算によって求めることができる。
補正ＣＰＵ使用時間＝ＣＰＵ使用時間−実行毎に異なるＣＰＵの演算待ち時間
実行毎に異なるＣＰＵの演算待ち時間によるメモリアクセス時間の変動を補正する具体的な方法としては、一般的にコンピュータシステムのハードウェア及びオペレーティングシステム（ＯＳ）に実装されている、以下の機能を組み合わせることで実現することができる。
（１）メモリアクセス性能値をカウントするハードウエアモニタを用いた、該当ジョブのＣＰＵの演算待ち時間を含むメモリアクセス時間をカウントする機能
（２）当該コンピュータのハードウェア設計上で最高速の、ＣＰＵの演算待ち時間を含まない該当ジョブのメモリアクセス時間をカウントする機能
（３）ＯＳに備わっている該当ジョブが使用したＣＰＵ使用時間をカウントする機能で取得された、一般的に課金値として取得されるＣＰＵ使用時間
そして、これら（１）〜（３）の機能を組み合わせれば、以下の式で補正ＣＰＵ使用時間を算出することができる。
補正ＣＰＵ使用時間＝（３）−（（１）−（２））
そして、この計算によって求められた補正ＣＰＵ使用時間は、ＣＰＵのメモリアクセス時間が変動した場合でも、メモリアクセスにおける演算待ち時間を補正したあるジョブに対する一定のＣＰＵ使用時間であり、同一のプログラムを色々な状況下で複数回実行した場合でも、毎回同一の補正ＣＰＵ使用時間を算出することができる。
ここで、図３Ａに示したジョブ管理機構２０による、この補正ＣＰＵ使用時間を算出するＣＰＵ使用時間カウント動作の第１の実施例を、図４に示すフローチャートを用いて説明する。このＣＰＵ使用時間カウント動作は、ジョブの実行時に起動される。
ステップ４０１ではＣＰＵ上で動作するプロセスの切り換わりがあったか否かを判定する。プロセスはジョブの最小実行単位である。切り換わりがあった場合はステップ４０３に進むが、切り換わりがなかった場合はステップ４０２に進んでこのプロセスに移行してから一定時間が経過したか否かを判定する。一定時間が経過した場合はステップ４０３に進むが、一定時間が経過していない場合はステップ４０１に戻る。ステップ４０２において一定時間が経過したと判定される場合は、プロセスが切り換わる前にそのジョブが制限値を越えた場合である。
このようにしてステップ４０３に進むと、ステップ４０３では現在動作中のプロセスが、ジョブのプロセスか否かを判定する。プロセスには、ジョブのプロセス以外にもシステムサービス等がある。そして、動作中のプロセスがジョブのプロセスでない場合はステップ４０１に戻るが、動作中のプロセスがジョブのプロセスの場合は、図３Ａで説明したジョブ管理機構２０の対象とするプロセスであるのでステップ４０４に進む。
ステップ４０４ではプロセスが動作していた時間αを算出する。このプロセスが動作していた時間αは、このプロセスがＣＰＵ上で動作を開始してから、このＣＰＵ上で動作する別のプロセスに切り換わるまでの時間のことである。従ってこの時間αはＣＰＵの演算待ち時間を含む。時間αが算出されると制御はステップ４０５に進み、該当ジョブのＣＰＵ時間管理構造体２３の、ＣＰＵ使用時間の記憶領域（図４には単にＣＰＵ使用時間と記載）２４にこの算出した時間αを加算する。ここまでの動作が、従来のコンピュータシステムにおいて、ＣＰＵの使用時間を算出するプロセスである。
このようにして該当ジョブのＣＰＵ時間管理構造体２３の、ＣＰＵ使用時間の記憶領域２４に、この算出した時間αを加算した後は、続くステップ４０６において、図３Ｂで説明したＣＰＵ時間補正プログラムにより、該当プロセスのメモリアクセス性能γ、即ち、該当ジョブのＣＰＵの演算待ち時間を含むメモリアクセス時間γと、当該コンピュータシステムにおける最高速のメモリアクセス時間βとを算出する。この最高速のメモリアクセス時間βは、ＣＰＵに演算待ち時間がない時のメモリアクセス時間のことである。
続くステップ４０７では、補正ＣＰＵ使用時間Ａを式、Ａ＝α−（γ−β）で算出し、ＣＰＵ時間管理構造体２３の、補正ＣＰＵ使用時間の記憶領域２４に記憶されている時間Ｍ（図４には補正ＣＰＵ使用時間Ｍと記載）に、この算出した時間Ａを加算する（Ｍ＝Ｍ＋Ａ）。そして、次のステップ４０８においてジョブが終了したか否かを判定し、ジョブが終了していない場合にはステップ４０１に戻り、ジョブが終了した場合にはこのルーチンを終了する。
以上のような処理により、図３Ａに示したＣＰＵ時間管理構造体２３には、そのＣＰＵ使用時間記憶領域２４には従来のＣＰＵの使用時間と同じ時間が記憶され、補正ＣＰＵ使用時間記憶領域２５に補正された真のＣＰＵ使用時間が補正ＣＰＵ使用時間として記憶される。
図５は、図３Ａに示したジョブ管理機構２０による、この補正ＣＰＵ使用時間を算出するＣＰＵ使用時間カウント動作の第２の実施例示すフローチャートであり、図４で説明したＣＰＵ使用時間カウント動作の変形例である。図５に示すＣＰＵ使用時間カウント動作が図４で説明したＣＰＵ使用時間カウント動作と異なる点は、ステップ４０７の後の処理のみである。よって、ステップ４０１からステップ４０７までの処理の説明は省略し、図４で説明したフローチャートと異なる部分のみを説明する。
前述のように、第１の実施例ではステップ４０７において、補正ＣＰＵ使用時間Ａを式、Ａ＝α−（γ−β）で算出し、ＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間の記憶領域２４に記憶されている時間Ｍ（図４には補正ＣＰＵ使用時間Ｍと記載）に、この算出した時間Ａを加算した（Ｍ＝Ｍ＋Ａ）。第２の実施例では、この次のステップ５０１において、ＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間の記憶領域２４に記憶されている時間Ｍが、同じく、ＣＰＵ時間管理構造体２３のＣＰＵ使用時間の制限値の記憶領域（図にはＣＰＵ時間制限値と記載）２６に記憶された制限値以上になったか否かを判定する。この制限値はユーザーによって設定されるものである。
そして、ステップ５０１の判定が（Ｍ≧ＣＰＵ時間制限値）である場合にはステップ５０３に進み、ジョブを強制的に終了してこのルーチンを終了する。一方、ステップ５０１の判定が（Ｍ＜ＣＰＵ時間制限値）である場合にはステップ５０２に進み、ジョブが終了したか否かを判定する。そして、ジョブが終了していない場合にはステップ４０１に戻り、ジョブが終了した場合にはこのルーチンを終了する。
このように、第２の実施例は、補正ＣＰＵ使用時間Ａの加算値ＭがＣＰＵ使用時間の制限値以上になった場合には、ジョブを強制的に終了させようとするものである。このジョブを強制的に終了させる動作が、補正ＣＰＵ使用時間を用いたジョブ制御装置の動作である。
図６は、図３Ａに示したジョブ管理機構２０による、この補正ＣＰＵ使用時間を算出するＣＰＵ使用時間カウント動作の第３の実施例示すフローチャートであり、図５で説明したＣＰＵ使用時間カウント動作の変形例である。図６に示すＣＰＵ使用時間カウント動作が図５で説明したＣＰＵ使用時間カウント動作と異なる点は、ステップ４０７の後の処理のみである。よって、ステップ４０１からステップ４０７までの処理はステップ６００としてまとめてその説明は省略し、図５で説明したフローチャートと異なる部分のみを説明する。
第３の実施例は、補正ＣＰＵ使用時間のカウント動作中に、ジョブから補正ＣＰＵ使用時間の途中経過の通知要求、或いは、以前のジョブにおける補正ＣＰＵ使用時間の通知要求があった場合の動作を示すものである。第３の実施例では、この補正ＣＰＵ使用時間のカウント動作中に、ジョブから補正ＣＰＵ使用時間の途中経過の通知要求、或いは、以前のジョブにおける補正ＣＰＵ使用時間の通知要求をライブラリ要求として記載し、ステップ４０７の後のステップ６０１で、このライブラリ要求があったか否かを判定している。
ライブラリ要求は、ユーザーやジョブからのコンピュータシステムにおける計算の途中経過の通知要求のことである。通常１つのジョブに対する計算処理は、コンピュータシステムの１回の計算処理で終了するものではないことが多く、このような場合には、何回かに分けて計算が行われる。このような場合、ライブラリ要求により、計算が終了する時間が予め分かったり、中間結果が分かるので、ユーザーにとって便利である。
ライブラリ要求がない場合はステップ６０４に進み、第２の実施例におけるステップ５０１からステップ５０３の処理に対応する処理である、ステップ６０４からステップ６０５の処理を実行し、ステップ６０７で、補正ＣＰＵ使用時間（図には補正ＣＰＵ時間と記載）を出力してこのルーチンを終了する。この補正ＣＰＵ使用時間は、前述の第１と第２の実施例においても最後に出力しても良いものである。
一方、ステップ６０１でライブラリ要求があると判定した場合にはステップ６０２に進む。ステップ６０２では、ライブラリ実行プロセスが所属するジョブを検索し、続くステップ６０３において、ＣＰＵ時間管理構造体２３の対応するジョブのＣＰＵ時間制限値と補正ＣＰＵ使用時間を読み出してジョブに通知し、ステップ６０４に進む。ステップ６０４以降の処理は前述の通りである。
図７は本発明のＣＰＵ使用時間カウント方法による補正ＣＰＵ使用時間と、従来方法によるＣＰＵ使用時間との比較を示す線図である。従来方法では、時間Ｘの経過に対して、ＣＰＵ使用時間Ｙが一点鎖線で示すように１対１に対応しており、破線で示すＣＰＵ使用時間の制限値に対しては、時刻Ｘ１で達していた。これに対して本発明のＣＰＵ使用時間カウント方法では、時間ｔ１、ｔ２，ｔ３，ｔ４，及びｔ５で示すＣＰＵの演算待ち時間（メモリアクセス待ち時間）は、補正ＣＰＵ使用時間としてはカウントされない。よって、本発明の方法によれば、破線で示すＣＰＵ使用時間の制限値に対しては、時刻Ｘ１よりかも時刻の遅い時刻Ｘ２で達することになり、制限値に対してより多くの計算を実行することができる。
以上説明した実施例は、１つのジョブに対して、１つのＣＰＵを用いて計算が行われた時の補正ＣＰＵ使用時間の算出方法であった。図８は、１つのジョブをＣＰＵ１とＣＰＵ２の２つのＣＰＵによって行った時の、ＣＰＵ１のジョブ管理機構のＣＰＵ使用時間カウント動作を説明する、本発明の第４の実施例を説明するフローチャートである。
ステップ８０１ではＣＰＵ１上で動作するプロセスの切り換わりがあったか否かを判定する。切り換わりがあった場合はステップ８０３に進むが、切り換わりがなかった場合はステップ８０２に進んでこのプロセスに移行してから一定時間が経過したか否かを判定する。一定時間が経過した場合はステップ８０３に進むが、一定時間が経過していない場合はステップ８０１に戻る。ステップ８０２において一定時間が経過したと判定される場合は、プロセスが切り換わる前にそのジョブが制限値を越えた場合である。
このようにしてステップ８０３に進むと、ステップ８０３では現在動作中のプロセスがジョブＺのプロセスか否かを判定する。そして、動作中のプロセスがジョブＺのプロセスでない場合はステップ８０１に戻るが、動作中のプロセスがジョブＺのプロセスの場合はステップ８０４に進む。ステップ８０４ではプロセスが動作していた時間α１を算出する。時間α１が算出されるとステップ８０５に進み、該当ジョブＺのＣＰＵ１時間管理構造体の、ＣＰＵ１使用時間の記憶領域に、この算出した時間α１を加算する。
このようにして該当ジョブＺのＣＰＵ１時間管理構造体の、ＣＰＵ１使用時間の記憶領域にこの算出した時間α１を加算した後は、続くステップ８０６において、図３Ｂで説明したＣＰＵ時間補正プログラムにより、該当プロセスのメモリアクセス性能γ１、即ち、該当ジョブＺのＣＰＵ１の演算待ち時間（メモリアクセス待ち時間）を含むメモリアクセス時間γ１と、当該コンピュータシステムにおける最高速のメモリアクセス時間β１とを算出する。この最高速のメモリアクセス時間β１は、ＣＰＵ１に演算待ち時間（メモリアクセス待ち時間）がない時のメモリアクセス時間のことである。
続くステップ８０７では、補正ＣＰＵ１使用時間Ａ１を式、Ａ１＝α１−（γ１−β１）で算出し、ＣＰＵ１時間管理構造体の、補正ＣＰＵ１使用時間の記憶領域に記憶されている時間Ｍ１に、この算出した時間Ａ１を加算する（Ｍ１＝Ｍ１＋Ａ１）。
このようなステップ８０１からステップ８０７までの処理は、もう１つのＣＰＵ２のジョブ管理機構においても実行されている。すなわち、対応するＣＰＵ２のＣＰＵ２時間管理構造体では、このジョブＺに対して、補正ＣＰＵ２使用時間Ａ２が式、Ａ２＝α２−（γ２−β２）で算出され、対応するＣＰＵ２時間管理構造体の、補正ＣＰＵ２使用時間の記憶領域に記憶されている時間Ｍ２に、この算出した時間Ａ２が加算されている（Ｍ２＝Ｍ２＋Ａ２）。
そこで、ステップ８０８では、該当ジョブＺを実行したＣＰＵ２の補正ＣＰＵ２使用時間Ｍ２のデータを読み込む。そして、次のステップ８０９において、ＣＰＵ１の補正ＣＰＵ１使用時間Ｍ１とＣＰＵ２の補正ＣＰＵ２使用時間Ｍ２とを加算し、ＣＰＵ１とＣＰＵ２の合計の補正ＣＰＵ使用時間Ｍを算出する。このＣＰＵ１とＣＰＵ２の合計の補正ＣＰＵ使用時間Ｍは、例えば、ＣＰＵ１の補正ＣＰＵ使用時間の記憶領域に記憶される。
そして、次のステップ８１０において、ＣＰＵ時間管理構造体の補正ＣＰＵ使用時間の記憶領域に記憶されている時間Ｍが、同じく、ＣＰＵ時間管理構造体のＣＰＵ使用時間の制限値以上になったか否かを判定する。ステップ８１０の判定が（Ｍ≧ＣＰＵ時間制限値）である場合にはステップ８１２に進み、ジョブＺを強制的に終了してこのルーチンを終了する。一方、ステップ８１０の判定が（Ｍ＜ＣＰＵ時間制限値）である場合にはステップ８１１に進み、ジョブＺが終了したか否かを判定する。そして、ジョブＺが終了していない場合にはステップ８０１に戻り、ジョブが終了した場合にはこのルーチンを終了する。
以上図８で説明した処理は、ジョブＺが２つのＣＰＵ１とＣＰＵ２に分散されて処理される場合の処理であるが、１つのジョブが３つ以上のＣＰＵに分散されて処理される場合の手順も同様である。
図９は、１つのジョブを、１つのメモリを共有して、ＣＰＵ１とＣＰＵ２の２つのＣＰＵによって行った時の、ＣＰＵ１、ＣＰＵ２とこれらに設けられたキャッシュメモリ１とキャッシュメモリ２の動作の一実施例を説明するタイムチャートである。
図９は縦軸が時間を示しており、ＣＰＵ１とＣＰＵ２の従来のＣＰＵ使用時間が共にＴＬである時の、本発明のＣＰＵ１とＣＰＵ２の補正ＣＰＵ使用時間ＨＴＬについて説明するものである。
この図９から分かるように、キャッシュメモリ１がメモリ（共有メモリ）からＣＰＵ１の演算に必要なデータＤ１を読み込んでいる時間ＴＤ１には、ＣＰＵ１は演算待ち状態であり、キャッシュメモリ２はメモリへのアクセス待ちである。従って、ＣＰＵ２も演算待ちである。キャッシュメモリ２のメモリへのアクセス待ち時間をＴＭ２１とする。
キャッシュメモリ１にデータＤ１が読み込まれると、ＣＰＵ１はデータＤ１を使用した演算を行い、キャッシュメモリ２はメモリからＣＰＵ２の演算に必要なデータＤ２を読み込む。したがって、この時はＣＰＵ２は依然として演算待ち状態である。キャッシュメモリ２のデータＤ２の読み込み時間をＴＤ２、ＣＰＵ１のデータＤ１を使用した演算時間をＴ１１とする。
ＣＰＵ１がキャッシュメモリ１に記憶されたデータＤ１を使用した演算を終了すると、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ３をメモリから読み込もうとするが、この時、キャッシュメモリ２のメモリからのデータＤ２の読み込みが終了していない場合は、キャッシュメモリ１はメモリへのアクセス待ちとなる。この時、ＣＰＵ１は演算待ち状態である。キャッシュメモリ１のメモリへのアクセス待ち時間をＴＭ１１とする。
キャッシュメモリ２のメモリからのデータＤ２の読み込みが終了すると、ＣＰＵ２はキャッシュメモリ２に記憶されたデータＤ２を使用した演算を行う。そして、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ３をメモリから読み込む。ＣＰＵ１は演算待ち状態である。ＣＰＵ２のデータＤ２を使用した演算時間をＴ２１、キャッシュメモリ１のデータＤ３の読み込み時間をＴＤ３とする。
ＣＰＵ２がキャッシュメモリ２に記憶されたデータＤ２を使用した演算を終了すると、キャッシュメモリ２はＣＰＵ２の次の演算に必要なデータＤ４をメモリから読み込もうとするが、この時、キャッシュメモリ１のメモリからのデータＤ３の読み込みが終了していない場合は、キャッシュメモリ２はメモリへのアクセス待ちとなる。この時、ＣＰＵ１とＣＰＵ２は共に演算待ち状態である。キャッシュメモリ２のメモリへのアクセス待ち時間をＴＭ２２とする。
キャッシュメモリ１のメモリからのデータＤ３の読み込みが終了すると、ＣＰＵ１はキャッシュメモリ１に記憶されたデータＤ３を使用した演算を行う。そして、キャッシュメモリ２はＣＰＵ２の次の演算に必要なデータＤ４をメモリから読み込む。ＣＰＵ２は演算待ち状態である。ＣＰＵ１のデータＤ３を使用した演算時間をＴ１２、キャッシュメモリ２のデータＤ４の読み込み時間をＴＤ４とする。
ＣＰＵ１がキャッシュメモリ１に記憶されたデータＤ３を使用した演算を終了すると、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ５をメモリから読み込もうとするが、この時、キャッシュメモリ２のメモリからのデータＤ４の読み込みが終了していない場合は、キャッシュメモリ１はメモリへのアクセス待ちとなる。この時、ＣＰＵ１は演算待ち状態である。キャッシュメモリ１のメモリへのアクセス待ち時間をＴＭ１２とする。
キャッシュメモリ２のメモリからのデータＤ４の読み込みが終了すると、ＣＰＵ２はキャッシュメモリ２に記憶されたデータＤ４を使用した演算を行う。そして、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ５をメモリから読み込む。ＣＰＵ１は演算待ち状態である。ＣＰＵ２のデータＤ４を使用した演算時間をＴ２２、キャッシュメモリ１のデータＤ５の読み込み時間をＴＤ５とする。
キャッシュメモリ１のメモリからのデータＤ５の読み込みが終了すると、ＣＰＵ１はキャッシュメモリ１に記憶されたデータＤ５を使用した演算を行う。そして、キャッシュメモリ２は、ＣＰＵ２のキャッシュメモリ２に記憶されたデータＤ４を使用した演算が終了すると、ＣＰＵ２の次の演算に必要なデータＤ６をメモリから読み込む。ＣＰＵ２は演算待ち状態である。ＣＰＵ１のデータＤ５を使用した演算時間をＴ１３、キャッシュメモリ２のデータＤ６の読み込み時間をＴＤ６とする。
以上のようなＣＰＵ１、キャッシュメモリ１、ＣＰＵ２、及びキャッシュメモリ２の動作において、本発明の方法では、キャッシュメモリ１のデータＤ１の読み込み時間ＴＤ１、ＣＰＵ１のデータＤ１を使用した演算時間Ｔ１１、キャッシュメモリ２のデータＤ２の読み込み時間ＴＤ２、ＣＰＵ２のデータＤ２を使用した演算時間Ｔ２１、キャッシュメモリ１のデータＤ３の読み込み時間ＴＤ３、ＣＰＵ１のデータＤ３を使用した演算時間Ｔ１２、キャッシュメモリ２のデータＤ４の読み込み時間ＴＤ４、ＣＰＵ２のデータＤ４を使用した演算時間Ｔ２２、キャッシュメモリ１のデータＤ５の読み込み時間ＴＤ５、及びＣＰＵ１のデータＤ５を使用した演算時間Ｔ１３の合計が、ＣＰＵ１とＣＰＵ２の補正ＣＰＵ使用時間としてカウントされる。
言い換えると、本発明のＣＰＵ１とＣＰＵ２の補正ＣＰＵ使用時間ＨＴＬは、ＣＰＵ１とＣＰＵ２の従来のＣＰＵ使用時間ＴＬから、キャッシュメモリのメモリへのアクセス待ち時間を引いた時間であり、以下の式で表わすことができる。
ＨＴＬ＝（ＴＬ−ＴＭ１１−ＴＭ１２）＋（ＴＬ−ＴＭ２１−ＴＭ２２）
このように、本発明のＣＰＵ使用時間カウント方法では、キャッシュメモリのメモリへのアクセス時間をＣＰＵの使用時間としてカウントしないので、同一プログラムの場合には、毎回同じＣＰＵ使用時間となる補正ＣＰＵ使用時間を算出することができる。
【産業上の利用可能性】  本発明に示される、ＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置によれば、実質的なＣＰＵ使用時間を演算し、同一プログラムの処理であれば、毎回同じＣＰＵ使用時間を演算によって求めることができ、あるジョブの終了時間を正確に予測できると共に、複数ジョブが実行される環境でのＣＰＵの性能を予測することができ、更にはＣＰＵ使用時間に対する課金に対しても安定したサービスを提供することができるようになる。このため、コンピュータを使用したジョブを依頼したユーザーに対して、常に正しいＣＰＵ使用時間に対する課金を行うことが可能となる。
2004088518.tif 000003
【図２】
2004088518.tif 000004
2004088518.tif 000005
2004088518.tif 000006
【図４】
2004088518.tif 000007
【図５】
2004088518.tif 000008
【図６】
2004088518.tif 000009
【図７】
2004088518.tif 000010
【図８】
2004088518.tif 000011
【図９】
2004088518.tif 000012
【手続補正書】
【提出日】平成17年3月31日(2005.3.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントする方法であって、
各ジョブに使用されたＣＰＵ使用時間をカウントし、
前記各ジョブを実行する毎に、各ＣＰＵのメモリアクセスにおける演算待ち時間をカウントし、
各ジョブ毎にＣＰＵ使用時間から前記各ＣＰＵの演算待ち時間を差し引いて算出した補正ＣＰＵ使用時間を、実際のＣＰＵ使用時間として設定することを特徴とするＣＰＵ使用時間カウント方法。
【請求項２】
請求項１に記載のＣＰＵ使用時間カウント方法であって、
前記ＣＰＵ使用時間が、前記コンピュータシステムの基本ソフトウエアに備えられている、該当ジョブが使用した時間をカウントする機能で取得された時間であり、前記ＣＰＵの演算待ち時間が、メモリアクセス性能値をカウントするハードウエアモニタを使用して算出した該当ジョブのメモリアクセス時間から、当該コンピュータシステムのハードウエア設計上最も高速な該当ジョブのメモリアクセス時間を引いた時間であることを特徴とするＣＰＵ使用時間カウント方法。
【請求項３】
請求項１又は２に記載のＣＰＵ使用時間カウント方法であって、
算出した前記補正ＣＰＵ使用時間をＣＰＵ使用時間制限値と比較し、前記補正ＣＰＵ使用時間が前記ＣＰＵ使用時間制限値以上になった時には、前記該当ジョブを終了することを特徴とするＣＰＵ使用時間カウント方法。
【請求項４】
請求項１から３の何れか１項に記載のＣＰＵ使用時間カウント方法であって、
前記該当ジョブからの要求により、前記補正ＣＰＵ使用時間の表示出力、及び記録出力を出力することを特徴とするＣＰＵ使用時間カウント方法。
【請求項５】
複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントし、この実際の使用時間によってジョブを制御するジョブ制御装置であって、
前記ジョブを実行する毎に、各ＣＰＵの演算待ち時間をカウントするカウント手段と、
各ジョブ毎に、各ＣＰＵ使用時間から前記各ＣＰＵの演算待ち時間を差し引くことにより、補正ＣＰＵ使用時間を算出する補正ＣＰＵ使用時間算出手段と、
前記補正ＣＰＵ使用時間を使用して前記ジョブを制御するジョブ制御手段と、
を備えることを特徴とするジョブ制御装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置に関し、特に、大規模アプリケーション処理を多数のプロセッサ（ＣＰＵ）に分散して行わせる場合の、各ＣＰＵの実際の使用時間をカウントする方法及びこのＣＰＵ使用時間を用いるジョブ制御装置に関する。
【背景技術】
【０００２】
一般に、コンピュータやプロセッサを使用し、数値流体力学等に使用される大規模アプリケーションにおいては、コンピュータやプロセッサに数百ＧＦＬＯＰＳを超える性能が必要となり、このような高性能を実現する場合には並列処理が行われる。並列処理とは、多数のコンピュータやプロセッサに処理を分割して、処理全体の高速化を図ろうとするものである。
【０００３】
一方、大規模アプリケーションに対応したメモリ構成も必要であり、このメモリ構成は以下のような並列システムに分類される。
【０００４】
（ａ）集中メモリ型
この型は、図１Ａに示されるように、同等の機能を持つ複数のプロセッサ（図にはＣＰＵと記載）１と、このＣＰＵ１に統合ネットワーク２を介して接続された１つのメモリ空間（共有メモリのことで、以後単にメモリと言う）３から構成される。全てのＣＰＵ１は同じデータをアクセスすることができる。ＣＰＵ１には通常キャッシュメモリ４が設けられている。
【０００５】
（ｂ）分散共有メモリ型
この型は、図１Ｂに示されるように、各ＣＰＵ１が統合ネットワーク２を介して、分散配置されたローカルメモリ３Ａ〜３Ｎ（Ａ〜Ｎは任意の自然数）に接続されたものである。ローカルメモリ３Ａ〜３Ｎは、論理的には共有メモリとして参照できる。この例ではＣＰＵ１内のキャッシュメモリの図示は省略してある。
【０００６】
（ｃ）分散メモリ型
この型は、図１Ｃに示されるように、ＣＰＵ１とメモリ３から成る複数のシステム要素４が結合ネットワーク２で結合された形態である。異なるシステム要素４のメモリ３にあるデータへのアクセスは、統合ネットワーク２を介した通信によって実現される。この例でもＣＰＵ１内のキャッシュメモリの図示は省略してある。
【０００７】
上述のように、科学技術分野のハイエンドコンピュータ（分散並列コンピュータシステム）１０は、多数ＣＰＵ（数十〜数千個のＣＰＵ）および巨大メモリ（論理的／物理的）から構成されている。図２はこのようなハイエンドコンピュータにおけるジョブ実行環境の一例を示すものである。ハイエンドコンピュータでは、複数の並列コンピュータシステム５が統合ネットワーク５で並列に接続されており、各並列コンピュータシステム５には、ＣＰＵ１とメモリ３がある。また、統合ネットワーク５にはハードディスク装置や磁気ディスク装置、光ディスク装置等のディスク装置７が接続される。実際のデータやプログラム等はこのディスク装置７に格納されている。
【０００８】
ハイエンドコンピュータ１０のサーバー８にユーザーからジョブが与えられると、サーバー８はそのジョブを実行させる並列コンピュータシステム５を決定する。このジョブ６は、１つの並列コンピュータシステム５の中で行われることもあるが、複数の並列コンピュータシステム５に跨がって実行されることもある。このように、ハイエンドコンピュータ１０は、大小様々なジョブが混在して実行される環境になっている。
【０００９】
このようなジョブ実行環境では、大規模システムの資源（ＣＰＵ、メモリ）を効率的に有効活用（高いシステム稼働率）でき、かつエンドユーザ（ジョブ）への安定したサービス（ジョブ実行時間保証、ブレの少ない実行時間、木目細かいジョブ制御機能）を実現する運用技術が求められている。
【００１０】
コンピュータシステムにおいて複数のジョブが動作する従来の環境では、あるジョブを設定した時間に処理するために、あるジョブの現時点の処理量から終了時間を予測し、このジョブを他のジョブに優先して制御することで、このジョブの終了予想時刻を終了希望時刻に近づけることが行われている。そして、あるジョブの終了時間を予測する場合は、ＣＰＵの使用時間に加えて、データの入出力量等のコンピュータシステムの負荷の変動を考慮にいれて終了時間を予測する方式が取られてきた。（例えば、特許文献１を参照）。
【００１１】
また、ＣＰＵの使用時間は単体で理想的に実行された場合の性能を表すため、複数ジョブが実行される環境でのＣＰＵの性能を予測する場合は、実際のジョブのＣＰＵ使用時間（課金時間）と、課金時間に加算されないジョブにＣＰＵが使われる時間とを加算することで各ジョブの総ＣＰＵ使用時間を求めて予測を行っていた（例えば、特許文献２を参照）。この予測方法は、例えば、システムデーモンがジョブ実行のために行うサービスに使うＣＰＵの使用時間をジョブのＣＰＵ使用時間に加えた総ＣＰＵ使用時間から、複数ジョブが実行される環境でのＣＰＵの性能を予測する方式であった。
【００１２】
しかしながら、特許文献１や特許文献２に記載の技術では、いずれの場合も、ジョブ自身のＣＰＵ使用時間は、どのような環境下でも一定（理想的）としていたために、あるジョブの終了時間を予測する場合や、複数ジョブが実行される環境でのＣＰＵの性能を予測する場合に、予測にズレが生じていた。この予測ズレの発生の原因について以下に説明する。
【００１３】
原理的には、同一のプログラムを複数回実行した場合、または、複数ジョブを同時に実行した場合は、処理の実行開始から終了までの時間は、「経過時間は毎回変動する。」「ＣＰＵの使用時間は毎回一定である。」と見なされる。ところが、ＣＰＵ使用時間が毎回一定になることは、理想的なコンピュータにおいてのみ成立するものであり、実際のコンピュータにおいては、メモリアクセス性能が毎回一定ではないため、ＣＰＵ使用時間は毎回変動することになる。
【００１４】
例えば、ＣＰＵにキャッシュメモリを持つ場合、次に読み出すデータがこのキャッシュメモリにある（キャッシュにヒットする）か、読み出すデータがキャッシュメモリに無く、共有メモリ等から新たに読み出す（キャッシュにミスヒットする）かにより、データの読み出し時間に差が生じてメモリアクセス性能が異なってしまう。また、複数のシステムボードを持つコンピュータシステムの場合、これから処理しようとするジョブが、ＣＰＵとそのアクセスするメモリが同一のシステムボードに配置される場合と、ＣＰＵとそのアクセスするメモリが異なるシステムボードに配置される場合とでは、ＣＰＵのメモリアクセス性能が異なってしまうことになる。更に、複数のジョブ、または並列のジョブがメモリを共有して実行されている場合、ジョブ毎のメモリアクセス負荷状況に依存して、あるジョブのメモリ競合によるメモリアクセス待ち時間が変動するので、ＣＰＵ使用時間は毎回動的に変動することになる。
【００１５】
【特許文献１】特開平５−２６５７７５号公報
【特許文献２】特開平５−２８９８９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
このように、従来の技術では、そのジョブ自身のＣＰＵ使用時間が理想的でない限り、ＣＰＵ使用時間は毎回変動することになり、あるジョブの終了時間を予測する場合や、複数ジョブが実行される環境でのＣＰＵの性能を予測する場合において、予測にズレが生じてしまうという課題や、ＣＰＵ使用時間に対する課金が正確に行われないという課題があった。
【００１７】
従って、本発明の目的は、この課題を解決するために、前述のジョブの実行毎に異なるメモリアクセス性能によるＣＰＵ使用時間の違いを補正することにより、実質的なＣＰＵ使用時間を補正ＣＰＵ時間として演算し、同一プログラムの処理であれば、毎回同じ補正ＣＰＵ使用時間を演算によって求めることができ、あるジョブの終了時間を正確に予測できると共に、複数ジョブが実行される環境でのＣＰＵの性能を予測することができ、更にはＣＰＵ使用時間に対する課金に対しても安定したサービスを提供することができるＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置を提供することである。
【課題を解決するための手段】
【００１８】
上記目的を達成する本発明のＣＰＵ使用時間カウント方法は、複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントする方法であって、各ジョブに使用されたＣＰＵ使用時間をカウントし、各ジョブを実行する毎に、各ＣＰＵのメモリアクセスにおける演算待ち時間をカウントし、各ジョブ毎にＣＰＵ使用時間から各ＣＰＵのメモリアクセスにおける演算待ち時間を差し引いて算出した補正ＣＰＵ使用時間を、実際のＣＰＵ使用時間として設定することを特徴とするものである。
【００１９】
このＣＰＵ使用時間は、コンピュータシステムの基本ソフトウエアに備えられている、該当ジョブが使用した時間をカウントする機能で取得された時間であり、ＣＰＵの演算待ち時間は、メモリアクセス性能値をカウントするハードウエアモニタを使用して算出した該当ジョブのメモリアクセス時間から、当該コンピュータシステムのハードウエア設計上最も高速な該当ジョブのメモリアクセス時間を引いた時間である。
【００２０】
また、算出した補正ＣＰＵ使用時間をＣＰＵ使用時間制限値と比較し、補正ＣＰＵ使用時間がＣＰＵ使用時間制限値以上になった時には、該当ジョブを終了するようにしても良い。
更に、該当ジョブからの要求により、補正ＣＰＵ使用時間の表示出力、及び記録出力を出力しても良い。
【００２１】
一方、前記目的を達成する本発明のＣＰＵ使用時間を用いるジョブ制御装置は、複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントし、この実際の使用時間によってジョブを制御するジョブ制御装置であって、ジョブを実行する毎に、各ＣＰＵのメモリアクセス待ちによる演算待ち時間をカウントするカウント手段と、各ジョブ毎に、各ＣＰＵ使用時間から各ＣＰＵのメモリアクセス待ちによる演算待ち時間を差し引くことにより、補正ＣＰＵ使用時間を算出する補正ＣＰＵ使用時間算出手段と、補正ＣＰＵ使用時間を使用してジョブを制御するジョブ制御手段とを備えることを特徴としている。
【００２２】
本発明のＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置によれば、実質的なＣＰＵ使用時間を演算し、同一プログラムの処理であれば、毎回同じＣＰＵ使用時間を演算によって求めることができ、あるジョブの終了時間を正確に予測できると共に、複数ジョブが実行される環境でのＣＰＵの性能を予測することができ、更にはＣＰＵ使用時間に対する課金に対しても安定したサービスを提供することができる。
【発明の効果】
【００２３】
本発明のＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置によれば、ジョブの実行毎に異なるメモリアクセス性能によるＣＰＵ使用時間の違いを補正することにより、実質的なＣＰＵ使用時間を補正ＣＰＵ時間として演算し、同一プログラムの処理であれば、毎回同じ補正ＣＰＵ使用時間を演算によって求めることができ、あるジョブの終了時間を正確に予測できると共に、複数ジョブが実行される環境でのＣＰＵの性能を予測することができ、更にはＣＰＵ使用時間に対する課金に対しても安定したサービスを提供することができる。
【発明を実施するための最良の形態】
【００２４】
以下、添付図面に基づいて発明を実施するための最良の態様を説明するが、図１Ａから図２で説明した部材と同じ構成の部材については、同じ符号を付して説明する。
【００２５】
図３Ａは、本発明のＣＰＵ使用時間カウント方法が適用される分散並列コンピュータシステム１０の構成の一例を示すブロック図である。分散並列コンピュータシステム１０では、複数の並列コンピュータシステム５が、統合ネットワーク２を介して接続されている。この統合ネットワーク５には、一般に、電源をオフしてもデータやプログラムを保持できるハードディスク装置等のディスク装置７が接続されている。
【００２６】
各並列コンピュータシステム５の構成は同じであるので、図３Ａにはそのうちの１つの並列コンピュータシステム５の内部構成のみが示してある。並列コンピュータシステム５には、キャッシュメモリ４を備えた複数のＣＰＵ１が並列に設けられている。これら複数のＣＰＵ１は、統合ネットワーク２に接続するメモリ（共有メモリ）３に接続されており、各ＣＰＵ１はメモリ３に記憶されたデータをそれぞれのキャッシュメモリ４に取り込んで演算を行う。
【００２７】
各ＣＰＵ１は、その動作がＣＰＵ動作監視手段（ハードウエアモニタ）１１によって監視されている。また、並列コンピュータシステム５の中にはジョブ管理機構２０が設けられており、この中にはＣＰＵ使用時間カウント手段２１、補正ＣＰＵ使用時間カウント手段２２、およびＣＰＵ時間管理構造体（メモリ）２３がある。このＣＰＵ時間管理構造体２３には、ＣＰＵ使用時間を記憶するための領域２４、補正ＣＰＵ使用時間を記憶するための領域２５、及び、ＣＰＵの使用時間の制限値（図にはＣＰＵ時間制限値と記載）を記憶するための領域２６がある。ＣＰＵの使用時間の制限値は、各ユーザーが設定するものである。また、このＣＰＵ時間管理構造体２３はメモリ３の一部を使用して設けることもできる。
【００２８】
ＣＰＵ使用時間カウント手段２１は、ＣＰＵ動作監視手段１１にアクセスすることにより各ＣＰＵの使用時間（メモリアクセスによる演算待ち時間を含む）をカウントし、このカウント値をＣＰＵ時間管理構造体２３のＣＰＵ使用時間記憶領域２４に記憶する。補正ＣＰＵ使用時間カウント手段２２は、ＣＰＵ動作監視手段１１にアクセスすることにより各ＣＰＵのメモリアクセスによる演算待ち時間をカウントし、ＣＰＵ使用時間カウント手段２１でカウントされた各ＣＰＵの使用時間から前述の各ＣＰＵの演算待ち時間を減算し、実際に各ＣＰＵ１が演算のために稼働した補正ＣＰＵ使用時間を算出する。補正ＣＰＵ使用時間カウント手段２２は、算出した補正ＣＰＵ使用時間をＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間記憶領域２５に記憶する。
【００２９】
また、ジョブ管理機構２０には、補正ＣＰＵ時間表示／記録出力作成手段１２が接続されている。補正ＣＰＵ時間表示／記録出力作成手段１２は、ＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間記憶領域２５に記憶されている補正ＣＰＵ使用時間のデータを、図示しない表示装置や記録装置に出力するものである。
【００３０】
図３Ｂは図３Ａのジョブ管理機構２０の機能を説明するブロック図である。ジョブ管理機構２０には、１つのジョブを受け付けてジョブを起動して実行する機能、ＣＰＵ時間補正プログラムにより、入力されたＣＰＵ使用時間データを用いて実際のＣＰＵ使用時間を算出する機能、消費補正値のジョブインターフェースプログラムを用いて、ジョブからの要求があった時に、ＣＰＵ使用時間、補正ＣＰＵ使用時間、ＣＰＵ時間制限値等の現在のデータをジョブに通知する機能、及び補正値を用いたジョブ制御プログラムにより、補正ＣＰＵ使用時間の表示／記録データを出力する機能等がある。また、ＣＰＵ使用時間、補正ＣＰＵ使用時間、及びＣＰＵ時間制限値のデータは、ＣＰＵ時間管理機能により、ソフトウエアによって管理することができる。
【００３１】
ここで、本発明のＣＰＵ使用時間カウント方法の原理について説明する。一般に、複数のコンピュータシステムを使用して分散処理を行うコンピュータシステムにおいては、メモリ競合等のコンピュータリソースの競合やジョブの配置により、ジョブ実行毎に各ＣＰＵに異なる演算待ち時間（メモリアクセス時間）が発生する。従って、これまでの分散処理を行うコンピュータシステムでは、ＣＰＵのこの演算待ち時間の長短によって、同一プログラムを実行しても毎回同じＣＰＵ使用時間とならなかった。
【００３２】
そこで、本発明のＣＰＵ使用時間カウント方法では、このＣＰＵの待ち時間に応じてＣＰＵ使用時間に生じる偏差を補正し、同一プログラムの場合には、毎回同じＣＰＵ使用時間となる補正ＣＰＵ使用時間を算出する。
【００３３】
この補正ＣＰＵ使用時間は、以下の演算によって求めることができる。
補正ＣＰＵ使用時間＝ＣＰＵ使用時間−実行毎に異なるＣＰＵの演算待ち時間
【００３４】
実行毎に異なるＣＰＵの演算待ち時間によるメモリアクセス時間の変動を補正する具体的な方法としては、一般的にコンピュータシステムのハードウェア及びオペレーティングシステム（ＯＳ）に実装されている、以下の機能を組み合わせることで実現することができる。
【００３５】
（１）メモリアクセス性能値をカウントするハードウエアモニタを用いた、該当ジョブのＣＰＵの演算待ち時間を含むメモリアクセス時間をカウントする機能
（２）当該コンピュータのハードウェア設計上で最高速の、ＣＰＵの演算待ち時間を含まない該当ジョブのメモリアクセス時間をカウントする機能
（３）ＯＳに備わっている該当ジョブが使用したＣＰＵ使用時間をカウントする機能で取得された、一般的に課金値として取得されるＣＰＵ使用時間
【００３６】
そして、これら（１）〜（３）の機能を組み合わせれば、以下の式で補正ＣＰＵ使用時間を算出することができる。
補正ＣＰＵ使用時間＝（３）−（（１）−（２））
【００３７】
そして、この計算によって求められた補正ＣＰＵ使用時間は、ＣＰＵのメモリアクセス時間が変動した場合でも、メモリアクセスにおける演算待ち時間を補正したあるジョブに対する一定のＣＰＵ使用時間であり、同一のプログラムを色々な状況下で複数回実行した場合でも、毎回同一の補正ＣＰＵ使用時間を算出することができる。
【００３８】
ここで、図３Ａに示したジョブ管理機構２０による、この補正ＣＰＵ使用時間を算出するＣＰＵ使用時間カウント動作の第１の実施例を、図４に示すフローチャートを用いて説明する。このＣＰＵ使用時間カウント動作は、ジョブの実行時に起動される。
【００３９】
ステップ４０１ではＣＰＵ上で動作するプロセスの切り換わりがあったか否かを判定する。プロセスはジョブの最小実行単位である。切り換わりがあった場合はステップ４０３に進むが、切り換わりがなかった場合はステップ４０２に進んでこのプロセスに移行してから一定時間が経過したか否かを判定する。一定時間が経過した場合はステップ４０３に進むが、一定時間が経過していない場合はステップ４０１に戻る。ステップ４０２において一定時間が経過したと判定される場合は、プロセスが切り換わる前にそのジョブが制限値を越えた場合である。
【００４０】
このようにしてステップ４０３に進むと、ステップ４０３では現在動作中のプロセスが、ジョブのプロセスか否かを判定する。プロセスには、ジョブのプロセス以外にもシステムサービス等がある。そして、動作中のプロセスがジョブのプロセスでない場合はステップ４０１に戻るが、動作中のプロセスがジョブのプロセスの場合は、図３Ａで説明したジョブ管理機構２０の対象とするプロセスであるのでステップ４０４に進む。
【００４１】
ステップ４０４ではプロセスが動作していた時間αを算出する。このプロセスが動作していた時間αは、このプロセスがＣＰＵ上で動作を開始してから、このＣＰＵ上で動作する別のプロセスに切り換わるまでの時間のことである。従ってこの時間αはＣＰＵの演算待ち時間を含む。時間αが算出されると制御はステップ４０５に進み、該当ジョブのＣＰＵ時間管理構造体２３の、ＣＰＵ使用時間の記憶領域（図４には単にＣＰＵ使用時間と記載）２４にこの算出した時間αを加算する。ここまでの動作が、従来のコンピュータシステムにおいて、ＣＰＵの使用時間を算出するプロセスである。
【００４２】
このようにして該当ジョブのＣＰＵ時間管理構造体２３の、ＣＰＵ使用時間の記憶領域２４に、この算出した時間αを加算した後は、続くステップ４０６において、図３Ｂで説明したＣＰＵ時間補正プログラムにより、該当プロセスのメモリアクセス性能γ、即ち、該当ジョブのＣＰＵの演算待ち時間を含むメモリアクセス時間γと、当該コンピュータシステムにおける最高速のメモリアクセス時間βとを算出する。この最高速のメモリアクセス時間βは、ＣＰＵに演算待ち時間がない時のメモリアクセス時間のことである。
【００４３】
続くステップ４０７では、補正ＣＰＵ使用時間Ａを式、Ａ＝α−（γ−β）で算出し、ＣＰＵ時間管理構造体２３の、補正ＣＰＵ使用時間の記憶領域２４に記憶されている時間Ｍ（図４には補正ＣＰＵ使用時間Ｍと記載）に、この算出した時間Ａを加算する（Ｍ＝Ｍ＋Ａ）。そして、次のステップ４０８においてジョブが終了したか否かを判定し、ジョブが終了していない場合にはステップ４０１に戻り、ジョブが終了した場合にはこのルーチンを終了する。
【００４４】
以上のような処理により、図３Ａに示したＣＰＵ時間管理構造体２３には、そのＣＰＵ使用時間記憶領域２４には従来のＣＰＵの使用時間と同じ時間が記憶され、補正ＣＰＵ使用時間記憶領域２５に補正された真のＣＰＵ使用時間が補正ＣＰＵ使用時間として記憶される。
【００４５】
図５は、図３Ａに示したジョブ管理機構２０による、この補正ＣＰＵ使用時間を算出するＣＰＵ使用時間カウント動作の第２の実施例示すフローチャートであり、図４で説明したＣＰＵ使用時間カウント動作の変形例である。図５に示すＣＰＵ使用時間カウント動作が図４で説明したＣＰＵ使用時間カウント動作と異なる点は、ステップ４０７の後の処理のみである。よって、ステップ４０１からステップ４０７までの処理の説明は省略し、図４で説明したフローチャートと異なる部分のみを説明する。
【００４６】
前述のように、第１の実施例ではステップ４０７において、補正ＣＰＵ使用時間Ａを式、Ａ＝α−（γ−β）で算出し、ＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間の記憶領域２４に記憶されている時間Ｍ（図４には補正ＣＰＵ使用時間Ｍと記載）に、この算出した時間Ａを加算した（Ｍ＝Ｍ＋Ａ）。第２の実施例では、この次のステップ５０１において、ＣＰＵ時間管理構造体２３の補正ＣＰＵ使用時間の記憶領域２４に記憶されている時間Ｍが、同じく、ＣＰＵ時間管理構造体２３のＣＰＵ使用時間の制限値の記憶領域（図にはＣＰＵ時間制限値と記載）２６に記憶された制限値以上になったか否かを判定する。この制限値はユーザーによって設定されるものである。
【００４７】
そして、ステップ５０１の判定が（Ｍ≧ＣＰＵ時間制限値）である場合にはステップ５０３に進み、ジョブを強制的に終了してこのルーチンを終了する。一方、ステップ５０１の判定が（Ｍ＜ＣＰＵ時間制限値）である場合にはステップ５０２に進み、ジョブが終了したか否かを判定する。そして、ジョブが終了していない場合にはステップ４０１に戻り、ジョブが終了した場合にはこのルーチンを終了する。
【００４８】
このように、第２の実施例は、補正ＣＰＵ使用時間Ａの加算値ＭがＣＰＵ使用時間の制限値以上になった場合には、ジョブを強制的に終了させようとするものである。このジョブを強制的に終了させる動作が、補正ＣＰＵ使用時間を用いたジョブ制御装置の動作である。
【００４９】
図６は、図３Ａに示したジョブ管理機構２０による、この補正ＣＰＵ使用時間を算出するＣＰＵ使用時間カウント動作の第３の実施例示すフローチャートであり、図５で説明したＣＰＵ使用時間カウント動作の変形例である。図６に示すＣＰＵ使用時間カウント動作が図５で説明したＣＰＵ使用時間カウント動作と異なる点は、ステップ４０７の後の処理のみである。よって、ステップ４０１からステップ４０７までの処理はステップ６００としてまとめてその説明は省略し、図５で説明したフローチャートと異なる部分のみを説明する。
【００５０】
第３の実施例は、補正ＣＰＵ使用時間のカウント動作中に、ジョブから補正ＣＰＵ使用時間の途中経過の通知要求、或いは、以前のジョブにおける補正ＣＰＵ使用時間の通知要求があった場合の動作を示すものである。第３の実施例では、この補正ＣＰＵ使用時間のカウント動作中に、ジョブから補正ＣＰＵ使用時間の途中経過の通知要求、或いは、以前のジョブにおける補正ＣＰＵ使用時間の通知要求をライブラリ要求として記載し、ステップ４０７の後のステップ６０１で、このライブラリ要求があったか否かを判定している。
【００５１】
ライブラリ要求は、ユーザーやジョブからのコンピュータシステムにおける計算の途中経過の通知要求のことである。通常１つのジョブに対する計算処理は、コンピュータシステムの１回の計算処理で終了するものではないことが多く、このような場合には、何回かに分けて計算が行われる。このような場合、ライブラリ要求により、計算が終了する時間が予め分かったり、中間結果が分かるので、ユーザーにとって便利である。
【００５２】
ライブラリ要求がない場合はステップ６０４に進み、第２の実施例におけるステップ５０１からステップ５０３の処理に対応する処理である、ステップ６０４からステップ６０５の処理を実行し、ステップ６０７で、補正ＣＰＵ使用時間（図には補正ＣＰＵ時間と記載）を出力してこのルーチンを終了する。この補正ＣＰＵ使用時間は、前述の第１と第２の実施例においても最後に出力しても良いものである。
【００５３】
一方、ステップ６０１でライブラリ要求があると判定した場合にはステップ６０２に進む。ステップ６０２では、ライブラリ実行プロセスが所属するジョブを検索し、続くステップ６０３において、ＣＰＵ時間管理構造体２３の対応するジョブのＣＰＵ時間制限値と補正ＣＰＵ使用時間を読み出してジョブに通知し、ステップ６０４に進む。ステップ６０４以降の処理は前述の通りである。
【００５４】
図７は本発明のＣＰＵ使用時間カウント方法による補正ＣＰＵ使用時間と、従来方法によるＣＰＵ使用時間との比較を示す線図である。従来方法では、時間Ｘの経過に対して、ＣＰＵ使用時間Ｙが一点鎖線で示すように１対１に対応しており、破線で示すＣＰＵ使用時間の制限値に対しては、時刻Ｘ１で達していた。これに対して本発明のＣＰＵ使用時間カウント方法では、時間ｔ１、ｔ２，ｔ３，ｔ４，及びｔ５で示すＣＰＵの演算待ち時間（メモリアクセス待ち時間）は、補正ＣＰＵ使用時間としてはカウントされない。よって、本発明の方法によれば、破線で示すＣＰＵ使用時間の制限値に対しては、時刻Ｘ１よりかも時刻の遅い時刻Ｘ２で達することになり、制限値に対してより多くの計算を実行することができる。
【００５５】
以上説明した実施例は、１つのジョブに対して、１つのＣＰＵを用いて計算が行われた時の補正ＣＰＵ使用時間の算出方法であった。図８は、１つのジョブをＣＰＵ１とＣＰＵ２の２つのＣＰＵによって行った時の、ＣＰＵ１のジョブ管理機構のＣＰＵ使用時間カウント動作を説明する、本発明の第４の実施例を説明するフローチャートである。
【００５６】
ステップ８０１ではＣＰＵ１上で動作するプロセスの切り換わりがあったか否かを判定する。切り換わりがあった場合はステップ８０３に進むが、切り換わりがなかった場合はステップ８０２に進んでこのプロセスに移行してから一定時間が経過したか否かを判定する。一定時間が経過した場合はステップ８０３に進むが、一定時間が経過していない場合はステップ８０１に戻る。ステップ８０２において一定時間が経過したと判定される場合は、プロセスが切り換わる前にそのジョブが制限値を越えた場合である。
【００５７】
このようにしてステップ８０３に進むと、ステップ８０３では現在動作中のプロセスがジョブＺのプロセスか否かを判定する。そして、動作中のプロセスがジョブＺのプロセスでない場合はステップ８０１に戻るが、動作中のプロセスがジョブＺのプロセスの場合はステップ８０４に進む。ステップ８０４ではプロセスが動作していた時間α１を算出する。時間α１が算出されるとステップ８０５に進み、該当ジョブＺのＣＰＵ１時間管理構造体の、ＣＰＵ１使用時間の記憶領域に、この算出した時間α１を加算する。
【００５８】
このようにして該当ジョブＺのＣＰＵ１時間管理構造体の、ＣＰＵ１使用時間の記憶領域にこの算出した時間α１を加算した後は、続くステップ８０６において、図３Ｂで説明したＣＰＵ時間補正プログラムにより、該当プロセスのメモリアクセス性能γ１、即ち、該当ジョブＺのＣＰＵ１の演算待ち時間（メモリアクセス待ち時間）を含むメモリアクセス時間γ１と、当該コンピュータシステムにおける最高速のメモリアクセス時間β１とを算出する。この最高速のメモリアクセス時間β１は、ＣＰＵ１に演算待ち時間（メモリアクセス待ち時間）がない時のメモリアクセス時間のことである。
【００５９】
続くステップ８０７では、補正ＣＰＵ１使用時間Ａ１を式、Ａ１＝α１−（γ１−β１）で算出し、ＣＰＵ１時間管理構造体の、補正ＣＰＵ１使用時間の記憶領域に記憶されている時間Ｍ１に、この算出した時間Ａ１を加算する（Ｍ１＝Ｍ１＋Ａ１）。
【００６０】
このようなステップ８０１からステップ８０７までの処理は、もう１つのＣＰＵ２のジョブ管理機構においても実行されている。すなわち、対応するＣＰＵ２のＣＰＵ２時間管理構造体では、このジョブＺに対して、補正ＣＰＵ２使用時間Ａ２が式、Ａ２＝α２−（γ２−β２）で算出され、対応するＣＰＵ２時間管理構造体の、補正ＣＰＵ２使用時間の記憶領域に記憶されている時間Ｍ２に、この算出した時間Ａ２が加算されている（Ｍ２＝Ｍ２＋Ａ２）。
【００６１】
そこで、ステップ８０８では、該当ジョブＺを実行したＣＰＵ２の補正ＣＰＵ２使用時間Ｍ２のデータを読み込む。そして、次のステップ８０９において、ＣＰＵ１の補正ＣＰＵ１使用時間Ｍ１とＣＰＵ２の補正ＣＰＵ２使用時間Ｍ２とを加算し、ＣＰＵ１とＣＰＵ２の合計の補正ＣＰＵ使用時間Ｍを算出する。このＣＰＵ１とＣＰＵ２の合計の補正ＣＰＵ使用時間Ｍは、例えば、ＣＰＵ１の補正ＣＰＵ使用時間の記憶領域に記憶される。
【００６２】
そして、次のステップ８１０において、ＣＰＵ時間管理構造体の補正ＣＰＵ使用時間の記憶領域に記憶されている時間Ｍが、同じく、ＣＰＵ時間管理構造体のＣＰＵ使用時間の制限値以上になったか否かを判定する。ステップ８１０の判定が（Ｍ≧ＣＰＵ時間制限値）である場合にはステップ８１２に進み、ジョブＺを強制的に終了してこのルーチンを終了する。一方、ステップ８１０の判定が（Ｍ＜ＣＰＵ時間制限値）である場合にはステップ８１１に進み、ジョブＺが終了したか否かを判定する。そして、ジョブＺが終了していない場合にはステップ８０１に戻り、ジョブが終了した場合にはこのルーチンを終了する。
【００６３】
以上図８で説明した処理は、ジョブＺが２つのＣＰＵ１とＣＰＵ２に分散されて処理される場合の処理であるが、１つのジョブが３つ以上のＣＰＵに分散されて処理される場合の手順も同様である。
【００６４】
図９は、１つのジョブを、１つのメモリを共有して、ＣＰＵ１とＣＰＵ２の２つのＣＰＵによって行った時の、ＣＰＵ１、ＣＰＵ２とこれらに設けられたキャッシュメモリ１とキャッシュメモリ２の動作の一実施例を説明するタイムチャートである。
【００６５】
図９は縦軸が時間を示しており、ＣＰＵ１とＣＰＵ２の従来のＣＰＵ使用時間が共にＴＬである時の、本発明のＣＰＵ１とＣＰＵ２の補正ＣＰＵ時間ＨＴＬについて説明するものである。
【００６６】
この図９から分かるように、キャッシュメモリ１がメモリ（共有メモリ）からＣＰＵ１の演算に必要なデータＤ１を読み込んでいる時間ＴＤ１は、ＣＰＵ１は演算待ち状態であり、キャッシュメモリ２はメモリへのアクセス待ちである。従って、ＣＰＵ２も演算待ちである。キャッシュメモリ２のメモリへのアクセス待ち時間をＴＭ２１とする。
【００６７】
キャッシュメモリ１にデータＤ１が読み込まれると、ＣＰＵ１はデータＤ１を使用した演算を行い、キャッシュメモリ２はメモリからＣＰＵ２の演算に必要なデータＤ２を読み込む。したがって、この時はＣＰＵ２は依然として演算待ち状態である。キャッシュメモリ２のデータＤ２の読み込み時間をＴＤ２、ＣＰＵ１のデータＤ１を使用した演算時間をＴ１１とする。
【００６８】
ＣＰＵ１がキャッシュメモリ１に記憶されたデータＤ１を使用した演算を終了すると、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ３をメモリから読み込もうとするが、この時、キャッシュメモリ２のメモリからのデータＤ２の読み込みが終了していない場合は、キャッシュメモリ１はメモリへのアクセス待ちとなる。この時、ＣＰＵ１は演算待ち状態である。キャッシュメモリ１のメモリへのアクセス待ち時間をＴＭ１１とする。
【００６９】
キャッシュメモリ２のメモリからのデータＤ２の読み込みが終了すると、ＣＰＵ２はキャッシュメモリ２に記憶されたデータＤ２を使用した演算を行う。そして、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ３をメモリから読み込む。ＣＰＵ１は演算待ち状態である。ＣＰＵ２のデータＤ２を使用した演算時間をＴ２１、キャッシュメモリ１のデータＤ３の読み込み時間をＴＤ３とする。
【００７０】
ＣＰＵ２がキャッシュメモリ２に記憶されたデータＤ２を使用した演算を終了すると、キャッシュメモリ２はＣＰＵ２の次の演算に必要なデータＤ４をメモリから読み込もうとするが、この時、キャッシュメモリ１のメモリからのデータＤ３の読み込みが終了していない場合は、キャッシュメモリ２はメモリへのアクセス待ちとなる。この時、ＣＰＵ１とＣＰＵ２は共に演算待ち状態である。キャッシュメモリ２のメモリへのアクセス待ち時間をＴＭ２２とする。
【００７１】
キャッシュメモリ１のメモリからのデータＤ３の読み込みが終了すると、ＣＰＵ１はキャッシュメモリ１に記憶されたデータＤ３を使用した演算を行う。そして、キャッシュメモリ２はＣＰＵ２の次の演算に必要なデータＤ４をメモリから読み込む。ＣＰＵ２は演算待ち状態である。ＣＰＵ１のデータＤ３を使用した演算時間をＴ１２、キャッシュメモリ２のデータＤ４の読み込み時間をＴＤ４とする。
【００７２】
ＣＰＵ１がキャッシュメモリ１に記憶されたデータＤ３を使用した演算を終了すると、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ５をメモリから読み込もうとするが、この時、キャッシュメモリ２のメモリからのデータＤ４の読み込みが終了していない場合は、キャッシュメモリ１はメモリへのアクセス待ちとなる。この時、ＣＰＵ１は演算待ち状態である。キャッシュメモリ１のメモリへのアクセス待ち時間をＴＭ１２とする。
【００７３】
キャッシュメモリ２のメモリからのデータＤ４の読み込みが終了すると、ＣＰＵ２はキャッシュメモリ２に記憶されたデータＤ４を使用した演算を行う。そして、キャッシュメモリ１はＣＰＵ１の次の演算に必要なデータＤ５をメモリから読み込む。ＣＰＵ１は演算待ち状態である。ＣＰＵ２のデータＤ４を使用した演算時間をＴ２２、キャッシュメモリ１のデータＤ５の読み込み時間をＴＤ５とする。
【００７４】
キャッシュメモリ１のメモリからのデータＤ５の読み込みが終了すると、ＣＰＵ１はキャッシュメモリ１に記憶されたデータＤ５を使用した演算を行う。そして、キャッシュメモリ２は、ＣＰＵ２のキャッシュメモリ２に記憶されたデータＤ４を使用した演算が終了すると、ＣＰＵ２の次の演算に必要なデータＤ６をメモリから読み込む。ＣＰＵ２は演算待ち状態である。ＣＰＵ１のデータＤ５を使用した演算時間をＴ１３、キャッシュメモリ２のデータＤ６の読み込み時間をＴＤ６とする。
【００７５】
以上のようなＣＰＵ１、キャッシュメモリ１、ＣＰＵ２、及びキャッシュメモリ２の動作において、本発明の方法では、キャッシュメモリ１のデータＤ１の読み込み時間ＴＤ１、ＣＰＵ１のデータＤ１を使用した演算時間Ｔ１１、キャッシュメモリ２のデータＤ２の読み込み時間ＴＤ２、ＣＰＵ２のデータＤ２を使用した演算時間Ｔ２１、キャッシュメモリ１のデータＤ３の読み込み時間ＴＤ３、ＣＰＵ１のデータＤ３を使用した演算時間Ｔ１２、キャッシュメモリ２のデータＤ４の読み込み時間ＴＤ４、ＣＰＵ２のデータＤ４を使用した演算時間Ｔ２２、キャッシュメモリ１のデータＤ５の読み込み時間ＴＤ５、及びＣＰＵ１のデータＤ５を使用した演算時間Ｔ１３の合計のみが、ＣＰＵ１とＣＰＵ２の補正ＣＰＵ使用時間としてカウントされる。
【００７６】
言い換えると、本発明のＣＰＵ１とＣＰＵ２の補正ＣＰＵ使用時間ＨＴＬは、ＣＰＵ１とＣＰＵ２の従来のＣＰＵ使用時間ＴＬから、キャッシュメモリのメモリへのアクセス待ち時間を引いた時間であり、以下の式で表すことができる。
ＨＴＬ＝（ＴＬ−ＴＭ１１−ＴＭ１２）＋（ＴＬ−ＴＭ２１−ＴＭ２２）
【００７７】
このように、本発明のＣＰＵ使用時間カウント方法では、キャッシュメモリのメモリアクセス待ち時間をＣＰＵの使用時間としてカウントしないので、同一プログラムの場合には、毎回同じＣＰＵ使用時間となる補正ＣＰＵ使用時間を算出することができる。
【産業上の利用可能性】
【００７８】
本発明に示される、ＣＰＵ使用時間カウント方法及びこのＣＰＵ使用時間を用いるジョブ制御装置によれば、実質的なＣＰＵ使用時間を演算し、同一プログラムの処理であれば、毎回同じＣＰＵ使用時間を演算によって求めることができ、あるジョブの終了時間を正確に予測できると共に、複数ジョブが実行される環境でのＣＰＵの性能を予測することができ、更にはＣＰＵ使用時間に対する課金に対しても安定したサービスを提供することができるようになる。このため、コンピュータを使用したジョブを依頼したユーザーに対して、常に正しいＣＰＵ使用時間に対する課金を行うことが可能となる。
【００７９】
以上本発明を特に好ましい実施の形態を参照して詳細に説明した。本発明の容易な理解のために、本発明の具体的な形態を以下に付記する。
【００８０】
(付記１）複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントする方法であって、
各ジョブに使用されたＣＰＵ使用時間をカウントし、
前記各ジョブを実行する毎に、各ＣＰＵのメモリアクセスにおける演算待ち時間をカウントし、
各ジョブ毎にＣＰＵ使用時間から前記各ＣＰＵの演算待ち時間を差し引いて算出した補正ＣＰＵ使用時間を、実際のＣＰＵ使用時間として設定することを特徴とするＣＰＵ使用時間カウント方法。
(付記２）付記１に記載のＣＰＵ使用時間カウント方法であって、前記ＣＰＵ使用時間が、前記コンピュータシステムの基本ソフトウエアに備えられている、該当ジョブが使用した時間をカウントする機能で取得された時間であり、前記ＣＰＵの演算待ち時間が、メモリアクセス性能値をカウントするハードウエアモニタを使用して算出した該当ジョブのメモリアクセス時間から、当該コンピュータシステムのハードウエア設計上最も高速な該当ジョブのメモリアクセス時間を引いた時間であるＣＰＵ使用時間カウント方法。
(付記３）付記１又は２に記載のＣＰＵ使用時間カウント方法であって、算出した前記補正ＣＰＵ使用時間をＣＰＵ使用時間制限値と比較し、前記補正ＣＰＵ使用時間が前記ＣＰＵ使用時間制限値以上になった時には、前記該当ジョブを終了するＣＰＵ使用時間カウント方法。
(付記４）付記１から３の何れか１項に記載のＣＰＵ使用時間カウント方法であって、前記該当ジョブからの要求により、前記補正ＣＰＵ使用時間の表示出力、及び記録出力を出力するＣＰＵ使用時間カウント方法。
(付記５）複数のコンピュータを使用してジョブの分散処理を行うコンピュータシステムにおける、各ＣＰＵの実際の使用時間をカウントし、この実際の使用時間によってジョブを制御するジョブ制御装置であって、
前記ジョブを実行する毎に、各ＣＰＵの演算待ち時間をカウントするカウント手段と、
各ジョブ毎に、各ＣＰＵ使用時間から前記各ＣＰＵの演算待ち時間を差し引くことにより、補正ＣＰＵ使用時間を算出する補正ＣＰＵ使用時間算出手段と、
前記補正ＣＰＵ使用時間を使用して前記ジョブを制御するジョブ制御手段と、
を備えることを特徴とするジョブ制御装置。
(付記６）付記５に記載のジョブ制御装置であって、前記ジョブ制御装置のメモリ内に前記ＣＰＵ使用時間を記憶すると共に、前記補正ＣＰＵ使用時間を記憶するＣＰＵ時間管理構造体が設けられているジョブ制御装置。
(付記７）付記６に記載のジョブ制御装置であって、前記ＣＰＵ時間管理構造体に、更にＣＰＵ時間制限値を記憶する領域が設けられているジョブ制御装置。
(付記８）付記７に記載のジョブ制御装置であって、前記ジョブ制御手段は、ジョブ実行中に算出された前記補正ＣＰＵ使用時間を、前記ＣＰＵ時間管理構造体に記憶されたＣＰＵ時間制限値と比較し、前記設定された実ＣＰＵ使用時間の値が、前記ＣＰＵ時間制限値以上になった時には、当該ジョブを停止させるジョブ制御装置。
(付記９）付記５から８の何れかに記載のジョブ制御装置であって、前記ジョブ制御手段は、ジョブからの要求により、そのジョブの実行中に算出した前記補正ＣＰＵ使用時間をリアルタイムに前記ジョブに通知するジョブ制御装置。
(付記１０）付記５から９の何れかに記載のジョブ制御装置であって、前記ジョブ制御手段に、前記ジョブの実行中に算出した前記補正ＣＰＵ使用時間を外部に出力するデータ出力端子が接続されているジョブ制御装置。
(付記１１）付記１０に記載のジョブ制御装置であって、前記ジョブ制御装置は、前記データ出力端子に接続する表示装置を備えているジョブ制御装置。
(付記１２）付記５から１１の何れかに記載のジョブ制御装置であって、前記ジョブ制御手段に、前記ジョブの実行中に算出した前記補正ＣＰＵ使用時間を記録するデータ記録手段が接続されているジョブ制御装置。
【図面の簡単な説明】
【００８１】
【図１Ａ】図１Ａは従来の集中メモリ型の並列処理型コンピュータの構成を示すブロック構成図である。
【図１Ｂ】図１Ｂは従来の分散共有メモリ型の並列処理型コンピュータの構成を示すブロック構成図である。
【図１Ｃ】図１Ｃは従来の分散メモリ型の並列処理型コンピュータの構成を示すブロック構成図である。
【図２】図２は本発明のＣＰＵ使用時間カウント方法が適用される分散並列コンピュータシステムにおけるジョブの実行環境を説明する図である。
【図３Ａ】図３Ａは本発明のＣＰＵ使用時間カウント方法が適用される分散並列コンピュータシステムの構成の一例を示すブロック図である。
【図３Ｂ】図３Ｂは図３Ａのジョブ管理機構の機能を説明するブロック図である。
【図４】図４は図３Ａに示したジョブ管理機構のＣＰＵ使用時間カウント動作の第１の実施例を説明するフローチャートである。
【図５】図５は図３Ａ、３Ｂに示したジョブ管理機構のＣＰＵ使用時間カウント動作の第２の実施例を説明するフローチャートである。
【図６】図６は図３Ａ、３Ｂに示したジョブ管理機構のＣＰＵ使用時間カウント動作の第３の実施例を説明するフローチャートである。
【図７】図７は本発明の方法による補正ＣＰＵ使用時間と、従来方法によるＣＰＵ使用時間との比較を示す線図である。
【図８】図８は、１つのジョブを２つのＣＰＵによって行った時の、ジョブ管理機構のＣＰＵ使用時間カウント動作の第４の実施例を説明するフローチャートである。
【図９】図９は、１つのジョブを２つのＣＰＵによって行った時の、ＣＰＵとキャッシュメモリの動作を説明するタイムチャートである。
【符号の説明】
【００８２】
１    プロセッサ（ＣＰＵ）
２    統合ネットワーク
３    メモリ空間（メモリ）
５    並列コンピュータシステム
６    ジョブ
７    ディスク装置
８    サーバー
１０    ハイエンドコンピュータ
２０    ジョブ管理機構
【国際調査報告】
2004088518.tif 000013
2004088518.tif 000014
2004088518.tif 000015
2004088518.tif 000016