JP2023020150A - Communication management program, information processing apparatus, and communication management method - Google Patents

Communication management program, information processing apparatus, and communication management method Download PDF

Info

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
Application number
JP2021125358A
Other languages
Japanese (ja)
Other versions
JP6998000B1 (en
Inventor
直樹 宮永
Naoki Miyanaga
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.)
Soft Gear Co Ltd
Original Assignee
Soft Gear Co 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 Soft Gear Co Ltd filed Critical Soft Gear Co Ltd
Priority to JP2021125358A priority Critical patent/JP6998000B1/en
Priority to JP2021199095A priority patent/JP2023020822A/en
Publication of JP6998000B1 publication Critical patent/JP6998000B1/en
Application granted granted Critical
Priority to PCT/JP2022/025042 priority patent/WO2023008008A1/en
Priority to CN202280004572.XA priority patent/CN115917519B/en
Priority to EP22808933.0A priority patent/EP4152168A4/en
Priority to KR1020227044708A priority patent/KR102521873B1/en
Priority to US18/071,627 priority patent/US11762663B2/en
Publication of JP2023020150A publication Critical patent/JP2023020150A/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Abstract

To provide a communication management program which increases communication speed by executing application processing and data transmission in a non-blocking manner, an information processing apparatus, and a communication management method.SOLUTION: A server device 1 comprises: buffering means 106 that accumulates one or more events in a non-blocking manner; flag management means 107 which sets a flag; socket write request means 102a which requests processing of the accumulated events; and callback processing means 102b which executes processing on receipt of a completion notification when the processing of the events is completed. The flag management means exclusively sets a flag at the timing of the start of processing of the events and releases the flag at the timing of the end of the callback processing means. Socket write means processes the events accumulated by the buffering means when the flag is set in response to a call at the timing of the end of accumulation to the buffering means 106 and the callback processing means.SELECTED DRAWING: Figure 2

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 Patent Document 1 parallelizes an application task that occupies an application buffer area and a TCP (Transmission Control Protocol)/IP (Internet Protocol) task that occupies a ring buffer area. execute The application task determines whether the size of the data stored in the application buffer area by the data generation process is equal to or less than a threshold value, and copies the data in the application buffer area to the ring buffer area when the determination result is positive. On the other hand, when the determination result is negative, the right to occupy the application buffer area is temporarily given to the TCP/IP task and the data transmission instruction is issued. The TCP/IP task transmits transmission data on the memory area it occupies in response to the data transmission instruction.

特開2010-55214号公報JP 2010-55214 A

しかし、特許文献1の情報処理装置は、送信するデータ量が少ない場合はリングバッファを用いてデータを送信して、アプリケーションタスクを並列して行い、送信するデータ量が多い場合はTCP/IPタスクを専有的に処理することで通信速度の高速化を図るものの、送信するデータ量が多い場合はアプリケーションタスクがブロッキングされて処理されない、という問題がある。 However, when the amount of data to be transmitted is small, the information processing apparatus of Patent Document 1 transmits data using a ring buffer and performs application tasks in parallel. However, if the amount of data to be sent is large, the application task will be blocked and will not be processed.

従って本発明の目的は、アプリケーション処理及びデータの送信をノンブロッキングに実行して通信を高速化する通信管理プログラム、情報処理装置及び通信管理方法を提供することにある。 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 claims 1, 5, and 6, application processing and data transmission can be executed in a non-blocking manner to speed up communication.
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は、実施の形態に係る通信管理システムの構成の一例を示す概略図である。FIG. 1 is a schematic diagram showing an example of the configuration of a communication management system according to an embodiment. 図2は、実施の形態に係るサーバ装置の構成例を示すブロック図である。FIG. 2 is a block diagram illustrating a configuration example of a server device according to the embodiment; 図3は、データ送受信の動作の一例を説明するための概略図である。FIG. 3 is a schematic diagram for explaining an example of data transmission/reception operations. 図4は、データ送信動作の一例を説明するための概略図である。FIG. 4 is a schematic diagram for explaining an example of data transmission operation. 図5は、レイヤ構成の変形例を示す概略図である。FIG. 5 is a schematic diagram showing a modification of the layer configuration. 図6は、ソケット書込要求手段102aの動作例を説明するためのフローチャートである。FIG. 6 is a flow chart for explaining an operation example of the socket write request means 102a. 図7は、コールバック処理手段102bの動作例を説明するためのフローチャートである。FIG. 7 is a flow chart for explaining an operation example of the callback processing means 102b.

[実施の形態]
(通信管理システムの構成)
図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 server device 1 as an information processing device and terminal devices 2a, 2b and 2c as clients so that they can communicate with each other via a network. Devices included in the communication management system may be personal computers, game terminals, clouds, and virtual machines. The network may be a LAN, the Internet, or a virtual network.

サーバ装置1は、サーバ型の情報処理装置であり、操作者の操作する端末装置2a、2b、2cの要求に応じて動作するものであって、本体内に情報を処理するための機能を有するCPU(Central Processing Unit)やHDD(Hard Disk Drive)又はフラッシュメモリ、揮発性メモリ、LANボード(無線/有線)等の電子部品を備える。サーバ装置1は、端末装置2a、2b、2cと通信し、データの送受信を行うことで端末装置2a、2b、2c上で扱うデータの同期を行うものであって、例えば、ゲームサーバ等である。サーバ装置1は、同期動作を行う場合は容量の小さいデータを頻繁にやりとりするものであるが、これに限られるものではない。なお、サーバ装置1は、複数のクラスタによって構成してもよく、分散処理を実行するよう構成してもよい。あるいは、クラウド環境において仮想マシンとして構成してもよい。 The server device 1 is a server-type information processing device that operates in response to requests from terminal devices 2a, 2b, and 2c operated by an operator, and has a function for processing information within its main body. It includes electronic components such as a CPU (Central Processing Unit), HDD (Hard Disk Drive), flash memory, volatile memory, and LAN board (wireless/wired). The server device 1 communicates with the terminal devices 2a, 2b, and 2c to transmit and receive data, thereby synchronizing data handled on the terminal devices 2a, 2b, and 2c, and is, for example, a game server. . The server device 1 frequently exchanges small-capacity data when performing a synchronous operation, but is not limited to this. Note that the server apparatus 1 may be configured by a plurality of clusters, and may be configured to execute distributed processing. Alternatively, it may be configured as a virtual machine in a cloud environment.

端末装置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 terminal devices 2a, 2b, and 2c are terminal-type information processing devices that operate based on programs, and have electronic devices such as CPUs, HDDs, or flash memories that have functions for processing information in their main bodies. Have parts. The terminal devices 2a, 2b, and 2c operate, for example, based on a program such as MMOG (Massively Multiplayer Online Game), sequentially output data to the server device 1 as a result of the operation, and output data from the server device 1 to other devices. It receives data as a result of terminal operations and synchronizes game objects frequently among the terminal devices 2a, 2b, and 2c. Although the terminal devices 2a, 2b, and 2c are depicted as three devices, they may be composed of a single device or two devices, or may be composed of four or more devices, preferably on the order of 1000 units. To provide a configuration capable of communication even when a terminal device is connected.

ネットワーク4は、高速通信が可能な通信ネットワークであり、例えば、イントラネットやLAN(Local Area Network)等の有線又は無線の通信網である。 The network 4 is a communication network capable of high-speed communication, and is, for example, a wired or wireless communication network such as an intranet or LAN (Local Area Network).

一例として、本実施の形態における通信管理システムにおいて、複数の参加者が共通の仮想空間における活動、例えばゲームを行う多人数参加型ゲームが実行される。サーバ装置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 server device 1 and the terminal devices 2a, 2b, and 2c operate to synchronize information (synchronized objects) held as objects in each device as the game progresses. 1 provides a buffer between an application and a NIC (Network Interface Card) to speed up data communication, and controls the operation of data transfer between the application and the NIC. In other words, when a large number of requests to asynchronously write to shared resources (sockets and NICs) are generated by multiple processes and multiple threads, exclusive control is required to serialize data so that data is not mixed. In order to efficiently use the path (especially to improve throughput after the transmission path is congested with data), buffering is performed in a buffer, exclusive control (blocking) is performed on writing to the buffer, and data is written from the buffer. Write to the shared resource is controlled in a lock-free (non-blocking) manner by CAS (Compare and Swap) or the like. Details of the operation will be specifically described in an embodiment.

また、本実施の形態において使用する「オブジェクト」等の語句は、例えば、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 server device 1 according to the embodiment. Although the implementation in the server device 1 will be described below, the terminal devices 2a, 2b, and 2c may also have the same configuration.

サーバ装置1は、CPU(Central Processing Unit)等から構成され、各部を制御するとともに、各種のプログラムを実行する制御部10と、フラッシュメモリ等の記憶媒体から構成され情報を記憶する記憶部11と、揮発性記録媒体から構成され一時的に情報を記憶するメモリ12と、ネットワークを介して外部と通信する通信部13とを備える。 The server device 1 is composed of a CPU (Central Processing Unit) and the like, and includes a control unit 10 that controls each unit and executes various programs, and a storage unit 11 that is composed of a storage medium such as a flash memory and stores information. , a memory 12 configured from a volatile recording medium for temporarily storing information, and a communication section 13 for communicating with the outside via a network.

