JP5962493B2 - プログラム、情報処理装置およびオブジェクト送信方法 - Google Patents

プログラム、情報処理装置およびオブジェクト送信方法 Download PDF

Info

Publication number
JP5962493B2
JP5962493B2 JP2012277894A JP2012277894A JP5962493B2 JP 5962493 B2 JP5962493 B2 JP 5962493B2 JP 2012277894 A JP2012277894 A JP 2012277894A JP 2012277894 A JP2012277894 A JP 2012277894A JP 5962493 B2 JP5962493 B2 JP 5962493B2
Authority
JP
Japan
Prior art keywords
connection
type
data
control unit
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012277894A
Other languages
English (en)
Other versions
JP2014123182A (ja
Inventor
敏章 佐伯
敏章 佐伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012277894A priority Critical patent/JP5962493B2/ja
Priority to US14/058,760 priority patent/US20140181249A1/en
Publication of JP2014123182A publication Critical patent/JP2014123182A/ja
Application granted granted Critical
Publication of JP5962493B2 publication Critical patent/JP5962493B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

本発明はプログラム、情報処理装置およびオブジェクト送信方法に関する。
現在、ソフトウェアを開発するときプログラミング言語としてオブジェクト指向言語を用いることが多くなっている。オブジェクト指向言語では、オブジェクトの種類として、フィールドとメソッドとを含むオブジェクトの型を定義しておく。オブジェクトの型はクラスと呼ぶこともあり、フィールドは属性やメンバ変数と呼ぶこともあり、メソッドはメンバ関数と呼ぶこともある。オブジェクト指向言語で記述されたプログラムを実行すると、オブジェクトの型からフィールドに具体的なデータを代入したオブジェクトが生成される。コンピュータのメモリ上には、オブジェクトの構造に応じてそのオブジェクトに含まれるフィールドのデータが配置される。1つのオブジェクトに含まれる複数のフィールドのデータが、メモリの連続した記憶領域に格納されるとは限らない。
上記のようなオブジェクト指向言語は、複数のコンピュータがネットワークを介して通信する分散処理システムで動作するソフトウェアを開発するときに用いられることもある。オブジェクト指向言語で記述されたプログラムを複数のコンピュータに実行させると、あるコンピュータから他のコンピュータにオブジェクトが送信されることがある。
従来、送信側では、ライブラリやフレームワークなどのミドルウェアにより、オブジェクトがネットワークで伝送可能な形式のメッセージに変換される(シリアライズ)。例えば、複数のフィールドのデータが所定の規則に従った順序で並べられる。そして、シリアライズされたメッセージが、オペレーティングシステム(OS:Operating System)および通信インタフェースを介してネットワークに出力される。受信側では、通信インタフェースおよびOSを介して、シリアライズされたメッセージが取得される。そして、ライブラリやフレームワークなどのミドルウェアにより、メッセージから各フィールドのデータが抽出されてメモリ上にオブジェクトが復元される(デシリアライズ)。
なお、あるノードから他のノードにメッセージを送信するにあたって、受信側ノードの主記憶に複数の受信バッファを設け、受信側ノードのネットワークアダプタがOSを介さずに主記憶の何れかの受信バッファにメッセージを書き込むシステムが提案されている。提案されたシステムでは、受信バッファはメッセージのヘッダに基づいて選択される。
特開平9−167143号公報
ところで、コンピュータ間でオブジェクトを送信する従来の方法では、受信側のコンピュータにおいて、ソフトウェアによりメッセージを解析しメッセージから各フィールドのデータを抽出してオブジェクトを復元する処理の負荷が大きくなりやすい。このため、最高速度の高い通信インタフェースを使用しても、ソフトウェアによるオブジェクトの組み立てがボトルネックとなってオブジェクトの送信速度が向上しないことがある。
一方、通信インタフェースの中には、メモリ上の不連続な複数の記憶領域にあるデータを結合してメッセージを生成・送信し、また、受信したメッセージを分割してメモリ上の不連続な複数の記憶領域に書き込むハードウェアを備えているものが存在する。このようなハードウェア処理は、scatter/gatherDMA(Direct Memory Access)と呼ばれることがある。しかしながら、コンピュータ間では通常、構造の異なる複数の型のオブジェクトが送信される。そのため、従来は、受信したメッセージをどの様に分割しどの様にメモリに書き込めばよいかを通信インタフェースが画一的に判断できず、上記の通信インタフェースのハードウェア処理を活用することが難しかった。
1つの側面では、本発明は、通信インタフェースのハードウェア処理を活用してオブジェクトの送信を効率化することが可能なプログラム、情報処理装置およびオブジェクト送信方法を提供することを目的とする。
1つの態様では、他のコンピュータと通信を行うコンピュータに実行させるプログラムが提供される。プログラムを実行するコンピュータは、それぞれが2以上のデータ項目を含む複数のオブジェクト型に対応する複数のコネクションを他のコンピュータとの間に確立する。送信するオブジェクトの型が複数のオブジェクト型の何れかに該当するとき、複数のコネクションの中からオブジェクトの型に対応するコネクションを選択し、選択したコネクションを用いてオブジェクトを他のコンピュータに送信する。
1つの態様では、通信インタフェースと制御部とを有する情報処理装置が提供される。通信インタフェースは、それぞれが2以上のデータ項目を含む複数のオブジェクト型に対応する複数のコネクションを他の情報処理装置との間に確立する。制御部は、送信するオブジェクトの型が複数のオブジェクト型の何れかに該当するとき、複数のコネクションの中からオブジェクトの型に対応するコネクションを選択し、選択したコネクションを用いてオブジェクトを他の情報処理装置に送信するように通信インタフェースを制御する。
1つの態様では、オブジェクト送信方法が提供される。オブジェクト送信方法では、第1の情報処理装置と第2の情報処理装置との間に、それぞれが2以上のデータ項目を含む複数のオブジェクト型に対応する複数のコネクションを確立する。送信するオブジェクトの型が複数のオブジェクト型の何れかに該当するとき、複数のコネクションのうちオブジェクトの型に対応するコネクションを用いて、オブジェクトを第1の情報処理装置から第2の情報処理装置に送信する。第2の情報処理装置が備えるオブジェクトを受信する通信インタフェースから第2の情報処理装置が備えるメモリに、オブジェクトを受信したコネクションに応じた方法でオブジェクトに含まれる2以上のデータ項目を配置する。
1つの側面では、通信インタフェースのハードウェア処理を活用してオブジェクトの送信を効率化することが可能となる。
第1の実施の形態の情報処理システムを示す図である。 第2の実施の形態の情報処理システムを示す図である。 サーバ装置のハードウェア例を示すブロック図である。 サーバ装置の機能例を示すブロック図である。 オブジェクトからメッセージを生成する例を示す図である。 メッセージを分割してバッファに格納する例を示す図である。 コネクションテーブルとクレジットテーブルの例を示す図である。 scatterリストの例を示す図である。 オブジェクト送信制御の手順例を示すフローチャートである。 オブジェクト受信制御の手順例を示すフローチャートである。 他のオブジェクト送信制御の手順例を示すフローチャートである。 他のオブジェクト受信制御の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、情報処理装置10,20を備える。情報処理装置10,20は、サーバコンピュータでもよいし、ユーザが操作するクライアントコンピュータでもよい。情報処理装置10と情報処理装置20とは、ネットワークを介して通信を行う。
情報処理装置10,20は、それぞれオブジェクトを扱うプログラムを実行する。プログラムのソースコードは、例えば、オブジェクト指向言語によって記述される。「オブジェクト」は、プログラムによって定義された型(例えば、クラス)に応じた構造をもち、2以上のデータ項目を含み得る。これら2以上のデータ項目は、型(整数型や浮動小数点型など)が異なってもよい。なお、「オブジェクト」は、オブジェクト指向のプログラムが扱う狭義のオブジェクトに限らず、構造体データであってもよい。第1の実施の形態では、情報処理装置10から情報処理装置20にオブジェクトを送信することを考える。
情報処理装置10は、通信インタフェース11および制御部12を有する。通信インタフェース11は、有線または無線でネットワークに接続するインタフェースであり、例えば、NIC(Network Interface Card)である。制御部12は、プロセッサを含み得る。「プロセッサ」は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)でもよいし、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの回路を含んでもよい。また、「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)であってもよい。プロセッサは、例えば、RAM(Random Access Memory)などのメモリに記憶されたプログラムを実行する。
通信インタフェース11は、複数のオブジェクトの型に対応する複数のコネクションを情報処理装置20との間に確立する。コネクションとしては、TCP(Transmission Control Protocol)コネクションや、InfiniBandのRC(Reliable Connection)を用いることができる。図1の例では、通信インタフェース11は、型Aに対応するコネクション3aと、型Bに対応するコネクション3bと、型Cに対応するコネクション3cとを、情報処理装置20との間に確立している。専用のコネクションを用意するオブジェクトの型は、情報処理装置10から情報処理装置20に送信され得るオブジェクトの型の一部であってもよい。その場合、送信され得るオブジェクトの型の中で相対的に送信頻度が高い型に対して専用のコネクションを用意することが好ましい。
制御部12は、通信インタフェース11を介したオブジェクトの送信を制御する。制御部12は、送信するオブジェクトの型が専用のコネクションを用意した型であるとき、確立されている複数のコネクションの中からそのオブジェクトの型に対応するコネクションを選択する。そして、制御部12は、選択したコネクションを用いてオブジェクトを送信するように通信インタフェース11を制御する。例えば、型Aのオブジェクト4aはコネクション3aを用いて送信し、型Bのオブジェクト4bはコネクション3bを用いて送信し、型Cのオブジェクト4cはコネクション3cを用いて送信する。
好ましくは、コネクション3aでは型A以外の型のオブジェクトは送信せず、コネクション3bでは型B以外の型のオブジェクトは送信せず、コネクション3cでは型C以外の型のオブジェクトは送信しない。送信するオブジェクトの型が専用のコネクションを用意していない型である場合、制御部12は、例えば、コネクション3a,3b,3c以外のコネクションを用いてオブジェクトを送信するように通信インタフェース11を制御する。特定のオブジェクトの型に対応付けられていない非専用のコネクションは、通信インタフェース11が予め確立しておいてもよいし、送信時に動的に確立してもよい。
オブジェクトを送信するときは、オブジェクトがその型に応じた形式(フォーマット)のメッセージに変換される。例えば、オブジェクトに含まれる2以上のデータ項目が、オブジェクトの型に応じた順序で並べられる。複数の専用のコネクションが確立されているとき、送信されるメッセージの形式はコネクションに応じて異なると言うこともできる。オブジェクトの形式の変換は、制御部12がソフトウェア処理として行うこともできるし(シリアライズ)、通信インタフェース11がハードウェア処理として行ってもよい。後者のハードウェア処理は、例えば、通信インタフェース11が備えるscatter/gatherDMA機能を利用して実現される。その場合、例えば、制御部12から通信インタフェース11に、各データ項目が記憶されているメモリ上の位置が通知される。
情報処理装置20は、通信インタフェース21およびメモリ22を有する。通信インタフェース21は、通信インタフェース11と同様、有線または無線でネットワークに接続するインタフェースであり、例えば、NICである。メモリ22は、プログラムに従って処理されるデータを記憶するRAMなどの記憶装置である。
通信インタフェース21は、複数のオブジェクトの型に対応する複数のコネクションを情報処理装置10との間に確立する。通信インタフェース21は、情報処理装置10からメッセージを受信すると、メッセージが受信されたコネクションを判定する。判定したコネクションが何れかのオブジェクトの型に対応する専用のコネクションであるとき、通信インタフェース21は、判定したコネクションに応じた方法でメッセージからオブジェクトの各データ項目を抽出してメモリ22に書き込む。データ項目は2以上抽出されることがあり、2以上のデータ項目はメモリ22の不連続な記憶領域に書き込まれ得る。
上記の通信インタフェース21のハードウェア処理は、例えば、通信インタフェース21が備えるscatter/gatherDMA機能を利用して実現される。その場合、例えば、専用のコネクション毎に、メッセージの形式と抽出される各データ項目を書き込むべきメモリ22上の位置とを示すフォーマット情報を、予め通信インタフェース21に設定しておく。すると、通信インタフェース21は、メッセージを受信したコネクションに対応するフォーマット情報に基づいて、メッセージから各データ項目を抽出してメモリ22に書き込む。通信インタフェース21のハードウェア処理を利用することで、オブジェクトの組み立て(デリシアライズ)をソフトウェア処理として行わなくてよい。
例えば、型Aのオブジェクトに含まれる2以上のデータ項目の順序と、各データ項目の長さと、各データ項目を書き込むべきメモリ22上の位置とを示すフォーマット情報を、コネクション3aと対応付けて通信インタフェース21に設定しておく。同様に、型Bについてのフォーマット情報を、コネクション3bと対応付けて通信インタフェース21に設定し、型Cについてのフォーマット情報を、コネクション3cと対応付けて通信インタフェース21に設定しておく。オブジェクトの構造(すなわち、メッセージの構造)が型A,B,Cの間で異なっても、通信インタフェース21は、メッセージを受信したコネクションに対応するフォーマット情報を参照することでメッセージを適切に処理できる。
なお、メッセージを受信したコネクションが特定のオブジェクトの型に対応する専用のコネクションでない場合、通信インタフェース21は、例えば、受信したメッセージをストリームとしてそのままメモリ22に書き込む。すると、ソフトウェア処理としてのデシリアライズによってメッセージが解析され、メッセージからデータ項目が抽出されてオブジェクトが復元される。ただし、メッセージの受信からオブジェクトの復元までの間に、メモリ22上ではメッセージやデータ項目のコピーが複数回発生することになる。
第1の実施の形態の情報処理システムによれば、複数のオブジェクトの型に対応する複数のコネクションが情報処理装置10と情報処理装置20との間に確立される。そして、送信するオブジェクトの型に応じて複数のコネクションが使い分けられる。よって、情報処理装置20の通信インタフェース21は、メッセージを受信したコネクションに応じた方法で当該メッセージを処理することで、メッセージからオブジェクトの各データ項目を適切に抽出してメモリ22に書き込むことが可能となる。これにより、通信インタフェース21のハードウェア処理を活用して情報処理装置20のソフトウェア処理の負荷を軽減することができ、情報処理装置10,20の間のオブジェクト送信を効率化できる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、クライアント装置30、ネットワーク41およびサーバ装置100,200を含む。クライアント装置30とサーバ装置100,200はネットワーク41に接続されている。ネットワーク41は、例えば、LAN(Local Area Network)である。
クライアント装置30は、ユーザが操作する端末装置としてのコンピュータである。クライアント装置30は、ユーザ操作に応じて、サーバ装置100,200に所望の情報処理を実行させる。例えば、クライアント装置30は、アプリケーションプログラムの実行を開始するコマンドや終了するコマンドをサーバ装置100,200に送信する。
サーバ装置100,200は、オブジェクト指向言語を用いて作成されたアプリケーションプログラムを実行するサーバコンピュータである。サーバ装置100,200では、それぞれOSが動作しており、アプリケーションプログラムを実行するための基盤となるライブラリやフレームワークなどのミドルウェアがOS上で動作している。サーバ装置100とサーバ装置200で並列にアプリケーションプログラムが実行され、これに伴ってサーバ装置100,200の間でオブジェクトが送信され得る。オブジェクト送信の詳細な手続きは、ミドルウェアやOSによって制御される。
第2の実施の形態では、主にサーバ装置100からサーバ装置200にオブジェクトを送信する場合を考える。サーバ装置100は第1の実施の形態の情報処理装置10の一例であり、サーバ装置200は第1の実施の形態の情報処理装置20の一例である。
図3は、サーバ装置のハードウェア例を示すブロック図である。サーバ装置100は、CPU101、RAM102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、ディスクドライブ106およびNIC110を有する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、サーバ装置200は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムや情報処理に用いられるデータを一時的に記憶する揮発性メモリである。なお、サーバ装置100は、RAM以外の種類のメモリを備えてもよく、複数の種類のメモリを備えてもよい。
HDD103は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性記憶装置である。なお、サーバ装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性記憶装置を備えてもよく、複数の種類の不揮発性記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、サーバ装置100に接続されたディスプレイ42に画像を出力する。ディスプレイ42としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OELD:Organic Electro-Luminescence)ディスプレイなど各種のディスプレイを用いることができる。
入力信号処理部105は、サーバ装置100に接続された入力デバイス43から入力信号を取得し、CPU101に通知する。入力デバイス43としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなど各種の入力デバイスを用いることができる。また、サーバ装置100には複数の種類の入力デバイスが接続されてもよい。
ディスクドライブ106は、記録媒体44に記録されたプログラムやデータを読み取る駆動装置である。記録媒体44として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ106は、例えば、CPU101からの命令に従って、記録媒体44から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
NIC110は、ネットワーク41を介してクライアント装置30やサーバ装置200と通信を行う通信インタフェースである。NIC110は、ケーブルが接続される有線インタフェースでもよいし、アクセスポイントに接続する無線インタフェースでもよい。
ただし、サーバ装置100はディスクドライブ106を備えなくてもよく、専らクライアント装置30などの端末装置からアクセスされる場合には画像信号処理部104や入力信号処理部105を備えなくてもよい。また、ディスプレイ42や入力デバイス43は、サーバ装置100の筐体と一体に形成されてもよい。クライアント装置30やサーバ装置200も、サーバ装置100と同様のハードウェアによって実現できる。
なお、NIC110は第1の実施の形態の通信インタフェース11の一例であり、CPU101は第1の実施の形態の制御部12の一例である。また、サーバ装置200が備えるNICは第1の実施の形態の通信インタフェース21の一例であり、サーバ装置200が備えるRAMは第1の実施の形態のメモリ22の一例である。
図4は、サーバ装置の機能例を示すブロック図である。
サーバ装置100は、前述のように、NIC110を有する。また、サーバ装置100は、通信制御部121、制御情報記憶部122、データ処理部131およびオブジェクト記憶部132を有する。通信制御部121およびデータ処理部131は、例えば、ソフトウェアのモジュールとして実現される。制御情報記憶部122およびオブジェクト記憶部132は、例えば、RAM102に確保した記憶領域として実現される。
NIC110は、送受信部111、メモリ112およびDMAコントローラ113を有する。NIC110の上記ユニットはハードウェアとして実現できる。
送受信部111は、ネットワーク41を介してサーバ装置200にメッセージを送信し、また、ネットワーク41を介してサーバ装置200からメッセージを受信する。メッセージを送信するにあたり、送受信部111は、通信制御部121からの指示に応じてサーバ装置200との間にコネクションを確立する。コネクションは、ネットワーク41上に形成する論理的な通信経路であり、例えば、TCPコネクションやInfiniBandのRCである。送受信部111は、サーバ装置200との間に複数のコネクションを確立できる。複数のコネクションは、TCPポート番号などのコネクション番号によって識別される。メッセージの送信に用いるコネクションは通信制御部121から指定される。
メモリ112は、RAMなどの揮発性メモリであり、通信制御部121から受け付けるgatherリストを記憶する。ただし、メモリ112は不揮発性メモリであってもよい。gatherリストは、送信するメッセージに含める複数のフィールドとそれらフィールドのメッセージ内での順序を示す。gatherリストは、各フィールドのデータが記憶されたオブジェクト記憶部132上の位置と当該フィールドの長さの情報を含む。
DMAコントローラ113は、通信制御部121からの指示に応じてメッセージを送受信部111に送信させ、また、送受信部111が受信したメッセージを処理する。DMAコントローラ113は、ネットワーク41に出力するストリーム形式のメッセージを通信制御部121から取得すると、当該メッセージを送受信部111に送信させる。一方、DMAコントローラ113は、通信制御部121からgatherリストを指定したメッセージ送信要求を受け付けると、ハードウェア処理によりオブジェクト記憶部132に直接アクセスする。そして、DMAコントローラ113は、gatherリストに従って複数のフィールドのデータを取得し、メッセージを組み立てて送受信部111に送信させる。
通信制御部121は、NIC110を用いた通信を制御する。通信制御部121は、例えば、オブジェクト指向プログラムを実行するためのライブラリの中の通信用モジュールとして実装できる。その場合、通信制御部121は、OSのAPI(Application Programming Interface)を呼び出すことで、OSを介してNIC110にアクセスする。
サーバ装置100からサーバ装置200にオブジェクトを送信し始める前に、通信制御部121は、送信され得るオブジェクトの型(例えば、クラス)のうち2以上の型それぞれに対して、専用のコネクションをNIC110に確立させる。通信制御部121は、データ処理部131からオブジェクト送信要求を受け付けると、送信するオブジェクトの型が専用のコネクションを用意した型であるか判定する。専用のコネクションを用意した型でない場合、通信制御部121は、オブジェクト記憶部132から複数のフィールドのデータを取得してメッセージを生成し、OSを介してNIC110にメッセージを渡す。一方、専用のコネクションを用意した型である場合、通信制御部121は、NIC110のDMA機能を利用してNIC110にメッセージを組み立てさせる。すなわち、通信制御部121は、メッセージに代えてgatherリストを生成してNIC110に渡す。
制御情報記憶部122は、通信制御部121がオブジェクト送信を制御するために参照する制御情報を記憶する。制御情報記憶部122は、例えば、オブジェクト指向プログラムを実行するためのライブラリから使用される記憶領域である。制御情報には、オブジェクトの型とコネクションとの対応関係を示すコネクション情報や、オブジェクトを受信するサーバ装置200側でのバッファの空き状況を示すクレジット情報が含まれる。
データ処理部131は、オブジェクト記憶部132上にオブジェクトを生成してデータ処理を行う。データ処理部131は、例えば、クライアント装置30からの指示に応じて実行されるアプリケーションプログラムとして実装される。データ処理部131は、サーバ装置200にオブジェクトを送信するとき、通信制御部121にオブジェクトの送信を要求する。オブジェクトを送信するとき、データ処理部131は、送信制御のために一時的に用いられるパラメータをフィールドとしてオブジェクトに挿入することがある。
オブジェクト記憶部132は、オブジェクト指向プログラムにおいて定義されたオブジェクトの型(例えば、クラス)に応じた構造をもつオブジェクトを記憶する。オブジェクト記憶部132は、例えば、アプリケーションプログラムから使用されるユーザ記憶領域である。オブジェクト記憶部132上では、1つのオブジェクトに含まれる複数のフィールドのデータが、不連続な複数の記憶領域に分散して記憶されていることがある。
なお、通信制御部121と制御情報記憶部122は、アプリケーションプログラムに対して通信機能を提供する通信層に属すると言うことができる。データ処理部131とオブジェクト記憶部132は、アプリケーション層に属すると言うことができる。
また、上記ではNIC110がDMAコントローラ113を有すると説明したが、NIC110が複数のDMAコントローラを有してもよい。1つのDMAコントローラが2以上のコネクションまたは2以上のgatherリストを担当してもよいし、1つのDMAコントローラが1つのコネクションまたは1つのgatherリストのみを担当してもよい。前者の場合、例えば、各DMAコントローラが、メッセージを送信する毎に、使用するgatherリストを選択すればよい。後者の場合、例えば、通信制語部121からの指示に応じて使用するgatherリストが事前に特定されることで、各DMAコントローラはメッセージを送信する毎にgatherリストを選択しなくてもよい。
サーバ装置200は、NIC210を有する。また、サーバ装置200は、通信制御部221、制御情報記憶部222、データ処理部231およびオブジェクト記憶部232を有する。通信制御部221およびデータ処理部231は、例えば、ソフトウェアのモジュールとして実現される。制御情報記憶部222およびオブジェクト記憶部232は、例えば、RAMに確保した記憶領域として実現される。サーバ装置200の上記ユニットは、サーバ装置100のNIC110、通信制御部121、制御情報記憶部122、データ処理部131およびオブジェクト記憶部132に対応する。
NIC210は、送受信部211、メモリ212およびDMAコントローラ213を有する。NIC210の上記ユニットは、ハードウェアとして実現でき、NIC110の送受信部111、メモリ112およびDMAコントローラ113に対応する。
送受信部211は、ネットワーク41を介してサーバ装置100からメッセージを受信し、また、ネットワーク41を介してサーバ装置100にメッセージを送信する。
メモリ212は、RAMなどの揮発性メモリであり、コネクションに対応付けて通信制御部221から受け付けるscatterリストを記憶する。ただし、メモリ212は不揮発性メモリであってもよい。scatterリストは、あるコネクションで受信するメッセージに含まれる複数のフィールドとそれらフィールドのメッセージ内での順序を示す。scatterリストは、各フィールドのデータが書き込まれるべきオブジェクト記憶部232上の位置と当該フィールドの長さの情報を含む。なお、上記の専用のコネクション1つに対して、メッセージ複数個分のバッファを用意するため、オブジェクト記憶部232上の指し示す位置が異なる複数のscatterリストが用意される。
DMAコントローラ213は、送受信部211が受信したメッセージを処理し、また、通信制御部221からの指示に応じてメッセージを送受信部211に送信させる。DMAコントローラ213は、送受信部211がメッセージを受信すると、メッセージが受信されたコネクションに対応するscatterリストをメモリ212から取得することを試みる。scatterリストが存在しない場合、DMAコントローラ213は、受信されたメッセージを通信制御部221に渡す。一方、scatterリストが存在する場合、DMAコントローラ213は、ハードウェア処理によって、メッセージから複数のフィールドのデータを抽出しオブジェクト記憶部232に直接書き込む。
通信制御部221は、NIC210を用いた通信を制御する。通信制御部221は、例えば、オブジェクト指向プログラムを実行するためのライブラリの中の通信用モジュールとして実装できる。通信制御部221は、NIC210からOSを介してストリーム形式のメッセージを受け取ると、メッセージから複数のフィールドのデータを抽出し、オブジェクト記憶部232上にオブジェクトを再現する。一方、DMA機能によってメッセージを処理した旨の通知をNIC210から受け取ると、通信制御部221は、データが書き込まれたオブジェクト記憶部232上のバッファをデータ処理部231に通知する。
制御情報記憶部222は、通信制御部221がオブジェクト受信を制御するために参照する制御情報を記憶する。制御情報記憶部222は、例えば、オブジェクト指向プログラムを実行するためのライブラリから使用される記憶領域である。制御情報には、オブジェクトの型とコネクションとの対応関係を示すコネクション情報や、オブジェクトの型に対応するNIC210に設定すべきscatterリストが含まれる。
データ処理部231は、サーバ装置100から受信されたオブジェクトのデータがオブジェクト記憶部232に書き込まれると、そのデータを処理する。オブジェクト記憶部232に書き込まれるデータの一部は、サーバ装置100からオブジェクトを受け取るために一時的に用いられるパラメータである。データ処理部231は、あるバッファに書き込まれたデータが不要になると、空いたバッファを通信制御部221に通知する。
オブジェクト記憶部232は、オブジェクト指向プログラムにおいて定義されたオブジェクトの型(例えば、クラス)に応じた構造をもつオブジェクトを記憶する。オブジェクト記憶部232には、専用のコネクションを用意したオブジェクトの型と対応付けて、オブジェクトに含まれるフィールドのデータを一時的に記憶するバッファを列挙したテーブルが設けられる。テーブルに含まれる複数のバッファを使い回すことで、メッセージが受信される毎にオブジェクトの記憶領域を動的に確保しなくてもよく、また、不要な記憶領域を自動的に解放する処理(ガーベッジコレクション)の負担が軽減される。
なお、通信制御部221と制御情報記憶部222は、アプリケーションプログラムに対して通信機能を提供する通信層に属すると言うことができる。データ処理部231とオブジェクト記憶部232は、アプリケーション層に属すると言うことができる。
また、上記ではNIC210がDMAコントローラ213を有すると説明したが、NIC210が複数のDMAコントローラを有してもよい。1つのDMAコントローラが2以上のコネクションまたは2以上のscatterリストを担当してもよいし、1つのDMAコントローラが1つのコネクションまたは1つのscatterリストのみを担当してもよい。前者の場合、例えば、各DMAコントローラが、メッセージを受信する毎に、使用するscatterリストを選択すればよい。後者の場合、例えば、通信制語部221からの指示に応じて使用するscatterリストが事前に特定されることで、各DMAコントローラはメッセージを受信する毎にscatterリストを選択しなくてもよい。
図5は、オブジェクトからメッセージを生成する例を示す図である。ここでは、5個のフィールド(フィールドA−1〜A−5)を含むオブジェクトの型Aと、4個のフィールド(フィールドB−1〜B−4)を含むオブジェクトの型Bが定義されているとする。
サーバ装置100のオブジェクト記憶部132には、型Aのオブジェクトに含まれるフィールドA−1〜A−5のデータが、不連続な複数の記憶領域に分散して記憶されている可能性がある。サーバ装置100がサーバ装置200に型Aのオブジェクトを送信するときは、オブジェクト記憶部132上で分散しているフィールドA−1〜A−5のデータが所定の順序で結合されることで、型Aに対応するメッセージが生成される。例えば、フィールドA−1,A−2,A−3,A−4,A−5の順にデータが並べられる。
同様に、サーバ装置100のオブジェクト記憶部132には、型Bのオブジェクトに含まれるフィールドB−1〜B−4のデータが、不連続な複数の記憶領域に分散して記憶されている可能性がある。サーバ装置100がサーバ装置200に型Bのオブジェクトを送信するときは、オブジェクト記憶部132上で分散しているフィールドB−1〜B−4のデータが所定の順序で結合されることで、型Bに対応するメッセージが生成される。例えば、フィールドB−1,B−2,B−3,B−4の順にデータが並べられる。
図6は、メッセージを分割してバッファに格納する例を示す図である。
前述のように、専用のコネクションが用意されたオブジェクトの型それぞれに対して、複数のバッファを列挙したテーブルがサーバ装置200のオブジェクト記憶部232上に形成される。オブジェクトの型1つ当たりのバッファ数は、予想されるサーバ装置100,200の間の通信量に応じて予め決めておいてもよい。例えば、バッファ数を数十から数百程度に設定しておく。1つのオブジェクトの型に対応するテーブルは、フィールドに応じて複数に分割されて不連続な複数の記憶領域に分散して記憶されてもよい。
例えば、図6の例では、型AのフィールドA−1,A−2のデータを記憶するテーブルと、フィールドA−3,A−4のデータを記憶するテーブルと、フィールドA−5のデータを記憶するテーブルとが、オブジェクト記憶部232に形成されている。また、型BのフィールドB−1,B−2,B−3のデータを記憶するテーブルと、フィールドB−4のデータを記憶するテーブルとが、オブジェクト記憶部232に形成されている。
NIC210は、専用のコネクションでメッセージを受信すると、テーブルに含まれる複数のバッファ(複数の行)のうち空いているバッファの中の各フィールドに相当する位置(列)に、メッセージから抽出したデータを書き込む。例えば、型Aに対応するコネクションで受信したメッセージから、フィールドA−1〜A−5のデータが抽出される。そして、型Aに対応するテーブル内の何れかのバッファ(例えば、バッファ#1)の中の各フィールドに相当する位置に、抽出されたデータが書き込まれる。同様に、型Bに対応するコネクションで受信したメッセージから、フィールドB−1〜B−4のデータが抽出される。そして、型Bに対応するテーブル内の何れかのバッファ(例えば、バッファ#0)の中の各フィールドに相当する位置に、抽出されたデータが書き込まれる。
ここで、複数のフィールドのデータの中には、オブジェクト送信のために一時的に使用されるパラメータとしての非永続データと、オブジェクト送信の完了後もデータ処理のために引き続き使用される永続データが含まれる。図6の例では、型AのフィールドA−1〜A−4は非永続データを設定するフィールドであり、フィールドA5は永続データを設定するフィールドである。また、型BのフィールドB−1〜B−3は非永続データを設定するフィールドであり、フィールドB4は永続データを設定するフィールドである。
第2の実施の形態では、永続データは、テーブル内のバッファに一旦書き込まれた後、オブジェクト記憶部232に動的に確保される記憶領域にコピーされる。永続データのコピーは、例えば、通信制御部221(または、データ処理部231)によってソフトウェア処理として実行される。ただし、NIC210に、永続データをテーブル内のバッファに書き込ませず、メッセージ毎に動的に確保する記憶領域に直接書き込ませてもよい。これにより、ソフトウェア処理による永続データのコピーを抑制することができる。
図7は、コネクションテーブルとクレジットテーブルの例を示す図である。コネクションテーブル123およびクレジットテーブル124は、サーバ装置100の制御情報記憶部122に記憶されている。また、コネクションテーブル123と同様のテーブルが、サーバ装置200の制御情報記憶部222に記憶されている。
コネクションテーブル123は、オブジェクト型およびコネクションの項目を含む。オブジェクト型の項目には、オブジェクトの型の名称が登録される。コネクションの項目には、オブジェクトの型に対応するコネクションの識別番号(例えば、TCPポート番号やInfiniBandのRC番号)が登録される。なお、専用のコネクションを用意しない型のオブジェクトは、予め確立された既定(デフォルト)のコネクションで送信してもよいし、送信時に動的に確立するコネクションで送信してもよい。前者の場合、例えば、既定のコネクションの識別番号をコネクションテーブル123に登録しておく。
クレジットテーブル124は、オブジェクト型およびクレジット数の項目を含む。オブジェクト型の項目には、専用のコネクションを用意したオブジェクトの型の名称が登録される。クレジット数の項目には、サーバ装置100がサーバ装置200にオブジェクトを送信できる権利(クレジット)の残り数が登録される。クレジット数の初期値は、好ましくは、オブジェクトの型に対応付けてオブジェクト記憶部232に用意されたバッファの数である。サーバ装置100は、クレジットを消費して(クレジット数を減少させて)サーバ装置200にオブジェクトを送信する。サーバ装置200側でバッファに空きができると、サーバ装置100にクレジットが1つ付与される(クレジット数が増加する)。すなわち、クレジットによってバッファの空き状況が管理される。
図8は、scatterリストの例を示す図である。サーバ装置200が備えるNIC210のメモリ212には、通信制御部221によって、特定のオブジェクトの型に対応する専用のコネクション1つに対して複数のscatterリストが登録される。
scatterリストは、複数のフィールドそれぞれについてのポインタとデータ長の組を、これらのフィールドがメッセージに含まれる順序と一致するように列挙する。ポインタは、オブジェクト記憶部232内のデータを書き込むべき記憶領域の先頭位置を指し示す物理アドレスである。オブジェクトの型に対応して設けられたテーブル内のバッファ1つに対して、1つのscatterリストが登録されることになる。
例えば、型Aのバッファ#0に対応するscatterリストは、次の5つのレコードを順に列挙する。(1)バッファ#0内のフィールドA−1のデータを書き込む記憶領域の先頭位置とフィールドA−1のデータ長。(2)バッファ#0内のフィールドA−2のデータを書き込む記憶領域の先頭位置とフィールドA−2のデータ長。(3)バッファ#0内のフィールドA−3のデータを書き込む記憶領域の先頭位置とフィールドA−3のデータ長。(4)バッファ#0内のフィールドA−4のデータを書き込む記憶領域の先頭位置とフィールドA−4のデータ長。(5)バッファ#0内のフィールドA−5のデータを書き込む記憶領域の先頭位置とフィールドA−5のデータ長。型Aの他のバッファに対応するscatterリストは、ポインタがバッファ#0のものとは異なる。
また、例えば、型Bのバッファ#0に対応するscatterリストは、次の4つのレコードを順に列挙する。(1)バッファ#0内のフィールドB−1のデータを書き込む記憶領域の先頭位置とフィールドB−1のデータ長。(2)バッファ#0内のフィールドB−2のデータを書き込む記憶領域の先頭位置とフィールドB−2のデータ長。(3)バッファ#0内のフィールドB−3のデータを書き込む記憶領域の先頭位置とフィールドB−3のデータ長。(4)バッファ#0内のフィールドB−4のデータを書き込む記憶領域の先頭位置とフィールドB−4のデータ長。型Bの他のバッファに対応するscatterリストは、ポインタがバッファ#0のものとは異なる。
最初に通信制御部221からNIC210に、専用のコネクション毎にバッファ数に相当する数のscatterリストが渡される。NIC210は、コネクション毎に複数のscatterリストを順序付けて管理する。例えば、複数のscatterリストがFIFO(First In First Out)構造として管理される。ある専用のコネクションでメッセージを受信すると、NIC210は、当該コネクションに対応する複数のscatterリストの中から先頭1つを選択し、選択したscatterリストが示すバッファに各フィールドのデータを書き込む。このとき、NIC210は、選択したscatterリストを破棄する。空きバッファができると、空きバッファに対応するscatterリストが通信制御部221からNIC210に渡されてFIFO構造の末尾に追加される。
このようにして、テーブルに含まれる複数のバッファが使い回される。このため、テーブルの記憶領域は、ガーベッジコレクションによっては解放されない。
オブジェクトを送信するときに通信制御部121からNIC110に渡されるgatherリストも、scatterリストと同様のデータ構造をもつ。gatherリストのポインタは、メッセージに挿入するフィールドのデータが記憶された記憶領域を指す。
なお、通信制御部121が呼び出すOSのAPIは、例えば、次のように定義される。
int send(int fd, struct buf sbuf);
int msend(int fd, struct buf[] gList);
上記の構造体bufは、記憶領域の先頭アドレスとデータ長の組である。関数sendは、1つの連続した記憶領域のデータを送信するための関数であり、コネクションと構造体bufを引数にとる。関数msendは、複数の不連続な記憶領域のデータを結合して送信するための関数であり、コネクションと構造体bufの配列を引数にとる。引数として指定した構造体bufの配列がgatherリストに相当する。
また、通信制御部221が呼び出すOSのAPIは、例えば、次のように定義される。
int recv(int fd, struct buf rbuf);
int mrecv(int fd, struct buf[] sList);
関数recvは、受信されたデータを1つの連続した記憶領域に書き込むよう指示するための関数であり、コネクションと構造体bufを引数にとる。関数mrecvは、受信されたデータを分割して複数の不連続な記憶領域に書き込むよう指示するための関数であり、コネクションと構造体bufの配列を引数にとる。引数として指定した構造体bufの配列がscatterリストに相当する。
図9は、オブジェクト送信制御の手順例を示すフローチャートである。
(S11)通信制御部121は、制御情報記憶部122に記憶されたコネクションテーブル123に従って、NIC110にコネクション確立を指示する。NIC110の送受信部111は、通信制御部121から指示された数のコネクションをサーバ装置200との間に確立する。なお、第2の実施の形態では、専用のコネクションを用意するオブジェクトの型は予めユーザによって設定されているものとする。各オブジェクトの型に対応するコネクションの識別番号は、予めユーザが設定してもよいし、空いている識別番号の中から自動的に選択してもよい。後者の場合、コネクションが確立された後に、通信制御部121がコネクションテーブル123に識別番号を登録すればよい。
(S12)通信制御部121は、サーバ装置200からNIC110を介して、オブジェクトの型毎の初期クレジット数を示すメッセージを取得する。通信制御部121は、制御情報記憶部122に記憶されたクレジットテーブル124にクレジット数を登録する。
(S13)通信制御部121は、データ処理部131からオブジェクト送信要求を受け付けたか判断する。オブジェクト送信要求を受け付けた場合は処理をS16に進め、オブジェクト送信要求を受け付けていない場合は処理をS14に進める。
(S14)通信制御部121は、サーバ装置200からNIC110を介して、何れかのオブジェクトの型に対応するクレジットが付与されたことを示すメッセージを取得したか判断する。クレジットを示すメッセージを取得した場合は処理をS24に進め、クレジットを示すメッセージを取得していない場合は処理をS15に進める。
(S15)通信制御部121は、サーバ装置100とサーバ装置200の間のオブジェクト通信を終了するか判断する。オブジェクト通信が終了する契機としては、例えば、アプリケーションプログラムの停止を示すコマンドがユーザから入力された場合が挙げられる。オブジェクト通信を終了しない場合は処理をS13に進め、オブジェクト通信を終了する場合は図9のオブジェクト送信制御を停止する。
(S16)通信制御部121は、データ処理部131から指定されたオブジェクトの型が、コネクションテーブル123に登録された型であるか判断する。登録された型である場合は処理をS18に進め、登録された型でない場合は処理をS17に進める。
(S17)通信制御部121は、オブジェクトをソフトウェア処理によってシリアライズする。すなわち、通信制御部121は、オブジェクト記憶部132から複数のフィールドのデータを読み出して所定の順序で結合することでメッセージを生成する。このとき、RAM102上の通信制御部121が使用する記憶領域にはシリアライズされたメッセージが一時的に記憶され得る。そして、通信制御部121は、特定のオブジェクトの型専用でないコネクション(例えば、既定のコネクション)を指定し、OSのAPIを介してNIC110にメッセージを送信させる。なお、RAM102上のOSが使用する記憶領域にメッセージが一時的にコピーされ得る。そして、処理がS13に進められる。
(S18)通信制御部121は、データ処理部131から指定されたオブジェクトの型に対応するクレジット数を、クレジットテーブル124から取得する。そして、通信制御部121は、オブジェクトを送信するためのクレジットが残っているか、すなわち、クレジット数が1以上あるか判断する。クレジットが残っている場合は処理をS20に進め、クレジットが残っていない場合は処理をS19に進める。
(S19)通信制御部121は、データ処理部131から指定されたオブジェクトの送信を制限する。例えば、通信制御部121は、クレジット数が1以上になるまでそのオブジェクトの送信を保留する。または、通信制御部121は、オブジェクト送信要求への応答としてデータ処理部131に送信失敗を通知する。そして、処理をS13に進める。
(S20)通信制御部121は、データ処理部131から指定されたオブジェクトに対応するgatherリストを生成する。gatherリストのポインタとしては、指定されたオブジェクトに含まれるフィールドのデータを指し示す物理アドレスを用いる。
(S21)通信制御部121は、コネクションテーブル123を参照して、データ処理部131から指定されたオブジェクトの型に対応するコネクションを選択する。
(S22)通信制御部121は、クレジットテーブル124に登録された、データ処理部131から指定されたオブジェクトの型のクレジット数を1だけ減らす。
なお、上記S20〜S22の処理は任意の順序で実行することが可能である。
(S23)通信制御部121は、S21で選択したコネクションの識別番号とS20で生成したgatherリストとを、OSを介してNIC110に渡す。NIC110のDMAコントローラ113は、gatherリストに従ってオブジェクト記憶部132から複数のフィールドのデータを取得してメッセージを生成する。NIC110の送受信部111は、通信制御部121から指定されたコネクションを用いて生成されたメッセージをサーバ装置200に送信する。そして、処理をS13に進める。
(S24)通信制御部121は、クレジットテーブル124に登録された、指定されたオブジェクトの型のクレジット数を1だけ増やす。そして、処理をS13に進める。
図10は、オブジェクト受信制御の手順例を示すフローチャートである。
(S31)通信制御部221は、サーバ装置100からの要求に応じて、複数のオブジェクトの型に対応する複数のコネクションを確立するようNIC210を制御する。NIC210の送受信部211は、通信制御部221の制御のもとサーバ装置100との間にコネクションを確立する。なお、通信制御部221は、コネクションが確立された後、制御情報記憶部222に記憶されたコネクションテーブルに識別番号を登録してもよい。
(S32)通信制御部221は、オブジェクト記憶部232に、専用のコネクションを用意したオブジェクトの型に対応するテーブル構造のバッファ領域を確保する。1つのオブジェクトの型に対して、所定数(例えば、数十から数百)のバッファが用意される。
(S33)通信制御部221は、専用のコネクションを用意したオブジェクトの型毎に、複数のバッファに対応する複数のscatterリストを生成する。1つのscatterリストに列挙されるポインタは、何れか1つのバッファ内の各フィールドの記憶領域を指し示す。そして、通信制御部221は、生成したscatterリストを、制御情報記憶部222に格納すると共にNIC210にコピーする。NIC210のメモリ212には、コネクションと対応付けて複数のscatterリストが格納される。
(S34)通信制御部221は、オブジェクトの型毎の初期クレジット数を示すメッセージを、NIC210を介してサーバ装置100に送信する。初期クレジット数は、好ましくは、バッファ数およびscatterリスト数と同じである。
(S35)NIC210のDMAコントローラ213は、サーバ装置100からオブジェクトについてのメッセージを受信したか判断する。メッセージを受信した場合は処理をS38に進め、メッセージを受信していない場合は処理をS36に進める。
(S36)通信制御部221は、データ処理部231から、何れかのバッファのデータが不要になった(バッファが空いた)旨の通知を受け取ったか判断する。データ処理部231からの通知には、例えば、オブジェクトの型とバッファ番号とが含まれる。通知を受け取った場合は処理をS44に進め、受け取っていない場合は処理をS37に進める。
(S37)通信制御部221は、サーバ装置100とサーバ装置200の間のオブジェクト通信を終了するか判断する。オブジェクト通信が終了する契機としては、例えば、アプリケーションプログラムの停止を示すコマンドがユーザから入力された場合が挙げられる。オブジェクト通信を終了しない場合は処理をS35に進め、オブジェクト通信を終了する場合は図9のオブジェクト受信制御を停止する。
(S38)DMAコントローラ213は、メッセージを受信したコネクションが、scatterリストが対応付けられている所定のコネクション(特定のオブジェクト型専用のコネクション)であるか判断する。所定のコネクションである場合は処理をS40に進め、所定のコネクションでない場合は処理をS39に進める。
(S39)DMAコントローラ213は、受信したメッセージを分割せずにストリーム形式のまま、OSを介して通信制御部221に渡す。このとき、RAM102上のOSが使用する記憶領域および通信制御部221が使用する記憶領域にメッセージが一時的にコピーされ得る。通信制御部221は、オブジェクトをソフトウェア処理によってデシリアライズする。すなわち、通信制御部221は、メッセージの内容からオブジェクトの型を判定し、メッセージから複数のフィールドのデータを抽出してオブジェクト記憶部232上にオブジェクトを再現する。このとき、オブジェクト記憶部232には、オブジェクトを記憶するための記憶領域が動的に確保される。そして、処理がS35に進められる。
(S40)DMAコントローラ213は、メッセージを受信したコネクションに対応するscatterリストの集合の中から1つ(例えば、先頭の1つ)を、メモリ212から取得する。そして、DMAコントローラ213は、取得したscatterリストを用いて、メッセージに含まれる複数のフィールドのデータをハードウェア処理によってオブジェクト記憶部232に直接書き込む。すなわち、DMAコントローラ213は、scatterリストに記載されたデータ長に従ってメッセージを分割し、各フィールドのデータをscatterリストに記載されたポインタが指し示す記憶領域に書き込む。
(S41)DMAコントローラ213は、使用したscatterリストを破棄する。また、DMAコントローラ213は、データを書き込んだバッファを示す情報(例えば、コネクション番号とscatterリスト番号)を通信制御部221に通知する。
(S42)通信制御部221は、受信されたメッセージが永続データを含むものである場合、オブジェクト記憶部232上に新たな記憶領域を確保し、永続データ用のテーブル内のバッファに書き込まれたデータをコピーする。ただし、前述のように、動的に確保する記憶領域に対してNIC210が永続データを直接書き込むようにしてデータのコピーを回避してもよい。永続データを設定するフィールドは予めユーザから指定されている。
(S43)通信制御部221は、データが書き込まれたバッファを示す情報(例えば、オブジェクトの型とバッファ番号)を、データ処理部231に通知する。また、通信制御部221は、受信されたメッセージが永続データを含むものである場合、動的に確保した記憶領域をデータ処理部231に通知する。そして、処理をS35に進める。
(S44)通信制御部221は、空いたバッファに対応するscatterリストを制御情報記憶部222から取得すると共に、コネクションテーブルを参照してオブジェクトの型に対応するコネクションを確認する。そして、通信制御部221は、コネクションを指定してNIC210にscatterリストを渡す。メモリ212上に保持されている当該指定されたコネクションに対応するscatterリストの集合の中に(例えば、その末尾に)、渡されたscatterリストが追加される。
(S45)通信制御部221は、クレジットの付与を示すメッセージを、NIC210を介してサーバ装置100に送信する。そして、処理をS35に進める。
なお、複数のコネクションを使用して複数のオブジェクトを送信すると、ネットワーク41上でオブジェクトの順序が逆転する可能性がある。すなわち、データ処理部131が認識する送信順序とデータ処理部231が認識する受信順序が一致しない可能性がある。ただし、パラメータとして順序を示す情報をオブジェクトに挿入するなど、データ処理部131とデータ処理部231が順序逆転を考慮してデータ処理を行うことで、この問題を解消することができる。また、データ処理の結果が順序に依存しないようなオブジェクトの型やアプリケーションプログラムに限定して、専用のコネクションを利用したオブジェクト送信を行うようにしても、この問題を解消することができる。
第2の実施の形態の情報処理システムによれば、複数のオブジェクトの型それぞれに対して専用のコネクションがサーバ装置100,200の間に確立される。よって、それらの型のオブジェクトについてはNIC210のscatter/gatherDMA機能を活用して定型的に処理することができ、全てのオブジェクトをソフトウェア処理によってデシリアライズする場合と比べてサーバ装置200の負荷を軽減できる。従って、ソフトウェア処理がボトルネックになる可能性を減らし、オブジェクト送信を高速化できる。特に、送信頻度の高いオブジェクトの型に対して優先的に専用のコネクションを用意することで、オブジェクト送信がより高速化されることが期待できる。
また、NIC210のscatter/gatherDMA機能を活用することで、サーバ装置200のRAM上でのデータのコピーを抑制することができ、記憶領域の動的な確保や解放のための負荷が軽減される。また、短期間で破棄される可能性が高い非永続データが設定されるフィールドに対してはテーブル形式の複数のバッファを用意し、それら複数のバッファを再利用することでガーベッジコレクションの負荷が軽減される。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態との差異を中心に説明し、第2の実施の形態と同様の事項については適宜説明を省略する。
第3の実施の形態の情報処理システムは、オブジェクトの送信状況に応じて専用のコネクションを用意するオブジェクトの型を変更することができる。第3の実施の形態の情報処理システムは、図2〜8と同様のシステム構成によって実現できる。そこで、第2の実施の形態と同じ符号(図2〜8に記載した符号)を用いて第3の実施の形態を説明する。
図11は、他のオブジェクト送信制御の手順例を示すフローチャートである。図11に示す処理は、サーバ装置100において図9の処理と並行して実行される。
(S51)通信制御部121は、オブジェクトの送信状況を監視し、オブジェクトの型毎の送信回数の統計を取る。送信回数は、例えば、直近の所定時間内での送信回数、または、以下のS52,S53の処理を前回実行したとき以降の送信回数などとする。
(S52)通信制御部121は、専用のコネクションを用意していないオブジェクトの型(コネクションテーブル123に未登録の型)の中に、送信が多いものが存在するか判断する。判断基準としては、例えば、送信回数が予め設定された閾値以上であることや、全てのオブジェクト送信に占める送信回数の割合が予め設定された閾値以上であることなどが挙げられる。未登録の型の中に上記の条件を満たす型が存在する場合は処理をS55に進め、上記の条件を満たす型が存在しない場合は処理をS53に進める。
(S53)通信制御部121は、専用のコネクションを用意したオブジェクトの型(コネクションテーブル123に登録されている型)の中に、送信が少ないものが存在するか判断する。判断基準としては、例えば、送信回数が予め設定された閾値未満であることや、全てのオブジェクト送信に占める送信回数の割合が予め設定された閾値未満であることや、前回オブジェクトを送信した時刻から一定時間以上経過していることなどが挙げられる。登録された型の中に上記の条件を満たす型が存在する場合は処理をS59に進め、上記の条件を満たす型が存在しない場合は処理をS54に進める。
(S54)通信制御部121は、サーバ装置100とサーバ装置200の間のオブジェクト通信を終了するか判断する。オブジェクト通信を終了しない場合、S51に戻ってオブジェクトの送信状況を監視する(例えば、送信回数を所定時間カウントする)。オブジェクト通信を終了する場合、図11の他のオブジェクト送信制御を停止する。
(S55)通信制御部121は、通信リソースが余っているか、すなわち、NIC110がコネクションを追加することが可能か判断する。通信リソースが余っている場合は処理をS56に進め、通信リソースが余っていない場合は処理をS53に進める。
(S56)通信制御部121は、サーバ装置200とネゴシエーションして、送信が多いと判断されたオブジェクトの型に対応するコネクションを追加することを試みる。すなわち、通信制御部121は、NIC110を介してサーバ装置200にコネクション確立要求を送信し、サーバ装置200からの応答を待つ。サーバ装置200から許可応答が得られると、通信制御部121は、NIC210にコネクションを追加するよう指示する。なお、コネクション確立要求ではオブジェクトの型が指定される。
(S57)通信制御部121は、S56のネゴシエーションの結果、コネクションの確立に成功したか判断する。コネクションの確立に失敗する場合は、サーバ装置200から拒否応答を受け取った場合が含まれる。コネクション確立に成功した場合は処理をS58に進め、コネクション確立に失敗した場合は処理をS53に進める。
(S58)通信制御部121は、制御情報記憶部122に記憶されたコネクションテーブル123に、オブジェクトの型と確立したコネクションの識別番号を対応付けて登録する。また、通信制御部121は、サーバ装置200から初期クレジット数を示すメッセージを取得し、制御情報記憶部122に記憶されたクレジットテーブル124に、オブジェクトの型と初期クレジット数を対応付けて登録する。そして、処理をS53に進める。
(S59)通信制御部121は、サーバ装置200と連携して、送信が少ないと判断されたオブジェクトの型に対応するコネクションを切断する。すなわち、通信制御部121は、NIC110を介してサーバ装置200にコネクション解放要求を送信し、サーバ装置200から応答が得られるとNIC210にコネクションを切断するよう指示する。なお、コネクション切断要求ではオブジェクトの型が指定される。
(S60)通信制御部121は、切断したコネクションの識別番号をコネクションテーブル123から削除する。また、通信制御部121は、切断したコネクションに関するクレジット数をクレジットテーブル124から削除する。そして、処理をS54に進める。
図12は、他の受信制御の手順例を示すフローチャートである。図12に示す処理は、サーバ装置200において図10の処理と並行して実行される。
(S71)通信制御部221は、サーバ装置100からNIC210を介してコネクション確立要求を受信したか判断する。コネクション確立要求を受信した場合は処理をS74に進め、コネクション確立要求を受信していない場合は処理をS72に進める。
(S72)通信制御部221は、サーバ装置100からNIC210を介してコネクション解放要求を受信したか判断する。コネクション解放要求を受信した場合は処理をS79に進め、コネクション解放要求を受信していない場合は処理をS73に進める。
(S73)通信制御部221は、サーバ装置100とサーバ装置200の間のオブジェクト通信を終了するか判断する。オブジェクト通信を終了しない場合は処理をS71に進め、オブジェクト通信を終了する場合は図12の他のオブジェクト受信制御を停止する。
(S74)通信制御部221は、通信リソースが余っているか、すなわち、NIC210がコネクションを追加することが可能か判断する。通信リソースが余っている場合は処理をS75に進め、通信リソースが余っていない場合は処理をS78に進める。
(S75)通信制御部221は、NIC210を介してサーバ装置100に許可応答のメッセージを送信する。また、通信制御部221は、NIC210にコネクションを追加するよう指示する。これにより、サーバ装置100,200の間に新たなコネクションが確立される。通信制御部221は、コネクション確立要求で指定されたオブジェクトの型とコネクションの識別番号とを対応付けてコネクションテーブルに登録する。
(S76)通信制御部221は、オブジェクト記憶部232に、コネクション確立要求で指定されたオブジェクトの型に対応するテーブル構造のバッファ領域を確保する。確保したバッファ領域には、所定数(例えば、数十から数百)のバッファが含まれる。なお、永続データが設定されるフィールドはユーザによって予め指定されている。
(S77)通信制御部221は、複数のバッファに対応する複数のscatterリストを生成する。そして、通信制御部221は、生成したscatterリストを制御情報記憶部222に格納すると共に、追加したコネクションと対応付けてNIC210にコピーする。また、通信制御部221は、初期クレジット数を示すメッセージをNIC210を介してサーバ装置100に送信する。そして、処理をS71に進める。
(S78)通信制御部221は、NIC210を介してサーバ装置100に拒否応答のメッセージを送信する。そして、処理をS71に進める。
(S79)通信制御部221は、コネクションテーブルを参照して、コネクション解放要求で指定されたオブジェクトの型に対応するコネクションを特定し、そのコネクションを切断するようNIC210に指示する。また、通信制御部221は、NIC210を介してサーバ装置100に応答メッセージを送信する。また、通信制御部221は、切断したコネクションの識別番号をコネクションテーブルから削除する。
(S80)通信制御部221は、オブジェクト記憶部232上で、コネクション解放要求で指定されたオブジェクトの型に対応するテーブル構造のバッファ領域を解放する。
(S81)通信制御部221は、切断したコネクションに対応するscatterリストを制御情報記憶部222から削除し、また、NIC210のメモリ212から削除するようOSを介してNIC210に指示する。そして、処理をS71に進める。
なお、上記S79〜S81の処理は任意の順序で実行することが可能である。
第3の実施の形態の情報処理システムによれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、あるオブジェクトの型の送信頻度が高くなったときに、その型に対して自動的に専用のコネクションが割り当てられる。また、あるオブジェクトの型の送信頻度が低くなったときに、その型に対して割り当てていた専用のコネクションが自動的に解放される。よって、オブジェクトの型毎の送信頻度が事前の予測と異なっても、柔軟にコネクションを制御してオブジェクトの送信効率を向上できる。
以上の第2・第3の実施の形態では、サーバ装置100からサーバ装置200にオブジェクトを送信する場合について説明したが、サーバ装置200からサーバ装置100へもオブジェクトが送信され得る。このとき、コネクションは片方向の通信にのみ使用してもよいし双方向の通信に使用してもよい。前者の場合、サーバ装置100からサーバ装置200にオブジェクトを送信するためのコネクションが確立されていても、サーバ装置200からサーバ装置100にオブジェクトを送信するときは別のコネクションを確立する。一方、後者の場合、サーバ装置100からサーバ装置200にオブジェクトを送信するためのコネクションが確立されていれば、サーバ装置200からサーバ装置100にオブジェクトを送信するときは確立済みのコネクションを利用する。
また、以上の第2・第3の実施の形態では、2台のサーバ装置の間でオブジェクトを送信する場合について説明したが、3台以上のサーバ装置の間でオブジェクトを送信する場合も、2台のサーバ装置の組毎にコネクションを確立すればよい。ただし、第3の実施の形態で説明したコネクションの確立や解放の判断は、各サーバ装置で分散して行う代わりに1台のマスタサーバ装置で集中的に行ってもよい。その場合、例えば、マスタサーバ装置が少なくとも1台のサーバ装置におけるオブジェクトの送信状況を監視すれば、オブジェクトの型毎の送信頻度の傾向を把握することができる。また、第3の実施の形態では、送信側のサーバ装置100でコネクションの確立や解放の判断を行ったが、受信側のサーバ装置200でコネクションの確立や解放の判断を行ってもよい。
なお、第1の実施の形態のソフトウェア処理は、情報処理装置10,20にプログラムを実行させることで実現できる。また、第2・第3の実施の形態のソフトウェア処理は、クライアント装置30やサーバ装置100,200にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体44)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムを複製して(インストールして)実行してもよい。
3a,3b,3c コネクション
4a,4b,4c オブジェクト
10,20 情報処理装置
11,21 通信インタフェース
12 制御部
22 メモリ

