(57)【要約】【課題】パーティション間で実行可能プログラムを転送するためのコンピュータシステム及び方法を提供する。【解決手段】本発明にかかるコンピュータシステムは、複数のプロセッサと、実行可能プログラムを登録し、パーティションを作成し、且つ、パーティションに実行可能プログラムを割り当てるための第１のソフトウェアコードであって、未登録の実行可能プログラムを第１のパーティションに割り当てる、第１のソフトウェアコードと、第１のパーティションに関連した利用率を監視し、利用率が第１の制限を超えると、第１のパーティションの実行可能プログラムを調べ、且つ、第２の制限よりも多くの量の資源にアクセスした実行可能プログラムを第２のパーティションへ転送するための第２のソフトウェアコードとを備える。【選択図】図１
2006244483.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ（１３１）と、
実行可能プログラム（１４３）を登録し、パーティション（１４１）を作成し、前記パーティション（１４１）に、実行可能プログラム（１４３）を割り当てる第１のソフトウェアコードであって、未登録の実行可能プログラム（１４３）を、第１のパーティションに割り当てる第１のソフトウェアコードと、
前記第１のパーティションに関連した利用率を監視し、前記利用率が第１の制限を超えると、前記第１のパーティションの実行可能プログラム（１４３）を調べ、第２の制限よりも多くの量の資源にアクセスした実行可能プログラム（１４３）を、第２のパーティションへ転送する第２のソフトウェアコードと
を備えるコンピュータシステム。
【請求項２】
前記第１のソフトウェアコードおよび前記第２のソフトウェアコードは、前記複数のプロセッサ（１３１）において、実行可能プログラム（１４３）をスケジューリングするスケジューリングエージェント（１２５）に関連付けられる
請求項１に記載のコンピュータシステム。
【請求項３】
シェアパラメータ（１２７）は、前記パーティション（１４１）の実行可能プログラム（１４３）によって受け取られるプロセッサ資源の量に関係した各パーティション（１４１）に関連付けられる
請求項１に記載のコンピュータシステム。
【請求項４】
前記第２のソフトウェアコードは、アドミニストレータが転送された実行可能プログラム（１４３）を特定するためのメッセージを生成する
請求項１に記載のコンピュータシステム。
【請求項５】
前記第２のソフトウェアコードは、前記コンピュータシステムによって毎秒１回実行される
請求項１に記載のコンピュータシステム。
【請求項６】
コンピュータシステムの実行可能プログラムを登録することと、
前記登録された実行可能プログラムを複数のパーティションのサブセットに割り当てること（２０４）と、
未登録の実行可能プログラムを前記複数のパーティションの第１のパーティションに割り当てること（２０５）と、
前記第１のパーティションに関連したシステム資源の利用率を監視すること（２０６）と、
前記利用率が第１の制限を超えると、前記第１のパーティション内の実行可能プログラムを調べること（２０８）と、
第２の制限よりも多くの量の資源にアクセスした実行可能プログラムを前記複数のパーティションの第２のパーティションへ転送すること（２０９）と
を含む方法。
【請求項７】
前記複数のパーティションのシェアパラメータを設定すること
をさらに含む請求項６に記載の方法。
【請求項８】
前記シェアパラメータに従って、前記複数のパーティションの実行可能プログラムをスケジューリングすること
をさらに含む請求項７に記載の方法。
【請求項９】
前記実行可能プログラムを登録することは、
資源要求を通信すること
を含み、
シェアパラメータが、前記資源要求によって定義された量に設定される
請求項７に記載の方法。
【請求項１０】
実行可能プログラムが、
前記第２のパーティションへ転送されたことをアドミニストレータが特定するための通知を生成すること
をさらに含む
請求項６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、包括的には、パーティション間で実行可能プログラムを転送するためのコンピュータシステム及び方法に関する。
【背景技術】
【０００２】
多くの企業は、その企業の組織内で使用されるコンピュータ及びアプリケーションの数の劇的な増加を経験してきた。
企業の事業グループが新たなアプリケーションを配備する時、その新たなアプリケーションをホストする１つ又は複数の専用サーバプラットフォームを追加することが可能である。
このタイプの環境は、時に、「ｏｎｅ−ａｐｐ−ｐｅｒ−ｂｏｘ（ボックスごとに１つのアプリケーション）」と呼ばれる。
より多くの事業プロセスがデジタル化されるにつれて、「ｏｎｅ−ａｐｐ−ｐｅｒ−ｂｏｘ」環境では、サーバプラットフォームの個数が過度なものになる。
その結果、サーバプラットフォームの管理運営コストは大幅に増加する。
その上、サーバプラットフォームの資源が実際に使用される時間のパーセンテージ（利用率）は、かなり低くなる可能性がある。
これらの問題に対処するために、多くの企業は、複数のアプリケーションを共通のサーバプラットフォームに一元化して、プラットフォームの個数を削減し、システムの利用率を向上させてきた。
【０００３】
このような一元化された環境では、一定の実行可能プログラムが、他の実行可能プログラムに望ましくない影響を及ぼす場合がある。
たとえば、いくつかの実行可能プログラムは、大量の利用可能な資源（たとえば、プロセッサ資源、メモリ資源、及びディスク入出力（ＩＯ）資源）を消費する可能性がある。
その場合、他の実行可能プログラムは、適切に進行するのに十分な資源を取得することができなくなる。
この問題に対処するための従来の方法は、通常、実行可能プログラムの各グループのオペレーションをサポートするために複数のグループを作成することを含む。
【０００４】
これらのグループは、ユーザログイン、ユーザクラス、及びアプリケーション名によるものを含むいくつかの方法で定義することができる。
また、さまざまなグループによってアクセスされる資源に対して制限も定義される。
このようなグループの定義によって、一般に、或る実行可能プログラムがすべてのシステム資源の大部分を消費することが防止される。
しかしながら、実行可能プログラムは、依然として、自身のグループの資源の大部分を消費することができる。
【発明の開示】
【課題を解決するための手段】
【０００５】
一実施の形態では、コンピュータシステムは、複数のプロセッサと、実行可能プログラムを登録し、パーティションを作成し、且つ、パーティションに実行可能プログラムを割り当てるための第１のソフトウェアコードであって、未登録の実行可能プログラムを第１のパーティションに割り当てる、第１のソフトウェアコードと、第１のパーティションに関連した利用率を監視し、利用率が第１の制限を超えると、第１のパーティションの実行可能プログラムを調べ、且つ、第２の制限よりも多くの量の資源にアクセスした実行可能プログラムを第２のパーティションへ転送するための第２のソフトウェアコードと、を備える。
【０００６】
別の実施の形態では、方法は、コンピュータシステムの実行可能プログラムを登録すること、登録された実行可能プログラムを複数のパーティションのサブセットに割り当てること、未登録の実行可能プログラムを複数のパーティションの第１のパーティションに割り当てること、第１のパーティションに関連したシステム資源の利用率を監視すること、利用率が第１の制限を超えると、第１のパーティション内の実行可能プログラムを調べること、及び、第２の制限よりも多くの量の資源にアクセスした実行可能プログラムを複数のパーティションの第２のパーティションへ転送すること、を含む。
【０００７】
一実施の形態では、コンピュータシステムは、実行可能プログラムを登録するための手段と、コンピュータシステムの複数のパーティションに実行可能プログラムを割り当てるための手段であって、未登録の実行可能プログラムを複数のパーティションの第１のパーティションに割り当てる、割り当てるための手段と、第１のパーティションの利用率を監視するための手段と、第１のパーティションの利用率が第１の制限を超えると、第１のパーティションの実行可能プログラムの利用率を解析するための手段と、第１のパーティションから、第２の制限よりも大きな利用率を有する実行可能プログラムのための第２のパーティションへ、実行可能プログラムを転送するための手段と、を備える。
【発明を実施するための最良の形態】
【０００８】
いくつかの代表的な実施の形態は、「過度に活動的な（overaggressive）」実行可能プログラム（必要以上の量の資源を消費する実行可能プログラム）を隔離して、それら実行可能プログラムがシステム性能を劣化させることを防止するコンピュータシステム及び方法を対象にする。
いくつかの代表的な実施の形態では、複数のコンピューティングパーティションが作成される。
本明細書では、パーティションは、単一のサーバ内又は複数のサーバ内の動作環境を隔離するための物理メカニズム又は論理メカニズムである。
スケジューリングエージェントは、実行可能プログラムを各パーティションに割り当てる。
いくつかの実行可能プログラムは、スケジューリングエージェントに登録することができる。
この登録プロセスは、資源要求又はサービスレベルアグリーメントをエージェントへ通信することを含むことができる。
次に、エージェントは、登録された実行可能プログラムを、提供された情報に対応する新しく作成されたパーティションに割り当てることによって応答する。
さらに、パーティションの１つは、デフォルトパーティション又は「共通エリア」パーティションとして指定される。
スケジューリングエージェントは、登録されていない実行可能プログラムをデフォルトパーティションに割り当てる。
デフォルトパーティションには、所定の量のシステム資源が割り当てられる。
実行可能プログラムを隔離するために別のパーティションが使用される。
この「隔離」パーティションには、相対的に少ない量の資源が与えられる。
資源の量を少なくすることによって、隔離された実行可能プログラムが適度に進行できる一方、他の実行可能プログラムによって必要とされる資源を消費しないことが確実になる。
【０００９】
いくつかの実施の形態では、スケジューリングエージェントは、デフォルトパーティションを監視する。
スケジューリングエージェントは、デフォルトパーティションに関連した利用レベルがシステム資源のあらかじめ定義された制限を超えているかどうかを判断する。
この利用レベルがあらかじめ定義された制限を超えていない場合、スケジューリングエージェントは、そのパーティション内の実行可能プログラムがオペレーションを継続することを許可する。
一方、あらかじめ定義された制限を超える場合、スケジューリングエージェントは、そのパーティション内の個々の実行可能プログラムによる資源利用を解析する。
１つ又は数個の望ましくない特徴を有するとして特定された実行可能プログラムは、隔離パーティションへ直ちに転送される。
次に、メッセージがアドミニストレータへ送信される。
次に、アドミニストレータは、特定された実行可能プログラムを登録するのか、それら実行可能プログラムを隔離パーティションに放置するのか、それら実行可能プログラムの実行を停止するのか、それとも、他の任意の適切な動作を行うのかを決定することができる。
【００１０】
次に図面を参照して、図１は、代表的な一実施の形態によるシステム１００を示している。
このシステム１００は、プラットフォームのハードウェアレイヤ１３０への低レベルアクセスを制御するホストオペレーティングシステム１２０を含む。
一実施の形態では、ホストオペレーティングシステム１２０は、一例としてそのカーネル内に仮想化レイヤ１２１を含む。
この仮想化レイヤ１２１は、ハードウェアレイヤ１３０の物理資源に対応するソフトウェア構成体（論理デバイス）を作成する。
ハードウェアレイヤ１３０は、ＣＰＵ１３１−１〜１３１−Ｎ、メモリ１３２、ネットワークインターフェース１３３、入出力（Ｉ／Ｏ）インターフェース１３４等の任意の個数の物理資源を含むことができる。
【００１１】
一実施の形態では、仮想資源（たとえば、１つ又は数個の仮想ＣＰＵ、仮想メモリ、仮想ネットワークインターフェースカード、仮想Ｉ／Ｏインターフェース等）が、各パーティション１４１−１〜１４１−Ｎに割り当てられる。
仮想ＣＰＵの個数は、物理ＣＰＵ１３１の個数を超えることができる。
ＣＰＵ仮想化は、各仮想ＣＰＵについて、１組のレジスタ、変換索引バッファ、及び他の制御構造体を設けることによって実施することができる。
したがって、各パーティション１４１は、他のパーティション１４１から隔離される。
これに加えて、各パーティション１４１は、各ゲストオペレーティングシステム１４２を実行するのに使用される。
パーティション１４１に割り当てられた仮想資源は、ゲストオペレーティングシステム１４２には、物理サーバのハードウェア資源として見える。
ゲストオペレーティングシステム１４２は、１つ又は数個の実行可能プログラム１４３を実行するのに使用することができる。
実行可能プログラム１４３は、さまざまなユーザ空間アプリケーション、システムデーモン、又は他の任意の適切なプログラムとすることができる。
【００１２】
図１に示すように、パーティション１４１−１はデフォルトパーティションである。
具体的には、スケジューリングエージェント１２５に登録されていない実行可能プログラムが、デフォルトパーティションに割り当てられる。
適切な量のシステム資源をデフォルトパーティションに割り当てて、複数の実行可能プログラムが満足できるレベルで動作することを可能にすることができる。
また、図１に示すように、パーティション１４１−２は隔離パーティションである。
相対的に少ない量の資源がパーティション１４１−２に割り当てられる。
この少ない量の資源は、限られた個数の隔離された実行可能プログラムが或る量だけ前進することを可能にするのに使用される。
【００１３】
他のパーティション（１４１−３〜１４１−Ｎ）は、登録された実行可能プログラムのオペレーションをサポートするのに使用される。
登録インターフェース１２３は、１つ又は数個の実行可能プログラムをスケジューリングエージェント１２５に登録するのに使用することができる。
登録インターフェース１２３には、登録される実行可能プログラムによる適切なコールによってアクセスすることができる。
代替的に、登録インターフェース１２３には、アドミニストレータが、コマンドラインインターフェース又は他の適切なインターフェース（図示せず）を通じてアクセスすることができる。
登録インターフェース１２３に渡された登録情報１２４は、資源情報又は資源要求を含むことができる。
たとえば、資源情報は、プロセッサ資源及び／又は他の資源への最小アクセスを特定するサービスレベルアグリーメントを含むことができる。
スケジューリングエージェント１２５は、資源情報に従ってパーティション１４１を作成し、新しく作成されたパーティションに対応するグループに実行可能プログラム（複数可）を割り当てる。
実行可能プログラムの割り当ては、グループデータ１２６に反映される。
また、スケジューリングエージェント１２５は、登録されていない実行可能プログラムをデフォルトグループに割り当てる。
【００１４】
各グループは、各パーティション１４１（デフォルトグループ用のパーティション１４１−１、隔離グループ用のパーティション１４１−２、及び登録されたグループ用のパーティション１４１−３〜１４１−Ｎ）によってサポートされる。
スケジューリングエージェント１２５は、さらに、資源シェア１２７を使用して、パーティション１４１内の実行可能プログラムによるＣＰＵ資源１３１−１〜１３１−Ｎへのアクセスもスケジューリングする。
この資源シェア１２７は、各グループが平均して受け取るプロセッサ資源へのアクセス量を定義することができる。
【００１５】
これに加えて、スケジューリングエージェント１２５は、デフォルトパーティション１４１−１によるシステム資源の利用を監視する。
具体的には、スケジューリングエージェント１２５は、適切なシステムコールを行うことによってパーティション１４１−１に関連した利用率を取得する。
パーティション１４１−１の利用率が所定の量を超えている場合、スケジューリングエージェント１２５は、デフォルトグループ内の過度に活動的な実行可能プログラムの特定を試みることができる。
いくつかの実施の形態では、スケジューリングエージェント１２５は、パーティション１４１−１の実行可能プログラムを順番に解析する。
たとえば、いくつかの実行可能プログラム（スケジューリングエージェント１２５等）は、設計により要求されたのと同じ量の資源を消費することを許可される。
それらの実行可能プログラムは、解析から除外することができる。
また、事前の知識を使用して、一定の実行可能プログラムがより有望な候補であることを知ることができる。
この解析は、それらの実行可能プログラムから開始することができる。
解析中、スケジューリングエージェント１２５は、１つ又は数個の前のスケジューリング間隔内の各実行可能プログラムの利用を調べることができる。
（スケジューリングエージェント１２５によって保持されるような）その間隔（複数可）内の実行可能プログラムのプロセッサ利用に基づいて、スケジューリングエージェント１２５は、その実行可能プログラムを過度に活動的な実行可能プログラムとして分類することができる。
【００１６】
過度に活動的な実行可能プログラムが特定された場合、その特定された実行可能プログラムは、デフォルトパーティション１４１−１から隔離パーティション１４１−２へ転送される。
その結果、過度に活動的な実行可能プログラムは、デフォルトグループ内の他の実行可能プログラムのオペレーションを妨害しないことになる。
【００１７】
スケジューリングエージェント１２５は、実行可能プログラムを隔離パーティション１４１−２へ転送すると、アドミニストレータのための通知を生成する。
その後、アドミニストレータは、実行可能プログラムを調べて、適切な応答を決定することができる。
たとえば、より多くのシステム資源を取得することを実行可能プログラムに許可するための合理的な理由が存在する場合がある。
したがって、アドミニストレータは、その実行可能プログラムを登録することができ、それによって、その実行可能プログラムを、パーティション１４１−３〜１４１−Ｎの１つへ転送することを許可することができる。
代替的に、アドミニストレータは、その実行可能プログラムのさらなるオペレーションを停止することもできる。
また、アドミニストレータは、その実行可能プログラムが自身の処理を完了するまで、隔離パーティション１４１−２内にその実行可能プログラムを単に放置することもできる。
【００１８】
図２は、代表的な一実施の形態による、過度に活動的な実行可能プログラムを隔離するためのフローチャートを示している。
このフローチャートは、部分的に、ソフトウェアコードを使用して実施することができる。
たとえば、スケジューリングエージェント１２５及び登録インターフェース１２３を定義するソフトウェアコードを図２のフローチャートに使用することができる。
このソフトウェアコードは、任意の適切なコンピュータ可読媒体に記憶することができる。
【００１９】
ブロック２０１では、デフォルトパーティション及び隔離パーティションを含む複数のパーティションが作成される。
パーティションは、単一のサーバ内又は複数のサーバ内の動作環境を隔離するための物理メカニズム又は論理メカニズムである。
ブロック２０２では、各パーティションがスケジューリング間隔内で平均して受け取るシステム資源（たとえば、プロセッサチック）の量に関係したシェアパラメータが定義される。
ブロック２０３では、実行可能プログラムが登録される。
この登録プロセスは、登録されるさまざまな実行可能プログラムをサポートするための資源要求を特定することができる。
このような資源要求を受け取ると、追加パーティションが作成され、実行可能プログラムは、それらの新しく作成されたパーティションに割り当てられる（ブロック２０４）。
資源要求に対応する新しく作成されたパーティションについて、シェアパラメータが定義される。
登録されていない実行可能プログラムは、デフォルトパーティション又は共通パーティションに割り当てられる（ブロック２０５）。
【００２０】
デフォルトパーティションの利用率が監視される（ブロック２０６）。
この利用率があらかじめ定義された制限未満である場合（ブロック２０７）、プロセスフローはブロック２０６に戻り、監視が継続される。
いくつかの実施の形態では、デフォルトパーティションの反復監視は、スケジューリングエージェントがシステム割り込みによってコールされた時に行われる。
一実施の形態では、スケジューリングエージェントによって行われる監視は、毎秒１回行われ、したがって、スケジューリングエージェントによって課されるオーバーヘッドは比較的小さい。
利用率があらかじめ定義された制限よりも大きい場合、プロセスフローはブロック２０８に進む。
【００２１】
ブロック２０８では、個々の実行可能プログラムが調べられて、それら実行可能プログラムを、必要以上の量の資源にアクセスするものとして特定できるかどうかが判断される。
一実施の形態では、デフォルトパーティション内の実行可能プログラムが調べられて、それら実行可能プログラムが、前のスケジューリング間隔の期間中、制限よりも多くの量のプロセッサ資源（たとえば、プロセッサチック）にアクセスしたかどうかが判断される。
ブロック２０９では、制限を超える実行可能プログラムが、隔離パーティションへ転送される。
ブロック２１０では、アドミニストレータが、転送された実行可能プログラム（もしあれば）の通知を受ける。
ブロック２１０から、プロセスフローはステップ２０６に戻る。
【００２２】
いくつかの代表的な実施の形態は、コンピュータシステムの資源の使用を監視する効率的な方法を提供し、このような使用に対応する。
具体的には、いくつかの代表的な実施の形態は、他の実行可能プログラム上の悪意のあるプログラム（たとえば、ウィルス）の影響を最小にすることを可能にする。
その上、バグ、非互換性、又は他の問題のために破壊的な影響を引き起こすおそれのある他の実行可能プログラムを特定して隔離することができる。
これらの実行可能プログラムの特定によって、システムアドミニストレータが適切な改善を行って、それら実行可能プログラムが他の実行可能プログラムを害することなく適切に機能することを許可することを可能にすることができる。
これに加えて、これらのアクティビティは、比較的少ないオーバーヘッドで行うことができる。
具体的には、いくつかの代表的な実施の形態は、単一のグループ、すなわちパーティションに関連した利用率しか監視する必要がない。
過度に活動的な実行可能プログラムが実際に必要以上の量の資源へのアクセスを開始するまで、個々の実行可能プログラムは調べられない。
【図面の簡単な説明】
【００２３】
【図１】代表的な一実施の形態による、過度に活動的な実行可能プログラムを隔離するコンピュータシステムを示す図である。
【図２】代表的な一実施の形態による、過度に活動的な実行可能プログラムを隔離するためのフローチャートである。
【符号の説明】
【００２４】
１２０・・・ホストＯＳ，
１２１・・・仮想化レイヤ，
１２３・・・登録されたインターフェース，
１２４・・・登録された情報，
１２５・・・スケジューリングエージェント，
１２６・・・グループ，
１２７・・・資源シェア，
１３０・・・ハードウェアレイヤ，
１３２・・・メモリ，
１３３・・・ネットワークインターフェース，
１３４・・・Ｉ／Ｏインターフェース，
１４１・・・パーティション，
１４３・・・実行可能プログラム，
【図１】
2006244483.tif 000003
【図２】
2006244483.tif 000004