制御部10は、OS(Operating System)110を実行することで、OS実行手段100(Javaの場合はJVMも含む)として機能し、アプリケーション112を実行することで、アプリケーション実行手段103、アプリケーション読出手段104、アプリケーション書込手段105として機能し、通信管理プログラムとしての通信管理プログラム111を実行することで、ソケット読出手段101、ソケット書込手段102、バッファリング手段106(受信バッファ106aと送信バッファ106bを含む)、フラグ管理手段107等として機能する。 The control unit 10 functions as an OS execution means 100 (including JVM in the case of Java) by executing an OS (Operating System) 110, and by executing an application 112, an application execution means 103 and an application reading means. 104, functions as application writing means 105, and executes a communication management program 111 as a communication management program to perform socket reading means 101, socket writing means 102, buffering means 106 (receiving buffer 106a and transmitting buffer 106b). ), and functions as flag management means 107 and the like.

OS実行手段100(OSカーネル)は、OS110を実行し、OS110が有する各機能を提供する。OS実行手段100は、特に通信部13(NIC)を制御してネットワークにデータを送信し、ネットワークからデータを受信する。なお、JAVAを利用している場合は、Java VMもOSの一部とみなし、OS実行手段100によって実行されるものとする。 The OS executing means 100 (OS kernel) executes the OS 110 and provides each function of the OS 110 . The OS executing means 100 particularly controls the communication unit 13 (NIC) to transmit data to the network and receive data from the network. Note that when JAVA is used, the Java VM is also regarded as part of the OS and is executed by the OS execution means 100 .

アプリケーション実行手段103は、処理手段としてアプリケーション112を実行し、アプリケーション112が有する各機能を提供するものであり、実行に伴い単一又は複数のスレッドを処理する。典型的には、それぞれのスレッドは、単一又は複数の端末装置とそれぞれ対応する単一又は複数のソケット(端末装置2a、2b、又は、2cの通信対象プログラムのIPアドレス及びポート番号)を介してネットワーク通信(送受信)を行う。 The application execution means 103 executes the application 112 as a processing means, provides each function of the application 112, and processes a single thread or a plurality of threads during execution. Typically, each thread communicates through a single or multiple sockets (IP address and port number of the communication target program of the terminal device 2a, 2b, or 2c) respectively corresponding to single or multiple terminal devices. network communication (send/receive).

アプリケーション読出手段104は、アプリケーション112が有する機能として特に、スレッドの受信処理のために受信対象となるソケット(端末装置2a、2b、又は、2c)に対応する受信バッファ106aのデータを読み出す。 As a function of the application 112, the application reading unit 104 reads data of the receiving buffer 106a corresponding to the receiving socket (terminal device 2a, 2b, or 2c) for receiving processing of the thread.

アプリケーション書込手段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 (terminal device 2a, 2b, or 2c) to be transmitted. The written data are added to the transmission buffer 106b in the order written. For example, when the game server performs relay processing of synchronization information for synchronization processing of game objects, the application writing means 105 receives synchronization information data from the terminal device 2a, processes the received data in a thread, and outputs the data to the terminal device. Synchronization information data is transmitted to the devices 2b and 2c. Application writing means 105 writes data to two transmission buffers 106b corresponding to two sockets corresponding to respective terminal devices.

ソケット読出手段101は、OS110が有する機能として特に、ネットワークとの通信においてソケットによって受信したデータを後述する受信バッファ106aに読み出す。 As a function of the OS 110, the socket reading means 101 reads data received by a socket in communication with the network into a reception buffer 106a, which will be described later.

処理手段としてのソケット書込手段102は、処理要求手段としてのソケット書込要求手段102aとコールバック処理手段102bとして機能する。 Socket writing means 102 as processing means functions as socket writing requesting means 102a and callback processing means 102b as processing requesting means.

図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 callback processing unit 102b receives a completion notification from the OS execution unit 100 and executes (asynchronously) when the OS execution unit 100 completes processing of the write event of the socket write request unit 102a. The network transmission result executed by the OS executing means 100 is received (S20). If the transmission result is normal (S21; Yes), the callback processing means 102b removes the completed transmission from the transmission buffer (S22). Subsequently, the callback processing means 102b requests the flag management means 107 to clear the flag (S23). Subsequently, the callback processing means 102b confirms that there is data to be transmitted in the transmission buffer (S24). If the confirmation result is affirmative (if there is data in the transmission buffer) (S24; Yes), the callback processing means 102b calls the socket write request means 102a (S25). If the confirmation result is negative (S24; No), the callback processing means 102b terminates the process. If the transmission result is abnormal (S21; No), the callback processing means 102b performs exceptional processing (disconnection, etc.) such as disconnection of communication or timeout (S26).

