JP2023020150A - Communication management program, information processing apparatus, and communication management method - Google Patents
Communication management program, information processing apparatus, and communication management method Download PDFInfo
- Publication number
- JP2023020150A JP2023020150A JP2021125358A JP2021125358A JP2023020150A JP 2023020150 A JP2023020150 A JP 2023020150A JP 2021125358 A JP2021125358 A JP 2021125358A JP 2021125358 A JP2021125358 A JP 2021125358A JP 2023020150 A JP2023020150 A JP 2023020150A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- flag
- data
- event
- events
- 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.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims abstract description 67
- 238000004891 communication Methods 0.000 title claims abstract description 58
- 230000010365 information processing Effects 0.000 title claims abstract description 15
- 238000012545 processing Methods 0.000 claims abstract description 207
- 230000003139 buffering effect Effects 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims abstract description 34
- 230000000903 blocking effect Effects 0.000 claims abstract description 30
- 238000009825 accumulation Methods 0.000 claims abstract description 13
- 239000000872 buffer Substances 0.000 claims description 129
- 230000015654 memory Effects 0.000 claims description 26
- 230000005540 biological transmission Effects 0.000 abstract description 132
- 230000004044 response Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 10
- 238000012790 confirmation Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
Description
本発明は、通信管理プログラム、情報処理装置及び通信管理方法に関する。 The present invention relates to a communication management program, an information processing apparatus, and a communication management method.
従来の技術として、データの大きさに応じて使用するバッファを変更してデータを送信する情報処理装置が提案されている(例えば、特許文献1参照)。 As a conventional technique, an information processing apparatus has been proposed that transmits data by changing the buffer to be used according to the size of the data (see, for example, Japanese Unexamined Patent Application Publication No. 2002-100003).
特許文献1に開示された情報処理装置のCPU(Central Processing Unit)は、アプリケーションバッファエリアを占有するアプリケーションタスクとリングバッファエリアを占有するTCP(Transmission Control Protocol)/IP(Internet Protocol)タスクとを並列的に実行する。アプリケーションタスクは、データ生成処理によってアプリケーションバッファエリアに格納されたデータのサイズが閾値以下であるか否かを判別し、判別結果が肯定的であるときアプリケーションバッファエリア上のデータをリングバッファエリアに複製してデータ送信指示を発行する一方、判別結果が否定的であるときアプリケーションバッファエリアの占有権をTCP/IPタスクに一時的に付与してデータ送信指示を発行する。TCP/IPタスクは、自ら占有するメモリエリア上の送信データをデータ送信指示に応答して送信する。
A CPU (Central Processing Unit) of the information processing apparatus disclosed in
しかし、特許文献1の情報処理装置は、送信するデータ量が少ない場合はリングバッファを用いてデータを送信して、アプリケーションタスクを並列して行い、送信するデータ量が多い場合はTCP/IPタスクを専有的に処理することで通信速度の高速化を図るものの、送信するデータ量が多い場合はアプリケーションタスクがブロッキングされて処理されない、という問題がある。
However, when the amount of data to be transmitted is small, the information processing apparatus of
従って本発明の目的は、アプリケーション処理及びデータの送信をノンブロッキングに実行して通信を高速化する通信管理プログラム、情報処理装置及び通信管理方法を提供することにある。 SUMMARY OF THE INVENTION Accordingly, it is an object of the present invention to provide a communication management program, an information processing apparatus, and a communication management method that speed up communication by executing application processing and data transmission in a non-blocking manner.
本発明の一態様は、上記目的を達成するため、以下の通信管理プログラム、情報処理装置及び通信管理方法を提供する。 One aspect of the present invention provides the following communication management program, information processing apparatus, and communication management method in order to achieve the above object.
[1]コンピュータを、
1以上のイベントを蓄積するバッファリング手段と、
前記蓄積したイベントを処理する処理手段と、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理手段として機能させ、
前記処理手段は、イベントの処理を要求する処理要求手段と、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理手段とを含み、
前記フラグ管理手段は、前記処理手段のイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理手段の終了のタイミングでフラグを解除し、
前記処理要求手段は、前記バッファリング手段に対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する通信管理プログラム。
[2]前記バッファリング手段は、ノンブロッキングキューに前記イベントを蓄積する前記[1]に記載の通信管理プログラム。
[3]前記バッファリング手段は、メモリプールに前記イベントを蓄積する前記[1]又は[2]に記載の通信管理プログラム。
[4]前記バッファリング手段は、リングバッファに前記イベントを蓄積する[1]又は[2]に記載の通信管理プログラム。
[5]1以上のイベントを蓄積するバッファリング手段と、
前記蓄積したイベントを処理する処理手段と、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理手段とを有し、
前記処理手段は、イベントの処理を要求する処理要求手段と、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理手段とを含み、
前記フラグ管理手段は、前記処理手段のイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理手段のイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求手段は、前記バッファリング手段に対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する情報処理装置。
[6]1以上のイベントをノンブロッキングに蓄積するバッファリングステップと、
前記蓄積したイベントを処理する処理ステップと、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理ステップとを有し、
前記処理ステップは、イベントの処理を要求する処理要求ステップと、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理ステップとを含み、
前記フラグ管理ステップは、前記処理ステップのイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理ステップのイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求ステップは、前記バッファリングステップに対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する通信管理方法。
[1] a computer,
buffering means for accumulating one or more events;
a processing means for processing the accumulated events;
act as a flag manager that accepts calls and sets flags exclusively,
The processing means includes processing request means for requesting event processing, and callback processing means for receiving a completion notification and executing when the event processing is completed,
The flag management means sets the flag exclusively at the timing of the start of event processing by the processing means, and cancels the flag at the timing of the end of the callback processing means,
The processing request means accepts a call at the timing of accumulation in the buffering means and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. A communication management program that terminates without any delay and processes the events accumulated by the buffering means when set.
[2] The communication management program according to [1], wherein the buffering means accumulates the event in a non-blocking queue.
[3] The communication management program according to [1] or [2], wherein the buffering means accumulates the event in a memory pool.
[4] The communication management program according to [1] or [2], wherein the buffering means accumulates the event in a ring buffer.
[5] buffering means for accumulating one or more events;
a processing means for processing the accumulated events;
a flag management means for accepting calls and setting flags exclusively,
The processing means includes processing request means for requesting event processing, and callback processing means for receiving a completion notification and executing when the event processing is completed,
The flag management means exclusively sets the flag at the timing of the start of event processing by the processing means, and cancels the flag at the timing of the end of event processing by the callback processing means,
The processing request means accepts a call at the timing of accumulation in the buffering means and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. an information processing device for processing the event accumulated by the buffering means when the event is terminated without being completed.
[6] a buffering step of non-blocking accumulation of one or more events;
a processing step of processing the accumulated events;
a flag management step for accepting and exclusively flagging calls;
The processing step includes a processing request step that requests processing of the event, and a callback processing step that is executed upon receiving a completion notification when processing of the event is completed,
The flag management step exclusively sets the flag at the timing of starting the processing of the event in the processing step, and cancels the flag at the timing of the end of processing the event in the callback processing step,
The process request step accepts a call at the timing of accumulation for the buffering step and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. a communication management method for processing the events accumulated by the buffering means when set.
請求項1、5、6に係る発明によれば、アプリケーション処理及びデータの送信をノンブロッキングに実行して通信を高速化することができる。
請求項2に係る発明によれば、ノンブロッキングキューにイベントを蓄積することができる。
請求項3に係る発明によれば、メモリプールにイベントを蓄積することができる。
請求項4に係る発明によれば、リングバッファにイベントを蓄積することができる。
According to the inventions according to
According to the second aspect of the invention, events can be accumulated in the non-blocking queue.
According to the third aspect of the invention, events can be accumulated in the memory pool.
According to the fourth aspect of the invention, events can be accumulated in the ring buffer.
[実施の形態]
(通信管理システムの構成)
図1は、実施の形態に係る通信管理システムの構成の一例を示す概略図である。
[Embodiment]
(Configuration of communication management system)
FIG. 1 is a schematic diagram showing an example of the configuration of a communication management system according to an embodiment.
この通信管理システムは、情報処理装置としてのサーバ装置1と、クライアントとしての端末装置2a、2b、2cとをネットワークによって互いに通信可能に接続することで構成される。通信管理システムに含まれる装置は、パソコン、ゲーム端末、クラウド、仮想マシンであってもよい。ネットワークは、LANやインターネットであってもよいし、仮想ネットワークなどであってもよい。
This communication management system is configured by connecting a
サーバ装置1は、サーバ型の情報処理装置であり、操作者の操作する端末装置2a、2b、2cの要求に応じて動作するものであって、本体内に情報を処理するための機能を有するCPU(Central Processing Unit)やHDD(Hard Disk Drive)又はフラッシュメモリ、揮発性メモリ、LANボード(無線/有線)等の電子部品を備える。サーバ装置1は、端末装置2a、2b、2cと通信し、データの送受信を行うことで端末装置2a、2b、2c上で扱うデータの同期を行うものであって、例えば、ゲームサーバ等である。サーバ装置1は、同期動作を行う場合は容量の小さいデータを頻繁にやりとりするものであるが、これに限られるものではない。なお、サーバ装置1は、複数のクラスタによって構成してもよく、分散処理を実行するよう構成してもよい。あるいは、クラウド環境において仮想マシンとして構成してもよい。
The
端末装置2a、2b、2cは、端末型の情報処理装置であり、プログラムに基づいて動作するものであって、本体内に情報を処理するための機能を有するCPUやHDD又はフラッシュメモリ等の電子部品を備える。端末装置2a、2b、2cは、例えば、MMOG(Massively Multiplayer Online Game)等のプログラムに基づいて動作し、動作の結果としてデータをサーバ装置1に対して逐次出力するとともに、サーバ装置1から他の端末の動作の結果としてのデータを受信して各端末装置2a、2b、2c間で高頻度にゲームオブジェクトを同期するものである。なお、端末装置2a、2b、2cは3つの装置で描かれているが単一あるいは2個の装置であってもよいし、4以上の装置で構成してもよく、好ましくは、1000台オーダーの端末装置が接続されるような場合であっても通信可能な構成を提供する。
The
ネットワーク4は、高速通信が可能な通信ネットワークであり、例えば、イントラネットやLAN(Local Area Network)等の有線又は無線の通信網である。
The
一例として、本実施の形態における通信管理システムにおいて、複数の参加者が共通の仮想空間における活動、例えばゲームを行う多人数参加型ゲームが実行される。サーバ装置1及び端末装置2a、2b、2cは、ゲームの進行に伴い各装置内でオブジェクトとして保持している情報(同期対象オブジェクト)を、各装置間で同期するために動作し、特にサーバ装置1は、データ通信を高速化すべくアプリケーションとNIC(Network Interface Card)との間にバッファを設けてアプリケーションとNIC間のデータ授受の動作を制御する。言い換えれば、マルチプロセス、マルチスレッドが、共有リソース(ソケットやNIC)に非同期に書き込む要求が大量に発生する場合、データが混ざらないようにシリアライズするには、排他制御が必要となるため、送信通信路を効率よく使用(特に、送信通路がデータで混雑してからのスループット向上)するために、バッファにバッファリングして、当該バッファへの書込で排他制御(ブロッキング)を行い、当該バッファからの共有リソースへの書込はCAS(Compare and Swap)等でロックフリー(ノンブロッキング)な制御をする。動作の詳細について、実施の形態において具体的に説明する。
As an example, in the communication management system of the present embodiment, a multiplayer game is executed in which a plurality of participants play an activity, such as a game, in a common virtual space. The
また、本実施の形態において使用する「オブジェクト」等の語句は、例えば、Java(登録商標)、C++、C#、Python、JavaScript(登録商標)、Ruby等で用いられる同語句と同義で用いられるが、以降、クラス、及びインスタンス化されたクラス(インスタンス)のことを総称して「オブジェクト」と言う場合がある。 In addition, terms such as "object" used in the present embodiment are synonymous with synonyms used in, for example, Java (registered trademark), C++, C#, Python, JavaScript (registered trademark), Ruby, etc. However, hereinafter, classes and instantiated classes (instances) may be collectively referred to as "objects."
(サーバ装置の構成)
図2は、実施の形態に係るサーバ装置1の構成例を示すブロック図である。以下にサーバ装置1での実装について記述するが、端末装置2a、2b、2cも同様な構成としてもよい。
(Configuration of server device)
FIG. 2 is a block diagram showing a configuration example of the
サーバ装置1は、CPU(Central Processing Unit)等から構成され、各部を制御するとともに、各種のプログラムを実行する制御部10と、フラッシュメモリ等の記憶媒体から構成され情報を記憶する記憶部11と、揮発性記録媒体から構成され一時的に情報を記憶するメモリ12と、ネットワークを介して外部と通信する通信部13とを備える。
The
制御部10は、OS(Operating System)110を実行することで、OS実行手段100(Javaの場合はJVMも含む)として機能し、アプリケーション112を実行することで、アプリケーション実行手段103、アプリケーション読出手段104、アプリケーション書込手段105として機能し、通信管理プログラムとしての通信管理プログラム111を実行することで、ソケット読出手段101、ソケット書込手段102、バッファリング手段106(受信バッファ106aと送信バッファ106bを含む)、フラグ管理手段107等として機能する。
The
OS実行手段100(OSカーネル)は、OS110を実行し、OS110が有する各機能を提供する。OS実行手段100は、特に通信部13(NIC)を制御してネットワークにデータを送信し、ネットワークからデータを受信する。なお、JAVAを利用している場合は、Java VMもOSの一部とみなし、OS実行手段100によって実行されるものとする。
The OS executing means 100 (OS kernel) executes the
アプリケーション実行手段103は、処理手段としてアプリケーション112を実行し、アプリケーション112が有する各機能を提供するものであり、実行に伴い単一又は複数のスレッドを処理する。典型的には、それぞれのスレッドは、単一又は複数の端末装置とそれぞれ対応する単一又は複数のソケット(端末装置2a、2b、又は、2cの通信対象プログラムのIPアドレス及びポート番号)を介してネットワーク通信(送受信)を行う。
The application execution means 103 executes the
アプリケーション読出手段104は、アプリケーション112が有する機能として特に、スレッドの受信処理のために受信対象となるソケット(端末装置2a、2b、又は、2c)に対応する受信バッファ106aのデータを読み出す。
As a function of the
アプリケーション書込手段105は、スレッドの処理の結果生成されたデータを送信対象となるソケット(端末装置2a、2b、又は、2c)に対応する送信処理のために送信バッファに書き込む。書き込まれたデータは書き込まれた順に送信バッファ106bに追加される。例えば、ゲームサーバがゲームオブジェクトの同期処理のため、同期情報のリレー処理を行う場合、アプリケーション書込手段105は、端末装置2aから同期情報のデータ受信し、スレッドで受信データを処理した結果、端末装置2b、および、2cに同期情報データを送信する。アプリケーション書込手段105は、それぞれの端末装置に対応する2個のソケットに対応する2個の送信バッファ106bにデータを書き込む。
The application writing means 105 writes the data generated as a result of the processing of the thread into the transmission buffer for transmission processing corresponding to the socket (
ソケット読出手段101は、OS110が有する機能として特に、ネットワークとの通信においてソケットによって受信したデータを後述する受信バッファ106aに読み出す。
As a function of the
処理手段としてのソケット書込手段102は、処理要求手段としてのソケット書込要求手段102aとコールバック処理手段102bとして機能する。
Socket writing means 102 as processing means functions as socket
図6及び図7は、それぞれソケット書込要求手段102a及びコールバック処理手段102bの動作例を説明するためのフローチャートである。 6 and 7 are flowcharts for explaining examples of operations of the socket write request means 102a and the callback processing means 102b, respectively.
ソケット書込要求手段102aは、まず、フラグ管理手段107に依頼して、フラグ管理手段107の管理するフラグの状態を確認し(S10)、フラグが解除されている場合(S11;Yes)、フラグを立てる(S12)。フラグが立てられると、次に、ソケット書込要求手段102aは、ネットワークとの通信により送信するデータを送信バッファ106bからソケットに書き込んで、OS実行手段100にイベントの処理を要求する(S13)。もし、フラグ管理手段107の管理しているフラグがすでに立っている場合は(S11;No)、処理を直ちに終了する。なお、ここでは理解の容易性のため、フラグの検査S10/S11とフラグの変更S12を3個の別ブロックとして説明したが、マルチスレッド環境では、フラグの検査S10とフラグのセットS12の間に別スレッドがスイッチされて割り込むと、複数のスレッドそれぞれがフラグを立てた状態にして(S12)、自分のスレッドがフラグを立てたつもりになってイベント処理(S13)を実行するので、同時時期に、イベント処理(S13)を複数回実行してしまう可能性があり不都合である。この問題を解決するために、本発明では、ブロッキングによってソケット書込手段102a実行を排他制御するかわりに、後述するようなフラグ管理手段107が提供するCAS(Compare and swap)の機能を利用して、フラグの検査(S10/S11)と変更設定(S12)を単一のCPU命令で実行し、S11とS12の間に他のスレッドが実行されない工夫を行っている。 First, the socket write request means 102a requests the flag management means 107 to check the state of the flag managed by the flag management means 107 (S10). (S12). When the flag is set, the socket write request means 102a next writes the data to be transmitted by communication with the network from the transmission buffer 106b to the socket, and requests the OS execution means 100 to process the event (S13). If the flag managed by the flag management means 107 is already set (S11; No), the process is terminated immediately. For ease of understanding, the flag checking S10/S11 and the flag changing S12 have been described as three separate blocks. When another thread is switched and interrupted, each of the plurality of threads sets a flag (S12), and the own thread executes event processing (S13) as if the flag was set. , the event processing (S13) may be executed multiple times, which is inconvenient. In order to solve this problem, in the present invention, a CAS (Compare and Swap) function provided by the flag management means 107 as described later is used instead of exclusively controlling the execution of the socket writing means 102a by blocking. , flag inspection (S10/S11) and change setting (S12) are executed by a single CPU instruction, and other threads are not executed between S11 and S12.
コールバック処理手段102bは、OS実行手段100がソケット書込要求手段102aの書込イベントの処理を完了した場合に、OS実行手段100から完了通知を受け付けて(非同期に)実行する。OS実行手段100が実行したネットワーク送信結果を受け取る(S20)。送信結果が正常の場合は(S21;Yes)、コールバック処理手段102bは、送信完了分を送信バッファから除外する(S22)。引き続き、コールバック処理手段102bは、フラグ管理手段107に依頼して、フラグを解除する(S23)。引き続き、コールバック処理手段102bは、送信バッファに送信対象データが存在することを確認する(S24)。確認結果が肯定的であれば(送信バッファにデータがあれば)(S24;Yes)、コールバック処理手段102bは、ソケット書込要求手段102aに呼び出しを行う(S25)。確認結果が否定的であれば(S24;No)、コールバック処理手段102bは、処理を終了する。送信結果が異常の場合は(S21;No)、コールバック処理手段102bは、通信断、タイムアウトなどの例外処理(接続の切断など)を行う(S26)。
The
他の実装としては、以下のように構成してもよい。例えば、コールバック処理手段102bは、OS実行手段100がソケット書込要求手段102aの書込イベントの処理を完了した場合に完了通知を受け付けて(非同期に)実行された送信結果を受け取る。送信結果が異常の場合は、通信断、タイムアウトなどの例外処理(接続の切断など)を行い、終了する。送信結果が正常の場合は、送信完了分を送信バッファから削除する。引き続き、コールバック処理手段102bは、送信バッファに送信対象データが存在することを確認し、確認結果が肯定的であれば、ソケット書込要求手段102aに呼び出しを行う。確認結果が否定的であれば、フラグ管理手段107に依頼して、フラグを解除して処理を終了する。
Another implementation may be configured as follows. For example, the
バッファリング手段106は、メモリ12に2種類のバッファ領域、受信バッファ106aと送信バッファ106bを用意し、どちらも読み出し及び書き出しの対象を提供するとともに、読み出し及び書き出しをするデータを管理する。バッファを解することで読み出しと書き出しを非同期に行うことができる。受信バッファ106aは、ソケット読出手段101が書き込み、アプリケーション読出手段104が読み出す。送信バッファ106bは、アプリケーション書込手段105が書き込み、ソケット書込手段102が読み出す。なお、バッファリング手段106(106aおよび106b)は、データをノンブロッキングに読み書きする。バッファに必要なメモリを都度実行時に割り当てるのはCPUの効率が悪いので、事前に大きなメモリブロックを確保して、それを細分化したサブブロックのメモリをメモリープールとして独自のメモリ管理をし、使い回すのは一般的である。また、これらのサブブロックを組合せて、論理的にリングバッファを構成することも一般的である。ここでは、バッファ領域はメモリプールの一種であるリングバッファ121(受信バッファ106aとして受信リングバッファ121a、及び、送信バッファ106bとして送信リングバッファ121b)を用いた場合について説明するが、必ずしもリングバッファである必要はなく、論理的に無限長のバッファを提供できるバッファであればよく、好ましくはダイレクトバッファ等のヒープ領域外のメモリ領域に作成される高速に入出力が可能な一時記憶領域を用いる。ここで、メモリプールとは、コンピュータプログラムの実行時に素早く動的に必要なメモリ領域を確保するために、プログラムの起動時などにメインメモリの空き領域からある程度大きな領域を一括して確保したものとする。
The buffering means 106 prepares two types of buffer areas in the
フラグ管理手段107は、例えば、CAS(Compare and Swap)等の手段により、フラグをアトミックに管理する。ここでアトミックとは、不可分操作を指し、具体的には、あるメモリ位置の内容と指定された値を比較し、等しければそのメモリ位置に別の指定された値を格納することを1命令で行うCPUの特別な命令を指す。具体的にフラグ管理手段107は、ソケット書込要求手段102aの要求によりOS実行手段100がイベント処理を開始するタイミングで排他的にフラグを立て、イベントの処理の終了のタイミング(コールバック処理手段102bの処理)でフラグを解除する。前述のように、図6に示す動作をするので、フラグ管理手段107の機能により、ソケット書込要求手段102a及びコールバック処理手段102bは、ひとつのソケットについては、両手段あわせて高々1個しか同時には実行しないように制御され、ソケットへの書込操作の整合性が保証される。フラグを立てたソケット書込要求手段102a、または、当該書き込み要求手段102aに対応するコールバック処理手段102bが処理中の場合は、2個目以降のソケット書込要求手段102aの呼び出しは、フラグが立っている間は、フラグを自らが立てることができないので、処理を中断し、OS実行手段100への書き込みを行わずに終了(図6のS11;No)する。このため、ソケット書込要求手段102aはノンブロッキングに実行する。
The flag management means 107 manages flags atomically by means of, for example, CAS (Compare and Swap). Here, atomic refers to an indivisible operation. Specifically, one instruction compares the contents of a certain memory location with a specified value and, if they are equal, stores another specified value in that memory location. Refers to a special CPU instruction to perform. Specifically, the
記憶部11は、制御部10を上述した各手段100-107として動作させるOS110、通信管理プログラム111、アプリケーション112等を記憶する。なお、各手段100~107として機能させるための対象は、OS110、通信管理プログラム111、アプリケーション112を適宜入れ替えて行うものであってもよい。また、記憶部は、リレーショナル・データベースやファイルシステムなどを用いる。なお、高速化のために、Redisなどインメモリデータベースを利用、あるいは、併用してもよい。
The
メモリ12は、バッファリング手段106及びその他図示しない手段により制御され、情報を一時的に記憶する。
The
なお、端末装置2a、2b、2cは、サーバ装置1と同様の構成に加え、操作部及び表示部を備える。サーバ装置1と構成が共通する部分については説明を省略する。
Note that the
(情報処理装置の動作)
次に、本実施の形態の作用を、(1)基本動作、(2)データ送信動作に分けて説明する。
(Operation of information processing device)
Next, the operation of this embodiment will be described separately for (1) basic operation and (2) data transmission operation.
(1)基本動作
一例として、複数のユーザが、複数のゲームオブジェクトを同期させて同一の仮想空間(ルーム)での体験(ゲームプレイ)を共有するために、同じ仮想空間に参加する。ゲームの進行は各端末装置2a、2b、2cで行い、サーバ装置1は、ゲームの進行は行わず、オブジェクトの同期動作のみを行ってもよいし、サーバ装置1がゲームの進行も行ってもよい。
(1) Basic Operation As an example, multiple users participate in the same virtual space in order to synchronize multiple game objects and share the experience (game play) in the same virtual space (room). The game progresses in each of the
サーバ装置1の図示しない参加者管理手段は、ルームへの参加要求を受信すると、参加者に対してユーザID、ユーザ名、ソケットID、参加日時とともに記憶部11の当該ルームIDに関連付けられた参加者管理情報に記録する。
Upon receiving a room participation request, the participant management means (not shown) of the
端末装置2a、2b、2cは、ゲームのプレイ中は、プログラムの実行に伴い複数のオブジェクト(キャラクター、武器、アイテム等)を逐次生成、更新、削除して処理する。サーバ装置1は、ゲームの進行を行う場合、端末装置2a、2b、2cによるオブジェクトの操作要求を受け付けて、処理し、その処理結果を端末装置2a、2b、2cに通知することで、オブジェクトを同期させる。サーバ装置1は、ゲームの進行を行わない場合、端末装置2a、2b、2cにおけるオブジェクトの同期のためのリレー動作を行う。当該リレー動作において、サーバ装置1は、複数のオブジェクトの送受信を行う。いずれの場合でも、サーバ装置は、端末装置2a、2b、2cより、それぞれが操作する複数のオブジェクトの操作に関する情報を受信し、同期対象の端末装置に対応する複数のオブジェクト操作に関する情報を送信する。個々のオブジェクト操作情報のサイズは小さいが、各端末装置2a、2b、2cにおいて、なめらかなオブジェクトの描画を実現するには他頻度なデータ同期(少なくても秒20回から30回程度)が必要となり、洗練されたゲームで同期対象のオブジェクトの数が多い場合、MMOGなど同期対象の端末装置が多い場合、サーバが処理する同期のための送受信パケット数は組み合わせ爆発でストリーミング送受信のように莫大となりうる。近年CPUやメモリの高速化は著しいが、ネットワークの帯域幅、個々の端末とのスループットやレイテンシは、物理的・距離的制約や、モバイルからの利用形態などのトレンドもあり、高速化はよりゆるやかである。そのため、ネットワーク送受信はサーバでの処理において、ボトルネックとなりやすい。本発明では、ネットワーク送信の効率的な利用、NICレベルで常に処理中で空き時間のなるべくないような利用方法、特に、Javaを用いた実装で送信時のソケットの利用率の向上を実現する。以下、サーバ装置1の送受信の動作詳細について説明する。
During game play, the
図3は、データ送受信の動作の一例を説明するための概略図である。 FIG. 3 is a schematic diagram for explaining an example of data transmission/reception operations.
まず、ネットワーク4からサーバ装置1がデータを受信する場合、ネットワーク4のソース131からあるチャネル130を介し、ソケット読出手段101がチャネルに対応するソケット(受信元端末装置に対応するあるIPアドレスのあるポート)によって受信したデータを読み出して受信リングバッファ121aの書込ポインタの位置に書き込む。データは受信リングバッファ121aに追加される。なお、バッファはチャネルあるいはソケットごとに別々に用意する。また、チャネル/ソケットは送受信共用で、対応する端末装置(端末装置の通信相手となる特定のプログラム)ごとに1つ用意する。アプリバッファは、1つで図示しているが、実際は送受信別に管理する。また、リングバッファは、プールとしては、全チャネルで1つとして管理されており、1つで図示しているが、リングバッファ121は、チャネルごと、送受信別々に、それぞれ独立なポインタの管理があり、チャネルごとに、別々の受信リングバッファ121a、送信リングバッファ121bとして区別する。
First, when the
次に、アプリケーション読出手段104は、受信元端末装置に対応(チャネルあるいはソケット)した受信リングバッファ121aのデータを読出ポインタの位置から読み出してアプリバッファ120に書き込む。データは受信リングバッファ121aから取り出され、受信リングバッファ121aから除外される。ここでアプリバッファ120はアプリケーションが独自に管理するもので、バッファリング手段106が提供するものではない。アプリバッファは、別のバッファリング手段が提供する。たとえば、OS機能(通常のメモリ割当、メモリ解放)がアプリバッファを提供してもよい。メモリを再利用してメモリ管理を効率化するためには、バッファリング手段106同等の機能が提供するように別のバッファリング手段を構成して、アプリバッファを提供してもよい。
Next, the application reading means 104 reads the data of the reception ring buffer 121 a corresponding to the receiving terminal device (channel or socket) from the position of the read pointer and writes it to the
アプリケーション実行手段103は、アプリバッファ120のデータを読み出してスレッドにて処理する。
The
また、アプリケーション実行手段103のスレッドで処理されたデータをネットワーク4に送信する場合、アプリケーション実行手段103は、スレッドで処理されたデータをアプリバッファ120に書き込む。
When transmitting data processed by the thread of the
次に、アプリケーション書込手段105は、アプリバッファ120のデータを意図する送信先端末装置に応じて、送信先端末装置、より厳密には、チャネルあるいはソケットに対応する送信リングバッファ121bの書込ポインタの位置に書き込む。この結果、データは送信リングバッファ121bに追加される。データを書き込み終わると、書込ポインタを進めて、書込終了位置の次に移動する。次回、アプリケーション書込手段105がデータを書き込む時は、移動後の書込ポインタを使用するので、次回書き込むデータは、今回書き込んだデータの後ろに追加される。一方で、アプリバッファ120のデータは、送信リングバッファ121にコピーされた後は不要なり、アプリケーション実行手段103はこのバッファ領域を再利用できる。なお、送信リングバッファ121bはチャネルあるいはソケットごとに用意する。
Next, the application writing means 105 writes the write pointer of the
次に、ソケット書込手段102は、送信リングバッファ121bの読出ポインタの位置から書き出しポインタの位置の手前までのデータを読み出し、ソケットによってチャネル130に書き込む。データは、チャネル130を介してソース131に送信される。読出ポインタは、送信に成功したバイト数だけ進めて、送信が完了したデータの次の位置に移動する。この時、データは送信リングバッファ121bから取り出され、送信対象としてOS実行手段100が送信処理をし、送信が完了したデータ(取り出したデータの全部あるいは一部)については、送信リングバッファ121bから除外される。送信が完了しなかったデータについては、引き続き送信リングバッファ121bにとどまる。ここでは、送信リングバッファ121bに蓄積されたデータを全部一度に送信するものとしたが、送信リングバッファ121bに蓄積されているデータが巨大になった場合は、OS送信機能呼出の制限を考慮するなど、全部一度に読み出さず、一部だけを読み出して送信する制御をしてもよい。
Next, the socket writing means 102 reads the data from the position of the read pointer of the
以下、アプリケーション実行手段103のスレッドで処理されたデータをOS実行手段100からネットワーク4に送信する場合について詳細に説明する。
A case in which data processed by the thread of the application execution means 103 is transmitted from the OS execution means 100 to the
(2)データ送信動作
図4は、データ送信動作の一例を説明するための概略図である。
(2) Data Transmission Operation FIG. 4 is a schematic diagram for explaining an example of data transmission operation.
アプリケーション実行手段103は、例えば、複数のスレッド1、スレッド2によりデータを処理し、処理結果のデータA、データBを同一の端末装置(より厳密には、同一のソケットあるいはチャネル)に送信するために、アプリケーション書込手段105により送信先端末へ通信するソケットに対応する送信リングバッファ121bに書き込まれる。スレッド1、スレッド2の処理は非同期に発生するものとする。アプリケーション書込手段105は、データA、データBをチャネル毎に最大1つのデータ書込だけ実行するようブロッキング制御し、アプリケーション書込手段105がスレッド1のデータAを送信リングバッファ121bに書き込んでいる間、スレッド2のデータBの書込処理を待機させる。同様にアプリケーション書込手段105がスレッド2のデータBを送信リングバッファ121bに書き込んでいる間、スレッド1はデータCの書込処理を待機させる。送信リングバッファ121bへの書込は、書込ポインタの位置から開始し、書込終了時には書込ポインタを書込終了位置の次に移動させる。ここでは説明の簡単のために、スレッド間の書込操作が送信リングバッファ121bで混ざらないようにブロッキング制御を行う、送信バッファ106bとして、ノンブロッキングなバッファを採用すれば、さらにアプリケーション書込手段105は効率的に機能する。
The application execution means 103, for example, processes data by a plurality of
次に、ソケット書込要求手段102aは、フラグ管理手段107のCASフラグを参照し、フラグが立っていない場合、フラグを立てて、OSシステムコール(例えばJAVAのAsynchronousSocketChannel.write())呼び出しを行い、送信リングバッファ121bに蓄積されているデータ(読出しポインタから呼出時点での書込ポインタの一つ前までのデータ)を送信する。この時点では送信リングバッファ121bにはデータAのみ蓄積されている。ソケット書込要求手段102aは、送信リングバッファ121のデータAをOS実行手段100(OSカーネル)に書き込み要求をして完了する(1)。
Next, the socket write request means 102a refers to the CAS flag of the flag management means 107. If the flag is not set, the socket write request means 102a sets the flag and calls the OS system call (for example, AsynchronousSocketChannel.write() of JAVA). , the data accumulated in the
次に、OSカーネル100は、データAを適切なサイズ(サイズは、例えば、ネットワーク依存の送信可能な最大パケットサイズMTU(Maximum Transmission Unit、イーサネットならMTUは1500バイト)と各種プロトコルヘッダに応じて決定する。典型的には、イーサネットでTCP/IPであれば、TCPヘッダ20バイトとIPヘッダ20バイトを差し引いたMSS(Maximum Segment Size)1460バイト)に分割してデータA1、A2としてネットワーク4に送信する。OSカーネル100のイベント処理中に、アプリケーション書込手段105から送信リングバッファ121bにデータBを書き込むと送信リングバッファ121bは、OSカーネル100が読取処理をしている最中ではあっても、データBをノンブロッキングに蓄積する。アプリケーション書込手段105は、引き続きソケット書込要求手段102aを呼び出すが、ソケット書込要求手段102aはデータAの処理中でフラグ管理手段107のCASフラグが立っているのでソケット書込要求手段102aはデータBの送信処理をせずに、ノンブロッキングに直ちに終了する(2)。スレッド2は、比較的長時間のネットワーク送信処理(OSカーネル100のイベント処理)の完了を待たずに次の処理を実行できる。この時点で、送信リングバッファ121bには、データBが追加され、データAとデータBが存在する。
Next, the
次に、OSカーネル100は、データAの送信を完了するとコールバック処理手段102bを起動して、送信完了を通知する。コールバック処理手段102bは、送信完了したバイト数を確認し、この場合はデータA全体が送信完了しているので、送信リングバッファ121bの読出ポインタをデータAの直後へ移動し、データAを送信リングバッファ121bから除外する。次に、コールバック処理手段102bは、フラグ管理手段107のCASフラグを解除する。この時点で、送信リングバッファ121bは、データAが除外され、データBのみが存在する。次に、コールバック処理手段102bは、送信リングバッファ121bにまだ送信すべきデータがあるか(読出ポインタと書込ポインタが一致していれば送信すべきデータはない)を判定する。送信すべきデータがある場合は、ソケット書込要求手段102aを呼び出す。送信すべきデータがない場合は終了する。この場合はすでに、データBが送信リングバッファ121bに存在しているので、ソケット書込要求手段102aを呼び出す(3)。
Next, when the transmission of data A is completed, the
次に、ソケット書込要求手段102aは、フラグ管理手段107に依頼して、CASフラグを参照し、フラグが立っていないので、フラグを立てて、OSシステムコール(AsynchronousSocketChannel.write())呼び出しを行い、送信リングバッファ121bに蓄積されているデータ(読出しポインタから呼出時点での書込ポインタの一つ前までのデータ)を送信する。この時点では送信リングバッファ121bにデータBのみ蓄積されている。ソケット書込要求手段102aは、送信リングバッファ121bのデータBをOSカーネル100に書き込み要求をして終了する。
Next, the socket write request means 102a requests the flag management means 107 to refer to the CAS flag. Since the flag is not set, the flag is set and an OS system call (AsynchronousSocketChannel.write()) is called. and transmits the data accumulated in the
次に、OSカーネル100は、データBを適切なサイズに分割してデータB1、B2、B3としてネットワーク4に送信する。OSカーネル100のイベント処理中に、アプリケーション書込手段105から送信リングバッファ121bにデータCを書き込むと送信リングバッファ121bはデータCをノンブロッキングに蓄積し、ソケット書込要求手段102aを呼び出すが、ソケット書込手段102は、直前のソケット書込要求手段102aがOSに依頼したデータBの処理中で、フラグ管理手段107のCASフラグが立っているのでソケット書込要求手段102aはデータCの送信処理をOSカーネル100に依頼せずに直ちに終了する(4)。また、同様にして、アプリケーション書込手段105からリングバッファ121にデータDを書き込むとリングバッファ121はデータDをノンブロッキングに蓄積し、ソケット書込要求手段102aを呼び出すが、ソケット書込手段102はデータBの処理中でフラグ管理手段107のCASフラグが立っているのでソケット書込要求手段102aはデータDの送信処理をせずに直ちに終了する(5)。この時点では送信リングバッファ121bにデータB、データC、データDが順番に蓄積されている。
Next, the
次に、OSカーネル100は、データBの送信を完了するとコールバック処理手段102bを起動して、送信完了を通知する。コールバック処理手段102bは、まず、送信完了バイト数がデータB全体であることを確認した上で、送信リングバッファ121bの読出ポインタをデータBの次の位置(この場合はデータCの先頭)に移動する。この時点では送信リングバッファ121bは、データBが除外されて、データCとデータDを蓄積している。コールバック処理手段102bは、次に、フラグ管理手段107のCASフラグを解除して、その次に、送信リングバッファ121bは空でない(この場合はデータCおよびデータDが蓄積されている)ことを確認して、ソケット書込要求手段102aを呼び出す。
Next, when the transmission of data B is completed, the
次に、ソケット書込要求手段102aは、フラグ管理手段107のCASフラグを参照し、フラグが立っていないので、フラグを立てて、OSシステムコール(AsynchronousSocketChannel.write())呼び出しを行い、送信リングバッファ121bのデータCとデータDをOSカーネル100に書き込む(6)。
Next, the socket write request means 102a refers to the CAS flag of the flag management means 107. Since the flag is not set, the socket write request means 102a sets the flag, calls the OS system call (AsynchronousSocketChannel.write()), and The data C and data D in the
次に、OSカーネル100は、データC及びデータDを適切なサイズに分割してデータC1、C2、C3、…としてネットワーク4に送信する。OSカーネル100のイベント処理中に、アプリケーション書込手段105から送信リングバッファ121bにデータEを書き込むと、送信リングバッファ121bはデータEをノンブロッキングに蓄積するが、ソケット書込要求手段102aの呼出はフラグ管理手段107のCASフラグが立っているのでソケット書込要求手段102aはデータEの送信処理をせずに終了する(7)。また、同様にしてアプリケーション書込手段105から送信リングバッファ121bにデータFを書き込むと、送信リングバッファ121bはデータFをノンブロッキングに蓄積する(8)。この時点で送信リングバッファ121bはデータC、データD、データE、データFを蓄積している。
Next, the
次に、OSカーネル100は、データCの送信を完了すると、今回はたまたまDの処理を完了せずに、コールバック処理手段102bを起動して、送信完了を通知する。一般にOSシステムコール(AsynchronousSocketChannel.write())は必ずしも要求したデータすべての送信を完了することを保証しない。したがって、送信完了したバイト数の確認は必須である。この例では、偶然データCの全体の送信終了を通知したが、OSカーネル100にとってはデータCとデータDは連続したブロックで、別のデータであるかどうかの区別はしていないので、データCを送りきったのは全くの偶然で、データCの送信中、データCの一部を残して送信を終了する場合もある。例えば、C1とC2を送信完了して、C3を残す場合とか、C1とC2に加えてC3の前半まで送信完了して、C3の後半を残す場合とかも考えられる。コールバック処理手段102bは、まず、送信完了したバイト数を確認し、この場合は、データCのみが全部送信完了であるので、送信リングバッファ121bの読出ポインタをデータCの次の位置(この場合はデータDの先頭位置)に移動する。この時点で、送信リングバッファ121bは、データCが除外されるが、データC送信処理中にデータEとデータFが追加されているので、送信リングバッファ121bは、データD、データE、データFを蓄積している。コールバック処理手段102bは、次に、フラグ管理手段107のCASフラグを解除する。コールバック処理手段102bは、この場合は、送信リングバッファ121bに送信対象のデータ(この場合は、データD、データE、データF)が存在するので、ソケット書込要求手段102aを呼び出す。
Next, when the transmission of data C is completed, the
次に、ソケット書込要求手段102aは、フラグ管理手段107のCASフラグを参照し、フラグが立っていないので、フラグを立てて、OSシステムコール(AsynchronousSocketChannel.write())呼び出しを行い、送信リングバッファ121bのすべてのデータDEFをOSカーネル100に書き込み要求する(9)。
Next, the socket write request means 102a refers to the CAS flag of the flag management means 107. Since the flag is not set, the socket write request means 102a sets the flag, calls the OS system call (AsynchronousSocketChannel.write()), and A write request is issued to the
次に、OSカーネル100は、データDEFを適切なサイズに分割してデータD1、D2、…としてネットワーク4に送信する。
Next, the
次に、OSカーネル100は、たまたまデータDだけの送信を完了するとコールバック処理手段102bを起動して、送信完了を通知する。コールバック処理手段102bは、送信済バイト数を確認すると、偶然Dだけが送信完了となっていたので、送信リングバッファ121bの読出ポインタをデータEの先頭に移動し、フラグ管理手段107のCASフラグを解除して、送信リングバッファが空ではないので、ソケット書込要求手段102aを呼び出す。
Next, when the
次に、ソケット書込要求手段102aは、フラグ管理手段107のCASフラグを参照し、フラグが立っていないので、フラグを立てて、OSシステムコール(AsynchronousSocketChannel.write())呼び出しを行い、リングバッファ121のデータEFをOSカーネル100に書き込み要求する(10)。
Next, the socket write request means 102a refers to the CAS flag of the flag management means 107. Since the flag is not set, the socket write request means 102a sets the flag, calls the OS system call (AsynchronousSocketChannel.write()), and writes to the ring buffer. The
次に、OSカーネル100は、データEFを適切なサイズに分割してデータE、F1、F2としてネットワーク4に送信する。
Next, the
次に、OSカーネル100は、データEFの送信を完了するとコールバック処理手段102bを起動して、送信完了を通知する。コールバック処理手段102bは、送信完了バイト数を確認し、送信リングバッファ121bの読出ポインタをデータFの次に移動させ、フラグ管理手段107のCASフラグを解除する。コールバック処理手段102bは、送信リングバッファ121bが空(読出ポインタと書込ポインタが一致)になり、処理を終了する
Next, when the transmission of the data EF is completed, the
以上の例では、説明しやすいように、データA-Fはそれぞれが1個以上のネットワークパケットとして送信されるような大きなデータとして図示した。ゲームサーバでオブジェクトの同期情報をストリーミングのように送受信する際には、個々のデータのサイズはネットワークの送信パケットサイズにくらべて非常に小さく、データが蓄積されれば、多数のデータがひとつのネットワーク送信パケットとして送信される。したがって、CASによるノンブロッキングなソケット書込手段は、OSのロック機能を使用する場合に比べて、著しくオーバヘッドが小さくなり、また、複数のデータをまとめて連続なブロックに配置したり、複数のデータをまとめて1回のOS送信要求で送ったりすることにより、送信チャネルを切れ目なく効率よく稼働させることができ、特にストリーミングのような利用形態では有用である。 In the above examples, for ease of explanation, the data AF are illustrated as large pieces of data each transmitted as one or more network packets. When the game server transmits and receives object synchronization information like streaming, the size of each piece of data is very small compared to the network transmission packet size. Sent as a send packet. Therefore, the non-blocking socket writing means by CAS has a significantly smaller overhead than the case of using the OS lock function, and also puts a plurality of data together in a continuous block, or a plurality of data. By collectively sending the data with one OS transmission request, the transmission channel can be efficiently operated without interruption, which is particularly useful in a mode of use such as streaming.
(実施の形態の効果)
上記した実施の形態によれば、アプリケーション書込手段105とソケット書込手段102の間に送信リングバッファ121bを設け、送信リングバッファ121bはアプリケーション書込手段105の書込データをノンブロッキングに蓄積して、ソケット書込要求手段102aの書込動作をCASフラグに応じて実行し、CASフラグをフラグ管理手段107によって管理し、ソケット書込要求手段102aの書込開始でフラグを立て、OS実行手段100のイベント処理完了の通知を受けたコールバック処理手段102bがフラグを解除するようにしたため、アプリケーション書込手段105の書き込み動作がOS実行手段100の送信イベント処理の動作に直接影響を及ぼさないようになり(アプリケーション書込手段105、OS実行手段100がそれぞれに対応するための待ち時間がなくなり、また、それぞれの呼出回数が削減され)、アプリケーション処理及びデータの送信をノンブロッキングに実行して通信を高速化することができる。特に、所要時間の比較的長いネットワークへの送信処理を、ウェイト時間(レイテンシ)短く、なるべく連続処理、かつ、ノンブロッキングに実行することで、ネットワーク送信処理を優先し、送信スループットを上げ、非同期送信(NIO)の処理待ちの間の時間にアプリ処理を実行することができる。
(Effect of Embodiment)
According to the above embodiment, the
[他の実施の形態]
なお、本発明は、上記実施の形態に限定されず、本発明の趣旨を逸脱しない範囲で種々な変形が可能である。
[Other embodiments]
The present invention is not limited to the above-described embodiments, and various modifications are possible without departing from the scope of the present invention.
図5は、レイヤ構成の変形例を示す概略図である。 FIG. 5 is a schematic diagram showing a modification of the layer configuration.
例えば、本願は、OSI(Open Systems Interconnection)参照モデルの7層のうち、アプリケーション層(アプリケーション112)とプレゼンテーション層及びセッション層(通信管理プログラム111)との間にバッファ(a)を設けた例を説明したが、イ~オの異なる層構成で、異なる位置にバッファ(b)~(e)を設けてもよい。 For example, the present application describes an example in which a buffer (a) is provided between the application layer (application 112) and the presentation layer and session layer (communication management program 111) among the seven layers of the OSI (Open Systems Interconnection) reference model. As described above, the buffers (b) to (e) may be provided at different positions in different layer configurations (a) to (e).
ここで、送信スループットを上げるためには、下位の送信に関するレイヤで待ち、下位のレイヤでレイテンシが発生しないためには、上位のアプリは下位への依頼・呼出はロックフリー(ノンブロッキング)であることが望ましい。上位から下位へはなんらかの集約が発生するので、マルチタスク環境では各スレッドのデータが混ざらないように通常はなんらかの排他制御が必要となる。排他制御にOSの「ロック(Mutex)」を使用すると処理負荷が重くなるため、ロックフリーなアルゴリズムが望ましい。特にゲームサーバのように、同期のためのパケットをストリーミングのように大量に他頻度に送信するような場合は、パケット送信単位でロックがかかるのは望ましくない。ウ~オではOSの排他制御は使えないため、アプリケーションによる排他制御を独自に行う必要がある。 Here, in order to increase the transmission throughput, it is necessary to wait in the layer related to transmission in the lower layer, and in order to prevent latency in the lower layer, requests and calls to the lower layer must be lock-free (non-blocking) for the upper application. is desirable. Since some kind of aggregation occurs from the upper level to the lower level, in a multitasking environment, some kind of exclusive control is usually required so that the data of each thread is not mixed. A lock-free algorithm is desirable because the use of the OS "lock (mutex)" for exclusive control increases the processing load. In particular, in the case of a game server that transmits a large amount of packets for synchronization at different frequencies, such as streaming, it is not desirable to lock each packet transmission. Since the exclusive control of the OS cannot be used in Woo, it is necessary to independently perform exclusive control by the application.
ア(本実施の形態)の場合、Java VM(仮想OS)によって作成されたTCPまたはUDP(User Datagram Protocol)チャネルにデータを順次送信する。同一チャネルを複数スレッドで利用する場合には排他制御が必要となる。RUDP(Reliable User Datagram Protocol)の場合は、UDPソケットを使うアプリがACK(肯定応答)や再送などの信頼性保証のレイヤを独自に作成する必要がある。 In the case of a (this embodiment), data is sequentially transmitted to a TCP or UDP (User Datagram Protocol) channel created by Java VM (virtual OS). Exclusive control is required when multiple threads use the same channel. In the case of RUDP (Reliable User Datagram Protocol), an application that uses UDP sockets must independently create a reliability assurance layer such as ACK (acknowledgement) and retransmission.
イの場合、アとの相違点は仮想OSかNative OSかの違いであるため、アとほぼ同じ構成、動作で実現可能である。 In the case of B, the difference from A is whether it is a virtual OS or a Native OS.
ウの場合、ステートレス(コネクションレス)なUDPで実現可能性がある。OSの内部のレイヤを直接呼び出すことは、通常できないため実現可能性は低いが、直接呼び出す構成があれば可能となる。複数のアプリプログラムおよびスレッドが、NICを共用する複数の送信先(端末装置)に対する通信全てについて集約が必要となる。 In the case of c, stateless (connectionless) UDP is feasible. It is usually not possible to directly call the layers inside the OS, so the feasibility is low, but it is possible if there is a configuration for direct calling. A plurality of application programs and threads need to aggregate all communications to a plurality of transmission destinations (terminal devices) sharing the NIC.
エの場合、OSのプロトコルスタックをバイパスして高速化することができる。プロトコルスタックを独自に制作する必要がある。(例えばDPDK(Data Plane Development Kit)等を用いることができる。https://www.dpdk.org/)。NICドライバは、NDISではなく特殊となり、通常は特定のNICプロダクト依存となる。UDPの場合、データグラムとして、ソケットを介さずに直接送信が可能な場合もある。OSの内部のレイヤを直接呼び出すことは、通常できないため実現可能性は低いが、DPDKのように専用のNICドライバがあれば可能となる。ウ同様に、複数のアプリプログラムおよびスレッドが、NICを共用する複数の送信先(端末装置)に対する通信全てについて集約が必要となる。 In the case of D, the speed can be increased by bypassing the protocol stack of the OS. You need to create your own protocol stack. (For example, DPDK (Data Plane Development Kit) or the like can be used. https://www.dpdk.org/). NIC drivers are not NDIS, they are specialized and are usually dependent on a particular NIC product. In the case of UDP, it may be possible to send directly as a datagram without going through a socket. It is usually not possible to directly call the internal layer of the OS, so the feasibility is low, but it is possible if there is a dedicated NIC driver like DPDK. C. Similarly, multiple application programs and threads need to aggregate all communications to multiple transmission destinations (terminal devices) that share the NIC.
オの場合、アプリケーションが完全にハードウェア依存となるため、組込みシステムなど特殊用途以外で用いられる。ウ同様に、複数のアプリプログラムおよびスレッドが、NICを共用する複数の送信先(端末装置)に対する通信全てについて集約が必要となる。 In the case of E, since the application is completely hardware-dependent, it is used for non-special purposes such as embedded systems. C. Similarly, multiple application programs and threads need to aggregate all communications to multiple transmission destinations (terminal devices) that share the NIC.
次に、各バッファ(a)~(e)について説明する。 Next, each buffer (a) to (e) will be explained.
(a)の場合、一般的用法としてはJAVA限定、OS非依存のものとなり、ソケット単位でのマルチスレッドのアプリパケット(アプリ送信単位)が混ざらないように集約するものとなる。 In the case of (a), as a general usage, it is limited to JAVA and independent of the OS, and is aggregated so as not to mix multithreaded application packets (application transmission units) in units of sockets.
(b)の場合、一般的用法としては言語依存、OSに依存することもあり、(a)と同様となる。(a)経由の場合はそのままパラメータのパススルーで引き渡してもよいし、分散書込の場合は、送信バイトバッファが連続領域にあれば一つの送信バッファにまとめるなどの最適化をしてもよい。ここで、分散書込とは、例えばJavaのAsynchronousSocketChannel.write()の機能で、1つ以上の可変長のデータブロックをグループ化した複数のバッファを指定して送信要求するものを指す。 In the case of (b), the general usage is language-dependent and OS-dependent, and is the same as (a). (a) In the case of via, the parameters may be passed through as they are, and in the case of distributed writing, if the transmission byte buffers are in a continuous area, they may be optimized by combining them into one transmission buffer. Here, distributed writing means, for example, Java's AsynchronousSocketChannel. A function of write( ) that specifies multiple buffers in which one or more variable-length data blocks are grouped and requests transmission.
(c)の場合、通常はOS内部、OSカーネルの作業となり、アプリは横断的に対応してプロトコルごとに集約する。なお、プロトコルヘッダの追加が必要となる。TCPソケットに書かれた時点でコネクションごとのデータストリーム状態、アプリパケットの送信単位の境界は問題としない。適当な大きさに分割して、プロトコルドライバに渡す。その際に、データのコピーや詰替えが発生する可能性がある。UDPソケットの場合は、コネクションレスのため、ソケットに書きまれればバッファリングされずに送信され、まとめて送ることはない。RUDPで複数のデータをまとめて送る場合には、UDPソケットに書き込む前にまとめてから書き込む。 In the case of (c), the work is usually done inside the OS and in the OS kernel, and the application handles it cross-sectionally and aggregates it for each protocol. Note that it is necessary to add a protocol header. When data is written to a TCP socket, the data stream state for each connection and the boundary of the transmission unit of application packets are irrelevant. It is divided into appropriate sizes and passed to the protocol driver. At that time, there is a possibility that data copying or repacking may occur. Since UDP sockets are connectionless, data written to a socket is transmitted without buffering and is not sent all at once. When sending a plurality of data collectively by RUDP, they are collectively written before being written to the UDP socket.
(d)の場合、通常はOS内部、プロトコルドライバの作業となり、アプリは横断的に対応して、各種プロトコルをNICごとに集約する。なお、プロトコルヘッダの追加が必要となる。各パケットの結合、分割、プロトコルヘッダを追加した、全データをNICごとに集約する。 In the case of (d), the work is usually done by the protocol driver inside the OS, and the application handles it cross-sectionally and aggregates various protocols for each NIC. Note that it is necessary to add a protocol header. Aggregate all data for each NIC, combining and splitting each packet and adding protocol headers.
(e)の場合、NIC内部の作業となる。ネットワークタイプに応じた分割、結合、圧縮などの加工、ヘッダなどの追加をして、ビット列に対応する電気信号に変換して、通信回線に送信する。 In the case of (e), it becomes work inside the NIC. Processing such as division, combination, and compression according to the network type, addition of a header, etc., conversion to an electrical signal corresponding to the bit string, and transmission to the communication line.
上記実施の形態では制御部10の各手段100~107の機能をプログラムで実現したが、各手段の全て又は一部をASIC等のハードウェアによって実現してもよい。また、上記実施の形態で用いたプログラムをCD-ROM等の記録媒体に記憶して提供することもできる。また、上記実施の形態で説明した上記ステップの入れ替え、削除、追加等は本発明の要旨を変更しない範囲内で可能である。また、各手段の機能は適宜他の手段に結合してもよいし、複数の手段に分離してもよい。
Although the functions of the
1 :サーバ装置
2a、2b、2c:端末装置
4 :ネットワーク
10 :制御部
11 :記憶部
12 :メモリ
13 :通信部
100 :OS実行手段(OSカーネル)
101 :ソケット読出手段
102 :ソケット書込手段
102a :ソケット書込要求手段
102b :コールバック処理手段
103 :アプリケーション実行手段
104 :アプリケーション読出手段
105 :アプリケーション書込手段
106 :バッファリング手段
107 :フラグ管理手段
111 :通信管理プログラム
112 :アプリケーション
120 :アプリバッファ
121 :リングバッファ
130 :チャネル
131 :ソース
Reference Signs List 1:
101: socket reading means 102: socket writing means 102a: socket writing request means 102b: callback processing means 103: application executing means 104: application reading means 105: application writing means 106: buffering means 107: flag management means 111: communication management program 112: application 120: application buffer 121: ring buffer 130: channel 131: source
[1]コンピュータを、
1以上のイベントを蓄積するバッファリング手段と、
前記蓄積したイベントを処理する処理手段と、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理手段として機能させ、
前記処理手段は、イベントの処理を要求する処理要求手段と、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理手段とを含み、
前記フラグ管理手段は、前記処理手段のイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理手段の終了のタイミングでフラグを解除し、
前記処理要求手段は、前記バッファリング手段に対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する通信管理プログラム。
[2]前記バッファリング手段は、ノンブロッキングキューに前記イベントを蓄積する前記[1]に記載の通信管理プログラム。
[3]前記バッファリング手段は、メモリプールに前記イベントを蓄積する前記[1]又は[2]に記載の通信管理プログラム。
[4]前記バッファリング手段は、リングバッファに前記イベントを蓄積する前記[1]又は[2]に記載の通信管理プログラム。
[5]1以上のイベントを蓄積するバッファリング手段と、
前記蓄積したイベントを処理する処理手段と、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理手段とを有し、
前記処理手段は、イベントの処理を要求する処理要求手段と、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理手段とを含み、
前記フラグ管理手段は、前記処理手段のイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理手段のイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求手段は、前記バッファリング手段に対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する情報処理装置。
[6]情報を処理するコンピュータにおいて、
1以上のイベントをノンブロッキングに蓄積するバッファリングステップと、
前記蓄積したイベントを処理する処理ステップと、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理ステップとを有し、
前記処理ステップは、イベントの処理を要求する処理要求ステップと、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理ステップとを含み、
前記フラグ管理ステップは、前記処理ステップのイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理ステップのイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求ステップは、前記バッファリングステップに対する蓄積及び前記コールバック処理ステップの終了のタイミングで呼び出しを受け付けて、前記フラグ管理ステップのフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリングステップが蓄積した前記イベントを処理する通信管理方法。
[1] a computer,
buffering means for accumulating one or more events;
a processing means for processing the accumulated events;
act as a flag manager that accepts calls and sets flags exclusively,
The processing means includes processing request means for requesting event processing, and callback processing means for receiving a completion notification and executing when the event processing is completed,
The flag management means sets the flag exclusively at the timing of the start of event processing by the processing means, and cancels the flag at the timing of the end of the callback processing means,
The processing request means accepts a call at the timing of accumulation in the buffering means and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. A communication management program that terminates without any delay and processes the events accumulated by the buffering means when set.
[2] The communication management program according to [1], wherein the buffering means accumulates the event in a non-blocking queue.
[3] The communication management program according to [1] or [2], wherein the buffering means accumulates the event in a memory pool.
[4] The communication management program according to [1] or [2], wherein the buffering means accumulates the event in a ring buffer.
[5] buffering means for accumulating one or more events;
a processing means for processing the accumulated events;
a flag management means for accepting calls and setting flags exclusively,
The processing means includes processing request means for requesting event processing, and callback processing means for receiving a completion notification and executing when the event processing is completed,
The flag management means exclusively sets the flag at the timing of the start of event processing by the processing means, and cancels the flag at the timing of the end of event processing by the callback processing means,
The processing request means accepts a call at the timing of accumulation in the buffering means and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. an information processing device for processing the event accumulated by the buffering means when the event is terminated without being completed.
[6] In a computer that processes information,
a buffering step of non-blocking accumulation of one or more events;
a processing step of processing the accumulated events;
a flag management step for accepting and exclusively flagging calls;
The processing step includes a processing request step that requests processing of the event, and a callback processing step that is executed upon receiving a completion notification when processing of the event is completed,
The flag management step exclusively sets the flag at the timing of starting the processing of the event in the processing step, and cancels the flag at the timing of the end of the processing of the event in the callback processing step,
The process request step receives a call at the timing of the end of the accumulation in the buffering step and the callback processing step , and if the flag is not set according to the flag of the flag management step , the process is not performed. and, if set, processing the events accumulated by the buffering step .
Claims (6)
1以上のイベントを蓄積するバッファリング手段と、
前記蓄積したイベントを処理する処理手段と、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理手段として機能させ、
前記処理手段は、イベントの処理を要求する処理要求手段と、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理手段とを含み、
前記フラグ管理手段は、前記処理手段のイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理手段の終了のタイミングでフラグを解除し、
前記処理要求手段は、前記バッファリング手段に対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する通信管理プログラム。 the computer,
buffering means for accumulating one or more events;
a processing means for processing the accumulated events;
act as a flag manager that accepts calls and sets flags exclusively,
The processing means includes processing request means for requesting event processing, and callback processing means for receiving a completion notification and executing when the event processing is completed,
The flag management means sets the flag exclusively at the timing of the start of event processing by the processing means, and cancels the flag at the timing of the end of the callback processing means,
The processing request means accepts a call at the timing of accumulation in the buffering means and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. A communication management program that terminates without any delay and processes the events accumulated by the buffering means when set.
前記蓄積したイベントを処理する処理手段と、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理手段とを有し、
前記処理手段は、イベントの処理を要求する処理要求手段と、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理手段とを含み、
前記フラグ管理手段は、前記処理手段のイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理手段のイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求手段は、前記バッファリング手段に対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する情報処理装置。 buffering means for accumulating one or more events;
a processing means for processing the accumulated events;
a flag management means for accepting calls and setting flags exclusively,
The processing means includes processing request means for requesting event processing, and callback processing means for receiving a completion notification and executing when the event processing is completed,
The flag management means exclusively sets the flag at the timing of the start of event processing by the processing means, and cancels the flag at the timing of the end of event processing by the callback processing means,
The processing request means accepts a call at the timing of accumulation in the buffering means and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. an information processing device for processing the event accumulated by the buffering means when the event is terminated without being completed.
前記蓄積したイベントを処理する処理ステップと、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理ステップとを有し、
前記処理ステップは、イベントの処理を要求する処理要求ステップと、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理ステップとを含み、
前記フラグ管理ステップは、前記処理ステップのイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理ステップのイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求ステップは、前記バッファリングステップに対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する通信管理方法。 a buffering step of non-blocking accumulation of one or more events;
a processing step of processing the accumulated events;
a flag management step for accepting and exclusively flagging calls;
The processing step includes a processing request step that requests processing of the event, and a callback processing step that is executed upon receiving a completion notification when processing of the event is completed,
The flag management step exclusively sets the flag at the timing of starting the processing of the event in the processing step, and cancels the flag at the timing of the end of processing the event in the callback processing step,
The process request step accepts a call at the timing of accumulation for the buffering step and the termination of the callback processing means, and if the flag is not set according to the flag of the flag management means, the process is not performed. a communication management method for processing the events accumulated by the buffering means when set.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021125358A JP6998000B1 (en) | 2021-07-30 | 2021-07-30 | Communication management program, information processing device and communication management method |
JP2021199095A JP2023020822A (en) | 2021-07-30 | 2021-12-08 | Communication management program, information processing apparatus, and communication management method |
PCT/JP2022/025042 WO2023008008A1 (en) | 2021-07-30 | 2022-06-23 | Information processing program, information processing device, and information processing method |
CN202280004572.XA CN115917519B (en) | 2021-07-30 | 2022-06-23 | Recording medium storing information processing program, information processing apparatus, and information processing method |
EP22808933.0A EP4152168A4 (en) | 2021-07-30 | 2022-06-23 | Information processing program, information processing device, and information processing method |
KR1020227044708A KR102521873B1 (en) | 2021-07-30 | 2022-06-23 | Information processing program, information processing device, and information processing method |
US18/071,627 US11762663B2 (en) | 2021-07-30 | 2022-11-30 | Information processing program, information processing device, and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021125358A JP6998000B1 (en) | 2021-07-30 | 2021-07-30 | Communication management program, information processing device and communication management method |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021199095A Division JP2023020822A (en) | 2021-07-30 | 2021-12-08 | Communication management program, information processing apparatus, and communication management method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6998000B1 JP6998000B1 (en) | 2022-01-18 |
JP2023020150A true JP2023020150A (en) | 2023-02-09 |
Family
ID=80468978
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021125358A Active JP6998000B1 (en) | 2021-07-30 | 2021-07-30 | Communication management program, information processing device and communication management method |
JP2021199095A Pending JP2023020822A (en) | 2021-07-30 | 2021-12-08 | Communication management program, information processing apparatus, and communication management method |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021199095A Pending JP2023020822A (en) | 2021-07-30 | 2021-12-08 | Communication management program, information processing apparatus, and communication management method |
Country Status (1)
Country | Link |
---|---|
JP (2) | JP6998000B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962772A (en) * | 1995-08-25 | 1997-03-07 | Oki Electric Ind Co Ltd | Character recognition device |
JP2017062540A (en) * | 2015-09-24 | 2017-03-30 | 富士ゼロックス株式会社 | Uni-directional inter-operating-system communication system, and program |
CN112579097A (en) * | 2020-12-21 | 2021-03-30 | 广州博冠信息科技有限公司 | Software project construction method and device, storage medium and electronic equipment |
CN112667217A (en) * | 2019-10-16 | 2021-04-16 | 上汽通用汽车有限公司 | Vehicle end development module based on intelligent vehicle networking architecture |
-
2021
- 2021-07-30 JP JP2021125358A patent/JP6998000B1/en active Active
- 2021-12-08 JP JP2021199095A patent/JP2023020822A/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962772A (en) * | 1995-08-25 | 1997-03-07 | Oki Electric Ind Co Ltd | Character recognition device |
JP2017062540A (en) * | 2015-09-24 | 2017-03-30 | 富士ゼロックス株式会社 | Uni-directional inter-operating-system communication system, and program |
CN112667217A (en) * | 2019-10-16 | 2021-04-16 | 上汽通用汽车有限公司 | Vehicle end development module based on intelligent vehicle networking architecture |
CN112579097A (en) * | 2020-12-21 | 2021-03-30 | 广州博冠信息科技有限公司 | Software project construction method and device, storage medium and electronic equipment |
Also Published As
Publication number | Publication date |
---|---|
JP6998000B1 (en) | 2022-01-18 |
JP2023020822A (en) | 2023-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112204513B (en) | Group-based data replication in a multi-tenant storage system | |
US10841245B2 (en) | Work unit stack data structures in multiple core processor system for stream data processing | |
CN108647104B (en) | Request processing method, server and computer readable storage medium | |
KR101006260B1 (en) | Apparatus and method for supporting memory management in an offload of network protocol processing | |
KR100992282B1 (en) | Apparatus and method for supporting connection establishment in an offload of network protocol processing | |
JP3382953B2 (en) | Client management flow control method and apparatus on finite memory computer system | |
US8839267B2 (en) | Method and middleware for efficient messaging on clusters of multi-core processors | |
WO2019223596A1 (en) | Method, device, and apparatus for event processing, and storage medium | |
US9778997B2 (en) | Server backup method and backup system using the method | |
EP2618257B1 (en) | Scalable sockets | |
WO2024066828A1 (en) | Data processing method and apparatus, and device, computer-readable storage medium and computer program product | |
EP1561163A2 (en) | A communication method with reduced response time in a distributed data processing system | |
CN111459417A (en) | NVMeoF storage network-oriented lock-free transmission method and system | |
CN116132287A (en) | DPU-based high-performance network acceleration method and system | |
CN115878301A (en) | Acceleration framework, acceleration method and equipment for database network load performance | |
WO2023221990A1 (en) | Udp message distribution method, device and readable storage medium | |
JP6998000B1 (en) | Communication management program, information processing device and communication management method | |
US20230281141A1 (en) | Method for order-preserving execution of write request and network device | |
WO2023008008A1 (en) | Information processing program, information processing device, and information processing method | |
JP7061301B1 (en) | Information processing program, information processing device and information processing method | |
Mohamed et al. | High-performance message striping over reliable transport protocols | |
WO2024027395A1 (en) | Data processing method and apparatus | |
Shashidhara | TASNIC: a flexible TCP offload with programmable SmartNICs | |
Behrens et al. | Pushing Bytes: Cloud-Scale Data Replication with RDMC | |
Sizemore | Parallel network protocol stacks using replication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210803 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20210803 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20211005 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211101 |
|
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: 20211109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211209 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6998000 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |