JP2002208981A - 通信方法 - Google Patents

通信方法

Info

Publication number
JP2002208981A
JP2002208981A JP2001004399A JP2001004399A JP2002208981A JP 2002208981 A JP2002208981 A JP 2002208981A JP 2001004399 A JP2001004399 A JP 2001004399A JP 2001004399 A JP2001004399 A JP 2001004399A JP 2002208981 A JP2002208981 A JP 2002208981A
Authority
JP
Japan
Prior art keywords
data
information processing
memory area
communication
processing apparatus
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.)
Pending
Application number
JP2001004399A
Other languages
English (en)
Inventor
Furederiko Mashieru
フレデリコ マシエル
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001004399A priority Critical patent/JP2002208981A/ja
Priority to US09/918,639 priority patent/US6826622B2/en
Publication of JP2002208981A publication Critical patent/JP2002208981A/ja
Priority to US10/951,794 priority patent/US20050050162A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 【課題】 ソケットAPIやMPI APIを使用した
通信の高速化 【解決手段】 5つの新機能を使用する。(1)受信側
が、アプリケーション・データ202での受信と事前割
り振りバッファ242での受信のどれが最適かを決定す
るデータ長を送信側知らせる。(2)アプリケーション
・データ202の受信アドレスを知らせる効果を計算
し、効果が低い場合に知らせを抑える。(3)8つの通
信方法を可能にする通信プロトコルを使用する。(4)
送受信動作に期待される転送データ長を通信相手にあら
かじめ知らせる。(5)通信パターンにより事前割り振
りバッファ142,242を変更する(拡大・縮小・追
加・削除等)。 【効果】 通信を高速化し、処理オーバーヘッドとメモ
リ使用量を減らす。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数の種類の通信
網により接続された複数の計算機を有する計算機システ
ムにおける、計算機間のデータ送受信方法に係り、特に
計算機間メモリ間データ転送の機能を持つネットワーク
とハードウェアの上での計算機間データ送受信方法に関
する。
【0002】
【従来の技術】計算機間通信、特にインターネットやイ
ントラネットでの通信には、TCP/IPプロトコルが
極めて一般的に使用されている。TCP/IP処理をア
プリケーションでなくオペレーティングシステムが行う
ため、アプリケーションがTCP/IPで通信するため
に「ソケット」と呼ばれるAPI(Application Progra
mming Interface、アプリケーションがコンピュータや
オペレーティングシステムのある機能を用いるために呼
び出す関数の集合)を用いる(W. Richard Stevens, "U
NIX Network Programming," Prentice Hall, U.S.A., 1
990, ISBN 0-13-949876-1参照)。
【0003】図1にTCP/IPプロトコルを使用し通
信するホストのソフトウェア構成例を示す。ホスト10
はネットワーク18を使用して通信する。ホスト10の
オペレーティングシステムのカーネル120がTCP/
IPのプロトコル処理121をし、通信ハードウェア1
1を制御して通信する。アプリケーション100のプロ
グラム101がソケットAPI90を用い、ライブラリ
110を呼び出す。ライブラリがシステムコール111
を実行してカーネル120を呼び出す。カーネル120
がソケット用バッファ122を介して、アプリケーショ
ン100のデータ102を送受信する。
【0004】TCP/IP通信はプロトコル処理121
の処理量が多く、そしてシステムコール111と、デー
タ102とソケットバッファ122の間のコピーはオー
バーヘッドとなるため、これらの処理は通信性能を制限
することがある。このため、スーパーコンピュータやワ
ークステーションクラスタのような、高速な通信を必要
とする計算機システムでは、プロトコル処理、システム
コールとデータコピーをせず、カーネルを介さずにアプ
リケーション間データ転送ができるネットワークが用い
られる。本明細書では今後、この通信方法を「高速通
信」と呼ぶ。高速通信の例としてVIA(Compaq Compu
ter Corp., Intel Corp., Microsoft Corp., "Virtual
Interface Architecture Specification, Draft Revisi
on 1.0," December 4, 1997, http://www.viarch.org参
照)がある。高速通信とTCP/IPは機能が異なるた
め、これらAPIも異なる。
【0005】図2に高速通信を使うホストのソフトウェ
ア構成例を示す。アプリケーション103のプログラム
104が高速通信API91を用いて、高速通信ライブ
ラリ130を呼び出し、データ105を送受信する。高
速通信ライブラリ130の通信処理131はカーネル1
20を介さずに高速通信ハードウェア12を起動しデー
タ105を高速通信ネットワーク19で通信する。高速
通信におけるデータ送受信では、アプリケーション10
3が送受信したいデータ105のアクセス権限があるか
という検査、そしてアプリケーション103が指定した
仮想アドレスを高速通信ハードウェア12が使う物理ア
ドレスへの変換という二つの処理が必要である。このた
めアプリケーション103が送受信する前に、高速通信
ライブラリ130を呼び出し、送受信するデータ105
を登録する(登録されたデータを807のような角丸四
角形で示す)。登録処理を高速通信ライブラリの呼び出
し(132)でカーネルが行う(123)ため、アクセ
ス権限を調査し、権限があった場合にアドレス変換を行
い、登録したデータをメモリ登録テーブル13に登録す
ることができる。高速通信ハードウェア12がこのメモ
リ登録テーブル13を用い、アクセス権限調査とアドレ
ス変換を行う。高速通信API91はソケットAPI9
0と異なるため、ソケットAPI90を使うアプリケー
ション100が高速通信を使用するためには、アプリケ
ーション100を高速通信API91に向けて書き換え
なければならない。この書き換えは難しいため、多くの
アプリケーションが変更されず従来のソケットAPIを
使いつづけ、高速通信の高速性を活用できない。この問
題を解決するために、図3に示す「高速ソケット」とい
う方式を用いる。高速ソケットライブラリ140はアプ
リケーション100のソケットAPI90の呼び出しを
受け、エミュレーション処理141をし、高速通信を用
い通信する。このため、アプリケーションの互換性を保
ちながら、高速通信の高速性を用いることができる。高
速ソケットの例として、公開特許公報特開平11−32
8134、Berkeley大学の方式(S. H. Rodrigues, T.
E. Anderson, D. E. Culler, "High-Performance Local
AreaCommunication With Fast Sockets," Proceedings
of the USENIX '97, 1997, pp. 257-274参照)、Shah
らによる方式(H. V. Shah, C. Pu, R. S. Madukkarumu
kumana, "High Performance Sockets and RPC over Vir
tual Interface (VI) Architecture", Proceedings of
CANPC'99, 1999参照)、Microsoft社のWinsock Direct
("Winsock Direct Specification", Microsoft Window
s Driver Development Kit (DDK) 参照)が挙げられ
る。
【0006】アプリケーション100のデータ102を
登録(800)して通信した場合、バッファ登録800
の処理オーバーヘッド(132,123)が生じる。デ
ータ長が長い場合にこのオーバーヘッド(132,12
3)は通信時間に比べて短いため、高速性を得られる。
一方、データ長が短いとき、通信時間に比較してこのオ
ーバーヘッドは大きく、通信性能が低下する。この問題
を解決するため高速通信ライブラリ140は起動時に、
事前割り振りバッファ142をアロケートし登録(80
1)する。短いデータ102を通信するとき、このデー
タ102を登録せず事前割り振りバッファ142にコピ
ーし通信する。この場合にはコピーのオーバーヘッドが
生じるが、データ長が短くこのオーバーヘッドが登録処
理に比較して少ないため、高速性を得られる。事前割り
振りバッファ142は普段送信用バッファと受信用バッ
ファに分かれているが、図3と今後のソフトウェア構成
の図ではこれらをまとめて一つのバッファ142として
示す。
【0007】以上はTCP/IP通信と高速ソケットの
説明であった。一般アプリケーションがTCP/IP通
信(と、その結果、ソケットAPI)を用いる一方、科
学技術計算アプリケーションはMPI(Message Passin
g Interface Forum, "MPI: AMessage-Passing Interfac
e Standard," 1995参照)のようなAPIを用いる。M
PIは計算機アーキテクチャ非依存のため、高速通信の
上でMPIをインプリメントする場合、MPIのAPI
の呼び出しを高速通信のAPIの呼び出しにマッピング
する。この機能を実現する製品としてMPI Software Tec
hnology社のMPI−Proが挙げられる(R. Dimitrov
and A. Skjellum., "Efficient MPI for Virtual Inte
rface (VI) Architecture," Proceedings of the 1999
International Conference on Parallel and Distribut
ed Processing Techniques andApplications, Las Vega
s, Nevada, U.S.A., June 1999, Vol.6, pp. 3094-3100
参照)。図4にMPIの実現方法を示す。図4では、M
PIを使用するアプリケーション106のプログラム1
07がMPI API92を利用してデータ108を通
信する。MPIライブラリ150がエミュレーション1
51を行い、上記のマッピングを行う。MPI(図4)
の構成は高速ソケット(図3)の構成と同様のため、両
者の通信における課題も同様である。本明細書では記載
がなければ、高速ソケットに説明する方法はMPIにも
当てはまり、またMPIに説明する方法は高速ソケット
にも当てはまる。
【0008】
【発明が解決しようとする課題】本発明は従来の高速ソ
ケットライブラリ140やMPIライブラリ150のよ
うな通信ライブラリの5つの問題を解決する(下記にこ
れらのライブラリを「エミュレーションライブラリ」と
呼ぶ)。ここではこれらの問題を概説して、必要な場合
に発明の実施の形態の説明ではこれらの問題の詳細な説
明をしてから本発明の解決手段を説明する。第一の問題
は次のとおりである。従来方式では送信ホストがデータ
長により、送信ホストにデータ102,108を登録
(800,808)した通信と事前割り振りバッファ1
42,152にコピーした通信のどちらが最適かを選択
するが、受信ホストにどちらが最適かを考慮しない。こ
のため、受信ホストの受信処理性能を低下する。
【0009】第二の問題は次のとおりである。受信ホス
トで受信呼び出しが受信データよりを先行した場合、受
信ホストが受信データ102,108領域を登録(80
0)してこのアドレスとデータ長を通信相手に知らせる
ことができる。しかし、送信ホストが送信開始後にこの
知らせを受信した場合、この知らせは無駄となり、送信
ホストと受信ホストの処理オーバーヘッドとなり、ネッ
トワークバンド幅を占めるため、システム全体の処理性
能を低下する。
【0010】第三の問題は次のとおりである。従来方式
は送信ホストからのデータ書き込みと受信ホストからの
データ読み出しという二つのデータ転送方法と、受信ホ
ストと送信ホストそれぞれのデータ102,108を登
録(800,808)した通信と事前割り振りバッファ
142,152にコピーした通信の4つの組み合わせ、
全体で8つの組み合わせを全て利用することができな
い。このため、高速通信を可能にするネットワークの性
能を最大限に向上できない。
【0011】第四の問題は次のとおりである。従来方式
は通信相手にもかかわらず同じ通信方法を使用する。し
かし、今後は通信相手がサーバ等のコンピュータでな
く、iSCSI(TCP/IP上SCSIプロトコル、
J. Satran et alli., "iSCSI (Internet SCSI)," Inter
net Engineering Task Force Internet-Draft draft-sa
tran-iscsi-01.txt, July 10, 2000参照)を使用してい
るストレージ装置であることが考えられる(本発明で
は、通信する装置を種類にかかわらず「ホスト」と呼
ぶ)。ストレージ装置はコンピュータに比較して事前割
り振りバッファ142に使用できるメモリ量が制限され
ており処理性能が低いことがあるため、上記第三の問題
に述べた8つの組み合わせの一部のみが効率的である。
通信相手の特性により通信方法を制限しないことは、例
えばこの通信相手がストレージ装置の場合には装置の必
要となるメモリなどを増加し、送受信処理を複雑にし装
置の必要な処理能力を高め、コストを高くする。
【0012】第五の問題は次のとおりである。従来方式
はTCP/IP接続確立時に事前割り振りバッファ14
2,152をアロケートし、この後の通信にはバッファ
の大きさ等を変更しない。このため、このTCP/IP
接続の特性に必要となるバッファ量を適応することがで
きない。例えば必要な時にバッファの大きさを増加しな
いことは性能を低下する要因になる。そして、事前割り
振りバッファ142,152のような登録(801,8
09)したデータ領域は、データ送受信対象のためスワ
ップアウトできなく、主記憶を占める。このため、バッ
ファの大きさを削減しないことは他のアプリケーション
が使えるメモリを少なくするため性能低下の要因にもな
る。
【0013】
【課題を解決するための手段】第一の問題の解決方法
は、通信するホストが通信相手にデータ102,108
を登録(800,808)した通信と事前割り振りバッ
ファ142,152にコピーした通信のどれが最適かを
決定するデータ長を知らせることである。
【0014】第二の問題の解決方法は、受信ホストが知
らせの効果を計算し、効果が低い場合に知らせを抑える
ことである。
【0015】第三の問題の解決方法は、8つの組み合わ
せを可能にする通信プロトコルである。
【0016】第四の問題の解決方法は、送受信動作に期
待される転送データ長を通信相手に知らせることであ
る。
【0017】第五の問題の解決方法は通信パターンによ
るバッファの変更である。
【0018】
【発明の実施の形態】<<第一の問題の解決方法>>こ
の問題の解決方法の説明としてまず、従来方式を説明す
る。図5にMPI−Proの通信方法を示す。(今後、
通信方法の図を理解しやすくするために、図3と図4の
アプリケーション100,106とエミュレーションラ
イブラリ140,150のみを示す。両ホスト10,2
0は同様なソフトウェア構成を持つ。そして、片方向の
データ転送のみを示し、左のホストを送信ホスト10、
右のホストを受信ホスト20とする。)MPI−Pro
は送信側では事前割り振りバッファを利用しなく、アプ
リケーション106のデータ108から直接送信する。
全ての通信は送信ホスト10からの書き込みである。デ
ータ長が長い場合にデータ108を直接アプリケーショ
ン206データ208に送信(900)し、データ長が
短い場合データを受信ホスト20の事前割り振りバッフ
ァ252に送信(902)する。ここでは、どちらに送
信するか決定するホストは送信ホスト10である。
【0019】スーパーコンピュータの場合、ホスト1
0、20は普段全て同じ物であるため、送信ホスト10
は受信ホスト20のアプリケーションデータ208と事
前割り振りバッファ252とのどちらに送信すれば最適
かを判断できる。しかし、高速ソケット通信やMPIを
実行するワークステーションクラスタのようにホスト1
0,20が異なるシステムの場合、ホストによりメモリ
登録動作(132,123)の時間とメモリコピーの性
能が異なるため、送信ホスト10だけの判断は不可能で
ある。判断を間違えば受信処理(と、その結果、送信ホ
スト10と受信ホスト20を含むシステム全体)の性能
が低下する。
【0020】以上は従来の技術である。本発明ではこの
問題を解決するために、受信ホストが登録(805)し
た通信と事前割り振りバッファ252を介した通信のど
れが最適かを決定するデータ長を送信ホストに知らせ
る。知らせるタイミングはまず、高速ソケットでは通信
するホスト10,20がソケットAPI90でソケット
の接続を確立したとき、MPIではMPIライブラリ1
50,250の初期化時である(今後、このタイミング
を「通信開始」と呼ぶ)。従来(図6a)このタイミン
グで送信するデータ910(事前割り振りバッファアド
レスとデータ長等)と一緒に、本発明のデータ長の知ら
せ911(図6b)を転送することが考えられる。そし
てもう一つの可能なタイミングとして、ホスト20が始
めてホスト10に通信したとき、この情報を追加するこ
とも考えられる。
【0021】どちらの通信方法が最適かを決定するデー
タ長の設定として、(1)アプリケーション206から
の設定、(2)ホスト10,20の管理者やユーザやア
プリケーションからの設定、(3)エミュレーションラ
イブラリ140,150をホスト10,20にインスト
ールしたプログラムの設定、などの方法が考えられる
(しかし、これらの方法に限られていない)。
【0022】以上の発明のため、受信ホスト20の受信
処理(と、その結果、システム全体)の性能が向上す
る、という効果を得る。
【0023】<<第ニの問題の解決方法>>この問題の
解決方法の説明としてまず、従来方式を説明する。図7
に従来方式を示す。受信ホスト20のアプリケーション
206が受信呼び出しを実行し、エミュレーションライ
ブラリ250が、アプリケーションデータ208に直接
受信することが効率的であることを判断したとき、デー
タ208を登録(805)して、送信側に受信アドレス
とデータ長を知らせること(950)ができる(データ
転送以外、エミュレーションライブラリ140,15
0,250は制御メッセージを交換し、このアドレスと
データ長の知らせを制御メッセージとして転送する)。
この場合、送信ホスト10が送信呼び出しを実行したと
きにデータをこのアドレスに送信して(951)、そし
て送信完了の確認メッセージ952を送信する。このた
め、送信呼び出しの直後に送信の開始ができる。しか
し、以前述べたとおり、送信ホスト10が送信開始後に
アドレスの知らせ950を受信した場合、この知らせ9
50は無駄となり、処理オーバーヘッドとなり、ネット
ワークバンド幅を占めるため、システム全体の処理性能
を低下する。
【0024】以上は従来の技術である。本発明はこの問
題を解決するために、受信ホスト20がアドレスの知ら
せ950の効果を計算し、効果が低い場合に知らせを抑
える。送信したアドレスの知らせ950の送信回数に対
して、このアドレスに受信した回数の割合で効果を計算
できる。そして、この効果があるしきい値より低い場
合、アドレスの知らせ950の送信を抑える。
【0025】上記の解決方法にはまず、ユーザや管理
者、エミュレーションライブラリ140,150,25
0作者かインストールプログラム、あるいはアプリケー
ション200がしきい値を設定することが考えられる。
そして、全てのアドレスの知らせ950をまとめて効果
を計算すること、そして受信アドレス毎に計算するこ
と、の2つの方式が考えられる(後者の場合、効率の悪
い受信アドレスだけに、アドレスの知らせ950を抑え
ることができる)。そして、抑える動作として中止(止
めて続けない)と中断(止めた後に続く)が考えられ
る。
【0026】以上の発明のため、送信ホスト10と受信
ホスト20の処理効率を向上し、ネットワークバンド幅
を無駄に占めないため、これらのホスト(と、その結
果、システム全体)の性能が向上する、という効果を得
る。
【0027】<<第三の問題の解決方法>>ここではま
ず、従来方式の通信方法を説明する。今後送信個所と受
信個所の組み合わせを示す番号(900,904等)
に、送信ホスト10からの書き込み(write)か受
信ホスト20からの読み出し(read)を加えて各組
み合わせを示す。例えば、以前説明した図5のMPI−
Proは900−writeと904−writeの2
つの組み合わせのみを使用する。
【0028】図8にWinsock Directの通信方法を示し、
図9にプロトコルの詳細を示す。Winsock Directではま
ず、送信ホスト10がデータを事前割振りバッファ14
2,242の間でデータ送信する(940,930)
(903−write)。受信ホスト20が受信したデ
ータをアプリケーション200のデータ202にコピー
する(905,931、942)。データ長が長い場
合、上記で先頭データのみを送信し、残りのデータ10
2を登録し(800)、その先頭アドレスを上記の送信
940,930に加える。受信ホストがデータ202を
登録(802)する。高速通信ハードウェア12が受信
ホスト20からの読み出し通信の機能がある場合、受信
ホスト20が通信データを読み出す(932,900−
read)。一方、受信側からの読み出し通信機能がな
い場合受信ホストが受信領域の先頭アドレスを知らせ
(941)、送信ホスト10がデータを書き込む(94
3,900−write)。この後、最後に通信をした
ホストが通信完了の確認を送信する(933,94
4)。そして、両ホスト10,20がメモリ登録(80
0,802)を解除する。
【0029】図10にShahらによる方式の通信方法を示
す。送信ホスト10はデータ長が短い場合、事前割振り
バッファ142,242間でデータを送信する(903
−write)。一方データ長が長い場合データ102
を登録(800)して、受信ホストの事前割り振りバッ
ファ242に送信する(904−write)。
【0030】以上は従来方式である。本発明は、図11
に示すとおり、8つの組み合わせを全て利用可能にする
プロトコルを使用する。特にこのプロトコルは従来方式
が利用しなかった902−read、902−writ
e、903−read、904readを可能にする。
【0031】以下に、本発明の通信方法を説明する。図
12に送信ホスト10側のアルゴリズムを示す。まず、
受信したアドレス知らせメッセージがあれば、これらの
メッセージを処理する(701)。そして送信データ1
02,108のデータ長を調べ(702)、データが長
い場合にメモリを登録(800,808)し(70
4)、短い場合に事前割り振りバッファ142,152
にコピーする(703)。
【0032】次に、アドレス知らせメッセージで知らせ
た、受信ホスト20での宛先アドレスがあれば(70
5)、送信データを受信ホスト20のアプリケーション
データ202、208に書き込み送信する(706)
(長いデータ長の場合900−write、短いデータ
長の場合902−writeになる)。宛先アドレスが
なければ、受信ホスト20の事前割り振りバッファ24
2,252への送信が可能か(すなわち、事前割り振り
バッファに空きがあるか)、そして適切か(第一の問題
で説明したとおり、受信ホスト20がこのデータ長を事
前割り振りバッファ42,252で受信したいか)を調
べる(707)。この二つの条件が真であれば、送信ホ
スト10が事前割り振りバッファ242、252に書き
込み送信する(708)(長いデータ長の場合904−
write、短いデータ長の場合903−writeに
なる)。一方、この二つの条件のどれかが真でなけれ
ば、送信データのアドレス知らせを送信して(70
9)、受信完了メッセージを待つ(710)(長いデー
タ長の場合900−readか904−readのどれ
か、短いデータ長の場合902−readか903−r
eadのどれかになる)。最後に、送信データを解放
(711)する(長いデータ長の場合登録800,80
8を、短いデータ長の場合事前割り振りバッファ14
2,152を解放する)。
【0033】図13に受信側のアルゴリズムを示す。ま
ず、事前割り振りバッファ242,252で受信したデ
ータをコピー(905)して、アドレス知らせメッセー
ジがあるかを調べる(721)。アドレス知らせメッセ
ージがあった場合(722)、データ長を調べる(72
3)。データ長が長い場合、アプリケーションデータ2
02,208を登録(802,805)し(724)、
送信ホスト10からデータを読み出す(725)(90
0−readか902−readのどれかになる)。一
方、データ長が短い場合、受信ホスト20が事前割り振
りバッファ242,252にデータを読み出す(72
6)(903−readか904−readのどれかに
なる)。データ長にもかかわらず、最後に受信完了メッ
セージを送信する(727)。
【0034】アドレス知らせメッセージがなかった場合
(722)、データ長を調べる(728)。データ長が
短い場合、事前割り振りバッファ242,252でのデ
ータ受信(903−writeか904−write)
か、アドレス知らせメッセージを待つ(後者の場合、図
13の処理をスタート720から繰り返す)。一方、デ
ータ長が長い場合にはアプリケーションのデータを登録
して(729)、この先頭アドレスをアドレス知らせメ
ッセージで送信する(730)。送信ホスト10では送
信処理開始の前にこのアドレス知らせメッセージが受信
されたら、900−writeと902−writeの
どれかの通信になる。一方、受信ホスト20がこのステ
ップでアドレス知らせメッセージを受信すれば、これは
送信ホスト10と受信ホスト20が同時にお互いにアド
レス知らせメッセージを送信したことが分かる。この場
合、送信ホスト10に送信してもらうために、受信ホス
ト20がこのデータ転送におけるアドレス知らせメッセ
ージを無視する。
【0035】以上の発明のため、送信ホスト10と受信
ホスト20の間の通信性能が向上し、これらのホスト
(と、その結果、システム全体)の性能が向上する、と
いう効果を得る。
【0036】<<第四の問題の解決方法>>ストレージ
装置などのホスト10,20はアプリケーションデータ
102,202,108,208か通信割り振りバッフ
ァ142,152,242,252のどれかしか装備し
ないことが考えられる。第三の問題の解決方法で説明し
た通信アルゴリズムはこの場合にでも使用できる。ある
ホスト10,20にアプリケーションデータ102,1
08,202,208がない場合、このホスト10,2
0の処理の判断702,723,728をいつも「短
い」とする。逆にあるホスト10,20に事前割り振り
バッファ142,242,152,252がなければ、
このホストでこれらの判断をいつも「長い」とし、そし
て通信開始にこのホストから図6aの事前割り振りバッ
ファアドレスを送信しなく、そして通信相手に判断70
7の「可能かつ適切か」の条件に「存在するか」という
条件を加える。このため、必要でない機能のインプリメ
ントが不要となり、そして事前割り振りバッファ14
2,242,152,252がない場合このメモリ領域
のアロケーションが不要となり、このアルゴリズムは容
易なインプリメントと資源の節約を可能にする。しか
し、下記に説明する問題が生じる。
【0037】上記のアルゴリズムを使用しホストとスト
レージ装置が通信している場合、ストレージ装置は必要
でない資源(事前割り振りバッファ142,242,1
52,252等)をアロケートしない。一方、ホスト側
は通信の特性を理解しないため、例えばデータ転送単位
がいつも長い時にでも事前割り振りバッファ142,2
42,152,252をアロケートし、メモリを無駄に
する。
【0038】本発明では上記の問題を解決するために通
信初期化時に期待される転送データ長を使用してライブ
ラリの初期化を行う。この転送データ長を通信相手に知
らせ、およびまたはアプリケーション100,200,
106,206が指定する。この転送データ長が「長
い」か「短い」により、アプリケーションのデータ送受
信が必要か、または事前割り振りバッファ142,24
2,152,252が必要かを判断できる。
【0039】以上の発明のため、ホスト10,20の間
の通信性能が向上し、メモリを節約するため、これらの
ホスト(と、その結果、システム全体)の性能が向上す
る、という効果を得る。そしてホスト10,20に必要
な処理性能とメモリ量だけを装備すればよいため、シス
テムのコストを低下できる、という効果もある。
【0040】<<第五の問題の解決方法>>次に本発明
の解決方法を説明する。まず、事前割り振りバッファの
変更は(1)拡大か縮小のサイズ変更、(2)追加か削
除、(3)受信用バッファを送信用にすることか、送信
用バッファを受信用にすること、の3種類がある。
【0041】ホスト10,20は次の動作で変更を決定
することが考えられる。まず、エミュレーションライブ
ラリ140,150,240,250の起動時に、サイ
ズの最大値と最小値、そして使用率の上限と下限の値を
設定する。これらの値の設定方法は(1)ライブラリ1
40,150作成時の定数(2)ホスト10,20のユ
ーザや管理者やユーザやアプリケーションからの設定、
(3)ライブラリ140、150,240,250をホ
スト10,20にインストールしたプログラムの設定、
などの方法が考えられる(しかし、これらの方法に限ら
れていない)。そして、通信開始後、送受信動作毎およ
びまたは定期的に送信用事前割り振りバッファ142,
152と受信用事前割り振りバッファ242,252の
使用率を調べ、平均使用率を計算する。この平均使用率
が上限を超え、そしてこの事前割り振りバッファ14
2,242,152,252のサイズが最大限を超えて
いない場合,バッファの拡大や追加を行う。逆に、この
平均使用率が下限を超え、そしてこの事前割り振りバッ
ファ142,242,152,252のサイズが最小限
を超えていない場合、バッファの縮小や削除を行う。そ
して送信用バッファにある変更、そして受信用バッファ
にその逆の変更を決定したら、バッファの用途を変更す
る(逆もまた同様である)。例えば、送信用事前割り振
りバッファ142,152を拡大して受信用事前割り振
りバッファ242,252を縮小する場合、受信用バッ
ファの一部を送信用にすることが考えられる。
【0042】受信ホスト20での事前割り振りバッファ
242,252を変更した場合、受信ホスト20が送信
ホスト10に変更内容を制御メッセージで知らせる必要
がある(逆に、送信ホスト10の送信用事前割り振りバ
ッファ142,152の変更を受信ホスト20に知らせ
る必要はない)。サイズ縮小、バッファ削除と用途変更
の変更知らせメッセージの場合、送信ホストが変更され
る領域にデータを送信しないために、受信ホスト20が
変更知らせメッセージを送信して、送信ホストが応答し
た後に変更を行う。これら以外の変更を、知らせメッセ
ージを行う前にでも変更が行えられ、そして送信ホスト
の応答が不要である。
【0043】以上の発明のため、ホスト10,20の間
の通信性能が向上し、メモリを節約するため、これらの
ホスト(と、その結果、システム全体)の性能が向上す
る、という効果を得る。そしてホスト10,20に必要
なメモリ量だけを装備すればよいため、システムのコス
トを低下できる、という効果もある。
【0044】<<変形例>>本発明はすでに記載した実
施の形態あるいはその変形例に限定されるのではなく、
以下に例示する変形例あるいは他の変形例によっても実
現可能であることは言うまでもない。また、上記複数の
実施の形態あるいはその変形例として記載の技術あるい
は以下の変形例の組み合わせによっても実現できる。 (1)以上の説明ではデータ102,202,108,
208を登録(800,802,805,806)して
通信した場合、通信完了後に登録を解除すると述べてい
る。しかし、MPI−Proと同様に、後で同じアドレ
スのデータが通信された場合に登録を不要にするために
登録を解除しなくキャッシングすることが考えられる。 (2)以上のアルゴリズムやプロトコルの説明では通信
完了確認メッセージの送信を示したが、高速通信ハード
ウェア12や通信プロトコルの機能によりこれらのメッ
セージ、あるいはその一部が不要となる。 (3)上記の5つの問題の解決方法を別々に使用するこ
と、あるいは複数同時に組み合わせて使用することがで
きる。
【0045】なお、本発明を実施するためのプログラム
は、それ単独であるいは他のプログラムと組み合わせ
て、ディスク記憶装置等のプログラム記憶媒体に記憶さ
れた販売することができる。また、本発明を実施するた
めのプログラムは、すでに使用されている通信を行うプ
ログラムに追加される形式のプログラムでもよく、ある
いはその通信用のプログラムの一部を置換する形式のプ
ログラムでもよい。
【0046】
【発明の効果】以上から明らかなように、通信を高速化
し、処理オーバーヘッドとメモリ使用量を減らすことが
できる。
【図面の簡単な説明】
【図1】TCP/IPプロトコルを使用し通信するホス
トのソフトウェア構成を示す図。
【図2】高速通信を使用し通信するホストのソフトウェ
ア構成を示す図。
【図3】高速ソケットを使用し通信するホストのソフト
ウェア構成を示す図。
【図4】MPIを使用し通信するホストのソフトウェア
構成を示す図。
【図5】MPI−Proの通信方法を示す図。
【図6】第一の問題を解決するための、通信方法切り替
えしきい値のデータ長の転送を示す図。
【図7】送信宛先を知らせるためのアドレス知らせメッ
セージとその応答を示す図。
【図8】Winsock Directの通信方法を示す図。
【図9】Winsock Directのプロトコルの詳細を示す図。
【図10】Shahらによる方式の通信方法を示す図。
【図11】本発明の通信方法を示す図。
【図12】本発明の送信側の通信アルゴリズムを示す
図。
【図13】本発明の受信側の通信アルゴリズムを示す
図。
【符号の説明】
10:送信ホスト 20:受信ホスト 100,103,106,200:アプリケーション 120:オペレーティング・システム・カーネル 11:通信ハードウェア 12:高速通信ハードウェア。

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】通信手段を介して情報処理装置間でデータ
    を転送する通信方法であり、受信側となるべき第一の情
    報処理装置は送信側となるべき第二の情報処理装置に対
    し、前記データの受信対象のメモリ領域を連絡するよう
    にされた通信方法において、前記第一の情報処理装置は
    前記第二の情報処理装置に対し、前記受信対象のメモリ
    領域を第二の情報処理装置から指示して該受信対象のメ
    モリ領域に前記データを転送する第一の転送動作と、前
    記第一の情報処理装置に予め割り振ったバッファ領域を
    介して該データを転送する第二の転送動作との何れを選
    択すべきかを判定するための転送データ長に関する閾値
    を通知することを特徴とする通信方法。
  2. 【請求項2】前記閾値は転送のスループットを向上する
    ために定められることを特徴とする請求項1の通信方
    法。
  3. 【請求項3】前記閾値は転送のレイテンシーを削減する
    ために定められることを特徴とする請求項1の通信方
    法。
  4. 【請求項4】前記閾値は転送の処理量を削減するために
    定められることを特徴とする請求項1の通信方法。
  5. 【請求項5】通信手段を介して情報処理装置間でデータ
    を転送する通信方法であり、受信側となるべき第一の情
    報処理装置は送信側となるべき第二の情報処理装置に対
    し、前記データの受信対象のメモリ領域を連絡するよう
    にされた通信方法において、前記第一の情報処理装置は
    前記第二の情報処理装置に対し、前記受信対象のメモリ
    領域を第二の情報処理装置から指示して該受信対象のメ
    モリ領域に前記データを転送する第一の転送動作と、前
    記第一の情報処理装置に予め割り振ったバッファ領域を
    介して該データを転送する第二の転送動作との何れを選
    択すべきかを判定するための転送データ長に関する閾値
    を通知し、前記第二の情報処理装置は転送すべきデータ
    長が前記閾値を越えるか否かにより前記第一の転送動作
    か、第二の転送動作かを決定して前記データを転送する
    ことを特徴とする通信方法。
  6. 【請求項6】通信手段に接続し、上記の通信手段を介し
    て第二情報処理装置からデータを受信し、上記の通信手
    段でデータを受信する前に対象のメモリ領域を受信可能
    な領域として指示する第一の情報処理装置において、上
    記受信可能な領域として指示する動作の処理時間によ
    り、あらかじめ割り振って指示したメモリ領域の大きさ
    を決定し、上記のメモリ領域の大きさを上記第二情報処
    理装置に知らせ、第二情報処理装置に上記メモリ領域の
    大きさを超えないデータ長の送信を上記あらかじめ割り
    振って指示したメモリ領域に送信してもらい、超えるデ
    ータ長の送信に対象のメモリ領域を指示して上記対象の
    メモリ領域に送信してもらうことにより、最速の通信方
    法を使用することを特徴とする通信方法。
  7. 【請求項7】通信手段を介して情報処理装置間でデータ
    を転送する通信方法であり、受信側となるべき第一の情
    報処理装置は前記データの受信対象のメモリ領域を登録
    し、前記受信対象のメモリ領域のアドレスを送信側とな
    るべき第二の情報処理装置に対して通知することを特徴
    とする通信方法。
  8. 【請求項8】前記第一の情報処理装置は、前記受信対象
    のメモリ領域の登録が必要か否かを判定し、必要があっ
    た時にのみ前記メモリ領域の登録と前記アドレスの第二
    の情報処理装置に対する通知とを実行することを特徴と
    する請求項7の通信方法。
  9. 【請求項9】前記判定は前記アドレスの通知の効率を測
    定することにより実行することを特徴とする請求項8の
    通信方法。
  10. 【請求項10】通信手段に接続し、上記の通信手段を介
    して第二情報処理装置にデータを送信し、上記の通信手
    段でデータを送信する前に対象のメモリ領域を送信可能
    な領域として指示する第一の情報処理装置において、あ
    らかじめ割り振って指示したメモリ領域に送信データを
    コピーし、上記コピーしたデータのアドレスとデータ量
    を上記第二情報処理装置に知らせ、上記第二情報処理装
    置にデータを読み出すことを特徴とする通信方法。
  11. 【請求項11】通信手段に接続し、上記の通信手段を介
    して第二情報処理装置にデータを送信し、上記の通信手
    段でデータを送信する前に対象のメモリ領域を送信可能
    な領域として指示する第一の情報処理装置において、あ
    らかじめ割り振って指示したメモリ領域に送信データを
    コピーし、上記コピーしたデータを、上記第二情報処理
    装置がこの通信に指示したメモリ領域に送信することを
    特徴とする通信方法。
  12. 【請求項12】通信相手のメモリアドレスを指定しデー
    タを送信できる通信手段に接続し、上記の通信手段を介
    して第二情報処理装置からデータを受信する第一の情報
    処理装置において、第二情報処理装置がこのデータ転送
    に指示しアドレスとデータ量を知らせたメモリ領域か
    ら、第一情報処理装置があらかじめ割り振って指示した
    メモリ領域に読み出すことを特徴とする通信方法。
  13. 【請求項13】通信手段に接続し、上記の通信手段を介
    して複数のデータ転送方法を持つ通信プロトコルで送受
    信する第一と第二の情報処理装において、送受信開始
    時、第一およびまたは第二の情報処理装が通信相手に平
    均転送データ長を知らせ、上記平均転送データ長により
    転送方法を選択することを特徴とする通信方法。
  14. 【請求項14】上記転送方法の選択は、対象のメモリ領
    域を指示して送受信するか否か、およびまたはあらかじ
    め割り振って指示したメモリ領域を介してデータを送受
    信するか否かを特徴とする請求項13の通信方法。
  15. 【請求項15】通信相手のメモリアドレスを指定しデー
    タを送受信できる通信相手のメモリアドレスを指定しデ
    ータを送信できる通信手段に接続し、上記の通信手段を
    介して第二情報処理装置とデータを送受信し、上記の通
    信手段でデータを受信する前に対象のメモリ領域を受信
    可能な領域として指示し、あらかじめ割り振って指示し
    たメモリ領域を介してデータを送受信する第一の情報処
    理装置において、上記あらかじめ割り振って指示したメ
    モリ領域を変更することを特徴とする通信方法。
  16. 【請求項16】上記変更が上記メモリ領域の拡大および
    または縮小であることを特徴とする請求項15の通信方
    法。
  17. 【請求項17】上記あらかじめ割り振って指示したメモ
    リ領域は受信用途と受信用途に分かれおり、上記変更が
    受信用途のメモリ領域を送信用途にすること、およびま
    たは送信用途のメモリ領域を受信用途にすることを特徴
    とする請求項15の通信方法。
JP2001004399A 2001-01-12 2001-01-12 通信方法 Pending JP2002208981A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001004399A JP2002208981A (ja) 2001-01-12 2001-01-12 通信方法
US09/918,639 US6826622B2 (en) 2001-01-12 2001-08-01 Method of transferring data between memories of computers
US10/951,794 US20050050162A1 (en) 2001-01-12 2004-09-29 Method of transferring data between memories of computers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001004399A JP2002208981A (ja) 2001-01-12 2001-01-12 通信方法

Publications (1)

Publication Number Publication Date
JP2002208981A true JP2002208981A (ja) 2002-07-26

Family

ID=18872593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001004399A Pending JP2002208981A (ja) 2001-01-12 2001-01-12 通信方法

Country Status (2)

Country Link
US (2) US6826622B2 (ja)
JP (1) JP2002208981A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526462A2 (en) * 2003-10-14 2005-04-27 Hitachi, Ltd. Storage device and system providing a reservation function for a communications buffer
JP2007511844A (ja) * 2003-11-20 2007-05-10 インターナショナル・ビジネス・マシーンズ・コーポレーション Pprc書き込みオペレーションの応答時間削減

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115350A1 (en) * 2001-12-14 2003-06-19 Silverback Systems, Inc. System and method for efficient handling of network data
US20030131140A1 (en) * 2001-12-26 2003-07-10 Texas Instruments Incorporated Data transfers in embedded systems
AU2003250498A1 (en) * 2002-08-23 2004-03-11 International Business Machines Corporation Processing application data
US7911994B2 (en) * 2003-02-28 2011-03-22 Openwave Systems Inc. Confirmation of delivery of content to an HTTP/TCP device
US20050091334A1 (en) * 2003-09-29 2005-04-28 Weiyi Chen System and method for high performance message passing
US7539995B2 (en) * 2004-12-30 2009-05-26 Intel Corporation Method and apparatus for managing an event processing system
US7454667B2 (en) * 2005-04-26 2008-11-18 Intel Corporation Techniques to provide information validation and transfer
US20070025242A1 (en) * 2005-07-27 2007-02-01 Broadcom Corporation Dynamic allocation of aggregate buffer
US20070180115A1 (en) * 2006-02-02 2007-08-02 International Business Machines Corporation System and method for self-configuring multi-type and multi-location result aggregation for large cross-platform information sets
US8924590B2 (en) * 2006-02-14 2014-12-30 Hewlett-Packard Development Company, L.P. System and method for communicating in a networked system
JP2008134685A (ja) * 2006-11-27 2008-06-12 Konica Minolta Business Technologies Inc 不揮発メモリシステム及び不揮発メモリ制御方法
JP4872952B2 (ja) * 2008-03-06 2012-02-08 日本電気株式会社 Tcpバッファコピー分散並列処理装置、方法及びプログラム
CN102325274B (zh) * 2011-10-13 2013-08-21 浙江万里学院 一种自适应网络带宽的视频流传输控制方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5365516A (en) * 1991-08-16 1994-11-15 Pinpoint Communications, Inc. Communication system and method for determining the location of a transponder unit
JP3628514B2 (ja) 1998-05-14 2005-03-16 株式会社日立製作所 計算機間データ送受信方法
US6510160B1 (en) * 1999-02-04 2003-01-21 Cisco Technology, Inc. Accurate computation of percent utilization of a shared resource and fine resolution scaling of the threshold based on the utilization
US6715099B1 (en) * 1999-06-02 2004-03-30 Nortel Networks Limited High-availability architecture using high-speed pipes
US7103888B1 (en) * 2000-06-06 2006-09-05 Intel Corporation Split model driver using a push-push messaging protocol over a channel based network
US7089289B1 (en) * 2000-07-18 2006-08-08 International Business Machines Corporation Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1526462A2 (en) * 2003-10-14 2005-04-27 Hitachi, Ltd. Storage device and system providing a reservation function for a communications buffer
JP2005122235A (ja) * 2003-10-14 2005-05-12 Hitachi Ltd 通信バッファ予約機能を備えるストレージ装置およびシステム
EP1526462A3 (en) * 2003-10-14 2005-11-23 Hitachi, Ltd. Storage device and system providing a reservation function for a communications buffer
US6973555B2 (en) 2003-10-14 2005-12-06 Hitachi, Ltd. Storage device and system for providing communications buffer reservation function
JP2007511844A (ja) * 2003-11-20 2007-05-10 インターナショナル・ビジネス・マシーンズ・コーポレーション Pprc書き込みオペレーションの応答時間削減

Also Published As

Publication number Publication date
US20050050162A1 (en) 2005-03-03
US6826622B2 (en) 2004-11-30
US20020095471A1 (en) 2002-07-18

Similar Documents

Publication Publication Date Title
US6981051B2 (en) Adaptive flow control protocol
KR100992282B1 (ko) 통신 접속 수립 방법과 시스템, 데이터 전송 방법과 시스템, 및 컴퓨터 판독 가능한 저장 매체
KR101006260B1 (ko) 네트워크 프로토콜 처리의 오프로드에서 메모리 관리를 지원하기 위한 장치 및 방법
US5991797A (en) Method for directing I/O transactions between an I/O device and a memory
JP2002208981A (ja) 通信方法
US6976083B1 (en) Apparatus for providing direct data processing access using a queued direct input-output device
US6519645B2 (en) Method and apparatus for providing configuration information using a queued direct input-output device
JP4012545B2 (ja) リモート・ダイレクト・メモリ・アクセス対応ネットワーク・インタフェース・コントローラのスイッチオーバーとスイッチバックのサポート
JP4722157B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
US6347341B1 (en) Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device
JP4651692B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
US6345327B1 (en) Queuing method and apparatus for providing direct data processing access using a queued direct input-output device
JP4840943B2 (ja) ネットワークトラフィックのインテリジェントロードバランシング及びフェイルオーバー
JPH11120156A (ja) マルチプロセッサシステムにおけるデータ通信方式
US6397350B1 (en) Method of providing direct data processing access using a queued direct input-output device
EP4177763A1 (en) Data access method and related device
US6345241B1 (en) Method and apparatus for simulation of data in a virtual environment using a queued direct input-output device
US6401145B1 (en) Method of transferring data using an interface element and a queued direct input-output device
US6321350B1 (en) Method and apparatus for error detection using a queued direct Input-Output device
US6341321B1 (en) Method and apparatus for providing concurrent patch using a queued direct input-output device
US6345324B1 (en) Apparatus for transferring data using an interface element and a queued direct input-output device
US6339803B1 (en) Computer program product used for exchange and transfer of data having a queuing mechanism and utilizing a queued direct input-output device
KR100449806B1 (ko) 네트워크를 통해 스트리밍 데이터를 고속으로 송수신하기위한 네트워크-스토리지 연결 장치
US20140143441A1 (en) Chip multi processor and router for chip multi processor
US6339801B1 (en) Method for determining appropriate devices for processing of data requests using a queued direct input/output device by issuing a special command specifying the devices can process data