他の実装としては、以下のように構成してもよい。例えば、コールバック処理手段102bは、OS実行手段100がソケット書込要求手段102aの書込イベントの処理を完了した場合に完了通知を受け付けて(非同期に)実行された送信結果を受け取る。送信結果が異常の場合は、通信断、タイムアウトなどの例外処理(接続の切断など)を行い、終了する。送信結果が正常の場合は、送信完了分を送信バッファから削除する。引き続き、コールバック処理手段102bは、送信バッファに送信対象データが存在することを確認し、確認結果が肯定的であれば、ソケット書込要求手段102aに呼び出しを行う。確認結果が否定的であれば、フラグ管理手段107に依頼して、フラグを解除して処理を終了する。 Another implementation may be configured as follows. For example, the callback processing unit 102b receives a completion notification when the OS execution unit 100 completes the processing of the write event of the socket write request unit 102a (asynchronously) and receives the executed transmission result. If the transmission result is abnormal, perform exception processing such as disconnection or timeout (disconnection, etc.), and terminate. If the transmission result is normal, delete the completed transmission from the transmission buffer. Subsequently, the callback processing means 102b confirms that the transmission target data exists in the transmission buffer, and if the confirmation result is affirmative, calls the socket write request means 102a. If the confirmation result is negative, the flag management means 107 is requested to cancel the flag, and the process ends.

バッファリング手段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 memory 12, a receive buffer 106a and a transmit buffer 106b, both of which provide targets for reading and writing and manage data to be read and written. Reading and writing can be performed asynchronously by using buffers. The receiving buffer 106 a is written by the socket reading means 101 and read by the application reading means 104 . The transmission buffer 106b is written by the application writing means 105 and read by the socket writing means 102. FIG. The buffering means 106 (106a and 106b) reads and writes data in a non-blocking manner. It is inefficient for the CPU to allocate the memory required for the buffer each time it is executed. Spinning is common. It is also common to logically configure a ring buffer by combining these sub-blocks. A ring buffer 121 (a receiving ring buffer 121a as the receiving buffer 106a and a transmitting ring buffer 121b as the transmitting buffer 106b), which is a type of memory pool, is used as the buffer area here, but it is not necessarily a ring buffer. It is not necessary, and any buffer that can logically provide an infinite length buffer can be used. Preferably, a temporary storage area, such as a direct buffer, created in a memory area outside the heap area and capable of high-speed input/output is used. Here, a memory pool is defined as a large area allocated from free space in the main memory at the time of program startup, etc., in order to quickly and dynamically allocate the necessary memory area during the execution of a computer program. do.

フラグ管理手段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 flag management unit 107 sets a flag exclusively at the timing when the OS execution unit 100 starts event processing in response to a request from the socket write request unit 102a, processing) to clear the flag. As described above, since the operation shown in FIG. 6 is performed, the socket write request means 102a and the callback processing means 102b are limited to one socket write request means 102a and one callback processing means 102b by the function of the flag management means 107. Concurrency is controlled to ensure consistency of write operations to sockets. If the flagged socket write request means 102a or the callback processing means 102b corresponding to the write request means 102a is in process, the second and subsequent calls to the socket write request means 102a are Since the flag cannot be set by itself while it is set, the process is interrupted and ends without writing to the OS execution means 100 (S11 in FIG. 6; No). Therefore, the socket write request means 102a executes non-blocking.

記憶部11は、制御部10を上述した各手段100-107として動作させるOS110、通信管理プログラム111、アプリケーション112等を記憶する。なお、各手段100~107として機能させるための対象は、OS110、通信管理プログラム111、アプリケーション112を適宜入れ替えて行うものであってもよい。また、記憶部は、リレーショナル・データベースやファイルシステムなどを用いる。なお、高速化のために、Redisなどインメモリデータベースを利用、あるいは、併用してもよい。 The storage unit 11 stores an OS 110, a communication management program 111, an application 112, and the like, which causes the control unit 10 to operate as each of the means 100 to 107 described above. It should be noted that the objects for functioning as the means 100 to 107 may be performed by appropriately replacing the OS 110, the communication management program 111, and the application 112. FIG. Also, the storage unit uses a relational database, a file system, or the like. For speeding up, an in-memory database such as Redis may be used or used together.

メモリ12は、バッファリング手段106及びその他図示しない手段により制御され、情報を一時的に記憶する。 The memory 12 is controlled by buffering means 106 and other means (not shown) to temporarily store information.

なお、端末装置2a、2b、2cは、サーバ装置1と同様の構成に加え、操作部及び表示部を備える。サーバ装置1と構成が共通する部分については説明を省略する。 Note that the terminal devices 2a, 2b, and 2c have the same configuration as the server device 1, but also have an operation unit and a display unit. A description of the parts that have the same configuration as the server device 1 will be omitted.

(情報処理装置の動作)
次に、本実施の形態の作用を、(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 terminal devices 2a, 2b, and 2c, and the server device 1 does not progress the game and only performs the synchronous operation of the objects, or the server device 1 also progresses the game. good.

サーバ装置1の図示しない参加者管理手段は、ルームへの参加要求を受信すると、参加者に対してユーザID、ユーザ名、ソケットID、参加日時とともに記憶部11の当該ルームIDに関連付けられた参加者管理情報に記録する。 Upon receiving a room participation request, the participant management means (not shown) of the server device 1 sends a participation request associated with the room ID in the storage unit 11 to the participant along with the user ID, user name, socket ID, participation date and time. recorded in the user management information.

端末装置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 terminal devices 2a, 2b, and 2c sequentially generate, update, and delete a plurality of objects (characters, weapons, items, etc.) as the programs are executed. When proceeding with the game, the server device 1 accepts and processes object operation requests from the terminal devices 2a, 2b, and 2c, and notifies the terminal devices 2a, 2b, and 2c of the processing results so that the objects can be processed. Synchronize. When the game is not progressing, the server device 1 performs a relay operation for synchronizing the objects in the terminal devices 2a, 2b, and 2c. In the relay operation, the server device 1 transmits and receives a plurality of objects. In any case, the server device receives from the terminal devices 2a, 2b, and 2c information regarding the operations of the plurality of objects operated by each of them, and transmits information regarding the manipulation of the plurality of objects corresponding to the terminal devices to be synchronized. . Although the size of individual object operation information is small, frequent data synchronization (at least about 20 to 30 times per second) is required to achieve smooth object drawing in each of the terminal devices 2a, 2b, and 2c. If there are many objects to be synchronized in a sophisticated game, or if there are many terminal devices to be synchronized such as MMOG, the number of sending and receiving packets for synchronization processed by the server will be huge like streaming sending and receiving due to combinatorial explosion. sell. In recent years, the speed of CPU and memory has increased significantly, but network bandwidth, throughput and latency with individual terminals have physical and distance restrictions, and there are trends such as mobile usage patterns, so the speed increase is more gradual. is. Therefore, network transmission/reception tends to become a bottleneck in server processing. The present invention realizes efficient use of network transmission, a method of using a NIC level that is always processing and has as little idle time as possible, and an implementation using Java, in particular, that improves socket utilization during transmission. The details of the transmission/reception operation of the server device 1 will be described below.

図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 server device 1 receives data from the network 4, the socket reading means 101 receives data from the source 131 of the network 4 via the channel 130, and the socket reading means 101 reads the socket corresponding to the channel (with an IP address corresponding to the receiving terminal device). port) and writes it to the position of the write pointer in the reception ring buffer 121a. The data is added to receive ring buffer 121a. Separate buffers are prepared for each channel or socket. A channel/socket is used for both transmission and reception, and one channel/socket is prepared for each corresponding terminal device (a specific program with which the terminal device communicates). One application buffer is shown in the drawing, but in practice, it is managed separately for transmission and reception. The ring buffer 121 is managed as one pool for all channels, and although one is shown in the figure, the ring buffer 121 manages independent pointers for each channel and for transmission and reception separately. , and separate reception ring buffer 121a and transmission ring buffer 121b for each channel.

次に、アプリケーション読出手段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 application buffer 120 . Data is retrieved from the receive ring buffer 121a and removed from the receive ring buffer 121a. Here, the application buffer 120 is independently managed by the application and not provided by the buffering means 106 . The app buffer is provided by another buffering means. For example, OS functions (normal memory allocation, memory release) may provide app buffers. In order to reuse the memory and improve the efficiency of memory management, another buffering means may be configured so as to provide a function equivalent to the buffering means 106 to provide an application buffer.

アプリケーション実行手段103は、アプリバッファ120のデータを読み出してスレッドにて処理する。 The application execution unit 103 reads data from the application buffer 120 and processes it in a thread.

また、アプリケーション実行手段103のスレッドで処理されたデータをネットワーク4に送信する場合、アプリケーション実行手段103は、スレッドで処理されたデータをアプリバッファ120に書き込む。 When transmitting data processed by the thread of the application execution unit 103 to the network 4 , the application execution unit 103 writes the data processed by the thread into the application buffer 120 .

次に、アプリケーション書込手段105は、アプリバッファ120のデータを意図する送信先端末装置に応じて、送信先端末装置、より厳密には、チャネルあるいはソケットに対応する送信リングバッファ121bの書込ポインタの位置に書き込む。この結果、データは送信リングバッファ121bに追加される。データを書き込み終わると、書込ポインタを進めて、書込終了位置の次に移動する。次回、アプリケーション書込手段105がデータを書き込む時は、移動後の書込ポインタを使用するので、次回書き込むデータは、今回書き込んだデータの後ろに追加される。一方で、アプリバッファ120のデータは、送信リングバッファ121にコピーされた後は不要なり、アプリケーション実行手段103はこのバッファ領域を再利用できる。なお、送信リングバッファ121bはチャネルあるいはソケットごとに用意する。 Next, the application writing means 105 writes the write pointer of the transmission ring buffer 121b corresponding to the destination terminal device, more precisely, the channel or socket, according to the destination terminal device for which the data in the application buffer 120 is intended. write to the position of As a result, the data is added to the transmission ring buffer 121b. After the data is written, the write pointer is advanced to move to the position next to the write end position. When the application writing means 105 writes data next time, the write pointer after movement is used, so the data to be written next time is added after the data written this time. On the other hand, the data in the application buffer 120 becomes unnecessary after being copied to the transmission ring buffer 121, and the application executing means 103 can reuse this buffer area. The transmission ring buffer 121b is prepared for each channel or socket.

次に、ソケット書込手段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 transmission ring buffer 121b to the position just before the position of the write pointer, and writes it to the channel 130 by the socket. Data is transmitted to source 131 via channel 130 . The read pointer advances by the number of bytes successfully transmitted and moves to the location next to the data that has been successfully transmitted. At this time, the data is taken out from the transmission ring buffer 121b, and the OS executing means 100 performs transmission processing as a transmission object, and the data that has been transmitted (all or part of the data taken out) is excluded from the transmission ring buffer 121b. be done. Data for which transmission has not been completed continues to remain in the transmission ring buffer 121b. Here, all the data accumulated in the transmission ring buffer 121b is transmitted at once, but if the data accumulated in the transmission ring buffer 121b becomes huge, the limitation of the OS transmission function call is considered. For example, instead of reading all at once, only a part of the data may be read and transmitted.

以下、アプリケーション実行手段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 network 4 will be described in detail below.

(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 threads 1 and 2, and transmits data A and data B as processing results to the same terminal device (more precisely, the same socket or channel). Then, the application writing means 105 writes to the transmission ring buffer 121b corresponding to the socket for communication to the destination terminal. It is assumed that processing of threads 1 and 2 occurs asynchronously. Application writing means 105 performs blocking control so that data A and data B are written at maximum one data per channel, and application writing means 105 writes data A of thread 1 to transmission ring buffer 121b. During this time, the write processing of data B of thread 2 is made to wait. Similarly, while the application writing means 105 is writing the data B of the thread 2 to the transmission ring buffer 121b, the thread 1 waits for the data C writing process. Writing to the transmission ring buffer 121b starts from the position of the write pointer, and when writing ends, the write pointer is moved next to the write end position. For the sake of simplicity of explanation, if a non-blocking buffer is adopted as the transmission buffer 106b that performs blocking control so that write operations between threads are not mixed in the transmission ring buffer 121b, then the application writing means 105 work efficiently.

次に、ソケット書込要求手段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 transmission ring buffer 121b (the data from the read pointer to the point immediately before the write pointer at the time of calling) is transmitted. At this point, only data A is stored in the transmission ring buffer 121b. The socket write request means 102a requests the OS execution means 100 (OS kernel) to write the data A in the transmission ring buffer 121, and completes (1).

次に、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 kernel 100 determines the appropriate size of the data A (the size is, for example, the network-dependent maximum packet size MTU (Maximum Transmission Unit, for Ethernet, the MTU is 1500 bytes) and various protocol headers. Typically, in the case of TCP/IP on Ethernet, it is divided into MSS (Maximum Segment Size) 1460 bytes obtained by subtracting 20 bytes of TCP header and 20 bytes of IP header) and transmitted to network 4 as data A1 and A2. do. If data B is written from the application writing means 105 to the transmission ring buffer 121b during the event processing of the OS kernel 100, the transmission ring buffer 121b will not be able to store the data B even while the OS kernel 100 is reading. is accumulated non-blocking. Application writing means 105 continues to call socket write request means 102a, but socket write request means 102a is processing data A and the CAS flag of flag management means 107 is set. The process ends immediately in a non-blocking manner without transmitting data B (2). Thread 2 can execute the next process without waiting for completion of the relatively long network transmission process (event process of OS kernel 100). At this point, data B is added to the transmission ring buffer 121b, and data A and data B are present.

次に、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 OS kernel 100 activates the callback processing means 102b and notifies the transmission completion. The callback processing means 102b confirms the number of bytes that have been transmitted. In this case, the transmission of the entire data A has been completed. Exclude from ring buffer 121b. Next, the callback processing means 102b clears the CAS flag of the flag management means 107. FIG. At this point, the transmission ring buffer 121b has data A removed and only data B exists. Next, callback processing means 102b determines whether there is still data to be transmitted in transmission ring buffer 121b (if the read pointer and write pointer match, there is no data to be transmitted). If there is data to be sent, the socket write request means 102a is called. If there is no data to send, terminate. In this case, since the data B already exists in the transmission ring buffer 121b, the socket write request means 102a is called (3).

次に、ソケット書込要求手段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 transmission ring buffer 121b (the data from the read pointer to the point immediately before the write pointer at the time of calling). At this point, only data B is accumulated in the transmission ring buffer 121b. The socket write request means 102a requests the OS kernel 100 to write the data B in the transmission ring buffer 121b, and terminates.

次に、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 kernel 100 divides the data B into appropriate sizes and transmits them to the network 4 as data B1, B2 and B3. During event processing of the OS kernel 100, when data C is written from the application writing means 105 to the transmission ring buffer 121b, the transmission ring buffer 121b accumulates the data C in a non-blocking manner and calls the socket write request means 102a. The write means 102 is processing the data B requested to the OS by the immediately preceding socket write request means 102a, and since the CAS flag of the flag management means 107 is set, the socket write request means 102a does not send the data C. Terminate immediately without requesting the OS kernel 100 (4). Similarly, when data D is written from the application writing means 105 to the ring buffer 121, the ring buffer 121 accumulates the data D in a non-blocking manner and calls the socket write request means 102a. Since the CAS flag of the flag management means 107 is set during the processing of B, the socket write request means 102a immediately terminates without transmitting the data D (5). At this point, data B, data C, and data D are stored in order in the transmission ring buffer 121b.

次に、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 OS kernel 100 activates the callback processing means 102b and notifies the transmission completion. The callback processing means 102b first confirms that the number of transmission completion bytes is the entire data B, and then sets the read pointer of the transmission ring buffer 121b to the position next to the data B (the head of the data C in this case). Moving. At this time, the transmission ring buffer 121b stores data C and data D with data B excluded. Callback processing means 102b then clears the CAS flag of flag management means 107, and then confirms that transmission ring buffer 121b is not empty (data C and data D are accumulated in this case). After confirmation, the socket write request means 102a is called.

次に、ソケット書込要求手段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 buffer 121b are written to the OS kernel 100 (6).

次に、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 kernel 100 divides the data C and data D into appropriate sizes and transmits them to the network 4 as data C1, C2, C3, . When data E is written from the application writing means 105 to the transmission ring buffer 121b during event processing of the OS kernel 100, the transmission ring buffer 121b accumulates the data E in a non-blocking manner. Since the CAS flag of the management means 107 is set, the socket write request means 102a terminates without transmitting the data E (7). Similarly, when data F is written from the application writing means 105 to the transmission ring buffer 121b, the transmission ring buffer 121b accumulates the data F in a non-blocking manner (8). At this point, the transmission ring buffer 121b has accumulated data C, data D, data E, and data F. FIG.

次に、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 OS kernel 100 does not complete the processing of data D this time, but activates the callback processing means 102b and notifies the completion of transmission. In general, the OS system call (AsynchronousSocketChannel.write()) does not always guarantee to complete the transmission of all requested data. Therefore, confirmation of the number of bytes that have been transmitted is essential. In this example, the end of transmission of the entire data C was accidentally notified. It is purely accidental that the data C is completely sent, and there is a case where the transmission of the data C is ended while a part of the data C is left. For example, transmission of C1 and C2 may be completed and C3 may be left, or transmission of the first half of C3 in addition to C1 and C2 may be completed and the latter half of C3 may be left. The callback processing means 102b first confirms the number of bytes that have been transmitted. In this case, only data C has been completely transmitted. moves to the head position of data D). At this point, data C is excluded from the transmission ring buffer 121b. are accumulating. The callback processing means 102b then clears the CAS flag of the flag management means 107. FIG. In this case, the callback processing means 102b calls the socket write request means 102a because the data to be transmitted (data D, data E, and data F in this case) exists in the transmission ring buffer 121b.

