(57)【特許請求の範囲】
【請求項１】
コンピュータによって実装される方法であって、
（ａ）プロセッサ使用率の１つ以上の測定値を取得するステップと、
（ｂ）使用率の上限値を計算するステップであって、該上限値は、所定の時間インターバルにわたる処理ユニット（ＰＵ）の平均使用率及び標準偏差を用いて、次の時間インターバルにおける実際の使用率が前記上限値を超える可能性が指定された値となるように計算される前記ステップと、
（ｃ）前記使用率の上限値が使用可能なＰＵのキャパシティよりも大きいことを決定することに応答して、１つ以上のＰＵを自動的に追加するステップと、
（ｄ）前記使用率の上限値が前記使用可能なＰＵのキャパシティよりも少なくとも１ＰＵ小さいことを決定することに応答して、１つ以上のＰＵを自動的に除去するステップを有する、方法。
【請求項２】
前記１つ以上のＰＵは、異機種であり、前記１つ以上のＰＵは、タイプによってグループ化され、前記ステップ（ａ）は、ＰＵのグループごとに行われる、請求項１に記載の方法。
【請求項３】
前記ステップ（ｃ）は、前記使用率の上限値が一のグループのＰＵキャパシティを超えることを決定することに応答して、前記１つ以上のＰＵを当該グループに追加するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ステップ（ｃ）は、前記使用率の上限値と一定値の和が前記使用可能なＰＵのキャパシティを超えるであろうということを決定することに応答して行われる、請求項１に記載の方法。
【請求項５】
コンピュータによって実装される方法であって、
（ａ）プロセッサ使用率の１つ以上の測定値を取得するステップと、
（ｂ）使用率の第１の上限値を計算するステップであって、該第１の上限値は、所定の時間インターバルにわたる処理ユニット（ＰＵ）の平均使用率及び標準偏差を用いて、次の時間インターバルにおける実際の使用率が前記上限値を超える可能性が指定された値となるように計算される前記ステップと、
（ｃ）使用率の第２の上限値を計算するステップと、
（ｄ）前記使用率の第１の上限値及び前記使用率の第２の上限値のうち大きい方が使用可能なＰＵのキャパシティよりも大きいことを決定することに応答して、１つ以上のＰＵを自動的に追加するステップと、
（ｅ）前記使用率の第１の上限値及び前記使用率の第２の上限値のうち前記大きい方が前記使用可能なＰＵのキャパシティよりも少なくとも１ＰＵ小さいことを決定することに応答して、１つ以上のＰＵを自動的に除去するステップを有する、方法。
【請求項６】
前記１つ以上のＰＵは、異機種であり、前記１つ以上のＰＵは、タイプによってグループ化され、前記ステップ（ｄ）は、前記使用率の第１の上限値及び前記使用率の第２の上限値のうち前記大きい方が一のグループのＰＵキャパシティを超えることを決定することに応答して、前記１つ以上のＰＵを当該グループに追加するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記使用率の第２の上限値は、最後の２つの実際の使用率観測値及びそれらの差の大きさに基づく、請求項５に記載の方法。
【請求項８】
前記ステップ（ｄ）は、前記使用率の第１の上限値及び前記使用率の第２の上限値のうち前記大きい方と一定値の和が前記使用可能なＰＵのキャパシティを超えるであろうということを決定することに応答して行われる、請求項１に記載の方法。
【請求項９】
前記１つ以上のＰＵは、コンピュータ・プロセッサ、プロセッサ・コア及び論理プロセッサのうちの１つである、請求項１又は請求項５に記載の方法。
【請求項１０】
コンピュータ・プロセッサを備え、
前記コンピュータ・プロセッサは、
プロセッサ使用率の１つ以上の測定値を取得する動作と、
使用率の上限値を計算する動作であって、該上限値は、所定の時間インターバルにわたる処理ユニット（ＰＵ）の平均使用率及び標準偏差を用いて、次の時間インターバルにおける実際の使用率が前記上限値を超える可能性が指定された値となるように計算される前記動作と、
前記使用率の上限値が使用可能なＰＵのキャパシティよりも大きいことを決定することに応答して、１つ以上のＰＵを自動的に追加する動作と、
前記使用率の上限値が前記使用可能なＰＵのキャパシティよりも少なくとも１ＰＵ小さいことを決定することに応答して、１つ以上のＰＵを自動的に除去する動作を行うように構成される、システム。
【請求項１１】
前記１つ以上のＰＵは、異機種であり、前記１つ以上のＰＵは、タイプによってグループ化され、前記プロセッサ使用率の１つ以上の測定値を取得する動作は、ＰＵのグループごとに行われる、請求項１０に記載のシステム。
【請求項１２】
前記コンピュータ・プロセッサは、前記使用率の上限値が一のグループのＰＵキャパシティを超えることを決定することに応答して、前記１つ以上のＰＵを当該グループに追加する動作を行うようにさらに構成される、請求項１１に記載のシステム。
【請求項１３】
前記コンピュータ・プロセッサは、前記使用率の上限値と一定値の和が前記使用可能なＰＵのキャパシティを超えるであろうということを決定することに応答して、前記１つ以上のＰＵを自動的に追加する動作を行うようにさらに構成される、請求項１０に記載のシステム。
【請求項１４】
前記１つ以上のＰＵは、コンピュータ・プロセッサ、プロセッサ・コア及び論理プロセッサのうちの１つである、請求項１０に記載のシステム。
【請求項１５】
請求項１ないし請求項９の何れか１項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ環境内の処理に係り、さらに詳細に説明すれば、プロセッサ数（processorpopulation）のプログラム管理に係る。
【背景技術】
【０００２】
機能的に同等のＮ個のコンピュータ処理ユニット（ＰＵ）を備えるコンピュータ・システムでは、当該システム上で稼働中の作業負荷は、しばしばＮ個のＰＵが全体として提供することができる計算能力よりも少ない計算能力を消費するであろう。このことは、「システムの使用率は、Ｎ×１００％未満である」と定量的に表されることがある。例えば、Ｎ＝１６である場合、完全な使用率は、１６００％になり、そして当該使用可能なキャパシティの半分だけを消費する作業負荷は、８００％の使用率で稼働すると称されるであろう。
【０００３】
かかる作業負荷をディスパッチするマルチプロセッシング対応のオペレーティング・システムは、しばしばこれらの作業負荷をＮ個のＰＵ上に均等に分配する。前述の例について説明を続けると、ディスパッチャは、機能的に同等の１６個のＰＵの各々を５０％の使用率で稼働させることにより、当該作業負荷に十分な能力を提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
幾つかのコンピュータ・システムでは、複数のＰＵを管理するオーバーヘッド、当該マシンのプロセッサ・キャッシュ構造及びマルチプロセッシングのレベルが増大するにつれてオペレーティング・システムによってロッキング及び相互排他を行うという必要性が増大することに起因して、かかる公正な分配は、かかる作業負荷を分配する最も効率的な方法であるとは限らない。前述の例に再び戻って説明すると、オペレーティング・システムのカーネルにとっては、全体として８００％の使用率を必要とする前述の作業負荷を、それぞれが８０％の使用率で稼働する１０個のプロセッサによって処理する一方、残りの６個のプロセッサをアイドルに留めておくことがより合理的であるかもしれない。
【課題を解決するための手段】
【０００５】
本発明の第１の側面に従って、コンピュータによって実装される方法が提供される。この方法は、
（ａ）プロセッサ使用率の１つ以上の測定値を取得するステップと、
（ｂ）使用率の上限値（utilization ceiling）を計算するステップと、
（ｃ）前記使用率の上限値が使用可能な処理ユニット（ＰＵ）のキャパシティよりも大きいことを決定することに応答して、１つ以上のＰＵを自動的に追加するステップと、
（ｄ）前記使用率の上限値が前記使用可能なＰＵのキャパシティよりも少なくとも１ＰＵ小さいことを決定することに応答して、１つ以上のＰＵを自動的に除去するステップを有する。
【０００６】
本発明の第２の側面に従って、コンピュータによって実装される方法が提供される。この方法は、
（ａ）プロセッサ使用率の１つ以上の測定値を取得するステップと、
（ｂ）使用率の第１の上限値を計算するステップと、
（ｃ）使用率の第２の上限値を計算するステップと、
（ｄ）前記使用率の第１の上限値及び前記使用率の第２の上限値のうち大きい方が使用可能な処理ユニット（ＰＵ）のキャパシティよりも大きいことを決定することに応答して、１つ以上のＰＵを自動的に追加するステップと、
（ｅ）前記使用率の第１の上限値及び前記使用率の第２の上限値のうち大きい方が前記使用可能なＰＵのキャパシティよりも少なくとも１ＰＵ小さいことを決定することに応答して、１つ以上のＰＵを自動的に除去するステップを有する。
【０００７】
本発明の第３の側面に従って、システムが提供される。このシステムは、コンピュータ・プロセッサを備え、当該コンピュータ・プロセッサは、
プロセッサ使用率の１つ以上の測定値を取得する動作と、
使用率の上限値を計算する動作と、
前記使用率の上限値が使用可能な処理ユニット（ＰＵ）のキャパシティよりも大きいことを決定することに応答して、１つ以上のＰＵを自動的に追加する動作と、
前記使用率の上限値が前記使用可能なＰＵのキャパシティよりも少なくとも１ＰＵ小さいことを決定することに応答して、１つ以上のＰＵを自動的に除去する動作を行うように構成される。
【０００８】
本発明の第４の側面に従って、前記第１及び第２の側面に従った方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラムが提供される。
【０００９】
追加の機能及び利点は、本発明の技術を通して実現される。本発明の他の諸実施形態及び諸側面は、本明細書において詳述され、請求項に記載された発明の一部と考えられる。諸利点及び諸機能とともに本発明をよりよく理解するには、以下の説明及び図面を参照されたい。
【発明の効果】
【００１０】
本発明は、作業負荷を処理するのに必要とされる最小セットのＰＵ上の作業負荷を統合することにより、プロセッサ・オーバーヘッドを減少させることができるという効果を奏する。また、本発明は、１セットのＰＵのうち必要とされるプロセッサ数をリアル・タイムで予測し、予測された作業負荷を満たすようにＰＵの数を増加させることができるという効果を奏する。さらに、本発明は、異機種ＰＵの複数グループにわたって、所与のタイプのＰＵの各グループごとに、ＰＵ使用率を予測することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】一実施形態によって実装することができる、プロセッサ数のプログラム管理を実装するためのシステムを示す概略図である。
【図２】一実施形態におけるプロセッサ・ユニットの使用率を示すグラフである。
【図３】一実施形態に従った、ランダムな変数値とこれらの値を超えるサンプルの生起確率を関連づけるための数表である。
【図４】一実施形態で実装することができる、プロセッサ数のプログラム管理を示すフローチャートである。
【図５】追加の実施形態で実装することができる、プロセッサ数のプログラム管理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
本発明の一実施形態は、プロセッサ数のプログラム管理を提供する。
【００１３】
一実施形態は、或る時間インターバルにわたる平均処理負荷に加えて、標準偏差を計算することを含む。処理負荷の平均（μ）及び処理負荷の標準偏差（σ）に基づき、そしてシステム管理者によって指定された信頼度確率Ｐが与えられると、次の時間インターバルにおける実際の使用率が超える可能性がＰ％だけであるような、使用率の上限値（負荷の上限値）Ｃが計算される。一実施形態では、この計算を行うために、図３の数表が使用される。例えば、もし、システム管理者が障害の確率を２％に管理することを望んでいれば、上限値Ｃは、μ＋２．０６×σになるであろう。次に、その時点においてオンになっているＰＵの数に基づき、Ｃを処理するためにより多くのＰＵが必要とされるか否かが決定される。もし、より多くのＰＵが必要とされるのであれば、ＰＵの組み合わせがＣを処理することができるまで、追加のＰＵがオンにされる。一方、Ｃを処理するためにより少数のＰＵが必要とされるのであれば、余分なＰＵがオフにされる。
【００１４】
大規模コンピュータ・システムは、変化する負荷の下で動作する。多くの場合、これらのコンピュータ・システムは、最高の予想需要の下で、当該システムが負荷の全体をサポートするのに十分な処理能力を有することを保証するためにサイズ超過となっている。この処理能力は、コンピュータ・システムに追加のＰＵを追加することにより提供される。ＰＵは、単一のコンピュータ・プロセッサ又はコンピュータ・コアを含んでもよい。一実施形態では、ＰＵは、論理プロセッサである。一般に、処理負荷は、複数のＰＵ上に分配されているから、当該システムが最大の負荷よりも少ない負荷を処理している場合、そのプロセッサの各々は、かなりの量の活用されていない処理能力を有することがある。
【００１５】
オペレーティング・システムのタスク管理機構は、作業を複数のプロセッサ上に分配することにより、相互排他のためのロッキングのような処理オーバーヘッドを招く。さらに、処理が或るＰＵから他のＰＵに転送される際には、関連するキャッシュ・データ及び命令が、同様に移動されなければならない。大規模システムでは、このオーバーヘッドが相当な量になり、全体的なシステム処理時間に相当な影響を及ぼすことがある。
【００１６】
オーバーヘッドの或るものは、システム上の負荷が低いことが予想される場合に、諸ＰＵをオフにすることにより手動的に緩和することができる。しかし、かかるＰＵの手動的調整は、予期しない処理量の激増に対応することができないから、制限された価値を有するに過ぎない。より知的な手法は、必要に応じて、諸ＰＵを自動的にオン及びオフにすることである。この手法は、プロセッサ管理オーバーヘッドを著しく減少させるであろう。というのは、この手法は、予期される負荷をサポートするであろう最小セットのＰＵ上で諸プロセスを稼働させると同時に、近未来の処理要件の変化を予測する能力を有し、これにより全体的なシステムの予期されるニーズに基づき、諸ＰＵをオン及びオフにするからである。
【００１７】
次に、図１を参照して、プロセッサ数のプログラム管理を実装するためのシステム１００を説明する。一実施形態では、システム１００は、ホスト・システム・コンピュータ（以下「ホスト」と略記）１０２を含む。ホスト１０２は、諸コンピュータ命令を実行することにより、（１）アプリケーションの作業負荷を稼働させ、（２）ＰＵ構成のプログラム管理への入力としてＰＵ使用率を測定し、（３）キャパシティに対する近未来のニーズの予測に従って諸ＰＵをオン又はオフにするように動作する。ホスト１０２は、ソフトウェア・アプリケーションを実行することができる任意のタイプの環境内で動作してもよい。ホスト１０２は、メインフレーム・コンピュータのような高速コンピュータ処理装置を含んでもよい。一実施形態では、ホスト１０２は、企業（例えば、営利事業）の一部であって、ＰＵ能力のための予測需要量に基づきＰＵ構成を管理するためのプログラム技術を使用する。
【００１８】
一実施形態では、図１のシステム１００は、１つ以上のクライアント・システム（以下「クライアント」と略記）１０４を含む。１つ以上の地理的な位置におけるユーザは、クライアント・システム１０４を通して、ホスト１０２と通信することができる。クライアント１０４は、１つ以上のネットワーク１０６を介して、ホスト１０２に結合される。各クライアント１０４は、本明細書に開示したプロセスを行うためのコンピュータ・プログラムを実行する汎用コンピュータを使用して実装されてもよい。クライアント１０４は、パーソナル・コンピュータ（例えば、ラップ・トップ、携帯情報端末、モバイル装置）又はホスト接続端末でもよい。もし、クライアント１０４がパーソナル・コンピュータであれば、本明細書に開示した処理は、（例えば、アプレットをクライアント１０４に提供することにより）クライアント１０４及びホスト１０２によって共用されてもよい。クライアント１０４は、ウェブサーバ、データベース・サーバ等のようなホスト１０２上で実行中のアプリケーションにアクセスするために、許可されたユーザ（例えば、プログラマ）によって動作されてもよい。
【００１９】
ネットワーク１０６は、広域ネットワーク（ＷＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、グローバル・ネットワーク（例えば、インターネット）、仮想プライベート・ネットワーク（ＶＰＮ）、イントラネット等を含む、任意のタイプの公知のネットワークでもよい。ネットワーク１０６は、無線ネットワーク又は当分野で公知の任意の種類の物理ネットワーク実装を使用して、実装されてもよい。一のクライアント１０４は、全てのクライアント１０４が同じネットワークを通してホスト１０２に結合されないように、複数のネットワーク（例えば、イントラネット及びインターネット）を通してホスト１０２に結合されてもよい。１つ以上のクライアント１０４及びホスト１０２は、無線でネットワーク１０６に接続されてもよい。一実施形態では、ネットワーク１０６は、イントラネット及びネットワーク１０６を通してホスト１０２と通信するためにユーザ・インタフェース・アプリケーション（例えば、ウェブ・ブラウザ）を実行する１つ以上のクライアント１０４を含む。他の実施形態では、クライアント１０４は、（ネットワーク１０６を通してではなく）ホスト１０２に直接的に接続され、そしてホスト１０２は、プロセッサ数のプログラム管理をサポートするデータを格納するためのメモリを備える。代替的に、この目的のために、別個のストレージ装置（例えば、ストレージ装置１１２）が実装されてもよい。
【００２０】
一実施形態では、ストレージ装置１１２は、システム１００によるプロセッサ数のプログラム管理に関係するデータを保持するとともに、ホスト１０２を表すエンティティによって必要とされる他のデータ／情報を保持するためのデータ・リポジトリを含む。ストレージ装置１１２は、ネットワーク１０６を含む分散環境にわたって統合されたデータ・ソースとして、論理的にアドレス可能である。ストレージ装置１１２内に格納された情報は、ホスト１０２及び／又はクライアント１０４を介して検索され且つ処理されてもよい。一実施形態では、ストレージ装置１１２は、１つ以上のデータベースを含む。これらのデータベースは、以下で詳述するように、例えば、構成パラメータ、値、メソッド、プロパティ、他の関係する情報等を保持する。当業者には明らかなように、ストレージ装置１１２は、ファイル・システム上のＸＭＬファイル若しくはネットワーク（例えば、ネットワーク１０６の１つ）にわたって分散されたＸＭＬファイル、又はネットワーク１０６上に位置する他のサーバからのデータ・ストリームから受信されたＸＭＬファイルのような他の構造を含んでもよい。代替的に、ストレージ装置１１２の全て又は一部は、一のクライアント１０４上に置かれてもよい。
【００２１】
ホスト１０２は、１つ以上のサーバを使用して実装され、当該サーバによってアクセス可能なストレージ媒体内に格納されたコンピュータ・プログラムに応答して動作してもよい。ホスト１０２は、クライアント１０４と通信するために、ネットワーク・サーバ（例えば、ウェブ・サーバ）として動作してもよい。ホスト１０２は、クライアント１０４との間で情報を送信及び受信し、関連する諸タスクを行うことができる。また、ホスト１０２は、ホスト１０２への無許可のアクセスを防止し且つ許可されたアクセスについて任意の制限を強制するためのファイアウォールを含んでもよい。例えば、管理者は、システムの全体にアクセスし且つ当該システムの諸部分を修正するための権限を有してもよい。ファイアウォールは、当分野で公知の通常のハードウェア及び／又はソフトウェアを使用して実装されてもよい。
【００２２】
また、ホスト１０２は、アプリケーション・サーバとして動作してもよい。ホスト１０２は、プロセッサ数のプログラム管理を提供するために、１つ以上のコンピュータ・プログラムを実行する。ホスト１０２は、プロセッサ管理モジュール１０８を含む。前述のように、アプリケーション（例えば、ｊａｖａ（登録商標）アプレット）をクライアント１０４に提供することにより、処理はクライアント１０４及びホスト１０２によって共用されてもよい。代替的に、クライアント１０４は、本明細書に開示した処理の一部又は全てを行うための、スタンド・アロンのソフトウェア・アプリケーションを含むことができる。前述のように、ネットワーク・サーバ機能及びアプリケーション・サーバ機能を実装するために、別々のサーバが使用されてもよい。代替的に、ネットワーク・サーバ、ファイアウォール及びアプリケーション・サーバは、必要な機能を行うためにコンピュータ・プログラムを実行する、単一のサーバによって実装されてもよい。
【００２３】
一実施形態では、プロセッサ管理モジュール１０８は、諸ＰＵにわたって分配される作業負荷と共に、ホスト１０２上で実行される。追加の実施形態では、プロセッサ管理モジュール１０８は、作業負荷を実行していない、別個のコンピュータ・システム上で実行される。
【００２４】
図１に関連して説明したプロセッサ数のプログラム管理は、ハードウェア、汎用コンピュータ上で実行するソフトウェア又はその組み合わせによって実装されてもよい。
【００２５】
図２は、一実施形態におけるＰＵ使用率のグラフを示す。ＰＵ使用率の曲線２０２は、或る時間インターバルにわたる実際のＰＵ使用率を示す。ＰＵ使用率の曲線２０２に基づき、平均使用率（μ）２０４が計算される。平均使用率２０４は、ＰＵ使用率の曲線２０２について計算された当該時間インターバルにわたる平均ＰＵ使用率である。ＰＵ使用率の曲線２０２及び平均使用率２０４に基づき、標準偏差（σ）が計算される。図２のグラフ及び当該グラフ内の値は、説明の便宜上のものであるに過ぎないこと、そして諸実施形態は任意の特定の値に制限されないことを理解されたい。さらに、これらの値自体は計算されるが、グラフの生成は必要とされないこと、そしてこれらの値自体はシステムのＰＵ要件を決定するために使用されることを理解されたい。
【００２６】
図３は、ランダムな変数値とこれらの値を超えるサンプルの生起確率を関連づけるための数表を示す。列Ｍは、例えば、図２のデータに基づき計算された平均ＰＵ使用率からの多数の標準偏差を示す。第２の列は、システムの使用率要件が列Ｍ内の値を超えるであろう計算された確率である。従って、図３の数表によれば、次の時間インターバルの間に、ＰＵ使用率が平均ＰＵ使用率と１×標準偏差の和（μ＋σ）を超える１６％の確率が存在する。この確率値を使用して、必要とされるＰＵの数が予測される。一実施形態では、与えられた値Ｍを超えるというリスクは、ユーザが受け入れることを望んでいるリスクに対して測定される。例えば、実際の使用率がＭを超えるであろうという２％のリスクをユーザが受け入れることを望んでいるものと仮定すると、オンラインにされるであろうＰＵの数は、現在の平均ＰＵ使用率と２．０６×標準偏差の和（μ＋２．０６σ）をサポート可能である必要があるであろう。従って、以下で詳述するように、ＰＵカウントが調整されるであろう。
【００２７】
図３の数表内の値は、説明の便宜上のものであるに過ぎないこと、そして諸実施形態は任意の特定の値に制限されないことを理解されたい。
【００２８】
一実施形態では、データ及び確率の計算値は、全体としてシステムのための定期的な時間インターバルで生成される。追加の実施形態では、システムは、多数の異機種ＰＵから成り、そしてデータ及び確率の計算値は、ＰＵのタイプごとに生成される。
【００２９】
図４は、一実施形態で実装することができる、プロセッサ数のプログラム管理のためのフローチャートを示す。一実施形態では、図４のプロセスは、図１のプロセッサ管理モジュール１０８のようなプロセッサ管理モジュール上で実行される。ステップ４０２では、現在のプロセッサ使用率が測定される。一実施形態では、以前のプロセッサ使用率値がキャッシュされ、そして現在のプロセッサ使用率がキャッシュに追加される。ステップ４０４では、時間インターバルＸにわたる平均ＰＵ使用率が計算される。一実施形態では、例えば、システム起動時に、ステップ４０４は、時間インターバルＸについてのデータが生じるのを待機する。ステップ４０６では、平均ＰＵ使用率の標準偏差が計算される。ステップ４０８では、平均ＰＵ使用率、平均ＰＵ使用率の標準偏差及び図３の適切な行の値を使用して、使用率の上限値Ｃが計算される。システム管理者によってＰが選択された場合、使用率の上限値Ｃの生起確率は、Ｐ％であるに過ぎない。ステップ４１０では、計算された使用率の上限値Ｃが、現にオンラインになっているＰＵの数と比較される。もし、Ｃが現にオンラインになっているＰＵの数を超えそうであれば、ステップ４１２では、計算された上限値Ｃを満たすために１つ以上の追加のＰＵがオンラインにされ、処理はステップ４０２で継続する。一方、Ｃが現にオンラインになっているＰＵの数を、例えば、使用率しきい値だけ超えなければ、処理はステップ４１４で継続する。ステップ４１４では、計算された上限値Ｃが、現にオンラインになっているＰＵの数よりも少なくとも１ＰＵ小さいか否か、すなわち１つ以上のＰＵを非活動化することができるか否かが決定される。そうであれば、ステップ４１６では、１つ以上のＰＵが非活動化される。その後、処理はステップ４０２で継続する。
【００３０】
ステップ４１４に戻って、説明を続ける。もし、Ｃが現にオンラインになっているＰＵの数よりも少なくとも１ＰＵ小さくなければ、処理はステップ４０２で継続する。一実施形態では、図４のプロセスは、計算された上限値Ｃを現にオンラインになっているＰＵの数と比較し、そしてシステム内のオンラインになっているＰＵの数を全体として調整するために使用される。追加の実施形態では、システムは、多数の異機種ＰＵから成り、そして図４のプロセスは、種々のＰＵタイプの各々ごとに実行される。
【００３１】
図５は、追加の実施形態で実装することができる、プロセッサ数のプログラム管理のためのフローチャートを示す。一実施形態では、図５のプロセスは、図１のプロセッサ管理モジュール１０８のようなプロセッサ管理モジュール上で実行される。ステップ５０２では、現在のプロセッサ使用率が測定される。一実施形態では、以前のプロセッサ使用率値がキャッシュされ、そして現在のプロセッサ使用率がキャッシュに追加される。ステップ５０４では、時間インターバルＸにわたる平均ＰＵ使用率が計算される。一実施形態では、例えば、システム起動時に、ステップ５０４は、時間インターバルＸについてのデータが生じるのを待機する。ステップ５０６では、平均ＰＵ使用率の標準偏差が計算される。ステップ５０８では、平均ＰＵ使用率、平均ＰＵ使用率の標準偏差及び図３の適切な行の値を使用して、使用率の第１の上限値Ｃが計算される、システム管理者によってＰが選択された場合、使用率の第１の上限値Ｃの生起確率は、Ｐ％であるに過ぎない。ステップ５１０では、最後の２つの実際の使用率観測値及びそれらの差の大きさに基づき、使用率の第２の上限値Ｃ’が選択される。すなわち、使用率の第２の上限値Ｃ’は、（最後のサンプル）＋（最後のサンプル−最後から２番目のサンプル）である。ステップ５１２では、使用率の第１の上限値Ｃ及び使用率の第２の上限値Ｃ’のうち大きい方（以下「Ｃ’’」という）が決定される。ステップ５１４では、「Ｃ’’」が現にオンラインになっているＰＵの数と比較される。もし、「Ｃ’’」が現にオンラインになっているＰＵの数よりも大きければ、ステップ５１６では、上限値「Ｃ’’」を満たすために１つ以上の追加のＰＵがオンラインにされ、そして処理はステップ５０２で継続する。一方、「Ｃ’’」が現にオンラインになっているＰＵの数を超えなければ、処理はステップ５１８で継続する。ステップ５１８では、「Ｃ’’」が現にオンラインになっているＰＵの数よりも少なくとも１ＰＵ小さいか否か、すなわち１つ以上のＰＵを非活動化することができるか否かが決定される。そうであれば、ステップ５２０では、１つ以上のＰＵが非活動化される。その後、処理はステップ５０２で継続する。
【００３２】
ステップ５１８に戻って、説明を続ける。もし、「Ｃ’’」が現にオンラインになっているＰＵの数よりも少なくとも１ＰＵ小さくなければ、処理はステップ５０２で継続する。一実施形態では、図５のプロセスは、計算された上限値「Ｃ’’」を現にオンラインになっているＰＵの数と比較し、そしてシステム内のオンラインになっているＰＵの数を全体として調整するために使用される。追加の実施形態では、システムは、多数の異機種ＰＵから成り、そして図５のプロセスは、種々のＰＵタイプの各々ごとに実行される。
【００３３】
一実施形態では、図４及び図５に示すプロセスの何れかは、一定値Ｚを予測されたプロセッサ使用率値に加算することにより変更され、それによって、処理バッファを作成するために予測された値とＺの和によってＰＵの数を増加させる。
【００３４】
技術的な結果及び利点は、作業負荷を処理するのに必要とされる最小セットのＰＵ上の作業負荷を統合することにより、プロセッサ・オーバーヘッドを減少させることを含む。追加の利点は、１セットのＰＵのうち必要とされるプロセッサ数をリアル・タイムで予測することができ、しかも予測された作業負荷を満たすようにＰＵの数を増加させることができる点にある。さらに他の利点は、異機種ＰＵの複数グループにわたって、所与のタイプのＰＵの各グループごとに、プロセッサ使用率を予測することができる点にある。
【００３５】
本明細書で使用される用語は、特定の実施形態を説明するためだけのものであるに過ぎず、本発明を制限することは意図されていない。本明細書で使用される単数形式の用語は、複数形式の用語を包含することが意図されている。但し、文脈上これと異なることが明白であるときは、その限りではない。また、本明細書で使用される「含む」又は「有する」という用語は、記述の対象となる機能、整数、ステップ、動作、要素及び／又はコンポーネントが存在することを表すが、１つ以上の他の機能、整数、ステップ、動作、要素及び／又はコンポーネントが存在することを妨げない。
【００３６】
以下の請求項に記載された全ての手段又はステップ＋機能要素に対応する構造、材料、行為及びそれらの均等物は、請求項に明示的に記載された他の要素と組み合わせてその機能を実施するための任意の構造、材料又は行為を含むことが意図される。本発明に関する記述は、例示及び説明を目的として与えられたものであり、網羅的であること及び開示された形態に本発明を限定することを意図するものではない。当業者にとって、本発明の範囲及び精神から逸脱することなく、多くの修正及び変形を施し得ることが明らかであろう。実施形態は、本発明の原理及び実際の応用を最もよく説明し、考えられる特定の用途に適するような種々の修正を伴う種々の実施形態に関して当業者が本発明を理解することを可能にするために、選択され説明されたものである。
【００３７】
本発明の諸側面は、システム、方法又はコンピュータ・プログラムとして具体化されてもよい。従って、本発明の諸側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェア及びハードウェア要素を組み合わせた実施形態の形式を取ってもよく、本明細書では、これらの全てを一般に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の諸側面は、コンピュータ可読プログラム・コードをその上に具体化したコンピュータ可読媒体を有するコンピュータ・プログラムの形式を取ってもよい。
【００３８】
１つ以上のコンピュータ可読媒体の任意の組み合わせを利用してもよい。当該コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体でもよい。例えば、コンピュータ可読ストレージ媒体は、電子、磁気、光学、電磁気、赤外線、半導体式のシステム、装置又はこれらの任意の適切な組み合わせでもよい。コンピュータ可読媒体の特定の例は、１つ以上の線を有する電気接続、フレキシブル・ディスク、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ＣＤ−ＲＯＭ、光ストレージ装置、磁気ストレージ装置又はこれらの任意の適切な組み合わせを含んでもよい。本明細書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム、装置等に関連して又はこれらによって使用するためのプログラムを保持し、格納することができる、任意の有形的媒体でもよい。
【００３９】
コンピュータ可読信号媒体は、伝搬されるデータ信号を含んでもよいが、その場合には、ベースバンド内に又は搬送波の一部として、コンピュータ使用可能プログラム・コードを具体化してもよい。かかる伝搬されるデータ信号は、電磁気、光又はこれらの任意の適切な組み合わせを含む、種々の形式のうち任意の形式を取ってもよい。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではない任意のコンピュータ可読媒体であって、命令実行システム、装置等に関連して又はこれらによって使用するためのプログラムを通信し、伝搬し、移送することができる。
【００４０】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ又はこれらの任意の適切な組み合わせを含む、任意の適切な媒体を使用して伝送してもよい。
【００４１】
本発明の諸側面に係る動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語及び「Ｃ」プログラミング言語のような通常の手続き的プログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書いてもよい。当該プログラム・コードは、独立のソフトウェア・パッケージとしてユーザ・コンピュータ上で完全に実行してもよく、その一部をユーザ・コンピュータ上で且つ他の一部を遠隔コンピュータ上で実行してもよく、或いは遠隔コンピュータ又はサーバ上で完全に実行してもよい。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通してユーザ・コンピュータに接続してもよく、或いはその接続を（例えば、インターネット・サービス・プロバイダを使用するインターネットを通して）外部コンピュータに行ってもよい。
【００４２】
以上では、本発明の諸実施形態に従った、方法、装置（システム）及びコンピュータ・プログラムのフローチャート及び／又はブロック図を参照して、本発明の諸側面を説明した。フローチャート及び／又はブロック図の各ブロック、並びにフローチャート及び／又はブロック図の複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができる。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供すると、当該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサ上で実行される諸命令が、フローチャート及び／又はブロック図の１つ以上のブロックで指定された機能／行為を実装するための手段を作成することを目的として、一のマシンを生産することができる。
【００４３】
また、これらのコンピュータ・プログラム命令をコンピュータ可読媒体内に格納すると、コンピュータ可読媒体内に格納された諸命令が、フローチャート及び／又はブロック図の１つ以上のブロックで指定された機能／行為を実装する命令手段を含む製品を生産することを目的として、コンピュータ又は他のプログラム可能なデータ処理装置に対し特定の態様で機能するように指示することができる。
【００４４】
また、これらのコンピュータ・プログラム命令を、コンピュータ又は他のプログラム可能なデータ処理装置にロードすると、当該コンピュータ又は他のプログラム可能なデータ処理装置上で実行される諸命令が、フローチャート及び／又はブロック図の１つ以上のブロックで指定された機能／行為を実装するためのプロセスを提供することを目的として、一のコンピュータによって実装される方法を生成するように当該コンピュータ又は他のプログラム可能なデータ処理装置上で一連の動作ステップを実行させることができる。
【００４５】
前述のように、諸実施形態は、コンピュータ実装プロセス及びそれらのプロセスを実施するための装置の形式で具体化することができる。実施形態では、本発明は、１つ以上のネットワーク要素によって実行されるコンピュータ・プログラム・コード内で具体化される。諸実施形態は、製品として有形的媒体内に記録された諸命令を保持する、コンピュータ・プログラム信号論理を備えたコンピュータ使用可能媒体上のコンピュータ・プログラムを含む。コンピュータ使用可能媒体のための推奨製品は、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ、又は他の任意のコンピュータ可読ストレージ媒体を含むことができる。コンピュータ・プログラム信号論理が一のコンピュータにロードされ且つ当該コンピュータによって実行される場合、当該コンピュータは、本発明を実施するための装置になる。コンピュータ・プログラム・コード論理は、例えば、ストレージ媒体内に格納され、一のコンピュータにロードされ且つ当該コンピュータによって実行され、或いは電気的ケーブル、光ファイバ、電磁放射等の特定の伝送媒体を介して伝送される。その場合、コンピュータ・プログラム・コード論理が一のコンピュータにロードされ且つ当該コンピュータによって実行される場合、当該コンピュータは、本発明を実施するための装置になる。汎用のマイクロプロセッサ上で実装される場合、コンピュータ・プログラム・コード論理のセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。
【００４６】
諸図面のうちフローチャート及びブロック図は、本発明の種々の実施形態に従った、システム、方法及びコンピュータ・プログラムの可能な実装のアーキテクチャ、機能性及び動作を示す。この点に関連して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ以上の実行可能命令から成る、モジュール、セグメント又はコード部分を表すことがある点に留意されたい。また、幾つかの代替的実装では、ブロック内に表記された機能を図面に示した順序とは異なる順序で実施することができる点にも留意されたい。例えば、特定の機能性に依存して、連続的に示した２つのブロックを実質的に並列に実施したり、これらのブロックを反対の順序で実施することができる。さらに、ブロック図又はフローチャートの各ブロック及び複数ブロックの組み合わせは、指定された機能又は行為を実行する専用のハードウェア・ベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装することができる点にも留意されたい。
【符号の説明】
【００４７】
１００・・・システム
１０２・・・ホスト・システム・コンピュータ（ホスト）
１０４・・・クライアント・システム（クライアント）
１０６・・・ネットワーク
１０８・・・プロセッサ管理モジュール
１１２・・・ストレージ装置
【図１】
0006296686.tif 000002
【図２】
0006296686.tif 000003
【図３】
0006296686.tif 000004
【図４】
0006296686.tif 000005
【図５】
0006296686.tif 000006