(57)【要約】【課題】管理上の負荷を減らすとともに、スレッドの流量制御を適切に行うことができるようにする。【解決手段】ＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率が最適使用範囲内に入っているか否かをＣＰＵ使用率判定部１３にて判定し、入っていないと判断した場合は適正スレッド数変更部１４が適正スレッド数を変更するようにすることにより、流量制御のためにスレッド毎の設計値を記憶したテーブル情報をあらかじめ作成することなく、ＣＰＵ使用率が最適使用範囲内に入っているか否かに基づき流量制御を行うことができるようにする。また、実際のＣＰＵ使用率と最適使用範囲との差の大きさに関係なく、適正スレッド数を１つずつ変更していくことにより、適正スレッド数が一気に大きく変わることを防ぎ、ＣＰＵ使用率が最適使用範囲に徐々に近づいていくようにする。【選択図】図１
2010231313.tif 000002
【特許請求の範囲】
【請求項１】
スレッドの同時起動可能数を制限する適正スレッド数の最大値を表す最大スレッド数、ＣＰＵ使用率の最適範囲を表すＣＰＵ最適使用範囲を含むパラメータを記憶したパラメータ記憶部と、
上記ＣＰＵ使用率を測定するＣＰＵ使用率測定部と、
上記ＣＰＵ使用率測定部により測定された上記ＣＰＵ使用率が、上記パラメータ記憶部に記憶されている上記ＣＰＵ最適使用範囲の中に入っているか否かを判定するＣＰＵ使用率判定部と、
上記ＣＰＵ使用率判定部により上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲の中に入っていると判断された場合は、上記適正スレッド数を現在値に固定する一方、上記ＣＰＵ使用率判定部により上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲の中に入っていないと判断された場合は、上記パラメータ記憶部に記憶されている上記最大スレッド数を超えない範囲で上記適正スレッド数を所定の割合で変更する適正スレッド数変更部とを備えたことを特徴とする流量制御装置。
【請求項２】
上記パラメータ記憶部は、上記適正スレッド数の最小値を表す最小スレッド数を更に記憶し、
上記適正スレッド数変更部は、上記ＣＰＵ使用率判定部により上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲を下回っていると判断された場合は、上記パラメータ記憶部に記憶されている上記最大スレッド数を超えない範囲で上記適正スレッド数を所定の割合で増加させる一方、上記ＣＰＵ使用率判定部により上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲を上回っていると判断された場合は、上記パラメータ記憶部に記憶されている上記最小スレッド数を下回らない範囲で上記適正スレッド数を所定の割合で減少させることを特徴とする請求項１に記載の流量制御装置。
【請求項３】
上記適正スレッド数変更部により上記適正スレッド数の変更が行われた回数を測定する変更回数測定部を更に備え、
上記適正スレッド数変更部は、上記ＣＰＵ使用率判定部により上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲を下回っていると判断された場合において、上記適正スレッド数を所定の割合で増加させる処理が行われた回数として上記変更回数測定部により測定された値が所定値に達したときに、上記適正スレッド数を所定の割合で増加させることに代えて、上記適正スレッド数を上記最大スレッド数に変更することを特徴とする請求項２に記載の流量制御装置。
【請求項４】
上記適正スレッド数変更部により上記適正スレッド数の変更が行われた回数を測定する変更回数測定部を更に備え、
上記適正スレッド数変更部は、上記ＣＰＵ使用率判定部により上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲を上回っていると判断された場合において、上記適正スレッド数を所定の割合で減少させる処理が行われた回数として上記変更回数測定部により測定された値が所定値に達したときに、上記適正スレッド数を所定の割合で減少させることに代えて、上記適正スレッド数を上記最小スレッド数に変更することを特徴とする請求項２に記載の流量制御装置。
【請求項５】
ＣＰＵ使用率を測定する第１のステップと、
上記第１のステップで測定された上記ＣＰＵ使用率が、ＣＰＵ使用率の最適範囲を表すパラメータとしてパラメータ記憶部に記憶されているＣＰＵ最適使用範囲の中に入っているか否かを判定する第２のステップと、
上記第２のステップで上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲の中に入っていないと判断された場合に、スレッドの同時起動可能数を制限する適正スレッド数の最大値を表すパラメータとして上記パラメータ記憶部に記憶されている最大スレッド数を超えない範囲で、上記適正スレッド数を所定の割合で変更する第３のステップとを有することを特徴とする流量制御方法。
【請求項６】
上記第３のステップは、上記第２のステップで測定された上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲を下回っているか上回っているかを判定する第４のステップと、
上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲を下回っていると判断された場合に、上記パラメータ記憶部に記憶されている上記最大スレッド数を超えない範囲で上記適正スレッド数を所定の割合で増加させる第５のステップと、
上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲を上回っていると判断された場合に、上記適正スレッド数を所定の割合で減少させる第６のステップとを有することを特徴とする請求項５に記載の流量制御方法。
【請求項７】
ＣＰＵ使用率を測定するＣＰＵ使用率測定手段、
上記ＣＰＵ使用率測定手段により測定された上記ＣＰＵ使用率が、ＣＰＵ使用率の最適範囲を表すパラメータとしてパラメータ記憶部に記憶されているＣＰＵ最適使用範囲の中に入っているか否かを判定するＣＰＵ使用率判定手段、および
上記ＣＰＵ使用率判定手段により上記ＣＰＵ使用率が上記ＣＰＵ最適使用範囲の中に入っていないと判断された場合に、スレッドの同時起動可能数を制限する適正スレッド数の最大値を表すパラメータとして上記パラメータ記憶部に記憶されている最大スレッド数を超えない範囲で、上記適正スレッド数を所定の割合で変更する適正スレッド数変更手段、
としてコンピュータを機能させるためのコンピュータ読み取り可能な流量制御用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は流量制御装置および流量制御方法に関し、特に、コンピュータが処理すべき情報処理量の単位であるスレッド数を制御する技術に関するものである。
【背景技術】
【０００２】
一般的に、オペレーティングシステム（ＯＳ）がプログラムを処理する単位として、プロセスという用語が用いられる。プロセスは、１つ以上のスレッドと呼ばれる処理単位で構成されている。そして、処理効率を上げる観点から、スレッドを多重化して処理することがよく行われる。しかし、システムのリソースを使い果たすほどスレッドを多重化すると、かえって処理効率が悪くなってしまう。
【０００３】
このようなスレッドの過度の多重化を防ぐために、システムのリソースの使用状況に応じて動的に処理スレッドの流量制御を行う方法が提案されている（例えば、特許文献１参照）。特許文献１に記載の技術では、文献１の図７に示すようなスレッド基本情報テーブルをあらかじめ作成して記憶しておき、実際に測定されるＣＰＵ使用率に応じて、上記スレッド基本情報テーブル内に格納されている限界多重度を動的に変更するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１２２５２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の技術では、スレッド基本情報テーブルをあらかじめ作成しておく必要がある。スレッド基本情報テーブルは、スレッド毎に限界多重度の設計値を求めて記憶したものである。ここで、例えば銀行のＡＴＭシステムのような大規模システムにおいては、同時に実行されるアプリケーションプログラムが数百〜数千種類に上ぼり、スレッド数が極めて多くなる。そのため、スレッド基本情報テーブルの作成に多大な労力と時間がかかり、管理上の負荷が大きくなるという問題が生じる。よって、このような大規模システムに特許文献１の技術を適用するのは現実的でない。
【０００６】
また、特許文献１の技術では、最初にスレッド基本情報テーブルに記憶しておいた設計値と、実際に測定されるＣＰＵ使用率との比較で両者に大きな差がある場合には、限界多重度の値が一気に変更させられることがある。限界多重度の値が一気に大きくなると、同時に起動するスレッド数が一気に多くなる。そうなると、スレッドが過度に多重化してＣＰＵ使用率が急激に上がり、今度は上がり過ぎたＣＰＵ使用率を下げる必要が生じてしまう。このようにＣＰＵ使用率が上がったり下がったりを繰り返すことにより、かえってシステムの処理効率が悪くなってしまうという問題を生じる。逆に、限界多重度の値が一気に小さくなると、ＣＰＵ使用率が急激に下がり、リソースを有効に活用できず全体としての処理効率が悪くなってしまうという問題を生じる。
【０００７】
本発明は、このような問題を解決するために成されたものであり、流量制御のための管理上の負荷を減らすとともに、スレッドの流量制御を適切に行いシステムの処理効率をより向上させることができるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
上記した課題を解決するために、本発明では、スレッドの実行中にＣＰＵ使用率測定部により測定されたＣＰＵ使用率が最適使用範囲内に入っているか否かを判定し、入っていないと判断した場合に、スレッドを同時に起動可能な数を制限する適正スレッド数を所定の割合で変更する。このとき、適正スレッド数として採り得る最大値である最大スレッド数を超えないように適正スレッド数を変更する。また、適正スレッド数として採り得る最小値である最小スレッド数が設定されている場合には、最小スレッド数を下回らない範囲で適正スレッド数を変更する。さらに、測定されたＣＰＵ使用率が最適使用範囲内に入ると、適正スレッド数をそのときの値に固定する。
【発明の効果】
【０００９】
上記のように構成した本発明によれば、スレッド毎に設定した限界多重度に基づき流量制御が行われるのではなく、起動しているスレッドの全体で実際に使用しているＣＰＵの使用率が最適使用範囲内に入っているか否かに基づき流量制御が行われるので、流量制御のためにスレッド毎の設計値を記憶したテーブル情報をあらかじめ作成する必要がない。本発明において流量制御に必要なのは、ＣＰＵ最適使用範囲、最大スレッド数などのパラメータの設定だけであるから、管理上の負荷がほとんどない。
【００１０】
また、本発明によれば、測定されたＣＰＵ使用率が最適使用範囲内に入っていないときは、実際のＣＰＵ使用率と最適使用範囲との差の大きさに関係なく、適正スレッド数が所定の割合で変更されていく。これにより、適正スレッド数が一気に大きく変わることがなくなり、同時に起動するスレッド数も徐々に増減し、それに伴いＣＰＵ使用率も最適使用範囲に徐々に近づいていく。したがって、ＣＰＵ使用率が急激に上がることによってシステムの処理効率が悪くなってしまったり、ＣＰＵ使用率が急激に下がることによってシステムのリソースを有効に活用できなくなったりする問題を抑制し、システムの処理効率を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態による流量制御装置の機能構成例を示すブロック図である。
【図２】本実施形態のパラメータ記憶部に記憶されるパラメータを示す図である。
【図３】本実施形態の適正スレッド数変更部の具体的な処理内容を説明するための図である。
【図４】本実施形態のスレッド起動部による処理内容を説明するための図である。
【図５】本実施形態による流量制御装置によって行われる適正スレッド数の変更（流量制御）に関する動作例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態による流量制御装置の機能構成例を示すブロック図である。図１に示すように、本実施形態の流量制御装置１０は、その機能構成として、パラメータ記憶部１１、ＣＰＵ使用率測定部１２、ＣＰＵ使用率判定部１３、適正スレッド数変更部１４、変更回数測定部１５、流量制御テーブル記憶部１６およびスレッド起動部１７を備えている。なお、流量制御装置１０は、実際にはコンピュータのＣＰＵまたはＭＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭに記憶された流量制御用プログラムが動作することによって上述の各機能構成が実現される。
【００１３】
パラメータ記憶部１１は、スレッドの流量制御を行う際に使用する各種パラメータを記憶する記録媒体である。図２は、パラメータ記憶部１１に記憶されるパラメータを示す図である。図２に示すように、本実施形態においてパラメータ記憶部１１は、最大スレッド数ＴｈＭＡＸ、最小スレッド数ＴｈＭＩＮ、ＣＰＵ最適使用範囲ＲｇＯＰＴ、変更確認間隔ＩＮＴおよび最大変更回数ＣＮＴをパラメータとして記憶している。
【００１４】
最大スレッド数ＴｈＭＡＸは、スレッドの同時起動可能数を制限する適正スレッド数の最大値を表すパラメータである。一般的に、同時に起動されるスレッド数が多くなると、ＣＰＵ使用率は増加する。そのため、ＣＰＵ使用率が過度に大きくならないようにするためには、スレッドの同時起動可能数を制限する必要がある。このスレッドの同時起動可能数の上限を決めるのが適正スレッド数である。
【００１５】
スレッドの流量制御ではこの適正スレッド数の設定値をＣＰＵ使用率に応じて動的に変更するのであるが、設定可能な適正スレッド数の最大値を表すのが最大スレッド数ＴｈＭＡＸというパラメータである。逆に、設定可能な適正スレッド数の最小値を表すのが最小スレッド数ＴｈＭＩＮというパラメータである。本実施形態では一例として、最大スレッド数ＴｈＭＡＸ＝２０、最小スレッド数ＴｈＭＩＮ＝３とする。
【００１６】
ＣＰＵ最適使用範囲ＲｇＯＰＴは、ＣＰＵ使用率の最適範囲を表すパラメータである。すなわち、このＣＰＵ最適使用範囲ＲｇＯＰＴは、スレッドの流量制御によって維持したいＣＰＵ使用率の目標範囲を表す。本実施形態では一例として、ＣＰＵ使用率＝７０±５％の範囲をＣＰＵ最適使用範囲ＲｇＯＰＴとする。変更確認間隔ＩＮＴは、適正スレッド数の設定値を変更するか否かの確認を行う時間間隔を表すパラメータである。本実施形態では一例として、変更確認間隔ＩＮＴ＝１秒とする。
【００１７】
最大変更回数ＣＮＴは、後述するように適正スレッド数変更部１４が適正スレッド数を所定の割合で連続して変更する回数の最大値を表すパラメータである。すなわち、適正スレッド数変更部１４が適正スレッド数を所定の割合で連続して変更する回数は、この最大変更回数ＣＮＴというパラメータによって制限される。本実施形態では一例として、最大変更回数ＣＮＴ＝１０回とする。
【００１８】
ＣＰＵ使用率測定部１２は、ＣＰＵの実際の使用率を測定する。ＣＰＵ使用率は、ある単位時間のうち、ＣＰＵが何も処理を実行していない待機状態の時間と、ＯＳやアプリケーションプログラムに従ってＣＰＵが何らかの処理を実行している時間との割合がどの程度であるかを示す値である。
【００１９】
ＣＰＵ使用率判定部１３は、ＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率が、パラメータ記憶部１１に記憶されているＣＰＵ最適使用範囲ＲｇＯＰＴの中に入っているか否かを判定する。すなわち、本実施形態の場合、ＣＰＵ使用率判定部１３は、実際に測定されたＣＰＵ使用率が６５〜７５％の範囲内に入っているか否かを判定する。この判定は、パラメータ記憶部１１に記憶されている変更確認間隔ＩＮＴのパラメータに従って、１秒毎に行う。
【００２０】
適正スレッド数変更部１４は、ＣＰＵ使用率判定部１３による判定結果に応じて、流量制御テーブル記憶部１６に格納されている適正スレッド数の設定値を変更する。具体的には、適正スレッド数変更部１４は、ＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率が６５〜７５％のＣＰＵ最適使用範囲ＲｇＯＰＴ内に入っているとＣＰＵ使用率判定部１３により判断された場合は、適正スレッド数を現在値に固定する。すなわち、流量制御テーブル記憶部１６に格納されている適正スレッド数の設定値は更新しない。
【００２１】
一方、ＣＰＵ使用率の測定値がＣＰＵ最適使用範囲ＲｇＯＰＴ内に入っていないとＣＰＵ使用率判定部１３により判断された場合、適正スレッド数変更部１４は、パラメータ記憶部１１に記憶されている最大スレッド数ＴｈＭＡＸおよび最小スレッド数ＴｈＭＩＮを下回らない範囲で、流量制御テーブル記憶部１６に格納されている適正スレッド数を所定の割合で変更する。
【００２２】
ここで、所定の割合は任意に定めることが可能であるが、適正スレッド数の変更によってスレッドの同時起動数が一気に多くならないように、所定の割合は比較的小さな値とするのが好ましい。本実施形態では、所定の割合＝１とする。すなわち、適正スレッド数変更部１４は、ＣＰＵ使用率の測定値がＣＰＵ最適使用範囲ＲｇＯＰＴ内に入っていないとＣＰＵ使用率判定部１３により判断された場合に、適正スレッド数を１つ増加あるいは減少させる。
【００２３】
図３は、適正スレッド数変更部１４の具体的な処理内容を説明するための図である。ＣＰＵ使用率判定部１３が１秒毎に行う判定において、ＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴを下回っていると判断された場合、つまり、図３においてＣＰＵ使用率が６５％より小さいゾーンＡに属している場合、適正スレッド数変更部１４は、パラメータ記憶部１１に記憶されている最大スレッド数ＴｈＭＡＸ（＝２０）を超えない範囲で、流量制御テーブル記憶部１６の適正スレッド数を判定の都度１つずつ増加させる。
【００２４】
一方、ＣＰＵ使用率判定部１３が１秒毎に行う判定において、ＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴを上回っていると判断された場合、つまり、図３においてＣＰＵ使用率が７５％より大きいゾーンＣに属している場合、適正スレッド数変更部１４は、パラメータ記憶部１１に記憶されている最小スレッド数ＴｈＭＩＮ（＝３）を下回らない範囲で、流量制御テーブル記憶部１６の適正スレッド数を判定の都度１つずつ減少させる。
【００２５】
ＣＰＵ使用率がゾーンＡに属しているときに適正スレッド数変更部１４が適正スレッド数を１つずつ増やしていくと、スレッドの同時起動数は徐々に増えていく。それに伴い、ＣＰＵ使用率も徐々に大きくなっていく。そして、ＣＰＵ使用率がゾーンＢのＣＰＵ最適使用範囲ＲｇＯＰＴ内に入ると、適正スレッド数変更部１４は、適正スレッド数の設定値を増やす処理を停止し、そのときの適正スレッド数を維持する。
【００２６】
同様に、ＣＰＵ使用率がゾーンＣに属しているときに適正スレッド数変更部１４が適正スレッド数を１つずつ減らしていくと、スレッドの同時起動数は徐々に減っていく。それに伴い、ＣＰＵ使用率も徐々に小さくなっていく。そして、ＣＰＵ使用率がゾーンＢのＣＰＵ最適使用範囲ＲｇＯＰＴ内に入ると、適正スレッド数変更部１４は、適正スレッド数の設定値を減らす処理を停止し、そのときの適正スレッド数を維持する。
【００２７】
変更回数測定部１５は、適正スレッド数変更部１４により適正スレッド数の変更が行われた回数を測定する。すなわち、変更回数測定部１５は、ＣＰＵ使用率がゾーンＡに属しているときに、適正スレッド数変更部１４が適正スレッド数を１秒毎に１つずつ増加させた回数を測定する。また、変更回数測定部１５は、ＣＰＵ使用率がゾーンＣに属しているときに、適正スレッド数変更部１４が適正スレッド数を１秒毎に１つずつ減少させた回数を測定する。
【００２８】
上述の適正スレッド数変更部１４は、ＣＰＵ使用率の測定値がＣＰＵ最適使用範囲ＲｇＯＰＴを下回っているとＣＰＵ使用率判定部１３により判断された場合において、適正スレッド数を１つずつ増加させる処理が行われた回数として変更回数測定部１５により測定された値が最大変更回数ＣＮＴ（＝１０回）に達したときに、適正スレッド数を１つずつ増加させることに代えて、流量制御テーブル記憶部１６の適正スレッド数を最大スレッド数ＴｈＭＡＸに変更する。
【００２９】
また、適正スレッド数変更部１４は、ＣＰＵ使用率の測定値がＣＰＵ最適使用範囲ＲｇＯＰＴを上回っているとＣＰＵ使用率判定部１３により判断された場合において、適正スレッド数を１つずつ減少させる処理が行われた回数として変更回数測定部１５により測定された値が最大変更回数ＣＮＴ（＝１０回）に達したときに、適正スレッド数を１つずつ減少させることに代えて、流量制御テーブル記憶部１６の適正スレッド数を最小スレッド数ＴｈＭＩＮに変更する。
【００３０】
上述のように、流量制御テーブル記憶部１６の適正スレッド数は、スレッドの同時起動数が一気に増えたり減ったりしないように１つずつ変更していくのが原則である。しかし、適正スレッド数を１０回連続して変更してもまだ、ＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴ内に入らない場合は、より早くＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴに入るようにすることを優先して、適正スレッド数として設定可能な範囲の最大値（最大スレッド数ＴｈＭＡＸ）または最小値（最小スレッド数ＴｈＭＩＮ）に適正スレッド数を変更する。
【００３１】
スレッド起動部１７は、流量制御テーブル記憶部１６に記憶されている適正スレッド数を上限として、１つ以上のスレッドを起動する。起動されたスレッドは、ＯＳやアプリケーションプログラムの処理を実行する。具体的には、起動中の各スレッドは、図４に示すように、先入れ先出し（ＦＩＦＯ：First In First Out）のリスト構造でデータを保持するキューに投入されたトランザクションを１つずつ取得し、取得したトランザクションを処理する。
【００３２】
次に、上記のように構成した本実施形態による流量制御装置１０の動作を説明する。図５は、本実施形態による流量制御装置１０によって行われる適正スレッド数の変更（流量制御）に関する動作例を示すフローチャートである。図５に示すフローチャートは、流量制御装置１０に電源が投入されたときに開始する。
【００３３】
図５において、まずＣＰＵ使用率測定部１２は、ＣＰＵ使用率を測定する（ステップＳ１）。次にＣＰＵ使用率判定部１３は、ステップＳ１でＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率が、ＣＰＵ最適使用範囲ＲｇＯＰＴの下限値である６５％を下回っているか否かについて判定する（ステップＳ２）。ここで、ＣＰＵ使用率が６５％を下回っているとＣＰＵ使用率判定部１３にて判断した場合、ＣＰＵ使用率判定部１３は、ＣＰＵ使用率測定部１２により前回測定されたＣＰＵ使用率（図示しないメモリに保存しておく）が、ＣＰＵ最適使用範囲ＲｇＯＰＴの上限値である７５％を超えていたか否かについて判定する（ステップＳ３）。
【００３４】
ここで、前回のＣＰＵ使用率が７５％を超えていたと判断した場合、前回のＣＰＵ使用率が図３のゾーンＣにあって、今回のＣＰＵ使用率が急にゾーンＡに移ったということになる。この場合、変更回数測定部１５は適正スレッド数の変更回数のカウント値をゼロにクリアし（ステップＳ４）、その後処理はステップＳ７にジャンプする。
【００３５】
このように適正スレッド数の変更回数のカウント値をゼロにクリアするのは、以下の理由による。例えば、ＣＰＵ使用率がゾーンＣにあるときに適正スレッド数が９回変更された後、ＣＰＵ使用率が急にゾーンＡに移ったとする。この場合は、ゾーンＡで適正スレッド数が１回変更されるだけで適正スレッド数の変更回数が最大変更回数ＣＮＴ（＝１０回）となって、適正スレッド数の設定値が一気に最大スレッド数ＴｈＭＡＸとされてしまう（ステップＳ５→ステップＳ９の流れ）。よってこれを防ぐために、ＣＰＵ使用率がゾーンＣからゾーンＡに急に移ったときは、適正スレッド数の変更回数のカウント値をゼロにクリアするようにしているのである。
【００３６】
一方、上記ステップＳ３で前回のＣＰＵ使用率が７５％を超えていないと判断した場合、適正スレッド数変更部１４は、変更回数測定部１５により測定されている適正スレッド数の変更回数が１０回に達しているか否かを判定する（ステップＳ５）。
【００３７】
ここで、適正スレッド数の変更回数がまだ１０回に達していないと判断した場合、適正スレッド数変更部１４は、流量制御テーブル記憶部１６を参照し、適正スレッド数の設定値が最大スレッド数ＴｈＭＡＸになっているか否かを判定する（ステップＳ６）。適正スレッド数の設定値が最大スレッド数ＴｈＭＡＸになっていなければ、適正スレッド数変更部１４は、流量制御テーブル記憶部１６の適正スレッド数を１つ増やす（ステップＳ７）。これに応じて変更回数測定部１５は、適正スレッド数の変更回数のカウント値をインクリメントする（ステップＳ８）。
【００３８】
一方、適正スレッド数の設定値が最大スレッド数ＴｈＭＡＸになっているとステップＳ６にて判断した場合、適正スレッド数変更部１４は流量制御テーブル記憶部１６の適正スレッド数を更新せずにそのまま維持する。この場合に変更回数測定部１５は、適正スレッド数の変更回数のカウント値をゼロにクリアする（ステップＳ２０）。
【００３９】
また、上記ステップＳ５において適正スレッド数の変更回数が１０回に達していると判断した場合、適正スレッド数変更部１４は、流量制御テーブル記憶部１６の適正スレッド数を最大スレッド数ＴｈＭＡＸに変更する（ステップＳ９）。その後、変更回数測定部１５は、適正スレッド数の変更回数のカウント値をゼロにクリアする（ステップＳ１０）。
【００４０】
上記ステップＳ２において、ＣＰＵ使用率が６５％を下回っていないとＣＰＵ使用率判定部１３にて判断した場合、引き続きＣＰＵ使用率判定部１３は、ステップＳ１でＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率が、ＣＰＵ最適使用範囲ＲｇＯＰＴの上限値である７５％を上回っているか否かについて判定する（ステップＳ１１）。ここで、ＣＰＵ使用率が７５％を上回っているとＣＰＵ使用率判定部１３にて判断した場合、ＣＰＵ使用率判定部１３は、ＣＰＵ使用率測定部１２により前回測定されたＣＰＵ使用率が、ＣＰＵ最適使用範囲ＲｇＯＰＴの下限値である６５％を下回っていたか否かについて判定する（ステップＳ１２）。
【００４１】
ここで、前回のＣＰＵ使用率が６５％を下回っていたと判断した場合、前回のＣＰＵ使用率が図３のゾーンＡにあって、今回のＣＰＵ使用率が急にゾーンＣに移ったということになる。この場合、変更回数測定部１５は適正スレッド数の変更回数のカウント値をゼロにクリアし（ステップＳ１３）、その後処理はステップＳ１６にジャンプする。一方、上記ステップＳ１２で前回のＣＰＵ使用率が６５％を下回っていないと判断した場合、適正スレッド数変更部１４は、変更回数測定部１５により測定されている適正スレッド数の変更回数が１０回に達しているか否かを判定する（ステップＳ１４）。
【００４２】
ここで、適正スレッド数の変更回数がまだ１０回に達していないと判断した場合、適正スレッド数変更部１４は、流量制御テーブル記憶部１６を参照し、適正スレッド数の設定値が最小スレッド数ＴｈＭＩＮになっているか否かを判定する（ステップＳ１５）。適正スレッド数の現在値が最小スレッド数ＴｈＭＩＮになっていなければ、適正スレッド数変更部１４は、流量制御テーブル記憶部１６の適正スレッド数を１つ減らす（ステップＳ１６）。これに応じて変更回数測定部１５は、適正スレッド数の変更回数のカウント値をインクリメントする（ステップＳ１７）。
【００４３】
一方、適正スレッド数の設定値が最小スレッド数ＴｈＭＩＮになっているとステップＳ１５にて判断した場合、適正スレッド数変更部１４は流量制御テーブル記憶部１６の適正スレッド数を更新せずにそのまま維持する。この場合に変更回数測定部１５は、適正スレッド数の変更回数のカウント値をゼロにクリアする（ステップＳ２０）。
【００４４】
また、上記ステップＳ１４において適正スレッド数の変更回数が１０回に達していると判断した場合、適正スレッド数変更部１４は、流量制御テーブル記憶部１６の適正スレッド数を最小スレッド数ＴｈＭＩＮに変更する（ステップＳ１８）。その後、変更回数測定部１５は、適正スレッド数の変更回数のカウント値をゼロにクリアする（ステップＳ１９）。
【００４５】
上記ステップＳ１１において、ＣＰＵ使用率が７５％を上回ってもいないとＣＰＵ使用率判定部１３にて判断した場合、ＣＰＵ使用率はＣＰＵ最適使用範囲ＲｇＯＰＴに入っていることになる。この場合、適正スレッド数変更部１４は流量制御テーブル記憶部１６の適正スレッド数を更新せずにそのまま維持する。この場合に変更回数測定部１５は、適正スレッド数の変更回数のカウント値をゼロにクリアする（ステップＳ２０）。
【００４６】
上記ステップＳ８，Ｓ１０，Ｓ１７，Ｓ１９，Ｓ２０の処理の後、流量制御装置１０は電源がオフになったか否かを判定する（ステップＳ２１）。ここで、電源がオフになっていないと判断した場合、処理はステップＳ１に戻る。一方、電源がオフになったと判断した場合、図５に示すフローチャートの動作は終了する。
【００４７】
以上詳しく説明したように、本実施形態では、スレッドの実行中にＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴに入っているか否かを判定し、入っていないと判断した場合に適正スレッド数を変更するようにしている。このように、本実施形態によれば、スレッド毎に設定した限界多重度に基づき流量制御が行われるのではなく、起動しているスレッドの全体で実際に使用しているＣＰＵの使用率が最適使用範囲ＲｇＯＰＴ内に入っているか否かに基づき流量制御が行われるので、流量制御のためにスレッド毎の設計値を記憶したテーブル情報をあらかじめ作成する必要がない。本実施形態において流量制御に設定が必要なのは、パラメータ記憶部１１に記憶すべき数個のパラメータだけであるから、管理上の負荷を格段に減らすことができる。
【００４８】
また、本実施形態では上述のようなテーブル情報を作成しなくて良いため、稼動するプログラムの数が多くＣＰＵ使用率が刻々と変化する大規模システムにも適用することが可能である。例えば、銀行のＡＴＭシステムなどで利用されているオンライントランザクション処理（以下、ＯＬＴＰという）では、トランザクション当たりの処理時間が非常に短い上、単位時間当たりの処理量は時々刻々と変化する特性がある。トランザクションの要求数が時々刻々と変化するため、単位時間当たりの定量的な処理量を定めることができない。つまり、どの程度スレッドを多重化すれば良いのかをあらかじめ予測することが困難である。このため、ＯＬＴＰでは、スレッド毎の限界多重度の設計値を記憶したテーブル情報をあらかじめ作成することは極めて困難である。これに対し、本実施形態では設計値のテーブル情報を作成しなくて良いため、ＯＬＴＰのようにＣＰＵ使用率が刻々と変化する大規模システムにおいても、より最適化されたスレッドの流量制御を行うことが可能である。
【００４９】
また、本実施形態によれば、測定されたＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴに入っていないときは、実際のＣＰＵ使用率とＣＰＵ最適使用範囲ＲｇＯＰＴとの差の大きさに関係なく、適正スレッド数が原則として１つずつ変更されていく。これにより、適正スレッド数が一気に大きく変わることがなくなり、同時に起動するスレッド数も徐々に増減し、それに伴いＣＰＵ使用率もＣＰＵ最適使用範囲ＲｇＯＰＴに徐々に近づいていく。したがって、ＣＰＵ使用率が急激に上がることによってシステムの処理効率がかえって悪くなってしまったり、ＣＰＵ使用率が急激に下がることによってシステムのリソースを有効に活用できなくなったりすることなく、システムの処理効率を向上させることができる。
【００５０】
また、本実施形態では、適正スレッド数を１０回連続して変更してもまだ、ＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴ内に入らない場合は、流量制御テーブル記憶部１６の適正スレッド数を最大スレッド数ＴｈＭＡＸまたは最小スレッド数ＴｈＭＩＮに変更するようにしている。このような変更回数に応じた適正スレッド数の制御は必ずしも行う必要はないが、これを行うことにより、システムの処理効率をより向上させることができる。適正スレッド数を徐々に変更していくことによってシステムの処理効率を向上させつつ、ある程度まで適正スレッド数を徐々に変更した後は大きく値を変えることにより、ＣＰＵ使用率がより早くＣＰＵ最適使用範囲ＲｇＯＰＴに入るようになるからである。
【００５１】
なお、上記実施形態では、適正スレッド数を１つずつ変更していく例について説明したが、これは単なる一例に過ぎない。適正スレッド数を徐々に変更していく所定の割合は、例えば、最大スレッド数ＴｈＭＡＸの値に対して１／ｘ（ｘは最大スレッド数ＴｈＭＡＸの約数で２以上の値）の値を所定の割合とするなど、最大スレッド数ＴｈＭＡＸとの関係で所定の割合を定めてもよい。また、適正スレッド数を徐々に変更していく所定の割合は、適正スレッド数を増やす場合と減らす場合とで異なる値としてもよい。
【００５２】
また、適正スレッド数を徐々に変更していく所定の割合は、変更回数測定部１５により測定される適正スレッド数の変更回数に応じて異ならせるようにしてもよい。例えば、適正スレッド数の変更回数がｎ回までの場合（１≦ｎ＜ＣＮＴ）、流量制御テーブル記憶部１６に設定されている現在の適正スレッド数と、最大スレッド数ＴｈＭＡＸまたは最小スレッド数ＴｈＭＩＮとの平均値を算出し、当該平均値に適正スレッド数を変更する。そして、適正スレッド数の変更回数がｎ回より多い場合は適正スレッド数を１つずつ変更するようにしてもよい。
【００５３】
これを具体例で説明する。ここではｎ＝１とする。例えば、流量制御テーブル記憶部１６に設定されている現在の適正スレッド数が６で、そのときのＣＰＵ使用率が図３のゾーンＢにあったとする。その後、ＣＰＵ使用率がゾーンＢからゾーンＡに遷移したとする。この場合、適正スレッド数変更部１４は、流量制御テーブル記憶部１６に設定されている現在の適正スレッド数（＝６）と、最大スレッド数ＴｈＭＡＸ（＝２０）の平均値（＝１３．５）を算出し、当該平均値の小数点以下を切り上げまたは切り下げた値に適正スレッド数を変更する。このように適正スレッド数を変更した後もＣＰＵ使用率がゾーンＢに戻らずゾーンＡのままであれば、その後は適正スレッド数を１つずつ増やしていく。
【００５４】
このようにすれば、ＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴに入っていないときに（図３のゾーンＡまたはゾーンＣにあるとき）、適正スレッド数を線形的に増加または減少させるのではなく、対数的に増加または減少させていくことができる。これにより、適正スレッド数を徐々に変更してＣＰＵ使用率を緩やかに増減させつつも、ＣＰＵ使用率がより早くＣＰＵ最適使用範囲ＲｇＯＰＴに入るようにすることができる。
【００５５】
このような動作は、流量制御装置１０に電源が投入されてからＣＰＵ使用率が最初にゾーンＢに入るまでの間に行うと有効である。電源投入直後は、ＣＰＵ使用率のブレが大きいことが予想されるが、上述の動作を行うことにより、少しでも早くＣＰＵ使用率がゾーンＢのＣＰＵ最適使用範囲ＲｇＯＰＴに入るようにすることができる。
【００５６】
この場合、適正スレッド数変更部１４は、電源投入時にＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率が６５％より小さいゾーンＡに属している場合、流量制御テーブル記憶部１６に設定されているデフォルトの適正スレッド数と最大スレッド数ＴｈＭＡＸ（＝２０）との平均値を算出し、当該平均値の小数点以下を切り上げまたは切り下げた値に適正スレッド数を変更する。また、電源投入時にＣＰＵ使用率測定部１２により測定されたＣＰＵ使用率が７５％より大きいゾーンＣに属している場合、適正スレッド数変更部１４は、流量制御テーブル記憶部１６に設定されているデフォルトの適正スレッド数と最小スレッド数ＴｈＭＩＮ（＝３）との平均値を算出し、当該平均値の小数点以下を切り上げまたは切り下げた値に適正スレッド数を変更する。
【００５７】
また、上記実施形態では、最小スレッド数ＴｈＭＩＮをパラメータとして設定しているが、これは必ずしも必要でない。すなわち、ＣＰＵ使用率が過度に大きくなることを防ぐ目的で、最大スレッド数ＴｈＭＡＸの方だけをパラメータとして設定するようにしてもよい。
【００５８】
また、上記実施形態では、ＣＰＵ使用率測定部１２により測定されるＣＰＵ使用率の現在値がＣＰＵ最適使用範囲ＲｇＯＰＴに入っていないときに適正スレッド数を変更する例について説明したが、本発明はこれに限定されない。例えば、ＣＰＵ使用率測定部１２により１秒毎に測定される直近数回分のＣＰＵ使用率の平均値がＣＰＵ最適使用範囲ＲｇＯＰＴに入っていないときに適正スレッド数を変更するようにしてもよい。または、ＣＰＵ使用率測定部１２によりＣＰＵ使用率を測定する単位回数（例えば、１０回）の中で、ＣＰＵ使用率がＣＰＵ最適使用範囲ＲｇＯＰＴに入っていないときの回数の割合が所定値を超えたときに適正スレッド数を変更するようにしてもよい。このような調整方法は、ＣＰＵ使用率の変動振幅が比較的大きいシステムに適用するのが好適である。これに対して、ＣＰＵ使用率の現在値に基づき適正スレッド数を調整する方法は、ＣＰＵ使用率の変動振幅が比較的小さいシステムに適用するのが好適である。
【００５９】
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６０】
１０  流量制御装置
１１  パラメータ記憶部
１２  ＣＰＵ使用率測定部
１３  ＣＰＵ使用率判定部
１４  適正スレッド数変更部
１５  変更回数測定部
１６  流量制御テーブル記憶部
１７  スレッド起動部
【図１】
2010231313.tif 000003
【図２】
2010231313.tif 000004
【図３】
2010231313.tif 000005
【図４】
2010231313.tif 000006
【図５】
2010231313.tif 000007