Claims (7)

  1. 他のコンピュータと通信を行うコンピュータに、
    それぞれが2以上のデータ項目を含む複数のオブジェクト型に対応する複数のコネクションを前記他のコンピュータとの間に確立し、
    送信するオブジェクトの型が前記複数のオブジェクト型の何れかに該当するとき、前記複数のコネクションの中から当該オブジェクトの型に対応するコネクションを選択し、前記選択したコネクションを用いて当該オブジェクトを前記他のコンピュータに送信する、
    処理を実行させるプログラム。
  2. 前記オブジェクトを送信するとき、前記コンピュータが備えるメモリに記憶された前記オブジェクトを前記選択したコネクションに応じたフォーマットに変換する、
    請求項1記載のプログラム。
  3. 前記コンピュータに更に、
    前記他のコンピュータへのオブジェクトの送信状況を監視し、
    前記送信状況に基づいて、前記複数のオブジェクト型以外のオブジェクト型に対応するコネクションを追加すること、および、前記複数のオブジェクト型の一部に対応するコネクションを切断することの少なくとも一方を行う、
    処理を実行させる請求項1記載のプログラム。
  4. それぞれが2以上のデータ項目を含む複数のオブジェクト型に対応する複数のコネクションを他の情報処理装置との間に確立する通信インタフェースと、
    送信するオブジェクトの型が前記複数のオブジェクト型の何れかに該当するとき、前記複数のコネクションの中から当該オブジェクトの型に対応するコネクションを選択し、前記選択したコネクションを用いて当該オブジェクトを前記他の情報処理装置に送信するように前記通信インタフェースを制御する制御部と、
    を有する情報処理装置。
  5. 第1の情報処理装置と第2の情報処理装置との間に、それぞれが2以上のデータ項目を含む複数のオブジェクト型に対応する複数のコネクションを確立し、
    送信するオブジェクトの型が前記複数のオブジェクト型の何れかに該当するとき、前記複数のコネクションのうち当該オブジェクトの型に対応するコネクションを用いて、当該オブジェクトを前記第1の情報処理装置から前記第2の情報処理装置に送信し、
    前記第2の情報処理装置が備える前記オブジェクトを受信する通信インタフェースから前記第2の情報処理装置が備えるメモリに、当該オブジェクトを受信したコネクションに応じた方法で当該オブジェクトに含まれる前記2以上のデータ項目を配置する、
    オブジェクト送信方法。
  6. 前記通信インタフェースに、前記複数のコネクションそれぞれに対応付けて当該コネクションで送信されるオブジェクトのフォーマットを示すフォーマット情報を設定し、
    前記メモリへの前記2以上のデータ項目の配置は、前記通信インタフェースが前記オブジェクトを受信したコネクションに対応するフォーマット情報を用いて行う、
    請求項5記載のオブジェクト送信方法。
  7. 前記メモリにテーブル領域を確保しておき、
    前記2以上のデータ項目の少なくとも一部については、オブジェクトを受信する毎に新たな記憶領域を前記メモリ内に確保せずに前記テーブル領域を再利用する、
    請求項5記載のオブジェクト送信方法。
