(57)【要約】【課題】  複数のアプリケーション間でコミュニケーションを行うための機構を提供する。【解決手段】  論理的にパーティション化されたデータ処理システムの複数個の論理的パーティションにおける第１の論理的パーティションにおいて作動する発信元アプリケーションに関連したアプリケーション・プログラミング・インターフェース（ＡＰＩ）が、データを宛先アプリケーションへ送るという要求を受け取る。ＡＰＩは、宛先アプリケーションのロケーションを識別するという要求を仮想化管理機構へ送る。ＡＰＩは、仮想化管理機構から応答を受け取ったことに応じて、宛先アプリケーションのロケーションが、論理的にパーティション化されたデータ処理システムの複数個の論理的パーティションにおける第２の論理的パーティションであるどうかを判断する。宛先アプリケーションのロケーションが第２の論理的パーティションであることに応じて、ＡＰＩはバイパス・プロトコルを使って発信元アプリケーションからの要求を宛先アプリケーションへ送る。【選択図】  図４
2013508833.tif 000002
【特許請求の範囲】
【請求項１】
論理的にパーティション化されたデータ処理システムにおいて、複数個のアプリケーションの間でコミュニケーションを行うための方法であって、
前記論理的にパーティション化されたデータ処理システムの複数個の論理的パーティションにおける第１の論理的パーティションにおいて作動する発信元アプリケーションに関連したアプリケーション・プログラミング・インターフェースによって、データを前記宛先アプリケーションへ送るという要求を受け取るステップと、
前記アプリケーション・プログラミング・インターフェースによって、前記宛先アプリケーションのロケーションを識別するという要求を仮想化管理機構へ送るステップと、
前記仮想化管理機構からの応答を受け取ることに応じて、前記宛先アプリケーションのロケーションが前記論理的にパーティション化されたデータ処理システムの前記複数個の論理的パーティションにおける第２の論理的パーティションであるかどうかを、アプリケーション・プログラミング・インターフェースによって判断するステップと、
前記ロケーションが前記第２の論理的パーティションであることに応じて、前記アプリケーション・プログラミング・インターフェースにより、前記発信元アプリケーションからの要求を前記宛先アプリケーションへ送るためにバイパス・プロトコルを使用するステップと、
を含む方法。
【請求項２】
前記ロケーションが前記第２の論理的パーティションでないことに応じて、前記アプリケーション・プログラミング・インターフェースにより、前記発信元アプリケーションからの要求を前記宛先アプリケーションへ送るためにトランスポート・プロトコルを使用するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記仮想化管理機構により、前記宛先アプリケーションのロケーションを識別するという要求を受け取るステップと、
前記仮想化管理機構により、前記論理的にパーティション化されたデータ処理システムに接続されたネットワーク終了点のハードウェア・アドレスのリストを使用して前記宛先アプリケーションのロケーションを識別するステップと、
前記仮想化管理機構により、前記宛先アプリケーションのロケーションを前記アプリケーション・プログラミング・インターフェースへ送るステップと、
を更に含む、請求項１又は２に記載の方法。
【請求項４】
前記データが前記宛先アプリケーションに関連したアプリケーション・バッファに送られる、請求項１乃至３のいずれかに記載の方法。
【請求項５】
前記宛先アプリケーションが前記データを受け取る準備ができてないことに応じて、前記アプリケーション・プログラミング・アプリケーションにより、前記宛先アプリケーションを作動するオペレーティング・システムに関連したシステム・バッファへ前記データを送るステップを更に含む、請求項４に記載の方法。
【請求項６】
前記バイパス・プロトコルを使用するステップは、中央処理装置（ＣＰＵ）使用率、メモリ使用率、又は入出力（Ｉ／Ｏ）帯域幅の少なくとも１つである資源要件を減少させる、請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記バイパス・プロトコルを使用するステップはリモート・ホスト・アプリケーション終了点を見つけるというトランスポート・プロトコル要素を保存する、請求項１乃至６のいずれかに記載の方法。
【請求項８】
前記バイパス・プロトコルを使用するステップはアプリケーション・プログラミング・インターフェースのソケット情報を保存し、それによって、前記複数個のアプリケーションを修正することを不要にする、請求項１乃至７のいずれかに記載の方法。
【請求項９】
コンピュータ可読記憶媒体に記憶されるコンピュータ可読プログラムであって、前記コンピュータ可読プログラムがコンピューティング装置において実行されるとき、
宛先アプリケーションへデータを送るという発信元アプリケーションからの要求を前記コンピューティング装置に受け取らせるステップと、
前記宛先アプリケーションのロケーションを識別するという要求を仮想化管理機構へ前記コンピューティング装置に送らせるステップと、
前記仮想化管理機構からの応答を受け取ることに応じて、前記宛先アプリケーションのロケーションが、論理的にパーティション化されたデータ処理システムの複数個の論理的パーティションにおける第２の論理的パーティションであるかどうかを前記コンピューティング装置に判断させるステップと、
前記ロケーションが前記第２の論理的パーティションであることに応じて、前記発信元アプリケーションからの要求を前記宛先アプリケーションへ送るためにバイパス・プロトコルを前記コンピューティング装置に使用させるステップと、
を含む、コンピュータ可読プログラム。
【請求項１０】
前記コンピュータ可読プログラムが前記コンピューティング装置において実行されるとき、前記ロケーションが前記第２の論理的パーティションでないことに応じて、前記発信元プリケーションからの要求を前記宛先アプリケーションへ送るためにトランスポート・プロトコルを前記コンピューティング装置に使用させるステップを更に含む、請求項９に記載のコンピュータ可読プロスラム。
【請求項１１】
前記コンピュータ可読プログラムが前記コンピューティング装置において実行されるとき、
前記宛先アプリケーションのロケーションを識別するという要求を前記コンピューティング装置に受け取らせるステップと、
前記論理的にパーティション化されたデータ処理システムに接続されたネットワーク終了点のハードウェア・アドレスのリストを使用して、前記宛先アプリケーションのロケーションを前記コンピューティング装置に識別させるステップと、
前記宛先アプリケーションのロケーションを前記アプリケーション・プログラミング・インターフェースへ前記コンピューティング装置に送らせるステップと、
を更に含む、請求項９又は１０に記載のコンピュータ可読プログラム。
【請求項１２】
前記データが前記宛先アプリケーションに関連したアプリケーション・バッファへ送られる、請求項９乃至１１のいずれかに記載のコンピュータ可読プログラム。
【請求項１３】
前記コンピュータ可読プログラムが前記コンピューティング装置において実行されるとき、前記宛先アプリケーションが前記データを受け取る準備ができてないことに応じて、前記宛先アプリケーションを作動するオペレーティング・システムに関連したシステム・バッファへ前記データを前記コンピューティング装置に送らせるステップを更に含む、請求項１２に記載のコンピュータ可読プログラム。
【請求項１４】
前記バイパス・プロトコルを使用させるステップは、中央処理装置（ＣＰＵ）使用率、メモリ使用率、又は入出力（Ｉ／Ｏ）帯域幅の少なくとも１つである資源要件の減少、リモート・ホスト・アプリケーションの終了点を見つけるというトランスポート・プロトコル要素の保存、又はアプリケーション・プログラミング・インターフェースのソケット情報の保存の少なくとも１つを行い、それによって前記複数個のアプリケーションを修正することを不要にする、請求項９乃至１３のいずれかに記載のコンピュータ・プログラム。
【請求項１５】
プロセッサと、 
前記プロセッサに接続され、前記プロセッサによって実行される命令を内蔵するメモリと
を含み、前記命令が前記プロセッサによって実行されるとき、前記命令は、
宛先アプリケーションへデータを送るという発信元アプリケーションからの要求を前記プロセッサに受け取らせ、
前記宛先アプリケーションのロケーションを識別するという要求を前記仮想化管理機構へ前記プロセッサに送らせ、
前記仮想化管理機構から応答を受け取ること応じて、前記宛先アプリケーションのロケーションが、論理的にパーティション化されたデータ処理システムの複数個の論理的パーティションにおける第２の論理的パーティションであるかどうかを前記プロセッサに判断させ、
前記ロケーションが前記第２の論理的パーティションであることに応じて、前記発信元アプリケーションからの要求を前記宛先アプリケーションへ送るためにバイパス・プロトコルを前記プロセッサに使用させる、
装置。
【請求項１６】
前記命令は、更に、前記ロケーションが前記第２の論理的パーティションでないことに応じて、前記発信元アプリケーションからの要求を前記宛先アプリケーションへ送るためにトランスポート・プロトコルを前記プロセッサに使用させる、請求項１５に記載の装置。
【請求項１７】
前記命令は、更に、
前記宛先アプリケーションのロケーションを識別するという要求を前記プロセッサに受け取らせ、
前記論理的にパーティション化されたデータ処理システムに接続されたネットワーク終了点のハードウェア・アドレスのリストを使用して、前記宛先アプリケーションのロケーションを前記プロセッサに識別させ、
前記宛先アプリケーションのロケーションを、前記アプリケーション・プログラミング・インターフェースへ前記プロセッサに送らせる、
請求項１５又は請求項１６に記載の装置。
【請求項１８】
. 前記データが、前記宛先アプリケーションに関連したアプリケーション・バッファに送られる、請求項１５乃至１７のいずれかに記載の装置。
【請求項１９】
前記命令は、更に、前記宛先アプリケーションが前記データを受け取る準備ができてないことに応じて、前記宛先アプリケーションを作動するオペレーティング・システムに関連したシステム・バッファへ前記データを前記プロセッサに送らせる、請求項１８に記載の装置。
【請求項２０】
前記バイパス・プロトコルを使用させる動作は、中央処理装置（ＣＰＵ）使用率、メモリ使用率、又は入出力（Ｉ／Ｏ）帯域幅の少なくとも１つである資源要件の減少、リモート・ホスト・アプリケーションの終了点を見つけるというトランスポート・プロトコル要素の保存、又はアプリケーション・プログラミング・インターフェースのソケット情報の保存の少なくとも１つを行い、それによって、前記複数個のアプリケーションを修正することを不要にする、請求項１５乃至２０のいずれかに記載の装置。
【請求項２１】
コンピュータ上で作動するとき、請求項１乃至８のステップをすべて遂行するに適したプログラム・コード手段を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理装置および方法の改良に関し、詳しく云えば、論理的にパーティション化されたシステムにおいて高パフォーマンス及び高資源効率のコミュニケーションを行うための装置および方法に関する。
【背景技術】
【０００２】
今日の情報技術インフラストラクチャでは、多くのサーバ・システムが論理的パーティショニングをサポートしている。アプリケーションが配置されている論理的にパーティション化されたシステムの多くの論理的パーティションは、オペレーティング・システムを実行する。そのようなアプリケーションは、同じパーティション内のアプリケーション、同じ論理的にパーティション化されたシステム内のアプリケーション、論理的にパーティション化されたシステムに結合された装置、及び論理的にパーティション化されたシステムに結合された他のシステムおける他のアプリケーション、とコミュニケーションを行う。そのようなコミュニケーションをサポートするために必要なコミュニケーション・プロトコルは、コネクション・オリエンテッドの、順序正しい（in-order）、高信頼性の、且つフロー制御されたデータ転送をサポートしなければならない。これらの要件に適合するプロトコルを実装することは、パフォーマンスの向上を必要とする資源集約的な実装方法に通じる。そのようなパフォーマンスを実現させることは、精巧且つ高価なコミュニケーション・ハードウェアを必要とする。それら要件は、仮想化されたサーバ環境においてもそのまま存続する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、データ処理システムにおいて、複数のアプリケーション間でコミュニケーションを行うための装置、方法、及びコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【０００４】
方法の実施例は、データを宛先アプリケーションに送るという要求を発信元アプリケーションから受け取る。その実施例は、宛先アプリケーションのロケーションを識別するという要求を仮想化管理機構に送る。その実施例は、仮想化管理機構から応答を受け取ったことに応じて、宛先アプリケーションのロケーションが、その論理的にパーティション化されたデータ処理システムの複数の論理的パーティションにおける第２の論理的パーティションであるかどうかを判断する。実施例は、そのロケーションが第２の論理的パーティションであることに応じて、発信元アプリケーションからの要求を宛先アプリケーションに送るためにバイパス・プロトコルを使用する。
【０００５】
別の実施例では、コンピュータ使用可能媒体又はコンピュータ可読媒体に内蔵されるコンピュータ可読プログラムが提供される。そのコンピュータ可読プログラムは、コンピューティング装置において実行されるとき、方法の実施例に関して上述された種々のオペレーション及びそれらの組み合わせをコンピューティング装置に遂行させる。
【０００６】
更に別の実施例では、システム／装置が提供される。そのシステム／装置は、１つ又は複数個のプロセッサとその１つ又は複数個のプロセッサに連結されたメモリとを含み得る。メモリは命令を含み得るし、その命令は、１つ又は複数個のプロセッサによって実行されるとき、方法の実施例に関して上述された種々のオペレーション及びそれらのオペレーションの組み合わせを、その１つ又は複数個のプロセッサに遂行させ得る。
【０００７】
本発明に関するこれら及び他の特徴および利点は、本発明の実施例に関する以下の詳細な説明において記述され、それらの記述から当業者には明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】実施例の態様を有利に利用し得るデータ処理システムのブロック図である。
【図２】実施例を具現化し得る例示的な論理的にパーティション化されたプラットフォームのブロック図である。
【図３】実施例に従って、仮想化された環境にあるデータ処理システムを示す例示的なブロック図である。
【図４】実施例に従って、論理的パーティションのアプリケーション・プログラミング・インターフェースによって遂行されるオペレーションのフローチャートである。
【図５】実施例に従って、論理的パーティション・システムの仮想化機構によって遂行されるオペレーションのフローチャートである。
【発明を実施するための形態】
【０００９】
本発明の実施例は、論理的にパーティション化されたシステムの論理的パーティション上で作動する複数個のアプリケーション間での高パフォーマンス且つ高資源効率のコミュニケーションを行うための機構を提供しようとするものである。コミュニケーションのパフォーマンスは、小さい待ち時間による高いスループットを提供することによって向上する。スループットを向上させること及び待ち時間を減少させることによって、論理的にパーティション化されたシステムは、処理装置、メモリ、入出力帯域幅等のようなその論理的にパーティション化されたシステムのコンポーネントに関する処理要件を減少させる。その機構は、論理的パーティション間でコミュニケーションを行うためのバイパス・トランスポート・プロトコルを含む。論理的パーティション上で実行される各オペレーション・システム内のコミュニケーション・ソフトウェアは、バイパス・トランスポート・プロトコルが展開されるべき時を決定する。従って、アプリケーション・プログラミング・インターフェースが維持され、それにより、変更のなく既存のアプリケーションをサポートし、コネクション・オリエンテッドの、高信頼性の、順序正しい、且つフロー制御されたデータ転送をサポートする。
【００１０】
従って、本実施例は、分散型データ処理環境、単一のデータ処理装置等を含む多くの様々なタイプのデータ処理環境において利用され得る。本実施例の特定の要素及び機能の説明に関する背景を与えるために、図１及び図２は、以後、本実施例の態様を具現化し得る例示的環境として提供される。図１及び図２に付随する説明は、主として高パフォーマンス且つ高資源効率のコミュニケーション機構の単一データ処理装置の実施態様に焦点を合わせているが、これは、単なる一例であって、本発明の特徴に関して何らかの限定を提示又は示唆することを意図するものではない。それとは反対に、本実施例は、高パフォーマンスの且つ高資源効率のコミュニケーション機構を実装し得る分散型データ処理環境及び実施態様を包含することを意図する。
【００１１】
次に、図面を参照すると、特に、図１及び図２を参照すると、本発明の実施例を実装し得るデータ処理環境を表わす図が提供される。図１及び図２は、単なる例であり、本発明の態様又は実施例を実装し得る環境に関して何らかの限定を主張又は示唆することを意図するものではないことは明らかであろう。本発明の主旨及び技術的範囲から逸脱することなく、図示の環境に対する多くの修正が行われ得る。
【００１２】
本実施例では、コンピュータ・アーキテクチャがハードウェア及びソフトウェアの組み合わせとして具現化される。コンピュータ・アーキテクチャのソフトウェア部はマイクロコード又はミリコードと呼ばれることがある。ハードウェア及びソフトウェアの組み合わせは、基本入出力システム（ＢＩＯＳ）、仮想マシン・モニタ（ＶＭＭ）、ハイパーバイザ、アプリケーション等のようなコンピュータのソフトウェアの残り部分を作動させる命令セット及びシステム・アーキテクチャを作成する。初期の組み合わせによって作成されたコンピュータ・アーキテクチャは、わずかかもしれない定義されたインターフェースを介する以外は、そのコンピュータ・ソフトウェア（ＢＩＯＳ等）にとって不変である。
【００１３】
次に、図面、特に図１を参照すると、本実施例の態様を有利に利用し得るデータ処理システムのブロック図が示される。図示のように、データ処理システム１００は、プロセッサ・ユニット１１１ａ〜１１１ｎを含む。プロセッサ・ユニット１１１ａ〜１１１ｎの各々は、プロセッサ及びキャッシュ・メモリを含む。例えば、プロセッサ・ユニット１１１ａは、プロセッサ１１２ａ及びキャッシュ・メモリ１１３ａを含み、プロセッサ・ユニット１１１ｎは、プロセッサ１１２ｎ及びキャッシュ・メモリ１１３ｎを含む。
【００１４】
プロセッサ・ユニット１１１ａ〜１１１ｎはメイン・バス１１５に接続される。メイン・バス１１５は、システム・プレーナ１２０及びメモリ・カード１２３をサポートする。システム・プレーナ１２０は、データ・スイッチ１２１及びメモリ・コントローラ／キャッシュ１２２を含む。メモリ・コントローラ／キャッシュ１２２は、多数のデュアル・インライン・メモリ・モジュール（ＤＩＭＭ）を有するローカル・メモリ１１６を含むメモリ・カード１２３をサポートする。
【００１５】
データ・スイッチ１２１は、ネイティブＩ／Ｏ（ＮＩＯ）プレーナ１２４内にあるバス・ブリッジ１１７及びバス・ブリッジ１１８に接続している。図示のように、バス・ブリッジ１１８は、システム・バス１１９を介してペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ブリッジ１２５及び１２６に接続している。ＰＣＩブリッジ１２５は、ＰＣＩバス１２８を介して種々のＩ／Ｏ装置に接続している。図示のように、ハード・ディスク１３６が、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）ホスト・アダプタ１３０を介してＰＣＩバス１２８に接続され得る。グラフィックス・アダプタ１３１が、ＰＣＩバス１２８に直接に又は間接的に接続され得る。ＰＣＩブリッジ１２６は、ＰＣＩバス１２７を介してネットワーク・アダプタ１３４及びアダプタ・カード・スロット１３５ａ〜１３５ｎを介して外部データ・ストリームのための接続を提供する。
【００１６】
業界標準アーキテクチャ（ＩＳＡ）バス１２９が、ＩＳＡブリッジ１３２を介してＰＣＩバス１２８に接続している。ＩＳＡブリッジ１３２は、直列接続のシリアル１及びシリアル２を有するＮＩＯコントローラ１３３を介して相互接続機能を提供する。フロッピ・ドライブ接続、キーボード接続、及びマウス接続がＮＩＯコントローラ１３３によって提供され、データ処理システム１００が対応する入力装置を介してユーザからのデータ入力を受けることを可能にする。更に、ＩＳＡバス１２９に接続された不揮発性ＲＡＭ（ＮＶＲＡＭ）１４０が、或るタイプのデータを電源機構の問題のようなシステム妨害又はシステム障害から保護するために不揮発性メモリを提供する。システム・ファームウェア１４１も基本入出力システム（ＢＩＯＳ）機能を実装するためにＩＳＡバス１２９に接続される。サービス・プロセッサ１４４が、システム診断プログラム又はシステム・サービスのための機能を供給するために、ＩＳＡバス１２９に接続している。
【００１７】
オペレーティング・システム（ＯＳ）がハード・ディスク１３６に格納される。そのハード・ディスクは、データ処理システムによる実行のための追加アプリケーション・ソフトウェアのための記憶装置を提供することも可能である。ＮＶＲＡＭ１４０は、現場交換可能ユニット（ＦＲＵ）の分離のためにシステム変数及びエラー情報を格納するために使用される。システム起動時に、ブートストラップ・プログラムがオペレーティング・システムをロードし、オペレーティング・システムの実行を開始する。オペレーティング・システムをロードするために、ブートストラップ・プログラムは、先ずハード・ディスク１３６におけるオペレーティング・システム・カーネル・イメージを見つけ、そのＯＳカーネル・イメージをメモリにロードし、そのオペレーティング・システム・カーネルによって提供された初期アドレスにジャンプする。一般に、オペレーティング・システムはデータ処理システム内のランダム・アクセス・メモリ（ＲＡＭ）にロードされる。一旦ロードされそして初期化されると、オペレーティング・システムは、プログラムの実行を制御し、資源の割り振り、スケジューリング、入出力制御、及びデータ管理のようなサービスを提供し得る。
【００１８】
本実施例は、多くの異なるハードウェア構成、並びにブートストラップ・プログラム及びオペレーティング・システムのようなソフトウェアを利用して種々のデータ処理システムにおいて具現化され得る。データ処理システム１００は、例えば、スタンド・アローン・システム、或いはローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）のようなネットワークの一部であってもよい。上述したように、図１は、本発明の種々の実施例に対するアーキテクチャ上の限定ではなく、一例であると意図されており、従って、図１に示された特定の要素は、本発明の実施例を具現化し得る環境に関する限定とみなされるべきでない。
【００１９】
次に図２を参照すると、本実施例を具現化し得る典型的な論理的にパーティション化されたプラットフォームのブロック図が示される。論理的にパーティション化されたプラットフォーム２００におけるハードウェアは、例えば、図１におけるデータ処理システム１００のハードウェアを使用して具現化され得る。
【００２０】
論理的にパーティション化されたプラットフォーム２００はパーティション化されたハードウェア２３０、オペレーティング・システム２０２、２０４、２０６、２０８、及び仮想マシン・モニタ２１０を含む。オペレーティング・システム２０２、２０４、２０６、及び２０８は、単一のオペレーティング・システムの複数コピーであってもよく、或いは、論理的にパーティション化されたプラットフォーム２００上で同時に作動する複数の異種オペレーティング・システムであってもよい。これらのオペレーティング・システムは、パーティション管理ファームウェア、例えば、ハイパーバイザのような仮想化機構とインターフェースするように設計された、例えば、ＯＳ／４００を使用して具現化され得る。ＯＳ／４００は、これらの実施例おける単なる一例として使用される。勿論、特定の具現化に依存して、ＡＩＸ及びLinuxのような他のタイプのオペレーティング・システムが使用されてもよい（ＡＩＸはインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ社）の商標であり、LinuxはLinus Torvaldsの商標である）。オペレーティング・システム２０２、２０４、２０６、及び２０８は、それぞれ、論理的パーティション２０３、２０５、２０７、及び２０９内に置かれている。
【００２１】
ハイパーバイザ・ソフトウェアは、プラットフォーム（この例では、仮想マシン・モニタ２１０）を具現化するために使用可能なソフトウェアの一例であり、ＩＢＭ社から入手可能である。ファームウェアは、例えば、リード・オンリ・メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、及び電気的に消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）のような、電力なしでその内容を保持するメモリ・チップに格納される「ソフトウェア」である。
【００２２】
論理的パーティション２０３、２０５、２０７、及び２０９は、パーティション・ファームウェア・ローダ２１１、２１３、２１５、及び２１７も含む。パーティション・ファームウェア・ローダ２１１、２１３、２１５、及び２１７は、ＩＰＬ又は初期ブートストラップ・コード、ＩＥＥＥ−１２７５標準オープン・ファームウェア、及びＩＢＭ社から入手可能なランタイム・アブストラクション（ＲＴＡＳ）を使用して具現化され得る。
【００２３】
論理的パーティション２０３、２０５、２０７、及び２０９がインスタンス化されるとき、ブートストラップ・コードのコピーが仮想マシン・モニタ２１０によって論理的パーティション２０３、２０５、２０７、及び２０９にロードされる。しかる後、制御がブートストラップ・コードによってそのブートストラップ・コードに移され、しかる後、オープン・ファームウェア及びＲＴＡＳをロードする。しかる後、論理的パーティション２０３、２０５、２０７、及び２０９に関連した又は割り当てられたプロセッサが、論理的パーティション・ファームウェアを実行するために論理的パーティションのメモリへディスパッチされる。
【００２４】
パーティション化されたハードウェア２３０は、複数個のプロセッサ２３２〜２３８、複数個のシステム・メモリ素子２４０〜２４６、複数個の入出力（Ｉ／Ｏ）アダプタ２４８〜２６２、及び記憶ユニット２７０を含む。プロセッサ２３２〜２３８、メモリ素子２４０〜２４６、ＮＶＲＡＭ記憶装置２９８、及びＩ／Ｏアダプタ２４８〜２６２の各々は、論理的にパーティション化されたプラットフォーム２００内において、各々がオペレーティング・システム２０２、２０４、２０６、及び２０８の１つに対応する多数の論理的パーティション２０３、２０５、２０７、及び２０９の１つに割り当てられる。
【００２５】
仮想マシン・モニタ２１０は、論理的にパーティション化されたプラットフォーム２００のパーティション化を生成及び強化するために論理的パーティション２０３、２０５、２０７、及び２０９に関する多くの機能及びサービスを遂行する。仮想マシン・モニタ２１０は、基本的なハードウェアと同様のファームウェアで具現化された仮想マシンである。従って、仮想マシン・モニタ２１０は、論理的にパーティション化されたプラットフォーム２００のすべてのハードウェア資源を仮想化することによって、独立したＯＳイメージ２０２、２０４、２０６、及び２０８の同時実行を可能にする。
【００２６】
サービス・プロセッサ２９０は、論理的パーティション２０３、２０５、２０７、及び２０９におけるプラットフォーム・エラーの処理のような様々なサービスを提供するために使用され得る。サービス・プロセッサ２９０は、ＩＢＭ社のようなベンダにエラーを報告するサービス・エージェントとしても作用し得る。ハードウェア・システム・コンソール２８０によって、種々の論理的パーティションのオペレーションが制御され得る。ハードウェア・システム・コンソール２８０は、システム管理者が種々の論理的パーティションへの資源の再割り振りを含む様々な機能を行い得る個別のデータ処理システムである。
【００２７】
図３は、実施例に従って、仮想化された環境におけるデータ処理システムを図解する例示的なブロック図を示す。論理的にパーティション化されたデータ処理システム３００は、クライアント又はイニシエータとも呼ばれる複数個の論理的パーティション（ＬＰＡＲ）３１０、３２０、３３０を有する。ＬＰＡＲ３１０は、一組のアプリケーション・プログラミング・インターフェース（ＡＰＩ）３１４を伴うオペレーティング・システム３１２のインスタンス及び１つ又は複数個の稼動するアプリケーション３１６を有する。ＬＰＡＲ３２０は、ＡＰＩ３２４を伴うオペレーティング・システム３２２及び１つ又は複数個のアプリケーション３２６を有する。ＬＰＡＲ３３０は、ＡＰＩ３３４を伴うオペレーティング・システム３３２及び１つ又は複数個のアプリケーション３３６を有する。論理的にパーティション化されたデータ処理システム３００はＬＰＡＲ３１０、３２０、及び３３０だけを開示しているが、本実施例はそのようなものに限定されない。むしろ、本発明の主旨及び技術的範囲から逸脱することなく、任意の数のＬＰＡＲが本実施例の機構によって利用され得る。
【００２８】
ＬＰＡＲ ３１０、３２０、及び３３０は、仮想化層３７０を介して相互にコミュニケーションを行い得る。仮想化層３７０は、オペレーティング・システム３１２、３２２、及び３３２の多数のインスタンスが、論理的にパーティション化されたデータ処理システム３００上で同時に稼動することを可能にするためにコミュニケーション及び資源管理を行うソフトウェアである。仮想化層３７０は、プロセッサ・タイム・スライス・シェアリング、メモリ・アロケーション等のようなタスクを遂行する。仮想化層３７０は、例えば、ハイパーバイザであってもよい。
【００２９】
アプリケーション３１６、３２６、及び３３６は、ネットワーク３８２を介して他のネットワーク・アプリケーションとコミュニケーションを行うネットワーク・アプリケーション、或いは同じデータ処理システムにおける他のアプリケーションとコミュニケーションを行うローカルのデータ処理システム・アプリケーションを含み得る。例えば、アプリケーション３１６の１つはアプリケーション３３６の１つとコミュニケーションを行う。アプリケーション３１６、３２６、及び３３６は、それぞれ、アプリケーション・バッファ３１７、３２７、及び３３７の関連セットも有し得る。ネットワーク３８２を介してネットワーク・アプリケーションに対するコミュニケーションを行うとき、アプリケーション３１６、３２６、及び３３６は、ＴＣＰ／ＩＰプロトコル・スイートの一部であるＴＣＰのようなコネクション・オリエンテッドの、信頼性の高い、順序正しいデリバリのフロー制御されたプロトコルを使って、並びに、アダプタ３１８、３２８、及び３３８を介して、ネットワーク３８２に対する仮想化層３７０及びネットワーク層３８０にコミュニケーションを行うオペレーティング・システム３１２、３２２及び３３２を使って、トランスポート・プロトコル・コールを行う。ネットワーク層３８０は、ネットワーク・コミュニケーションのためのタスクを遂行するソフトウェアである。ネットワーク層３８０は、末端間のパケット・デリバリ、高品質のサービス・メンテナンス、エラー制御等のようなタスクを遂行し得る。
【００３０】
アプリケーション３１６、３２６、及び３３６がＡＰＩ３１４、３２４、及び３３４を使ってトランスポート・プロトコルをアクセスすることにより、アプリケーション３１６、３２６、及び３３６は、リモート・アプリケーションへの接続を開くこと、デリバされるべきデータを待ち行列に入れること、データを受け取ること、データ転送の終了時に接続をクローズすること等を可能にされる。従って、トランスポート・プロトコルは、そのプロトコルが、トランスポート・プロトコル層、ネットワーク・プロトコル層、リンク層、及び、ネットワーク・コミュニケーションには必要であってもローカルのコミュニケーションには必要でないかもしれないコミュニケーション・アダプタ・ドライバの処理、を必要とするので、資源集約的である。
【００３１】
本実施例は、論理的にパーティション化されたデータ処理システム３００のような仮想化されたサーバ・プラットフォームのＬＰＡＲ３１０、３２０、及び３３０において作動するアプリケーション３１６、３２６、及び３３６相互間の高パフォーマンス・コミュニケーションを提供する。高パフォーマンス（高帯域幅及び低待ち時間トランスポート）の提供に加えて、本実施例により提供されるコミュニケーションは、中央処理装置（ＣＰＵ）使用率、メモリ使用率、入出力（Ｉ／Ｏ）帯域幅等のような、コミュニケーションに関する資源要件を減らす。高帯域幅コミュニケーションを提供するために、本実施例は、バイパス・トランスポート・プロトコルと呼ばれる少ない資源集約的なプロトコルを提供する。バイパス・トランスポート・プロトコルは、ネットワーク・コミュニケーションに使用されるトランスポート・プロトコルと同じ多く属性を含むが、そのコミュニケーションが、論理的にパーティション化されたデータ処理システム３００では、ＬＰＡＲ３１０、３２０、及び３３０におけるアプリケーション３１６、３２６、及び３３６の間のコミュニケーションであるという事実を活用する。従って、リモート・ホスト・アプリケーションの終了点を見つけるというトランスポート・プロトコル要素が維持される。リモート・アプリケーションの終了点は、コミュニケーション・アダプタのハードウェア・アドレスを含む一組のアドレシング要素によって特徴づけられる。即ち、アプリケーション３１６、３２６、及び３３６の終了点に関連したコミュニケーション・アダプタ３１８、３２８、及び３３８のハードウェア・アドレスは、論理的にパーティション化されたデータ処理システム３００内のＬＰＡＲ３１０、３２０、及び３３０の１つに対するものであるということを決定され得る。
【００３２】
例えば、アプリケーション３１６のうちの１つがＡＰＩ３１４へのデータ送信コールを行うとき、ＡＰＩ３１４は、伝送されるべきアプリケーションがＬＰＡＲ３２０又は３３０のような論理的にパーティション化されたデータ処理システム３００のＬＰＡＲの１つにあるかどうかを判断するために、仮想化層３７０を用いてアダプタ３１８を介してチェックを行う。仮想化層３７０がＬＰＡＲ対ＬＰＡＲのコミュニケーションを行うので、仮想化層３７０は、ネットワーク終了点のすべてのハードウェア・アドレスのリストに含まれ得るネットワーク終了点のすべてのハードウェア・アドレスに関する知識を有する。従って、仮想化層３７０は、宛先が、論理的にパーティション化されたデータ処理システム３００の内部にあるか外部にあるかを判断し得る。伝送されるべきアプリケーションが、例えば、ＬＰＡＲ３２０におけるアプリケーション３３６の１つであるということを仮想化層３７０が応答する場合、ＡＰＩ３１４は、アプリケーション３３６をローカルのアプリケーションであると識別し、その識別を格納し、そしてアプリケーション３１６乃至アプリケーション３３６のコミュニケーションのためにそのバイパス・トランスポート・プロトコルを使用する。ＡＰＩ３１４は、アプリケーション３１６及びアプリケーション３３６の間のコミュニケーションの期間中、識別を一度しか行わず、従って、資源要件における追加の低減を行う。バイパス・トランスポート・プロトコルは、完全なトランスポート・プロトコルを使用せずに、プロセッサ・データ・ムーブ機能のようなデータ処理システム・ハードウェアを使用し、従って、高帯域幅及び低待ち時間をもたらす。
【００３３】
一旦、ＡＰＩ３１４が、仮想化層３７０から受け取った識別に基づいて使用されるべきプロトコルのタイプを識別すると、アプリケーション３３６がデータを受け取る準備ができる場合、ＡＰＩ３１４は、アプリケーション３１６に関連したアプリケーション・バッファ３１７から、アプリケーション３３６に関連したリモート・アプリケーション・バッファ３３７にデータを転送する。アプリケーション３３６がそのデータを受け取る準備ができていない場合には、ＡＰＩ３１４は、オペレーティング・システム３３２に関連したシステム・バッファ（図示されてない）にそのデータを送り得る。従って、ＡＰＩ３１４は、ＬＰＡＲ ３１０からＬＰＡＲ ３３０にパケットを内部的に搬送するために必要なプロセスだけを遂行し、それによって、ネットワーク・コミュニケーションには必要かもしれないがローカル・コミュニケーションには必要ない、トランスポート・プロトコル層、ネットワーク・プロトコル層、リンク層、及びコミュニケーション・アダプタ・ドライバ処理のような、トランスポート・プロトコルには必要な資源集約的なプロセスを除去する。
【００３４】
従って、バイパス・プロトコルの使用は、アプリケーション・データの順序を維持し、論理的にパーティション化されたデータ処理システム３００内の宛先にそのデータが送られることになっているという決定が既に行われているので、データ保全のための更なる処理を必要としない。バイパス・トランスポート・プロトコルは、ＡＰＩ３１４、３２４、及び３３４のフロー・アプリケーション機能によってフロー制御をサポートし、アプリケーションＡＰＩの十分な互換性が維持される。例えば、ソケットＡＰＩは、アプリケーション・データがフロー制御されることを可能にするソケット・バッファ機能を有し、ソケット・ベースのアプリケーションは、アドレス・ファミリを含むことへの変更を必要としない。即ち、アプリケーション３１６、３２６、及び３３６に対する変更又は修正は必要なく、アプリケーション３１６、３２６、及び３３６は、通常、接続をクローズする。更に、ＡＰＩ３１４、３２４、及び３３４のソケット情報は保全される。全体的な資源効率は、マシン資源の使用率を最小にするように設計されているバイパス・プロトコルを使用することにより達成される。バイパス・プロトコルによって与えられる資源効率の例は、ＴＣＰのような外部コミュニケーション・プロトコルに対する要件である再試行タイマ及びアルゴリズム、整合性チェック等を必要としない大きい層パケット・サイズであってもよい。
【００３５】
当業者には明らかなように、本発明は、システム、方法、又はコンピュータ・プログラムとして具現化され得る。従って、本発明の態様は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例（ファームウェア、駐在ソフトウェア、マイクロコード等を含む）、又は、本明細書では一般に「回路」、「モジュール」、もしくは「システム」と呼ばれるソフトウェア及びハードウェアの態様を組み合わせた実施例の形体を取り得る。更に、本発明の態様は、コンピュータ使用可能なプログラム・コードで具現化された、任意の１つ又は複数個のコンピュータ可読媒体に実装されるコンピュータ・プログラムの形式を取り得る。
【００３６】
１つ又は複数個のコンピュータ可読媒体の任意の組み合わせを利用することも可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線、又は半導体システム、装置、デバイス、或いは上記のものの任意の適切な組み合わせであってもよいがそれらに限定されない。コンピュータ可読媒体の更に特殊な例（限定的なリスト）は、１つまたは複数個のワイヤを有する電気的接続体、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤＲＯＭ）、光学的記憶装置、磁気記憶装置、或いは上記のものの任意の適切な組み合わせを含むであろう。本明細書との関連で、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによる使用、或いはそれらに関連してプログラムを含み得る又は格納し得る任意の実体的な媒体であってもよい。
【００３７】
コンピュータ可読信号媒体は、例えば、ベースバンドで又は搬送波の一部として具現化されたコンピュータ可読プログラム・コードを伴う伝播データ信号を含み得る。そのような伝播信号は、電気磁気的、光学的、又はそれらの任意の適切な組み合わせを含む任意の種々の形式を取り得るが、それらに限定されない。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないコンピュータ可読媒体、及び、命令実行システム、装置、又はデバイスよる使用のために、或いはそれに関連した使用のために、プログラムを伝送、伝播、又は搬送し得る任意のコンピュータ可読媒体であってもよい。
【００３８】
コンピュータ可読媒体上に具現化されるコンピュータ・コードは、無線通信、有線通信、光ファイバ・ケーブル、高周波通信（ＲＦ）等、或いはそれの任意の適切な組み合わせを含むがこれらに限定されない任意の適切な媒体を使用して送信され得る。
【００３９】
本発明の態様に対するオペレーションを実行するためのコンピュータ・プログラム・コードは、Jａvａ、Smalltalk 、C++等のようなオブジェクト指向プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来のプロシージャ型プログラミング言語を含む１つ又は複数個のプログラミング言語の任意の組み合わせで書かれ得る（Jａvａはサン・マイクロシステムズ社の商標である）。プログラム・コードは、全体的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージのように部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ及び部分的にリモート・コンピュータ上で、或いは全体的にリモート・コンピュータ又はサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るし、外部コンピュータへの接続は（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）行われ得る。
【００４０】
本発明の態様が、本発明の実施例に従って、方法、装置（システム）及びコンピュータ・プログラムのフローチャート、及び／又はブロック図に関連して後述される。フローチャート及び／又はブロック図における各ブロック、並びにフローチャート及び／又はブロック図におけるブロックの組み合わせがコンピュータ・プログラム命令によって具現化され得るということは当然である。これらのコンピュータ・プログラム命令は、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャート及び／又はブロック図のブロックにおいて指定された機能／行為を具現化するための手段を作成するように、マシンを製造するための汎用コンピュータ、特殊目的コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに提供され得る。
【００４１】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体にも格納され得るし、コンピュータ可読媒体に格納された命令が、フローチャート、ブロック図のブロックにおいて指定された機能／行為を具現化する命令を含む製品を製造するような特定の態様で機能するよう、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを指示し得る。
【００４２】
コンピュータ・プログラム命令は、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にもロードされ得るし、コンピュータ又は他のプログラム可能な装置上で実行される命令が、フローチャート、ブロック図のブロックにおいて指定された機能／行為を具現化するためのプロセスを提供するようにコンピュータ実施プロセスを作成するよう、コンピュータ、他のプログラム可能装置、又は他のデバイスにおいて一連の動作ステップを遂行させる。
【００４３】
次に図４及び図５を参照すると、これらの図は、論理的にパーティション化されたシステムおけるパーティション間で高パフォーマンス及び高資源効率のコミュニケーションの例示的オペレーションを概説するフローチャートを提供する。図４は、本実施例に従って論理的パーティションのアプリケーション・プログラミング・インターフェースによって遂行されるオペレーションを示す。そのオペレーションが開始するとき、アプリケーション・プログラミング・インターフェース（ＡＰＩ）が、データを宛先アプリケーションに送る要求を発信元アプリケーションから受け取る（ステップ４０２）。ＡＰＩは、その要求に関連した宛先アプリケーションのアイデンティティを決定し（ステップ４０４）、宛先アプリケーションのロケーションを識別するために仮想化層に関連した仮想化管理機構にロケーション識別要求を送る（ステップ４０６）。しかる後、ＡＰＩは、宛先アプリケーションのロケーション識別子を受け取り（ステップ４０８）、その宛先アプリケーションのロケーションが同じデータ処理システムの別のＬＰＡＲにおける別のアプリケーションであるかどうかを判断する（ステップ４１０）。ステップ４１０において、宛先アプリケーションが同じデータ処理システムの別のＬＰＡＲにおける別のアプリケーションである場合、ＡＰＩは、バイパス・プロトコルを使用して発信元アプリケーションからの要求を宛先アプリケーションに送り（ステップ４１２）、しかる後、オペレーションを終了する。ステップ４１０において、宛先アプリケーションが同じデータ処理システムの別のＬＰＡＲおける別のアプリケーションではない場合、ＡＰＩは、トランスポート・プロトコルを使用して発信元アプリケーションからの要求を宛先アプリケーションに送り（ステップ４１４）、しかる後、オペレーションを終了する。
【００４４】
図５は、本実施例に従って論理的にパーティション化されたシステムの仮想化機構によって遂行されるオペレーションを示す。オペレーションが開始するとき、仮想化機構は、データ処理システムの論理的パーティションのアプリケーション・プログラミング・インターフェース（ＡＰＩ）から要求を受け取る（ステップ５０２）。仮想化機構は、その要求が宛先アプリケーションのロケーションを識別する要求であるかどうかを判断する（ステップ５０４）。ステップ５０４において、その要求が宛先アプリケーションのロケーションを識別する要求である場合、仮想化機構は宛先アプリケーションのロケーションを決定して（ステップ５０６）、そのロケーションを要求元のＡＰＩに送り（ステップ５０８）、しかる後、オペレーションを終了する。ステップ５０４において、要求が別のアプリケーションにパケットを送る要求ある場合、仮想化機構は、その要求を宛先アプリケーションに送り（ステップ５１０）、しかる後、オペレーションを終了する。
【００４５】
それらの図におけるフローチャート及びブロック図は、本発明の様々な実施例によるシステム、方法、及びコンピュータ・プログラムの可能な実施態様のアーキテクチャ、機能、及びオペレーションを示す。この点では、フローチャート又はブロック図における各ブロックは、モジュール、セグメント、或いは、指定された論理的機能を具現化するための１つ又は複数個の実行可能な命令を含むコード部分、を表わし得る。或る代替の具現化方法では、ブロックに記載された機能は図面に記載された順序から外れて生じ得るということに留意されたい。例えば、連続して示された２つのブロックが、実際には、実質的に同時に実行され得るし、ブロックが時には関連の機能に依存して逆の順序で実行され得る。ブロック図及び／又はフローチャートの各ブロック、並びにブロック図及び／又はフローチャートにおけるブロックの組み合わせが、指定された機能又は行為を遂行する特殊目的のハードウェア・ベースのシステム又は特殊目的のハードウェア及びコンピュータ命令の組み合わせによって具現化され得るということも留意されたい。
【００４６】
従って、本実施例は、論理的にパーティション化されたシステムにおける高パフォーマンス及び高資源効率のコミュニケーションのための機構を提供する。バイパス・プロトコルは、論理的パーティション・コミュニケーションに対するイントラ・システムの論理的パーティションに関するトランスポート・プロトコル・オーバヘッドを透明に回避する。バイパス・プロトコルは、フロー制御及びデータの順序正しいデリバリをサポートし、イントラ・システムの転送を介したデータの信頼性及び保全性、並びに、事象の効率的な通知及び処理を保証する。スループットを向上させること及び待ち時間を減少させることによって、論理的にパーティション化されたシステムは、処理装置、メモリ、入出力帯域幅等のようなその論理的にパーティション化されたシステムのコンポーネントの処理要件を減少させる。
【００４７】
上記したように、本実施例が、全体的にハードウェアの実施例、全体的にソフトウェアの実施例、又はハードウェア要素及びソフトウェア要素の両方を含む実施例の形式を取り得るということは明らかであろう。１つの実施例では、その実施例の機構は、ファームウェア、駐在ソフトウェア、マイクロコード等を含むがそれに限定されないソフトウェア又はプログラム・コードで具現化される。
【００４８】
プログラム・コード格納及び／又は実行するに適したデータ処理システムは、システム・バスを介してメモリ・エレメントに直接に又は間接的に連結された少なくとも１つのプロセッサを含むであろう。メモリ・エレメントは、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、及び、コードが実行中に大容量記憶装置から検索されなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的記憶装置を提供するキャッシュ・メモリ、を含み得る。
【００４９】
入出力装置又はＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイス等を含むが、それらに限定されない）が、システムに直接に或いは介在するＩ／Ｏコントローラを介して結合され得る。データ処理システムが、介在する専用ネットワーク又は公衆ネットワークを介して他のデータ処理システム又はリモート・プリンタ又は記憶装置に結合されることを可能にするために、ネットワーク・アダプタもそのシステムに結合され得る。モデム、ケーブル・モデム、及びイーサネット・カードは、少数の現在入手可能なタイプのネットワーク・アダプタである。
【００５０】
本発明に関する記述は、図解及び説明を目的として与えられており、完全無欠であること或いは開示された形式の発明に限定されることを意図するものではない。当業者には、多くの修正及び変更が明らかであろう。本実施例は、本発明の原理、実用的な応用例を最適に説明するために、及び当業者が、意図された特定の用途に適するように種々の修正を施された種々の実施例に関して本発明を理解することを可能にするために、選択及び記述された。
【図１】
2013508833.tif 000003
【図２】
2013508833.tif 000004
【図３】
2013508833.tif 000005
【図４】
2013508833.tif 000006
【図５】
2013508833.tif 000007
【国際調査報告】
2013508833.tif 000008
2013508833.tif 000009