次に、ソケット書込要求手段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 kernel 100 for all the data DEF in the buffer 121b (9).

次に、OSカーネル100は、データDEFを適切なサイズに分割してデータD1、D2、…としてネットワーク4に送信する。 Next, the OS kernel 100 divides the data DEF into appropriate sizes and transmits them to the network 4 as data D1, D2, .

次に、OSカーネル100は、たまたまデータDだけの送信を完了するとコールバック処理手段102bを起動して、送信完了を通知する。コールバック処理手段102bは、送信済バイト数を確認すると、偶然Dだけが送信完了となっていたので、送信リングバッファ121bの読出ポインタをデータEの先頭に移動し、フラグ管理手段107のCASフラグを解除して、送信リングバッファが空ではないので、ソケット書込要求手段102aを呼び出す。 Next, when the OS kernel 100 happens to complete the transmission of only the data D, it activates the callback processing means 102b and notifies the transmission completion. When the callback processing means 102b confirms the number of transmitted bytes, it happens that only D has been successfully transmitted. is released, and since the transmission ring buffer is not empty, the socket write request means 102a is called.

次に、ソケット書込要求手段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 kernel 100 is requested to write the data EF of 121 (10).

次に、OSカーネル100は、データEFを適切なサイズに分割してデータE、F1、F2としてネットワーク4に送信する。 Next, the OS kernel 100 divides the data EF into appropriate sizes and transmits them to the network 4 as data E, F1 and F2.