JP2012277894A 2012-12-20 2012-12-20 プログラム、情報処理装置およびオブジェクト送信方法 Expired - Fee Related JP5962493B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012277894A JP5962493B2 (ja) 2012-12-20 2012-12-20 プログラム、情報処理装置およびオブジェクト送信方法
US14/058,760 US20140181249A1 (en) 2012-12-20 2013-10-21 Storage medium, information processing apparatus, and object transmission method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012277894A JP5962493B2 (ja) 2012-12-20 2012-12-20 プログラム、情報処理装置およびオブジェクト送信方法

Publications (2)

Publication Number Publication Date
JP2014123182A JP2014123182A (ja) 2014-07-03
JP5962493B2 true JP5962493B2 (ja) 2016-08-03

Family

ID=50975981

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012277894A Expired - Fee Related JP5962493B2 (ja) 2012-12-20 2012-12-20 プログラム、情報処理装置およびオブジェクト送信方法

Country Status (2)

Country Link
US (1) US20140181249A1 (ja)
JP (1) JP5962493B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6428048B2 (ja) * 2014-08-25 2018-11-28 富士通株式会社 通信システム,異常制御装置および異常制御方法
CN109189702A (zh) * 2018-08-22 2019-01-11 山东超越数控电子股份有限公司 一种Scatter-Gather DMA的数据传输缓冲区设计方法
US11258714B1 (en) * 2018-09-28 2022-02-22 Google Llc Fine grain traffic shaping offload for a network interface card
CN109491937A (zh) * 2018-10-24 2019-03-19 山东超越数控电子股份有限公司 一种Scatter-Gather DMA的数据传输方法及装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2272312A (en) * 1992-11-10 1994-05-11 Ibm Collaborative working in a network.
US5974449A (en) * 1997-05-09 1999-10-26 Carmel Connection, Inc. Apparatus and method for providing multimedia messaging between disparate messaging platforms
US6590588B2 (en) * 1998-05-29 2003-07-08 Palm, Inc. Wireless, radio-frequency communications using a handheld computer
US6105067A (en) * 1998-06-05 2000-08-15 International Business Machines Corp. Connection pool management for backend servers using common interface
US7212543B1 (en) * 1998-10-12 2007-05-01 Teliasonera Ab Method, system and device for establishing communication between different communication networks
US6687831B1 (en) * 1999-04-29 2004-02-03 International Business Machines Corporation Method and apparatus for multiple security service enablement in a data processing system
JP2002049598A (ja) * 2000-05-23 2002-02-15 Victor Co Of Japan Ltd エージェントシステム
JP2003078549A (ja) * 2001-08-31 2003-03-14 Hitachi Ltd パケット転送方法およびその装置
US8665734B2 (en) * 2002-05-06 2014-03-04 Qualcomm Incorporated Methods and apparatus for uplink macro-diversity in packet-switched cellular networks
JP2004153776A (ja) * 2002-09-03 2004-05-27 Ntt Docomo Inc 情報配信システム、アクセス中継装置、配信中継装置、通信端末装置、情報配信方法およびプログラム
JP4000479B2 (ja) * 2003-05-22 2007-10-31 日本電気株式会社 データ通信システム、通信装置、及びその通信プログラム
US6954450B2 (en) * 2003-11-26 2005-10-11 Cisco Technology, Inc. Method and apparatus to provide data streaming over a network connection in a wireless MAC processor
US7499075B2 (en) * 2004-09-28 2009-03-03 Seiko Epson Corporation Video conference choreographer
JP4978008B2 (ja) * 2006-01-11 2012-07-18 株式会社日立製作所 仮想計算機上でのページテーブルアドレスの変更を高速化する方法
KR20090003397A (ko) * 2007-06-08 2009-01-12 엔에이치엔(주) 정보 영역 지시에 의한 전자메일의 부가 정보 서비스 제공방법 및 그 시스템
JP5575805B2 (ja) * 2009-01-19 2014-08-20 スカイワークス ソリューションズ,インコーポレイテッド プログラム可能送信連続時間フィルタ
US8655962B2 (en) * 2009-09-28 2014-02-18 International Business Machines Corporation Shared address collectives using counter mechanisms
US8321566B2 (en) * 2011-02-24 2012-11-27 Jibe Mobile System and method to control application to application communication over a network
US8856355B2 (en) * 2011-05-09 2014-10-07 Samsung Electronics Co., Ltd. Systems and methods for facilitating communication between mobile devices and display devices
US9350763B1 (en) * 2012-04-17 2016-05-24 Amazon Technologies, Inc. HTTP tunnelling over websockets

