(57)【特許請求の範囲】
【請求項１】
コンピュータを用いて、ソフトウエアの処理の実行開始直前に、その処理のプログラムごとに内蔵した見積式を用いて該処理プログラムの負荷を計算し、その値を該処理プログラムごとに用意された基準値と比較することにより、その処理を実行するか、又はその処理を制御するかを決定し、その決定に従って実行又は制御を行うことを特徴とするソフトウエアの性能見積及び性能監視方法。
【請求項２】
前記基準値が、予め定められた所定値であることを特徴とする請求項１記載のソフトウエアの性能見積及び性能監視方法。
【請求項３】
前記基準値が、ＣＰＵ負荷であることを特徴とする請求項１記載のソフトウエアの性能見積及び性能監視方法。
【請求項４】
前記処理の制御が、処理の放棄であることを特徴とする請求項１乃至３のいずれか１項に記載のソフトウエアの性能見積及び性能監視方法。
【請求項５】
前記処理の制御が、処理の実行を待ち合わせることであることを特徴とする請求項１乃至３のいずれか１項に記載のソフトウエアの性能見積及び性能監視方法。
【請求項６】
前記処理の制御が、処理の実行のプライオリティを調節することであることを特徴とする請求項１乃至３のいずれか１項に記載のソフトウエアの性能見積及び性能監視方法。
【請求項７】
前記処理の制御が、処理の実行を一定周期または一定資源使用毎に行うことを特徴とする請求項１乃至３のいずれか１項に記載のソフトウエアの性能見積及び性能監視方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウエアの性能見積及び性能監視方法に関するものである。
【０００２】
【従来の技術】
近年、コンピュータシステムに対して、処理可能なデータ量又はトランザクション量の拡大が要求されている。そして、システム規模が大きくなっても、システムの最大限の性能を引き出すことが要求される。従来においては、システムの最大限の性能を引き出すために、システム設計時の性能見積が不可欠であった。また、業務開始後は、設計通りの目標性能が出ているかどうか、システム性能を継続して監視していく必要があった。
【０００３】
ここで、設計時の性能見積においては、システム規模に従って増加する資源数が変数となる見積式が使用される。このため、特に大規模システムにおいては、見積式への代入値は、システム運転の安全性を第一に考えて決定する。例えば、最大負荷を想定した最大値に設定したり、その最大値に安全係数を掛算して余裕を持たせたり、さらに将来のシステム拡張を見込んで大きな値を設定していた。
【０００４】
例えば、代入値がファイル数という変数である場合、作業用として一時的に作成されるファイルを含めた数値が１００である場合に、安全係数１．２を掛けた１２０という数値を設定する。あるいは、代入値がログインユーザ数という変数である場合、業務開始当初の最大ログインユーザ数は３００に制限した運用を行うものであっても、２〜３年先に需要増加が見込まれれば、予め４００という大きめの値を設定しておく。
【０００５】
このように、性能見積は、見積り対象となる処理が動作する環境又はその時点のシステム負荷を最悪のケースで想定することが多い。こうした従来の性能見積方法では、想定した負荷による見積りがシステムの設計上の許容範囲をオーバーする場合に、種々の問題が発生する。例えば、想定した負荷による見積りがシステムの設計上の許容範囲をオーバーしていたとしても、早朝でログインユーザ数が２０位しかないというような、システムが低負荷で動作している状態では、その処理は実行が可能である。しかしながら、従来の性能見積の方法では、その処理を全く使えなくしてしまったり、同時実行数を制限するという対応を必要としていた。
【０００６】
この対応の具体例として、性能監視モニタにおける性能見積について説明する。性能監視モニタは、システムの性能状況をリアルタイムに表示するものである。
このような性能監視モニタについてＳＥが性能見積を行った結果、システムに接続／設定されている資源のうち、特に数の多い資源の性能状況を表示する機能が、昼間のオンライン業務で使用するには影響があると判断したとする。この場合、ユーザ側では、運用面からその影響のある機能だけを使わない方法又は、その機能を使えなくするためのプログラム修正を行う方法の２つの方法が考えられる。
【０００７】
ここで、運用面からのガードは、オペレータが操作ミスをするおそれがあるので不可能であると判断した場合は、昼間のオンライン業務だけでなく、夜間のバッチ業務までも含めて、その機能を全く使えなくするためのプログラム修正が行われる。具体的には、以下の２つの修正が行われる。
ａ．その機能を呼び出すＰＦキーが押されても、エラーメッセージを出力して要求を受け付けない修正。
【０００８】
ｂ．指定された数以上の性能監視モニタが起動できない修正。
【０００９】
【発明が解決しようとする課題】
上記のように、従来のシステム設計時の性能見積においては、システム負荷がピークに達したときの状況を考慮している。そのために、システム負荷が軽いときには使える処理であっても、全く使えなくしてしまったり、そのためのプログラム修正を加えるなどの対応をするといった問題を生じていた。また、見積りはあくまでも想定負荷によるものであることや、計算ミスなどによってシステム稼働後に実測値とのギャップが生じたりして、信頼性の高い見積りを得ることは難しいという問題も生じていた。
【００１０】
見積りの不備が原因で、システムの設計上の許容範囲をオーバーするようなプログラムを高プライオリティで連続走行させてしまった場合には、他のプログラムに制御が移らないで、様々な弊害を生じることもあった。
本発明は、システム設計時の性能見積を不要とし、システム運用中に自動的にソフトウエアの性能見積及び性能監視ができる方法を提供することを目的とするものである。
【００１１】
【課題を解決するための手段】
本発明は、上記目的を達成するためのソフトウエアの性能見積及び性能監視方法であって、ソフトウエアの各処理の実行開始直前に、その処理のプログラムが内蔵する見積式とその時点における変数を用いてその処理の負荷を計算する。この負荷を、基準値、例えば、予め定められた所定値又は、システムの負荷状態と比較する。そして、その結果により、その処理の実行が可能か否かを判定する。
【００１２】
判定の結果、処理の実行が可能であると判定されると、その処理が実行される。また、処理の実行が不可能であると判定されると、処理の制御、例えば、処理の放棄、処理の実行の待ち合わせ、処理の実行のプライオリティの調節、又は、一定周期毎あるいは一定資源使用毎による実行制御を行う。
本発明によれば、システム設計時に性能見積をしなくても、システム運用中にリアルタイムで自動的に正確なオーバヘッドを見積ることができる。また、新たにプログラム修正等を加えることなく、システム負荷に応じて処理を実行したり、処理を制御したりできるようになる。したがって、本発明により計算機システムの信頼性を向上させることができる。
【００１３】
【発明の実施の形態】
本発明の実施形態について、図１を用いて説明する。
図において、１１はソフトウエアに含まれる各処理のうちの１つの処理を示している。この処理とは、機能、サブルーチン、関数、ジョブなどの単位を意味する。図示の処理１１は、見積り対象となる処理本体６の前に、性能見積及び性能監視を実行するための、資源収集部１、見積式実行部２、外部記録部３、判定部４、制御部５を内蔵する。なお、資源収集部１〜制御部５は、処理に内蔵させずに、他から呼び出すようにすることもできる。なお、以下の説明においては、資源収集部１〜制御部５をまとめて「本機構」という。
【００１４】
最初に、図１に示した本機構の動作について説明する。
資源収集部１は、資源数の収集を行うもので、見積式の変数に代入すべき値を収集する。この代入値が他処理で扱っている資源に関するものであれば、資源収集用のサブルーチンを呼び出すか、又は、ＯＳ制御表に代入されている値を参照して資源数の通知インタフェースを提供する。一方、代入値が自処理１１で扱う資源なら、自処理自身が知っているのであるから、インタフェースの新設は不要となる。
【００１５】
見積式実行部２は、見積式の変数に、資源収集部１が収集した値を代入して見積式を実行するものである。この見積式は、自処理のプログラムの先頭位置に内蔵されてある。見積式の例を示すと、ある処理が図２に示すものであれば、その命令数は、「２３＋（２３＋（４５＋エクステント数×３））×エクステントの種類数＋５１２６」という見積式で表される。ここで、エクステント数とエクステントの種類数の代入値が３３及び９であるとき、ある処理の負荷は、６，６５２ステップと計算できる。なお、以下の説明では、上記見積式を「見積式Ａ」と略称することとする。
【００１６】
図１に戻って、外部記録部３は、各処理１１の見積り結果を外部ファイル等に記録又は表示装置に表示する。各処理の見積り結果を外部ファイルなどに記録すれば、システム設計時の見積りと記録された見積り結果を比較することによって、設計時の見積りが正しかったかどうか検証できる。ここで、システム部門が定めた目標性能が出ていないときには、負荷の相違する処理がなんであるかも調査でき、原因究明が容易に行えるといった効果もある。
【００１７】
判定部４は、その処理を実行すべきかどうかを判定するものである。判定部４は、見積式実行部２の見積り結果と基準値とを比較する。この比較結果によって、制御部５に遷移する（処理を実行しない）か、制御部５をスキップする（処理を実行する）かが決定される。比較の例としては次の２通りがあり、どちらの方法で比較するかは、処理ごとに外部からの指定を可能とする。
【００１８】
（１）ユーザ定義の基準値との比較
ユーザがファイル等で定義した基準値（所定値）と見積り結果を比較する。例えば、上記の例Ａで基準値が６，０００ステップと定義された場合には、６５２ステップだけ見積りが大きいため、処理は実行しないと判断する。
あるいは、基準値として６，０００＋１０％といったように幅を持たせた定義を許し、見積り値が６，０００以内だったら実行を許可し、６，００１〜６，６００の範囲なら実行の待ち合わせ又はプライオリティを調節し、６，６００を超えていれば実行しないと判断することができる。なお、ユーザ定義の基準値はダイナミックステップに限定されるものではなく、これをＣＰＵ時間又はＣＰＵ負荷率の単位に換算したものでもよい。
【００１９】
（２）システム負荷状況との比較
見積られた時点のシステム負荷状況と見積り結果を比較する。システムの負荷状況としてＣＰＵ負荷を例にとれば、図３に示すような、システム余裕値（最大能力−実測値）との比較が考えられる。この実測値は、リアルタイムＡＰＩによって求めることができる。リアルタイムＡＰＩによる実測の結果は、各処理が参照可能な領域に、一定周期ごとに自処理とは非同期に更新されている。上記の見積式Ａの場合は、比較に先立って次式で見積り値を実測値と同じ単位に変換する。
【００２０】
見積り値〔％〕＝（１命令当たりの平均命令実行時間×ダイナミックステップ数／リアルタイムＡＰＩの更新周期）×１００
仮に、１命令当たりの平均命令実行時間が１０ｍＳ，リアルタイムＡＰＩの更新周期が１分とすれば、１，６５２ステップは１０ｍＳ×１６５２÷６００００ｍＳ×１００＝２７．５％となる。実測値として８０％が得られたときの余裕値は２０％となり、見積り値２７．５％は余裕値２０％より大きいため、処理は実行しないと判断できる。勿論、余裕値には、上記（１）の基準値と同様に、幅を持たせることも可能である。
【００２１】
なお、上記見積り値の式において、高級言語（ＣＯＢＯＬ，Ｃ）の場合のダイナミックステップは、言語１命令当たりの平均展開命令数×１命令当たりの平均命令実行時間で求めることもできる。
図１に戻って、制御部５は、判定部４の判定の結果、処理を実行しない場合にその処理を制御するものである。その制御方法の例として次の４通りがある。どの方法で制御するかは、処理ごとに外部からの指定を可能とする。
【００２２】
（１）  処理放棄
処理放棄を示す復帰コードなどを設定して、処理の呼出し元に復帰する。当然のことながら、処理が行われなかったために不都合が生じないように呼出し元とのインタフェースは守らなければならない。
（２）  待ち合わせ
一定時間待ち合わせに入り、その時間経過後、再び、資源収集部１に戻る。どのくらいの時間を待つかは、処理の性質又は属性によるが、外部からの指示の可能とする。
【００２３】
（３）  実行プライオリティ調節
実行プライオリティを調節（一般的には、プライオリティを下げる）した後、上記（１）の復帰を行う。どの程度のプライオリティを調節するかは、外部から指定させてもよいし、システムに任せても良い。
（４）  一定周期または一定資源使用毎による制御
一定時間経過後に割り込みを発生、あるいはＣＰＵ時間など一定資源使用毎に割り込みを発生させるようにし、これら一定周期毎に処理を中断しながら、処理を実行する。（一定周期、一定資源毎に割り込みを発生させたり、割り込みで中断された処理を再開させる技術は公知である）
なお、図１には、バイパスルートが示されているが、これは、システム設計時の見積り精度が高く、本機構が無用な場合に利用される。
【００２４】
以上説明したように、本例によれば、性能見積と性能監視を同時に実行することができる。したがって、システム設計時に性能見積を行う必要がなくなる。本例によれば、システム運用中にリアルタイムで自動的にシステム負荷に応じた正確なオーバヘッドが再見積りできるようになっている。また、見積り対象処理の実行がシステム運用に影響があるかどうかの判断もでき、処理の実行が制御できるようになる。
【００２５】
以上、ＣＰＵオーバヘッドの見積りを例に説明したが、例えば、メモリ又はディスク資源などについても考え方は同じであり、同様の方法で、見積式と変数を変えることにより、性能見積と性能監視を行うことができる。
次に、以上説明した性能見積及び性能監視方法を各種処理に適用した例について説明する。
【００２６】
図４は、性能監視モニタに適用した例を示す。
性能監視モニタ４２は、ホストコンピュータ４１のリアルタイムＡＰＩと、パソコン４３との間に接続される。これらの構成は公知のものであるので、詳細な説明は省略する。
図４に示した本機構４４，４５が、性能監視モニタ４２の、レスポンス／処理時間／処理件数処理、バッファ不足の資源検出処理などに内蔵される。レスポンス／処理時間／処理件数処理、バッファ不足の資源検出処理などの見積り結果が基準値を超えた場合は、その性能データの処理は実行されず、その性能データはパソコン４３に送信しない。
【００２７】
したがって、パソコン４３に送信されるデータは、常時監視画面の性能データと、その他の処理の基準値以下の性能データと、エラーメッセージとなり、それらが、パソコン４３のサブ画面に表示される。
図５は、コンパイラへの適用例を示す。
コンパイラは、本機構５２と見積式５３，５４…を内蔵したオブジェクト５１を出力する。各関数／サブルーチンの見積式５３，５４は、再帰的に呼び出される。
【００２８】
そして、アプリケーションが性能目標を満たしていなければ、アプリケーションの実行は自ら放棄することもできる。
また、デバッガに応用すれば、命令オフセットによるブレークポイントに加え、性能値によるブレークポイント（性能値が満足されないサブルーチンが現れた時点でブレークなど）も指定できる。
【００２９】
さらに、アプリケーション実行中に性能監視の観点からプログラムを中断させたり、再開させたりすることができるようになる。これは、アプリケーションのテスト、特に、アプリケーションが運用される実環境において有効である。見積り結果のログを基にプログラムの改善箇所が得られると共に、見積り値の検証もできる。
【００３０】
また、アプリケーション実行中に基準値を満足しなくなった場合の処置としては、システム状況との比較に基づき、コンパイルオプションで処理をその場で中断するか、続行するかを指定でき、見積り値をスケジューラなどに通知して、混み合っていれば、アプリケーションの実行を待ち合わせるなど、実行の制御を兼ねることもできるようになる。
【００３１】
図６は、ダウンロード処理への適用例を示す。
パソコン通信でデータをダウンロードする際、時間により課金がされるので、ダウンロードにどのくらいの時間が掛かるかということが気になる。これに対処するため、図６に示すように、パソコン通信センタ６１のダウンローダ６２とパソコン６４の間本機構６３を接続する。
【００３２】
この本機構６３は、接続されている回線速度、転送ブロック数から所要時間を求める。また、基準値に例えば１０分という値を指定しておく。本機構６３の見積りの結果、それ以上の時間が掛かるようであれば、ダウンロードを自動的に中止することができる。また、その時点の回線負荷と比較することにより、空いてる回線に自動的に切り換えるか、負荷が下がるまでしばらくダウンロードを見合わせるといった処理もできるようになる。
【００３３】
コピーコマンドへの適用例について説明する。
パソコンソフトは、ＣＰＵ速度、メモリ容量、ディスク容量の制約を受け、その構成によってはソフトが動作しないことがある。したがって、ソフトの購入時には、事前調査を十分に行っておく必要がある。
これに対処するため、ソフトウエア提供媒体からパソコンへの複写用コマンドが、プログラム／データを複写する際に、複写されるプログラムの見積式に制御を渡し、そのパソコン環境による見積りを行う。そして、基準値以内であれば複写を許可し、そうでなければ複写を許可しない。
【００３４】
この方法によれば、コピー先システムが実際に存在しなくても、コピー先システムを想定した見積りの基礎データを準備しておくことにより、提供媒体を入力して、どのパソコンなら使えるかが、そのパソコン上で実際に使ってみなくとも確認することができる。
【００３５】
【発明の効果】
本発明によれば、システム設計時の性能見積を不要とし、システム運用中に、リアルタイムに自動的にソフトウエアの性能見積及び性能監視ができる。これにより、新たにプログラム修正を加えることなく、システムの負荷に応じて処理の実行を制御できるようになる。本発明により、計算機システムの信頼性を向上することができる。
【図面の簡単な説明】
【図１】本発明の方法を実行する機構を示す図。
【図２】本発明で用いる見積式の例を示す図。
【図３】本発明で用いる基準値のシステム負荷状況を説明するための図。
【図４】本発明を性能監視モニタに適用した例を示す図。
【図５】本発明をコンパイラへ適用した例を示す図。
【図６】本発明をダウンロード処理へ適用した例を示す図。
【符号の説明】
１…資源収集部
２…見積式実行部
３…外部記録部
４…判定部
５…制御部
６…処理本体
【図１】
0003703549.tif 000002
【図２】
0003703549.tif 000003
【図３】
0003703549.tif 000004
【図４】
0003703549.tif 000005
【図５】
0003703549.tif 000006
【図６】
0003703549.tif 000007