(57)【要約】【課題】親子ライセンスに係る条件を守りながら、効率的なライセンス管理を可能とすることである。【解決手段】ジョブ実行の要求を取得する（Ｓ１０）と、ジョブを現在行っていない空きライセンス数が要求されたライセンス数以上であるか否かを判断し（Ｓ１２）、条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であるか否かを判断し（Ｓ１６）、この条件も満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て（Ｓ１８）、Ｓ１６の条件を満たさない場合には、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えているか否かを判断し（Ｓ２０）、Ｓ２０の条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行う（Ｓ２４）。【選択図】図２
2007286703.tif 000002
【特許請求の範囲】
【請求項１】
２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可する親子ライセンスのライセンス使用状況を管理するライセンス管理方法であって、
同時使用したいライセンスの数を含み、ジョブ実行の要求を取得するジョブ要求取得工程と、
ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断する第１条件判断工程と、
第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する第２条件判断工程と、
第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て、第２条件を満たさない場合にはライセンス再配分工程に進む割当検討工程と、
第２条件を満たさない場合に、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断し、第３条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行うライセンス再配分工程と、
を有することを特徴とする親子ライセンス管理方法。
【請求項２】
請求項１に記載の親子ライセンス管理方法において、
ライセンス再配分工程は、
親ライセンスを２以上使用しているジョブである複数親ライセンス保有ジョブを検索する工程と、
検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与え、代わりに親ライセンスの総数を１つ減らして要求ジョブに与える親ライセンス再配分工程と、
を有することを特徴とする親子ライセンス管理方法。
【請求項３】
２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可する親子ライセンスのライセンス使用状況を管理するライセンス管理装置であって、
同時使用したいライセンスの数を含み、ジョブ実行の要求を取得するジョブ要求取得手段と、
ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断する第１条件判断手段と、
第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する第２条件判断手段と、
第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て、第２条件を満たさない場合にはライセンス再配分工程に進む割当検討手段と、
第２条件を満たさない場合に、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断し、第３条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行うライセンス再配分手段と、
を有することを特徴とする親子ライセンス管理装置。
【請求項４】
請求項３に記載の親子ライセンス管理装置において、
ライセンス再配分手段は、
親ライセンスを２以上使用しているジョブである複数親ライセンス保有ジョブを検索する手段と、
検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与え、代わりに親ライセンスの総数を１つ減らして要求ジョブに与える親ライセンス再配分手段と、
を有することを特徴とする親子ライセンス管理装置。
【請求項５】
２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可する親子ライセンスのライセンス使用状況を管理する管理装置上で実行されるライセンス管理プログラムであって、
同時使用したいライセンスの数を含み、ジョブ実行の要求を取得するジョブ要求取得処理手順と、
ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断する第１条件判断処置手順と、
第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する第２条件判断処理手順と、
第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て、第２条件を満たさない場合にはライセンス再配分工程に進む割当検討処理手順と、
第２条件を満たさない場合に、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断し、第３条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行うライセンス再配分処理手順と、
を実行することを特徴とする親子ライセンス管理プログラム。
【請求項６】
請求項５に記載の親子ライセンス管理プログラムにおいて、
ライセンス再配分処理手順は、
親ライセンスを２以上使用しているジョブである複数親ライセンス保有ジョブを検索する処理手順と、
検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与え、代わりに親ライセンスの総数を１つ減らして要求ジョブに与える親ライセンス再配分処理手順と、
を実行することを特徴とする親子ライセンス管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、親子ライセンス管理方法、親子ライセンス管理方法及び親子ライセンス管理プログラムに係り、特に、２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可する親子ライセンスのライセンス使用状況を管理する親子ライセンス管理方法、親子ライセンス管理方法及び親子ライセンス管理プログラムに関する。
【背景技術】
【０００２】
数値解析への要求の大規模化、複雑化に対応するため、複数の中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）を用いて並列処理を行い、演算の高速化を図ることが要求される。この場合、複数のＣＰＵに演算処理を平行して行わせるために、ソフトウェアのライセンスがそれぞれ必要となり、保有ライセンス数及びライセンス維持料が増大する。
【０００３】
複数のソフトウェアのライセンスの使用状況を効率的するために、ライセンス管理が行われる。例えば、特許文献１には、ライセンスソフトウェアの実行処理等のジョブをシステム全体で効率的に割り当てることができると共にクライアントがジョブの実行状況を容易に把握できるジョブ実行管理装置が開示されている。ここではジョブを受け取るとその入力ファイルサイズ、必要メモリサイズ、優先度を解析し、データベースからかこのジョブの平均実行時間を求めることが述べられている。また、ライセンス管理部が、入力されたジョブが指定するライセンスソフトウェアの契約数が超過していないか、すなわち空きライセンスがあるか否かを判断し、空きがない場合には待ち行列に出力され、待ち行列では最優先ジョブが取り出される。このようにネットワーク上のライセンスが一括管理され、ジョブの解析結果をもとにした最適なＣＰＵリソースが割り当てられ、またクライアントは要求したジョブの実行時間をほぼリアルタイムで把握できる、と述べられている。
【０００４】
また、特許文献２には、従来ライセンスの貸し借りは管理者等が手動で行なっていたものを、管理マスターサーバがネットワークに接続される複数のライセンスサーバが保持しているライセンスを管理するシステムが開示されている。ここでは、ライセンスサーバが保有しているライセンスを専有ライセンスと共有ライセンスに配分し、共有ライセンスを他のライセンスサーバに属するサーバと共有することで、ライセンスの共有化を効率よくすることが述べられている。
【０００５】
また、特許文献３には、サイト毎にみれば賄えない大きな要求量でもネットワーク全体でみれば調達可能な変動量であるような一時的かつ少量のライセンス要求に応えるように、各サイトとは別に構成されている共通サーバを備え、この共通サーバと各サーバとの間の接続を手動操作で切り換える方法が開示されている。これにより、各サイト同士が直接接続されることがないため、他のサイトからの不正侵入を防止できセキュリティも確保されることが述べられている。
【０００６】
さらに、特許文献４には、ネットワーク上のライセンス管理として、ユーザにライセンスを付与してしまうと、そのユーザが実際にそのソフトウェアを使用して作業を行なっているかどうかに関わらず、ライセンスが維持される問題に対し、ライセンス割り当て中の各ユーザのツール状況を調査することが開示されている。ここでは、ユーザの在席あるいは不在、当該ツールのついての実行中プロセスの有無を調査し、使用端末のところにユーザが居ない場合には基本的にそのライセンスを強制切断することが述べられている。
【０００７】
また、特許文献５には、従来のライセンス管理システムでは、ライセンスの利用許可を全ユーザ（全マシン）に平等に与えるか、ユーザ又はマシン単位に個々に与えるしかない問題に対し、特定用途に利用する複数マシンを１つのグループ（プロジェクトマシン）として認識し、起動要求を発したユーザがプロジェクトに属するか否かによって、使用資格を判断することが開示されている。
【０００８】
このように、ライセンス管理を効率的に行うことの他に、ライセンス維持料を抑制する要望に対して、いわゆる親子ライセンス方式が提案されることがある。親子ライセンス方式とは、２つ以上の親ライセンスと複数の子ライセンスとを含むライセンスであって、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可するものである。そして、この条件の下で使用する限り、ライセンス総数に対する維持料が特別に割引される。例えば、親子ライセンスにおいて、親ライセンスがＮ個あり、子ライセンスがＭ個ある契約である場合、この（Ｍ＋Ｎ）個のライセンス維持料の総額は、通常の（Ｍ＋Ｎ）個のソフトウェアライセンス維持料の総額よりも安価である。
【０００９】
この親子ライセンス方式が適用される場合のライセンス使用状況の管理は、通常のソフトウェアの使用状況の管理に加えて、１つのジョブ実行には必ず１つ以上の親ライセンスを使用する条件が守られているかどうかが管理されることになる。
【００１０】
【特許文献１】特開２００４−２４６５９２号公報
【特許文献２】特開２００３−３２３２２４号公報
【特許文献３】特開２００２−１２４９５８号公報
【特許文献４】特開２００２−２５８９６２号公報
【特許文献５】特開平１０−１１１７９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
親子ライセンス方式においては、１つのジョブ実行には必ず１つ以上の親ライセンスを使用する条件の下にライセンス維持料を低廉にして複数のライセンスを提供するものである。したがって、その条件を満たさないジョブ要求に対しては、その条件を満たす親ライセンスの空き又は子ライセンスの空きがでるまで、待機処理がなされることになる。その結果、ライセンスの現在の使用状況によって、空きライセンスの総数としてはジョブ要求を満たす十分なものがあるにもかかわらず、待機処理がなされることが生じ、せっかくのライセンス総数が生かされないことがある。
【００１２】
本発明の目的は、親子ライセンスに係る条件を守りながら、効率的なライセンス管理を可能とする親子ライセンス管理方法、親子ライセンス管理方法及び親子ライセンス管理プログラムを提供することである。
【課題を解決するための手段】
【００１３】
本発明に係る親子ライセンス管理方法は、２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可する親子ライセンスのライセンス使用状況を管理するライセンス管理方法であって、同時使用したいライセンスの数を含み、ジョブ実行の要求を取得するジョブ要求取得工程と、ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断する第１条件判断工程と、第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する第２条件判断工程と、第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て、第２条件を満たさない場合にはライセンス再配分工程に進む割当検討工程と、第２条件を満たさない場合に、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断し、第３条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行うライセンス再配分工程と、を有することを特徴とする。
【００１４】
また、本発明に係る親子ライセンス管理方法において、ライセンス再配分工程は、親ライセンスを２以上使用しているジョブである複数親ライセンス保有ジョブを検索する工程と、検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与え、代わりに親ライセンスの総数を１つ減らして要求ジョブに与える親ライセンス再配分工程と、を有することが好ましい。
【００１５】
また、本発明に係る親子ライセンス管理装置は、２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可する親子ライセンスのライセンス使用状況を管理するライセンス管理装置であって、同時使用したいライセンスの数を含み、ジョブ実行の要求を取得するジョブ要求取得手段と、ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断する第１条件判断手段と、第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する第２条件判断手段と、第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て、第２条件を満たさない場合にはライセンス再配分工程に進む割当検討手段と、第２条件を満たさない場合に、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断し、第３条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行うライセンス再配分手段と、を有することを特徴とする。
【００１６】
また、本発明に係る親子ライセンス管理装置において、ライセンス再配分手段は、親ライセンスを２以上使用しているジョブである複数親ライセンス保有ジョブを検索する手段と、検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与え、代わりに親ライセンスの総数を１つ減らして要求ジョブに与える親ライセンス再配分手段と、を有することが好ましい。
【００１７】
また、本発明に係る親子ライセンス管理プログラムは、２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可する親子ライセンスのライセンス使用状況を管理する管理装置上で実行されるライセンス管理プログラムであって、同時使用したいライセンスの数を含み、ジョブ実行の要求を取得するジョブ要求取得処理手順と、ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断する第１条件判断処置手順と、第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する第２条件判断処理手順と、第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て、第２条件を満たさない場合にはライセンス再配分工程に進む割当検討処理手順と、第２条件を満たさない場合に、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断し、第３条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行うライセンス再配分処理手順と、を実行することを特徴とする。
【００１８】
また、本発明に係る親子ライセンス管理プログラムにおいて、ライセンス再配分処理手順は、親ライセンスを２以上使用しているジョブである複数親ライセンス保有ジョブを検索する処理手順と、検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与え、代わりに親ライセンスの総数を１つ減らして要求ジョブに与える親ライセンス再配分処理手順と、を実行することが好ましい。
【発明の効果】
【００１９】
上記構成の少なくとも１つにより、親子ライセンスにおいて、ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断し、第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する。そして、これら２つの条件を満たすときは、親子ライセンスの使用条件を満たすので予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当てる。これらの条件を満たさない場合には親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断し、第３条件を満たす場合には、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を含むライセンス再配分を行う。
【００２０】
これによって、空きライセンスの総数と、親ライセンスの総数からいえば実行可能であるが、現在のライセンス使用状況のままでは、新しいジョブ要求に応えられない場合であっても、親ライセンスの再配分を行うことで、ジョブ要求に対応することができる。
【００２１】
そして、ライセンス再配分処理としては、親ライセンスを２以上使用しているジョブである複数親ライセンス保有ジョブを検索し、検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与え、代わりに親ライセンスの総数を１つ減らすので、親子ライセンスに係る条件を守りながら、効率的なライセンス管理が可能となる。
【発明を実施するための最良の形態】
【００２２】
以下に図面を用いて本発明に係る実施の形態につき、詳細に説明する。以下では、親子ライセンス方式として、２つ以上の親ライセンスと複数の子ライセンスとを含み、１つのジョブ実行には必ず１つ以上の親ライセンスを使用することを条件に、複数のライセンスを同時に１つのジョブの実行において使用することを許可するもの（以下において、この条件を親子ライセンス条件という）として説明するが、この親子ライセンス条件に含まれるもので、さらに詳細な条件を付すものとしてもよい。例えば、ライセンスの使用状況に応じて、そのライセンス維持料が変更されるものとしてもよい。また、以下では、ジョブの定義として、複数の演算処理装置を用いて並列処理を行う単位を１つのジョブとするが、１つのジョブに１つの演算処理装置を用いるものを含んでもよい。その意味では、ジョブの単位は、１以上の演算処理装置を用いて、統合的な演算処理を行う単位ということができる。
【００２３】
また、以下に述べる事例では、親子ライセンスの単位を、１つの親ライセンスに対し３つの子ライセンスが属し、合計４つのライセンスを１単位とし、ライセンス契約全体としては３組の親子ライセンス、すなわち、３つの親ライセンスと、９つの子ライセンスを保有する場合について全体のライセンス使用状況を管理する場合について述べるが、これは、単に説明のための一例である。したがって、親子ライセンス条件を満たすものであれば、これ以外の親子ライセンスの単位、及び保有するライセンスの総数であってもよい。また、以下で述べるライセンスの使用履歴も、説明のための一例であって、もちろんこれ以外の使用履歴であってもよい。
【００２４】
図１は、親子ライセンス管理システム１０の構成を示すブロック図である。この親子ライセンス管理システム１０は、親子ライセンスの単位として、１つの親ライセンスに対し３つの子ライセンスが属し、合計４つのライセンスを１単位とし、ライセンス契約全体としては３組の親子ライセンス、すなわち、３つの親ライセンスと、９つの子ライセンスとを保有している場合について、これら１２のライセンスを、親子ライセンス条件の下で効率的な運用を行いながら管理する機能を有するシステムである。
【００２５】
図１では、保有ライセンス群２０として、３つの親ライセンス２１，２２，２３が示され、３つの親子ライセンス単位が保有されるものとして示される。すなわち親ライセンス２１には、３つの子ライセンス３１，３２，３３が属し、同様に、親ライセンス２２には、３つの子ライセンス３４，３５，３６が属し、親ライセンス２３には、３つの子ライセンス３７，３８，３９が属する。したがって、図１の場合は、３つの親ライセンス２１，２２，２３と、９つの子ライセンス３１〜３９を保有していることになる。
【００２６】
３つの親ライセンス２１，２２，２３のそれぞれ、及び９つの子ライセンス３１〜３９のそれぞれは、同一のソフトウェアに関するライセンスであって、親ライセンス、子ライセンスの区別は、単に親子ライセンス条件が守られているか否かの管理のために便宜上なされたものであり、ソフトウェアの内容の実行について、両者は区別されない。したがって、図１の例では、最小で１ＣＰＵ、最大で１２ＣＰＵの範囲で、同一ソフトウェアの実行が可能である。
【００２７】
図１で示されるＣＰＵ群４０は、複数のＣＰＵがネットワークで相互に接続された演算装置群であり、ＣＰＵ群４０の動作は、各ＣＰＵとネットワークで接続されるジョブ管理部４２によって管理される。ジョブ管理部４２は、保有ライセンス群２０を用いて、ＣＰＵ群４０のそれぞれのＣＰＵに所望のジョブを実行させるための管理を行う機能を有する。例えば、保有ライセンス群２０が、有限要素法による車両の強度計算を実行できるソフトウェアに関するものであって、上記のように合計１２のライセンス使用が可能なものとして、ジョブ管理部４２は、Ａ車両に関する強度計算ジョブと、Ｂ車両に関する強度計算ジョブと、Ｃ車両に関する強度計算ジョブ等の実行を管理する。ジョブの管理は、各ジョブについて並列処理を行うためのＣＰＵの数を含む。かかるジョブ管理部４２としては、適当な管理コンピュータ等を用いることができる。
【００２８】
ＣＰＵ群４０とジョブ管理部４２とは、親子ライセンス管理システム１０の管理される対象であるが、広義の意味で、親子ライセンス管理システム１０に含まれるものと考えてもよい。親子ライセンス管理システム１０の中核は、ジョブ管理部４２とネットワークで接続される親子ライセンス管理装置５０である。なお、親子ライセンス管理装置５０は、さらにネットワークを介してＣＰＵ群４０と接続されることができる。
【００２９】
親子ライセンス管理装置５０は、ジョブ管理部４２と交信し、ジョブ管理部４２が実行しようとするジョブの内容を取得し、そのジョブ実行要求を親子ライセンス条件の下で確認し、許可通知、あるいは待機通知、あるいはエラー通知を出す機能を有する。これらの機能は、通常の親子ライセンス管理機能であるが、さらに、ジョブ管理部４２からのジョブ要求を取得すると、親子ライセンス条件の下で、効率的なライセンス割り当て及び再配分を行い、その結果に基づいて、ジョブ管理部４２に、許可通知、あるいは待機通知、あるいはエラー通知を出す機能を有する。後者の機能には、空きライセンスの総数と、親ライセンスの総数からいえば実行可能であるが、現在のライセンス使用状況のままでは、新しいジョブ要求に応えられない場合に、親ライセンスの再配分を行って、効率的なライセンス割り当て及び再配分を行うことを含む。なお、ジョブ管理部４２に通知すると共に、ＣＰＵ群４０を構成する各ＣＰＵに通知してもよく、ＣＰＵ群４０を構成する各ＣＰＵにのみ通知するものとしてもよい。
【００３０】
親子ライセンス管理装置５０は、ジョブ管理部４２からのジョブ実行の要求を取得するジョブ要求取得モジュール５２と、ジョブを現在行っていない空きライセンス数が、要求されたライセンス数以上であることの第１条件を満たすか否かを判断する第１条件判断モジュール５４と、第１条件を満たす場合に、ジョブを現在行っていない空き親ライセンスの数が１以上であることの第２条件を満たすか否かを判断する第２条件判断モジュール５６と、第２条件を満たさない場合に、親ライセンスの総数が、ライセンスを現在使用しているジョブ数を超えていることの第３条件を満たすか否かを判断する第３条件判断モジュール５８とを有する。そして、第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当てる割り当てモジュール６０と、第２条件を満たさないが第３条件を満たす場合に、予め定められた再配分条件に従って、ジョブ実行中の親ライセンスの再配分を行う親ライセンス再配分モジュール６２とを含む。
【００３１】
ここで、親子ライセンス管理装置５０が実行するのは、上記のように、保有ライセンス群２０の使用状況が親子ライセンス条件を満たすか否かと、それに基づく効率的なライセンス割り当て及び再配分を行ってその結果をジョブ管理部４２に通知することである。したがって、親ライセンスの再配分を含んで、ライセンス割り当てを変更する場合でも、それが、システム全体として親子ライセンス条件を満たすものである限り、現在実行中のジョブを中断すること、あるいは、現在ジョブを実行するＣＰＵを変更することはない。親子ライセンス管理装置５０が実行するのは、単にライセンス使用状況についての計算とその結果についての通知であり、ＣＰＵ群４０の実行を変更することは行わない。仮に、ＣＰＵ群４０が、通知に反してライセンスを使用する場合には、親子ライセンス管理装置５０は、ジョブ管理部４２と、必要があれば該当ＣＰＵにエラーメッセージを発行し、それ以上のジョブを実行することを阻止することができる。
【００３２】
これらの機能は、ソフトウェアで実行することができ、具体的には、親子ライセンス管理プログラムを実行することで実現できる。親子ライセンス管理プログラムは、親子ライセンスマネージャ等の名称を用いてもよい。また、必要があれば、これらの機能の一部をハードウェアによって実現することもできる。また、親子ライセンス管理装置５０の機能を、ジョブ管理部４２の機能と統合し、１台のコンピュータで実現するものとしてもよい。
【００３３】
かかる親子ライセンス管理システム１０の動作、特に親子ライセンス管理装置５０の各機能につき、図２のフローチャート及び図３等を用いて、以下に詳細に説明する。図２は、親子ライセンス管理の手順を示すフローチャートで、各手順は、親子ライセンスマネージャが親子ライセンス管理装置５０の上で実行する各処理手順に対応する。図３は、ライセンスの割り当てルールの一例を示し、図４は親ライセンス再配分ルールの一例を示すものである。図５から図１０は、保有ライセンス群２０における具体的なライセンスの割り当て及び再配分の様子を、例示的なジョブ要求に対応させて説明する図である。
【００３４】
図２において、親子ライセンスマネージャが起動されると、ジョブ管理部４２からのジョブ要求を待ち受ける。ジョブ管理部４２がＣＰＵ群４０に新しくジョブを実行させようとするときは、ネットワークを介し、親子ライセンス管理装置５０にジョブ要求を送信するので、そのジョブ要求を取得する（Ｓ１０）。この機能は、ジョブ要求取得モジュール５２によって実行される。
【００３５】
ジョブ要求には、そのジョブの実行するＣＰＵ数、すなわち必要なライセンス数の情報を含む。例えば、４台のＣＰＵで並列処理する場合には、４つのライセンスの割り当て要求を含む。ジョブ要求を取得すると、次に、ライセンス管理のための第１条件を満たすか否かが判断される。第１条件は、現在の空きライセンス数が要求ライセンス数以上あることである（Ｓ１２）。この判断は、第１条件判断モジュール５４の機能によって実行される。具体的には、例えば、保有ライセンス群２０に対する各ライセンスの使用状況一覧表を有していて、ライセンス割り当てを行うごとに、使用中ライセンスと空きライセンスの状況を更新し、更新後の空きライセンスの総数を合計し、その合計値と、要求ライセンス数との比較演算を実行することで、第１条件の判断を行うことができる。
【００３６】
Ｓ１２において、第１条件を満たさないと判断されたとき、すなわち、現在の空きライセンス数が、要求ライセンス数未満であるときは、ジョブ要求に対し、待機通知が発行され（Ｓ１４）、Ｓ１０の工程の前に戻り、適当な時期の再ジョブ要求を待つ。あるいはＳ１０の工程の後に戻り、そのままＳ１２の判断を適当なサンプリングタイムで継続的に行って待機するものとしてもよい。
【００３７】
Ｓ１２において、第１条件を満たすと判断されたとき、すなわち、現在の空きライセンス数が、要求ライセンス数以上であるときは、次に第２条件を満たすか否かが判断される。第２条件は、空き親ライセンスの数が１以上あることである（Ｓ１６）。この判断は、第２条件判断モジュール５６の機能により実行される。具体的には、上記の各ライセンス使用状況一覧表を用い空き親ライセンスの総数を合計し、その合計が１以上か否かを判断する。あるいは、端的に、各ライセンス使用状況一覧表で各親ライセンスのいずれかにおいて空きがあるか否かを検索してもよい。
【００３８】
第２条件を満たす、すなわち、空き親ライセンスが１以上あるときは、空きライセンスの割り当てが行われる（Ｓ１８）。図３に、空きライセンスの割り当ての際のルールの一例を示す。ここでは、１ジョブの要求に対し、空き親ライセンスの中から任意の親ライセンスを１つ割り当て、残りのライセンスについては空き子ライセンスの中から必要数を割り当てる。もし、残りのライセンスの総数について空き子ライセンスのみで割り当てできないときは、空き親ライセンスから不足数を割り当てる。第２条件は、第１条件を満たすときに行われるものであるから、空き親ライセンスと空き子ライセンスの総数は、必ず要求ライセンスの総数以上ある。したがって、要求ライセンス数は、必ず空きライセンスの中で賄えるはずであるが、割り当てルールは、そのときに空き親ライセンスの割り当てを最小にするものである。かかる割り当ては、割り当てモジュール６０の機能により実行される。すなわち、割り当てモジュール６０の機能は、図３に示されるような割り当てルールの実行と、その結果の通知である。
【００３９】
図５と図６は、割り当ての様子を説明する図である。図５は、保有ライセンス群２０の初期状態を示す図である。この状態においては、要求ジョブが、１２ライセンスを超えてライセンス割り当てを要求しない限り、割り当てが可能である。事例として、ジョブ１が８ＣＰＵの並行処理をするため、８ライセンスの割り当て要求をしたものとする。このときは、図３のルールに従い、親ライセンスが１つ割り当てられ、残りの７ライセンスは、合計９の空き子ライセンスの中から割り当てられる。割り当て順序は、図５において符号の値の小さいものから行うものとすることなどの付随的ルールを定めることができる。その付随的ルールを適用するものとすれば、親ライセンス２１と、子ライセンス３１〜３７がジョブ１に割り当てられる。図６には、ジョブ１として使用されるライセンス群の範囲が粗い破線枠として示されている。この割り当てと共に、各ライセンス使用状況一覧表が更新される。
【００４０】
ジョブ１の割り当てが完了すれば、その旨がネットワークを介しジョブ管理部４２に通知される。通知と共に、ＣＰＵ群４０のライセンス使用状況がこの割り当て許可の内容に従っているか否かが監視される。監視の結果、仮にこの割り当て許可に反することがあれば、エラーメッセージあるいは警告メッセージがジョブ管理部４２に発行される。ジョブ管理部４２は、エラーメッセージあるいは警告メッセージが解除されるまで、ジョブの実行を行うことができない。あるいは、当該ＣＰＵに警告を発行し、警告が解除されるまで、ジョブの実行を阻止するものしてもよい。
【００４１】
次の事例として、ジョブ１の割り当て完了の後、新たにジョブ２が、４ＣＰＵの並行処理をするため、４ライセンスの割り当て要求をしたものとする。このときは、図２の手順に従い、Ｓ１２において、空きライセンス数＝４で、要求ライセンス数＝４であるから、第１条件を満たす。また、Ｓ１６において、空き親ライセンス数＝２で、１以上であるので、第２条件も満たす。そこでＳ１８において図３のルールが適用されて割り当てが行われる。図３のルールに従えば、まず親ライセンスが１つ割り当てられ、次に残りの３ライセンスを空き子ライセンスの中から割り当てようとするが、空き子ライセンスの総数は２であるので、空き子ライセンスの割り当てのみでは１つのライセンスが不足する。そこで、不足する１つのライセンスを空き親ライセンスの中から割り当てる。その様子が図６において、ジョブ２として使用されるライセンス群の範囲が細い実線の枠として示されている。ここでは、親ライセンス２２がまず割り当てられ、次に子ライセンス３８，３９が割り当てられ、不足の１つのライセンスには、親ライセンス２３が割り当てられている。割り当てと共に、各ライセンス使用状況一覧表が更新される。図６は一種の各ライセンス使用状況表であるが、このような表現の他に、演算が容易なテーブル形式を各ライセンス使用状況表として用いることもできる。
【００４２】
次の事例として、その後にジョブ１の実行が完了したとする。このとき、ジョブ管理部４２からジョブ１の実行完了通知が、ネットワークを介し親子ライセンス管理装置５０に通知される。あるいは、親子ライセンス管理装置５０がネットワークを介しＣＰＵ群４０のライセンス使用状況を監視していて、ジョブ完了を検出するものとしてもよい。いずれにせよ、ジョブ１の実行完了の情報を取得すると、各ライセンス使用状況表が更新される。その様子を図７に示す。ここでは、１つの空き親ライセンス２１と、７つの空き子ライセンス３１〜３７があることが示されている。
【００４３】
次の事例として、図７の状態において、新たにジョブ３が、４ＣＰＵの並行処理をするため、４ライセンスの割り当て要求をしたものとする。このときは、図３に従い、Ｓ１２において、空きライセンス数＝８で、要求ライセンス数＝４であるから、第１条件を満たす。また、Ｓ１６において、空き親ライセンス数＝１であり、これは１以上であるので、第２条件も満たす。そこでＳ１８において図３のルールが適用されて割り当てが行われる。図３のルールに従えば、まず親ライセンスが１つ割り当てられ、次に残りの３ライセンスが７つの空き子ライセンスの中から割り当てられる。その様子が図８において、ジョブ３として使用されるライセンス群の範囲が太い実線の枠として示されている。ここでは、親ライセンス２１がまず割り当てられ、次に子ライセンス３１，３２，３３が割り当てられている。割り当てと共に、各ライセンス使用状況一覧表が更新される。図８に示されているように、空きライセンスは４つあり、すべて子ライセンス３４〜３７である。
【００４４】
次の事例は、この図８の状態において、新たにジョブ４が、５ＣＰＵの並行処理をするため、５ライセンスの割り当て要求をした場合である。このときは、図３に従い、Ｓ１２において、空きライセンス数＝４で、要求ライセンス数＝５であるから、第１条件を満たさず、待機通知が発行される（Ｓ１４）。そこで、ジョブ管理部４２は、改めてジョブ４として、４ＣＰＵの並行処理をするため、４ライセンスの割り当て要求をしたものとする。このときは、図３に従い、Ｓ１２において、空きライセンス数＝４で、要求ライセンス数＝４であるから、第１条件を満たす。そして、Ｓ１６に進むが、ここにおいて、空き親ライセンス数＝０であり、これは１以上でないので、第２条件を満たさない。
【００４５】
この場合、親子ライセンス条件の下で、ジョブ２、ジョブ３、ジョブ４をすべて実行するのに必要な親ライセンスの総数は、最小でジョブの総数、今の場合、３つあればよい。そして、実際に、保有ライセンス群２０は３つの親ライセンスを有する。そして、ジョブ２、ジョブ３、ジョブ４をすべて実行するのにライセンスの総数は、要求ライセンス数の総計であるから、１２である。そして、実際に、保有ライセンス群２０は、１２のライセンスを保有する。しかし、図８のライセンス使用履歴の下において、図３のＳ１８までの手順に従えば、そのままでは、ジョブ４のジョブ要求に対し、割り当てを行うことができない。
【００４６】
つまり、この事例においては、空きライセンスの総数と、親ライセンスの総数からいえば実行可能であるが、現在のライセンス使用状況のままでは、新しいジョブ要求に応えられない場合である。そこで、Ｓ１６において、第２条件を満たさないと判断されたとき、すなわち、空き親ライセンスが１つもない場合には、Ｓ２０へ進むことで、ライセンスの再配分を行って、この問題を解決することができる。その意味で、Ｓ１６は、第２条件を満たす場合には予め定められた割当条件に従って空きライセンスを要求されたジョブに割り当て、第２条件を満たさない場合にはライセンス再配分工程に進む割当検討工程と考えることができる。
【００４７】
Ｓ２０においては、第３条件が判断される。第３条件は、親ライセンスの総数が現在実行中のジョブの総数を超えていることである（Ｓ２０）。この判断は、第３条件判断モジュール５６の機能により実行される。具体的には、保有ライセンス群２０の親ライセンスの総数と、現在実行中のジョブの数とを比較することで判断を行うことができる。Ｓ２０において、親ライセンスの総数が現在実行中のジョブの総数を超えていない、と判断されるときは、２通りあり、第１は、親ライセンスの総数が現在実行中のジョブ数と同じである場合である。このときは、親子ライセンス条件の上限を示しており、これ以上のジョブ要求に応えることができない。第２は、親ライセンスの総数を超えたジョブ数が実行されている場合で、これは親子ライセンス条件に反している。しかし、親子ライセンス管理が正常に実行されていれば、そのようなことは生じないので、通常は、第１の場合のみが起こりえる。第１の場合は、それ以上の新しいジョブ要求に応えられない場合であるので、そこでエラーメッセージが発行される（Ｓ２２）。Ｓ２０において、親ライセンスの総数が現在実行中のジョブの総数を超える、と判断されると、次に親ライセンスの再配分が行われる（Ｓ２４）。この工程は、親ライセンス再配分モジュール６２の機能によって実行される。
【００４８】
図４に、親ライセンス再配分ルールの一例を示す。ここでは、親ライセンスを２以上使用している複数親ライセンス保有ジョブから、親ライセンスを１つ減らし、代りに子ライセンスを１つ与える。ここで、第３条件は、第１条件を満たし、第２条件を満たさないときに行われるものであるから、空きライセンス数から言えば要求ライセンス数を賄うことができるが空き親ライセンスはない状態である。そして、第３条件を満たすということは、親ライセンス総数は現在実行中のジョブ数を超えており、したがって、必ず複数親ライセンス保有ジョブが存在する。したがって、図４の親ライセンス再配分ルールは、以下のように３段階の手順で実行することができる。
【００４９】
すなわち、第１段階の手順として、すべてのジョブについて複数親ライセンス保有ジョブかどうか順次判断し、複数親ライセンス保有ジョブを少なくとも１つ検索する。検索には、各ライセンス使用状況一覧表を用いることができる。図８の状態を各ライセンス使用状況一覧表として用いる場合には、ジョブ２から複数親ライセンス保有ジョブかどうか順次判断される。ここでは、ジョブ２が２つの親ライセンスを保有しているので、その段階で検索を終えることができる。
【００５０】
次の第２段階の手順として、検索された複数親ライセンス保有ジョブに対し、空き子ライセンスを１つ与える。図８の事例では、ジョブ２が検索された複数親ライセンス保有ジョブであるので、４つの空き子ライセンス３４〜３７の中から、予め定めた指定ルールに従って、１つの空き子ライセンスをジョブ２に与える。指定ルールとして、すでにジョブ２が保有する子ライセンスの符号に最も近い符号を有する空き子ライセンスを指定するものとすることができる。今の場合、ジョブ２は子ライセンス３８，３９を保有するので、空き子ライセンス３７を指定することができる。あるいは、指定ルールとして、すでにジョブ２が保有する子ライセンスの親ライセンスに属する子ライセンスが空き子ライセンスであるときは、その子ライセンスを指定してもよい。今の場合、図５を参照して、ジョブ２が保有する子ライセンス３８，３９が属するのは親ライセンス２３であり、親ライセンス２３に属する子ライセンス３７が空き子ライセンスであるので、この子ライセンス３７を指定することができる。もちろん、それ以外の指定ルールを用いてもよい。ここでは、空き子ライセンス３７をジョブ２に与えるものとする。
【００５１】
第３段階の手順は、第２段階の手順において、複数親ライセンス保有ジョブに空き子ライセンスを１つ与える代わりに、予め定めたルールにより、親ライセンスの総数を１つ減らし、減らした親ライセンスを要求ジョブに与えるものである。１つ減らす親ライセンスを指定するルールとして、複数親ライセンス保有ジョブが保有する子ライセンスが属する親ライセンスを残すものとして、それ以外の親ライセンスを指定するものとできる。今の場合、ジョブ２の保有する子ライセンス３７，３７，３９が属するのは、親ライセンス２３であるので、これを残し、もう１つの親ライセンス２２をジョブ２から減らすものとすることができる。もちろんそれ以外のルールを採用することができる。
【００５２】
図９は、図４の親ライセンス再配分ルールを実行して、ジョブ２のライセンスを組み替えた状態を示す図である。図８と比較して分かるように、ジョブ２を実行するための４つのライセンスは、２つの親ライセンス２２，２３と２つの子ライセンス３８，３９の状態から、空きライセンス３７がジョブ２に与えられ、それと交換に、親ライセンス２２がジョブ２から外されている。これによって、ジョブ２を実行するための４つのライセンスは、１つの親ライセンス２３と、３つの子ライセンス３７，３８，３９に組み替えられている。
【００５３】
これによって、４つの空きライセンスは、１つの親ライセンス２２と、３つの子ライセンス３４，３５，３６となる。そして、この４つのライセンスが、親子ライセンス条件を満たすものとして、ジョブ４に割り当てられる。その状態を図１０に示す。ここでは、ジョブ２、ジョブ３、ジョブ４とも、１つの親ライセンスを含み、必要なライセンス数を保有している。
【００５４】
このように、空きライセンスの総数と、親ライセンスの総数からいえば実行可能であるが、現在のライセンス使用状況のままでは、新しいジョブ要求に応えられない場合にも、親ライセンスの再配分を行うことにより、親子ライセンス条件の下で、新しいジョブ要求に対応でき、効率的なライセンスの運用が可能となる。
【図面の簡単な説明】
【００５５】
【図１】本発明に係る実施の形態における親子ライセンス管理システムの構成を示すブロック図である。
【図２】本発明に係る実施の形態における親子ライセンス管理の手順を示すフローチャートである。
【図３】本発明に係る実施の形態において、ライセンスの割り当てルールの一例を示す図である。
【図４】本発明に係る実施の形態において、親ライセンス再配分ルールの一例を示す図である。
【図５】本発明に係る実施の形態において、保有ライセンス群の初期状態を説明する図である。
【図６】本発明に係る実施の形態において、保有ライセンス群に２つのジョブに対応してライセンスが割り当てられた様子を示す図である。
【図７】本発明に係る実施の形態において、図６の状態から、１つのジョブが完了した後の各ライセンスの使用状況を説明する図である。
【図８】本発明に係る実施の形態において、図７の状態から、新たに１つのジョブについてライセンスが割り当てられた状態を説明する図である。
【図９】本発明に係る実施の形態において、図８の状態から、親ライセンスの再配分が行われている様子を説明する図である。
【図１０】本発明に係る実施の形態において、図９の状態から、次の新たなジョブにライセンスが割り当てられる様子を説明する図である。
【符号の説明】
【００５６】
１０  親子ライセンス管理システム、２０  保有ライセンス群、２１，２２，２３  親ライセンス、３１，３２，３３，３４，３５，３６，３７，３８，３９  子ライセンス、４０  ＣＰＵ群、４２  ジョブ管理部、５０  親子ライセンス管理装置、５２  ジョブ要求取得モジュール、５４  第１条件判断モジュール、５６  第２条件判断モジュール、５８  第３条件判断モジュール、６０  割り当てモジュール、６２  親ライセンス再配分モジュール。
【図１】
2007286703.tif 000003
【図２】
2007286703.tif 000004
【図３】
2007286703.tif 000005
【図４】
2007286703.tif 000006
【図５】
2007286703.tif 000007
【図６】
2007286703.tif 000008
【図７】
2007286703.tif 000009
【図８】
2007286703.tif 000010
【図９】
2007286703.tif 000011
【図１０】
2007286703.tif 000012