Also Published As

Publication number Publication date
US20140181249A1 (en) 2014-06-26
JP2014123182A (ja) 2014-07-03

Similar Documents

Publication Publication Date Title
US6463480B2 (en) Method and system of processing a plurality of data processing requests, and method and system of executing a program
JP5571544B2 (ja) データ記憶リソース上のクライアント・データを管理するストレージ・マネージャにおけるデータ・フィルタリング方法およびコンピュータ・プログラム
CN109325016B (zh) 数据迁移方法、装置、介质及电子设备
KR19990029323A (ko) 애플리케이션 프로그램 인터페이스와 이를 구현하는 방법 및 컴퓨터 프로그램 제품
JP5962493B2 (ja) プログラム、情報処理装置およびオブジェクト送信方法
JP2007148738A (ja) 情報監視方法、システム及びプログラム
CN112800017B (zh) 分布式日志采集方法、装置、介质及电子设备
JP6179331B2 (ja) ログ出力条件設定プログラム、装置、および方法
KR102589876B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
US11023159B2 (en) Method for fast recovering of data on a failed storage device
KR102601576B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
US20140067886A1 (en) Information processing apparatus, method of outputting log, and recording medium
CN108664520A (zh) 维护数据一致性的方法、装置、电子设备和可读存储介质
JPWO2010113248A1 (ja) 仮想計算機システム、情報処理装置、コンピュータプログラム及び接続制御方法
US20130332932A1 (en) Command control method
CN111385255B (zh) 一种异步调用实现方法、装置、服务器及服务器集群
US20110321043A1 (en) System, Method and Program Product for Native Interface Optimization of Read-Only Arrays
EP4322003A1 (en) Data transmission method, data processing method, and related product
JP5884566B2 (ja) バッチ処理システム、進捗状況確認装置、進捗状況確認方法、及びプログラム
US11500601B2 (en) Method and system for providing a mesh network of displays using a universal serial bus
JP2000276424A (ja) 伝送データ変換装置及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP6413817B2 (ja) 会話管理システム、会話管理方法及び会話管理プログラム
JP7480842B2 (ja) 仮想リソース管理装置、仮想リソース管理方法およびプログラム
US20170147408A1 (en) Common resource updating apparatus and common resource updating method
US20240135215A1 (en) Production to staging isolation zone creation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160421

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160613

R150 Certificate of patent or registration of utility model

Ref document number: 5962493

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees