(57)【要約】【課題】既存のシステムコールを維持しつつ、システムコールを疎結合されたＣＰＵに実行させるためのシステムコール処理のオフロード方法を提供する。【解決手段】マスタ処理部に適用されたオペレーティングシステムであって、機能追加を許容するオペレーティングシステムに、受け取ったシステムコールをマスタ処理部に疎結合されたスレーブ処理部に転送する転送モジュールを追加し、各ユーザプロセスに所定の環境変数が設定されているときに、システムコール処理用の標準ライブラリに先立って、オフロード対象を含む少なくとも一つのシステムコールを転送モジュールに送出する処理を規定するオフロード用ライブラリを組み込む。【選択図】      図１
2010225122.tif 000002
【特許請求の範囲】
【請求項１】
マスタ処理部に適用されたオペレーティングシステムであって、機能追加を許容するオペレーティングシステムに、受け取ったシステムコールを前記マスタ処理部に疎結合されたスレーブ処理部に転送する転送モジュールを追加し、
各ユーザプロセスに所定の環境変数が設定されているときに、システムコール処理用の標準ライブラリに先立って、オフロード対象を含む少なくとも一つのシステムコールを前記転送モジュールに送出する処理を規定するオフロード用ライブラリを組み込む
ことを特徴とするシステムコールのオフロード方法。
【請求項２】
機能追加を許容するオペレーティングシステムが適用されたマスタ処理部と、
前記マスタ処理部に備えられたＣＰＵと疎結合された別のＣＰＵを有し、前記マスタ処理部から転送されたシステムコールの処理を実行するスレーブ処理部とを備え、
前記マスタ処理部は、
前記オペレーティングシステムの処理を行うカーネル部への追加機能として、受け取ったシステムコールを前記スレーブ処理部に転送する転送モジュールを備えるとともに、
各ユーザプロセスに所定の環境変数が設定されているときに、システムコール処理用の標準ライブラリに先立って、オフロード対象を含む少なくとも一つのシステムコールを前記転送モジュールに送出する処理を規定するオフロード用ライブラリを、前記各ユーザプロセスに組み込むライブラリ差し替え部とを備える
ことを特徴とする疎結合ＣＰＵ型情報処理装置。
【請求項３】
請求項２に記載の疎結合ＣＰＵ型情報処理装置において、
前記オフロード用ライブラリは、前記少なくとも一つのシステムコールに対応して、前記オペレーティングシステムに依存しない標準形式に従って、前記システムコールの定義をコード化するエンコード部を備え、
前記転送モジュールは、前記標準形式に従ってコード化されたシステムコールを、前記オペレーティングシステムにおけるシステムコールに変換するデコード部を備えた
ことを特徴とする疎結合ＣＰＵ型情報処理装置。
【請求項４】
請求項２に記載の疎結合ＣＰＵ型情報処理装置において、
前記転送モジュールは、
オフロード対象のシステムコールそれぞれに対応して、前記システムコールの引数の範囲ごとにオフロードの要否を示す設定情報を保持する設定情報保持部と、
受け取ったシステムコールに含まれる引数が前記設定情報によってオフロードが不要である範囲に含まれることが示された場合に、前記システムコールを前記カーネル部内のシステムコール処理部の処理に供する振替部とを備える
ことを特徴とする疎結合ＣＰＵ型情報処理装置。
【請求項５】
機能追加を許容するオペレーティングシステムが適用されたマスタ処理部と、
前記マスタ処理部に備えられたＣＰＵと疎結合された別のＣＰＵを有し、前記マスタ処理部から転送されたシステムコールの処理を実行するスレーブ処理部とを備え、
前記マスタ処理部は、
前記オペレーティングシステムの処理を行うカーネル部への追加機能として、少なくとも一つのネットワーク処理用システムコールの受付に応じて、このシステムコールを前記スレーブ処理部に転送する転送モジュールを備えるとともに、
各ユーザプロセスに所定の環境変数が設定されているときに、システムコール処理用の標準ライブラリに先立って、前記少なくとも一つのネットワーク処理用システムコールを前記転送モジュールに送出する処理を規定するオフロード用ライブラリを、前記各ユーザプロセスに組み込むライブラリ差し替え部とを備える
ことを特徴とする通信処理装置。
【請求項６】
請求項５に記載の通信処理装置において、
前記オフロード用ライブラリは、前記少なくとも一つのシステムコールに対応して、前記オペレーティングシステムに依存しない標準形式に従って、前記システムコールの定義をコード化するエンコード部を備え、
前記転送モジュールは、前記標準形式に従ってコード化されたシステムコールを、前記オペレーティングシステムにおけるシステムコールに変換するデコード部を備えた
ことを特徴とする通信処理装置。
【請求項７】
請求項５に記載の通信処理装置において、
前記転送モジュールは、
オフロード対象のシステムコールそれぞれに対応して、前記システムコールの引数の範囲ごとにオフロードの要否を示す設定情報を保持する設定情報保持部と、
受け取ったシステムコールに含まれる引数が前記設定情報によってオフロードが不要である範囲に含まれることが示された場合に、前記システムコールを前記カーネル部内のシステムコール処理部の処理に供する振替部とを備える
ことを特徴とする通信処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、疎結合されたＣＰＵ間でシステムコール処理を分担するためのオフロード処理方法およびこれを適用した疎結合ＣＰＵ型情報処理装置並びに通信処理装置に関する。
【背景技術】
【０００２】
疎結合ＣＰＵ構成は、マスタＣＰＵと少なくとも一つのスレーブＣＰＵとをリソースを共有しないで緩やかに結合する構成であり、拡張性の高さが必要とされる情報処理装置に適用されている。
【０００３】
例えば、既存の情報処理装置に搭載されたマスタＣＰＵにスレーブＣＰＵを疎結合し、マスタＣＰＵからスレーブＣＰＵに処理をオフロードすることで、処理性能の向上を図ることができる(特許文献１参照)。
【０００４】
なお、高い拡張性を要求される情報処理装置の例としては、例えば、ＩＰｖ６ネットワークとＩＰｖ４ネットワークとの接続のためのゲートウェイ装置や通信サーバ装置などの通信処理装置が挙げられる。
【０００５】
ここで、既存の情報処理装置にＬｉｎｕｘなどの汎用オペレーティングシステムが搭載されている場合に、マスタＣＰＵと疎結合したスレーブＣＰＵに、マスタＣＰＵからシステムコール処理をオフロードする方法としては、次の２つが考えられる(特許文献２参照)。
【０００６】
一つは、オペレーティングシステムのカーネルにおいて、オフロードするシステムコールのプログラムそのものを変更し、疎結合ＣＰＵにシステムコールを転送する処理を実行するプログラムに置き換える方法である。
【０００７】
もう一つは、スレーブＣＰＵにシステムコールを転送するプログラムをオペレーティングシステムに追加するとともに、カーネル内のシステムコール関数テーブルを変更して、システムコールに応じて追加したプログラムを起動させる方法である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００１−５１４７７８号公報
【特許文献２】特開２００５−１９６７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述したように、従来技術では、オペレーティングシステムのカーネル内のプログラムあるいはデータを変更することによって、システムコールのオフロードが実現されていた。
【００１０】
しかしながら、このように改変されたオペレーティングシステムを通信サーバ装置などの商用システムに適用することは、オペレーティングシステムのライセンスなどの面で困難である。
【００１１】
また、上述した従来技術では、カーネルの改変によって既存のシステムコールが無効にされるので、本来のシステムコールとオフロード用のシステムコールとを共存させることができない。
【００１２】
また、各システムコールをオフロードするか否かは、カーネルの変更を行うか否かと同義であり、カーネルの変更は、システムの一旦停止およびその後の再起動を伴う。したがって、各システムコールをオフロードするか否かを示すオフロード設定をオンラインで変更することはできなかった。
【００１３】
本件開示は、既存のシステムコールを維持しつつ、システムコールを疎結合されたＣＰＵに実行させるためのシステムコール処理のオフロード方法を提供することを目的とする。また、本件開示の装置は、上述のオフロード方法を適用した疎結合ＣＰＵ型情報処理装置および通信処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した目的は、以下に開示するシステムコールのオフロード方法によって達成することができる。
【００１５】
一つの観点によるシステムコールのオフロード方法は、マスタ処理部に適用されたオペレーティングシステムであって、機能追加を許容するオペレーティングシステムに、受け取ったシステムコールをマスタ処理部に疎結合されたスレーブ処理部に転送する転送モジュールを追加し、各ユーザプロセスに所定の環境変数が設定されているときに、システムコール処理用の標準ライブラリに先立って、オフロード対象を含む少なくとも一つのシステムコールを転送モジュールに送出する処理を規定するオフロード用ライブラリを組み込む。
【００１６】
また、上述した目的は、以下に開示する疎結合ＣＰＵ型情報処理装置によって達成することができる。
【００１７】
一つの観点による疎結合ＣＰＵ型情報処理装置は、機能追加を許容するオペレーティングシステムが適用されたマスタ処理部と、マスタ処理部に備えられたＣＰＵと疎結合された別のＣＰＵを有し、マスタ処理部から転送されたシステムコールの処理を実行するスレーブ処理部とを備え、マスタ処理部は、オペレーティングシステムの処理を行うカーネル部への追加機能として、受け取ったシステムコールをスレーブ処理部に転送する転送モジュールを備えるとともに、各ユーザプロセスに所定の環境変数が設定されているときに、システムコール処理用の標準ライブラリに先立って、少なくとも一つのシステムコールを転送モジュールに送出する処理を規定するオフロード用ライブラリを、各ユーザプロセスに組み込むライブラリ差し替え部とを備える。
【００１８】
また、上述した目的は、以下に開示する通信処理装置によって達成することができる。
【００１９】
一つの観点による通信処理装置は、機能追加を許容するオペレーティングシステムが適用されたマスタ処理部と、マスタ処理部に備えられたＣＰＵと疎結合された別のＣＰＵを有し、マスタ処理部から転送されたシステムコールの処理を実行するスレーブ処理部とを備え、マスタ処理部は、オペレーティングシステムの処理を行うカーネル部への追加機能として、少なくとも一つのネットワーク処理用システムコールの受付に応じて、このシステムコールをスレーブ処理部に転送する転送モジュールを備えるとともに、各ユーザプロセスに所定の環境変数が設定されているときに、システムコール処理用の標準ライブラリに先立って、少なくとも一つのネットワーク処理用システムコールを転送モジュールに送出する処理を規定するオフロード用ライブラリを、各ユーザプロセスに組み込むライブラリ差し替え部とを備える。
【発明の効果】
【００２０】
本件開示のシステムコールのオフロード方法によれば、既存のシステムコールを維持しつつ、システムコールを疎結合されたＣＰＵに実行させることができる。また、本件開示の装置によれば、既存のシステムコールを維持しつつ、システムコールを疎結合されたＣＰＵに実行させる疎結合ＣＰＵ型情報処理装置および通信処理装置を実現することができる。
【図面の簡単な説明】
【００２１】
【図１】通信サーバ装置の一実施形態を示す図である。
【図２】ライブラリ差し替え処理を説明する図である。
【図３】ライブラリ差し替え動作を表す流れ図である。
【図４】システムコール転送処理を説明する図である。
【図５】転送モジュールの動作を表す流れ図である。
【発明を実施するための形態】
【００２２】
以下、図面に基づいて、本発明にかかわる疎結合ＣＰＵ型情報処理装置および通信処理装置に対する実施形態について詳細に説明する。
【００２３】
図１に、通信サーバ装置の一実施形態を示す。
【００２４】
図１に示した通信サーバ装置は通信処理装置の一例であり、マスタ処理部２１０とスレーブ処理部２２０とをＰＣＩｅ(PCI express)バスなどを介して疎結合した情報処理装置の一例である。
【００２５】
マスタ処理部２１０は、例えば、いわゆるＩＡ(Intel Architecture)サーバである。マスタ処理部２１０は、オペレーティングシステムの中核処理を実行するカーネル部２１１を備えている。
【００２６】
このカーネル部２１１は、システムコールインタフェース(Ｉ／Ｆ)部２１２および各ネットワーク処理に対応するシステムコールを含む各種のシステムコールに対応するシステムコール(ＳＣ)処理部２１３１、２１３２…を備えている。また、カーネル２１１へのアドオン機能として、後述する転送モジュール２１４と設定情報保持部２１５とが備えられている。転送モジュール２１４は、設定情報保持部２１５に保持された情報に基づいて、受け取ったシステムコールを、ＰＣＩｅバスを介してスレーブ処理部２２０に転送する処理あるいはシステムコールインタフェース２１２に入力する処理のいずれかを実行する。
【００２７】
このようにしてスレーブ処理部２２０に転送されたシステムコールは、カーネル部２２１のシステムコールインタフェース(Ｉ／Ｆ)２２２を介して対応するシステムコール(ＳＣ)処理部２２３１、２２３２…の処理に供される。
【００２８】
図１に示した動的リンク処理部２０２のリンク制御部２０３は、ユーザプロセスに対応する複数のネットワークアプリケーション２０１１〜２０１ｎに、標準ライブラリ２０４およびオフロード用ライブラリ２０５を結合する処理を制御する。なお、図１に示した例では、ネットワークアプリケーション２０１１にオフロード用ライブラリ(オフロード用lib.)と標準ライブラリ(標準lib.)の両方がリンクされている。また、この例では、ネットワークアプリケーション２０１ｎには、標準ライブラリ(標準lib.)のみがリンクされている。
【００２９】
次に、動的リンク処理部２０２によって各ネットワークアプリケーションに結合されるライブラリを差し替える方法について説明する。
【００３０】
図２に、ライブラリ差し替え処理を説明する図を示す。また、図３に、ライブラリ差し替え動作を表す流れ図を示す。
【００３１】
図２に示したネットワークアプリケーション２０１１には、オフロード用ライブラリ２０５を優先的にリンクする旨を示す環境変数LD−PRELOADが設定されている。
【００３２】
このネットワークアプリケーション２０１１の起動時などに、動的リンク処理部２０２のリンク制御部２０３は、この環境変数LD−PRELOADを参照する(図２の符号S1、図３のステップ３０１参照)。
【００３３】
リンク制御部２０３は、参照した環境変数LD−PRELOADによってライブラリが指定されている場合に(ステップ３０２の肯定判定)、指定されたライブラリ(この場合はオフロード用ライブラリ２０５)を優先してロードする(ステップ３０３、図2の符号S2参照)。これにより、図２に示すように、ネットワークアプリケーション２０１１のユーザプロセス空間に、まず、オフロード用ライブラリがロードされる。
【００３４】
次いで、リンク制御部２０３は、ネットワークアプリケーション２０１１のユーザプロセス空間に、標準ライブラリ２０４をロードする(ステップ３０４、図2の符号S3参照)。
【００３５】
このように、リンク制御部２０３は、ネットワークアプリケーション２０１１のユーザプロセス空間に、標準ライブラリ２０４に先立って、オフロード用ライブラリ２０５をロードする。つまり、リンク制御部２３０とオフロード用ライブラリ２０５とは、ライブラリ差し替え部に対応している。
【００３６】
このようにして各ライブラリがロードされた後に、ネットワークアプリケーション２０１１では、各ネットワーク処理の実行に用いられるライブラリプログラムへのジャンプ先を決定するアドレス解決処理が行われる。
【００３７】
このアドレス解決処理により、ネットワークアプリケーション２０１１では、各ネットワーク処理のジャンプ先として、優先的にロードされたオフロード用ライブラリ２０５の対応するシステムコール転送処理プログラムのアドレスが設定される(ステップ３０５)。例えば、図２の符号S4で示すように、上述したアドレス解決処理により、各ネットワーク処理(open, bind)は、本来これらの処理に対応するシステムコール処理に代えて、オフロード用ライブラリのシステムコール転送処理に対応付けられる。
【００３８】
一方、図２に示したネットワークアプリケーション２０１ｎでは、環境変数によって優先的にロードすべきライブラリは指定されていない。
【００３９】
この場合に、リンク制御部２０３は、ステップ３０２の否定判定として、ネットワークアプリケーション２０１ｎのユーザプロセス空間に、標準ライブラリ２０４をロードする(ステップ３０６、図２の符号S5参照)。
【００４０】
ネットワークアプリケーション２０１ｎについてのアドレス解決処理では、各ネットワーク処理のジャンプ先として、標準ライブラリ２０４の対応するシステムコール処理プログラムのアドレスが設定される(ステップ３０７)。
【００４１】
次に、オフロード用ライブラリに含まれる各システムコール転送処理プログラムによって、マスタ処理部２１０のシステムコールを、このマスタ処理部２１０と疎結合されたスレーブ処理部２２０に転送する方法について説明する。
【００４２】
図４に、システムコール転送処理を説明する図を示す。また、図５に、転送モジュールの動作を表す流れ図を示す。
【００４３】
図４に示すように、ネットワーク処理に対応付けられるシステムコール転送処理プログラム(Ｐ)は、対応するシステムコールが定義されたシステムコール定義部２３１を含んでいる。ＴＬＶエンコード部２３２は、システムコール定義部２３１で定義されたシステムコールをＴＬＶ(Type-Length-Value)形式に従ってエンコードし、コード転送部２３３による転送処理に供する。
【００４４】
なお、図４の例では、ネットワーク処理(ｏｐｅｎ)に対応するシステムコール転送処理プログラムを示したが、他のネットワーク処理に対応するシステムコール転送処理プログラムも同様の構成を備えている。
【００４５】
図４に示したコード転送部２３３は、上述したＴＬＶエンコード部２３２で得られたＴＬＶコードを、カーネル部２１１に追加されたアドオン機能部に含まれる転送モジュール２１４に転送する。
【００４６】
図４に示した転送モジュール２１４は、コード受付部２３４とＴＬＶデコード部２３５とオフロード判定部２３６とオフロード転送部２３７とを含んでいる。
【００４７】
また、設定情報保持部２１５には、ネットワーク処理用の各システムコールについて、システムコールの引数の範囲それぞれについて、オフロードが必要であるか否かを設定する情報を保持させておくことができる。なお、図４に示した例では、ネットワーク処理(ｂｉｎｄ)に対応するシステムコールの引数に含まれる宛先ＩＰアドレスの範囲Ｒｂ１について、オフロードを要する旨を示す設定情報が、設定情報保持部２１５に保持されている。一方、宛先ＩＰアドレスの範囲Ｒｂ２については、オフロードが不要である旨の設定情報が、設定情報保持部２１５に保持されている。
【００４８】
上述したコード転送部２３３によって転送されたＴＬＶコードは、転送モジュール２１４のコード受付部２３４によって受け付けられ(図５のステップ３１１)、ＴＬＶデコード部２３５に渡される。
【００４９】
ＴＬＶデコード部２３５は、このＴＬＶコードをデコードして、元のネットワーク処理のシステムコールを復元し(ステップ３１２)、このシステムコールをオフロード判定部２３６の処理に供する。
【００５０】
オフロード判定部２３６は、まず、設定情報保持部２１５にこのシステムコールに対応して保持された設定情報を参照する(ステップ３１３、図４の符号Ｓ１参照)。復元されたシステムコールの引数に含まれる宛先ＩＰアドレスが、対応する設定情報によりオフロードを要する宛先ＩＰアドレスの範囲に含まれている場合に、オフロード判定部２３６は、オフロードを適用するとの判断をする(ステップ３１４の肯定判定)。この場合に、復元されたシステムコールは、オフロード転送部２３７に渡され、このオフロード転送部２３７により、ＰＣＩｅバスを介してスレーブ処理部２２０に転送され(ステップ３１５、図４の符号S2，S3参照)、スレーブ処理部２２０によって処理される。
【００５１】
一方、復元されたシステムコールの引数に含まれる宛先ＩＰアドレスが、対応する設定情報によりオフロードが不要な宛先ＩＰアドレスの範囲に含まれている場合に、オフロード判定部２３６は、オフロードを適用しないとの判断をする(ステップ３１４の否定判定)。
この場合に、復元されたシステムコールは、そのままオフロード判定部２３６からシステムコールインタフェース２１２に渡され(ステップ３１６、図４の符号S４参照)、マスタ処理部２１０内部で処理される。
【００５２】
このように、ユーザプロセスにリンクされたシステムコール転送プログラムにより、システムコールをカーネル部２１１に追加された転送モジュール２１４に転送し、この転送モジュール２１４により、スレーブ処理部２２０への転送することができる。これにより、マスタ処理部２１０のカーネル部２１１のシステムコールインタフェース２１２や各システムコール処理部２１３をそのまま維持しつつ、少なくとも一部のシステムコールをスレーブ処理部２２０にオフロードすることができる。
【００５３】
上述した構成では、システムコール転送プログラムをユーザプロセスにリンクすることと、転送モジュール２１４をカーネル部２１１に追加することによって、疎結合されたスレーブ処理部２２０へのシステムコールのオフロードを実現している。この構成を採用したことによって、以下に述べる効果が得られる。
【００５４】
まず、カーネル部２１１のシステムコールインタフェース２１２や各システムコール処理部２１３の改変を伴わないことは、次の二つの効果を導く。一つは、Ｌｉｎｕｘなどのアドオン機能の追加を許容する汎用オペレーティングシステムが適用された既存のシステムにも、ライセンスなどの問題なしに、上述したシステムコールのオフロードを適用可能である点である。もう一つは、オペレーティングシステムの再起動を伴わずに、上述したシステムコールのオフロードを適用するか否かを含む設定変更を、オンラインで行うことができる点である。
【００５５】
また、ユーザプロセスに設定された環境変数に応じてシステムコール転送プログラムを含むオフロード用ライブラリ２０５を選択的にリンクすることから、ユーザプロセスごとに、システムコールのオフロードを適用するか否かを容易に設定することができる。しかも、ユーザプロセスの環境変数を書き換えることにより、例えば、システムコールのオフロードを有効とするか否かを、このユーザプロセスの起動ごとに変更することができる。
【００５６】
更に、設定情報保持部２１５に保持された設定情報に基づいて、オフロード判定部２３６がシステムコールのオフロードの要否を判定することにより、次に述べる効果が導かれる。例えば、設定情報保持部２１５に保持させる設定情報を調整することにより、特定のＩＰアドレスを宛先とするネットワーク処理のシステムコールについてはオフロードを不要として、マスタ処理部２１０内部で処理することができる。つまり、設定情報保持部２１５を備えた構成では、例えば、宛先ＩＰアドレスに応じて、オフロードの適用の有無を切り替えるといったきめ細かな制御が可能である。また、上述した宛先ＩＰアドレスに限らず、システムコールの引数に含まれる様々な情報について、設定情報保持部２１５にオフロードの要否を設定することができる。
【００５７】
上述したシステムコールのオフロードを実現する構成は、Ｌｉｎｕｘなどのアドオン機能の追加を許容する汎用オペレーティングシステムが適用されたマスタ処理部と、このマスタ処理部に疎結合されたスレーブ処理部を有する情報処理装置に適用可能である。
【００５８】
したがって、上述した通信サーバ装置に限らず、例えば、Ｌｉｎｕｘが適用された既存のゲートウェイ装置などの様々な通信処理装置に疎結合ＣＰＵを追加して、ネットワーク処理の一部を追加された疎結合ＣＰＵにオフロードすることができる。
【００５９】
これにより、ＩＰｖ６ネットワークとＩＰｖ４ネットワークとの接続のためのゲートウェイ装置などに対して望まれている性能向上を実現することができ、ネットワークに流れるデータ量の急速な増大にも対応することが可能となる。
【符号の説明】
【００６０】
２０１１〜２０１ｎ  ネットワークアプリケーション
２０２  動的リンク処理部
２０３  リンク制御部
２０４  標準ライブラリ
２０５  オフロード用ライブラリ
２１０  マスタ処理部
２１１，２２１  カーネル部
２１２，２２２  システムコールインタフェース(Ｉ／Ｆ)
２１３１，２１３２、…、２２３１，２２３２、…  システムコール(ＳＣ)処理部
２１４  転送モジュール
２１５  設定情報保持部
２３１  システムコール定義部
２３２  ＴＬＶエンコード部
２３３  コード転送部
２３４  コード受付部
２３５  ＴＬＶデコード部
２３６  オフロード判定部
２３７  オフロード転送部
【図１】
2010225122.tif 000003
【図２】
2010225122.tif 000004
【図３】
2010225122.tif 000005
【図４】
2010225122.tif 000006
【図５】
2010225122.tif 000007