次に、OSカーネル100は、データEFの送信を完了するとコールバック処理手段102bを起動して、送信完了を通知する。コールバック処理手段102bは、送信完了バイト数を確認し、送信リングバッファ121bの読出ポインタをデータFの次に移動させ、フラグ管理手段107のCASフラグを解除する。コールバック処理手段102bは、送信リングバッファ121bが空(読出ポインタと書込ポインタが一致)になり、処理を終了する Next, when the transmission of the data EF is completed, the OS kernel 100 activates the callback processing means 102b and notifies the transmission completion. The callback processing means 102b confirms the number of bytes that have been transmitted, moves the read pointer of the transmission ring buffer 121b to the position next to the data F, and clears the CAS flag of the flag management means 107. FIG. The callback processing means 102b terminates the processing when the transmission ring buffer 121b becomes empty (the read pointer and the write pointer match).

以上の例では、説明しやすいように、データ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 transmission ring buffer 121b is provided between the application writing means 105 and the socket writing means 102, and the transmission ring buffer 121b accumulates the data written by the application writing means 105 in a non-blocking manner. , the write operation of the socket write request means 102a is executed according to the CAS flag, the CAS flag is managed by the flag management means 107, the flag is set when the socket write request means 102a starts writing, and the OS execution means 100 The flag is cleared by the callback processing means 102b upon receiving the event processing completion notification, so that the writing operation of the application writing means 105 does not directly affect the transmission event processing operation of the OS execution means 100. (The waiting time for the application writing means 105 and the OS execution means 100 to correspond to each other is eliminated, and the number of calls for each is reduced.), application processing and data transmission are executed in a non-blocking manner for high-speed communication. can be In particular, transmission processing to the network, which takes a relatively long time, is performed with a short wait time (latency), continuous processing as much as possible, and non-blocking, giving priority to network transmission processing, increasing transmission throughput, and asynchronous transmission ( Application processing can be executed during the waiting time for NIO) processing.

[他の実施の形態]
なお、本発明は、上記実施の形態に限定されず、本発明の趣旨を逸脱しない範囲で種々な変形が可能である。
[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 means 100 to 107 of the control unit 10 are implemented by programs in the above embodiment, all or part of the means may be implemented by hardware such as ASIC. Also, the program used in the above embodiment can be stored in a recording medium such as a CD-ROM and provided. In addition, replacement, deletion, addition, etc., of the steps described in the above embodiment are possible without changing the gist of the present invention. Also, the function of each means may be appropriately combined with other means, or may be separated into a plurality of means.

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: server devices 2a, 2b, 2c: terminal device 4: network 10: control unit 11: storage unit 12: memory 13: communication unit 100: OS execution means (OS kernel)
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.
前記バッファリング手段は、ノンブロッキングキューに前記イベントを蓄積する請求項1に記載の通信管理プログラム。 2. The communication management program according to claim 1, wherein said buffering means accumulates said events in a non-blocking queue. 前記バッファリング手段は、メモリプールに前記イベントを蓄積する請求項1又は2に記載の通信管理プログラム。 3. The communication management program according to claim 1, wherein said buffering means stores said event in a memory pool. 前記バッファリング手段は、リングバッファに前記イベントを蓄積する請求項1又は2に記載の通信管理プログラム。 3. The communication management program according to claim 1, wherein said buffering means accumulates said events in a ring buffer. 1以上のイベントを蓄積するバッファリング手段と、
前記蓄積したイベントを処理する処理手段と、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理手段とを有し、
前記処理手段は、イベントの処理を要求する処理要求手段と、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理手段とを含み、
前記フラグ管理手段は、前記処理手段のイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理手段のイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求手段は、前記バッファリング手段に対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する情報処理装置。
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.
1以上のイベントをノンブロッキングに蓄積するバッファリングステップと、
前記蓄積したイベントを処理する処理ステップと、
呼び出しを受け付けて排他的にフラグを立てるフラグ管理ステップとを有し、
前記処理ステップは、イベントの処理を要求する処理要求ステップと、イベントの処理を完了した場合に完了通知を受けて実行するコールバック処理ステップとを含み、
前記フラグ管理ステップは、前記処理ステップのイベントの処理の開始のタイミングで排他的にフラグを立て、前記コールバック処理ステップのイベントの処理の終了のタイミングでフラグを解除し、
前記処理要求ステップは、前記バッファリングステップに対する蓄積及び前記コールバック処理手段の終了のタイミングで呼び出しを受け付けて、前記フラグ管理手段のフラグに応じて当該フラグが、立てられなかった場合は処理をせずに終了し、立てられた場合は前記バッファリング手段が蓄積した前記イベントを処理する通信管理方法。
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.
JP2021125358A 2021-07-30 2021-07-30 Communication management program, information processing device and communication management method Active JP6998000B1 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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