JP7310924B2 - サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム - Google Patents
サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム Download PDFInfo
- Publication number
- JP7310924B2 JP7310924B2 JP2021566407A JP2021566407A JP7310924B2 JP 7310924 B2 JP7310924 B2 JP 7310924B2 JP 2021566407 A JP2021566407 A JP 2021566407A JP 2021566407 A JP2021566407 A JP 2021566407A JP 7310924 B2 JP7310924 B2 JP 7310924B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- server
- kernel
- ring buffer
- delay control
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0895—Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/40—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/103—Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Environmental & Geological Engineering (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Cardiology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
特許文献1には、仮想マシン内で動作するGuest OSが自仮想マシン外に存在する、外部プロセスとの専用仮想通信路を構築する仮想通信路構築システムが記載されている。特許文献1に記載の技術は、virtioで接続されたHost OSとGuest OSにおいて、virtio-net関連のメモリコピー回数を減らすことにより、パケット転送処理を高速化する。
HW10は、NIC(Network Interface Card)11(物理NIC)(インターフェイス部)を有し、Host OS20、仮想マシンを構築するハイパーバイザーであるKVM30、仮想マシン(VM1,VM2)40、およびGuest OS50により構築された仮想通信路を経由してuser space(ユーザスペース)60上のパケット処理APL(Application)1との間でデータ送受信の通信を行う。以下の説明において、図7の太矢印に示すように、パケット処理APL1が、HW10からのパケットを受け取るデータの流れをRx側受信と称し、パケット処理APL1が、HW10にパケットを送信するデータの流れをTx側送信と称する。
複数の仮想マシンを接続、連携させる手法はInter-VM Communicationと呼ばれ、データセンタなどの大規模な環境では、VM間の接続には、仮想スイッチが標準的に利用されてきた。しかし、通信の遅延が大きい手法であることから、より高速な手法が新たに提案されている。例えば、SR-IOV(Single Root I/O Virtualization)と呼ばれる特別なハードウェアを用いる手法や、高速パケット処理ライブラリであるIntel DPDK(Intel Data Plane Development Kit)(以下、DPDKという)を用いたソフトウェアによる手法などが提案されている(非特許文献1参照)。
図8に示すように、Host OS20は、パケット処理のためのソフトウェアであるOvS-DPDK70を備え、OvS-DPDK70は、仮想マシン(ここではVM1)に接続するための機能部であるvhost-user71と、NIC(DPDK)11(物理NIC)に接続するための機能部であるdpdk(PMD)72と、を有する。
また、パケット処理APL1Aは、Guest OS50区間においてポーリングを行う機能部であるdpdk(PMD)2を具備する。すなわち、パケット処理APL1Aは、図7のパケット処理APL1にdpdk(PMD)2を具備させて、パケット処理APL1を改変したAPLである。
図9は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理の概略図である(非特許文献2参照)。図7と同一構成部分には、同一符号を付している。
図9に示すように、New API(NAPI)は、OS70(例えば、Host OS)を備えるサーバ上で、ユーザが使用可能なuser space60に配置されたパケット処理APL1を実行し、OS70に接続されたHW10のNIC11とパケット処理APL1との間でパケット転送を行う。
Kernel71は、OS70(例えば、Host OS)の基幹部分の機能であり、ハードウェアの監視やプログラムの実行状態をプロセス単位で管理する。ここでは、kernel71は、パケット処理APL1からの要求に応えるとともに、HW10からの要求をパケット処理APL1に伝える。Kernel71は、パケット処理APL1からの要求に対して、システムコール(「非特権モードで動作しているユーザプログラム」が「特権モードで動作しているカーネル」に処理を依頼)を介することで処理する。
Kernel71は、Socket75を介して、パケット処理APL1へパケットを伝達する。Kernel71は、Socket75を介してパケット処理APL1からパケットを受信する。
上記、Linux kernel 2.5/2.6より実装されているNew API(NAPI)は、パケットが到着するとハードウェア割込(hardIRQ)の後、ソフトウェア割込(softIRQ)により、パケット処理を行う。図9に示すように、割込モデルによるパケット転送は、割込処理(図9の符号c参照)によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
[New API(NAPI)によるRx側パケット処理構成]
図10は、図9の破線で囲んだ箇所におけるNew API(NAPI)によるRx側パケット処理の概要を説明する図である。
<Device driver>
図10に示すように、Device driverには、ネットワークインターフェースカードであるNIC11(物理NIC)、NIC11の処理要求の発生によって呼び出され要求された処理(ハードウェア割込)を実行するハンドラであるhardIRQ81、およびハードウェア割込の処理機能部であるnetif_rx82が配置される。
Networking layerには、netif_rx82の処理要求の発生によって呼び出され要求された処理(ソフトウェア割込)を実行するハンドラであるsoftIRQ83、ソフトウェア割込(softIRQ)の実体を行う制御機能部であるdo_softirq84が配置される。また、ソフトウェア割込(softIRQ)を受けて実行するパケット処理機能部であるnet_rx_action85、NIC11からのハードウェア割込がどのデバイスのものであるかを示すネットデバイス(net_device)の情報を登録するpoll_list86、sk_buff構造体(Kernel71が、パケットがどうなっているかを知覚できるようにするための構造体)を作成するnetif_receive_skb87、Ring Buffer72が配置される。
Protocol layerには、パケット処理機能部であるip_rcv88、arp_rcv89等が配置される。
図10の矢印(符号)d~oは、Rx側パケット処理の流れを示している。
NIC11のhardware機能部11a(以下、NIC11という)が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA(Direct Memory Access)転送によりCPUを使用せずに、Ring Buffer72へ到着したパケットをコピーする(図10の符号d参照)。このRing Buffer72は、サーバの中にあるメモリ空間で、Kernel71(図9参照)が管理している。
ここまでで、図10の<Device driver>におけるハードウェア割込の処理は停止する。
その後、net_rx_action85は、netif_receive_skb87に通達をする(図10の符号m参照)。
割込モデルは、HWからイベント(ハードウェア割込)を受けたkernelがパケット加工を行うためのソフトウェア割込処理によってパケット転送を行う。このため、割込モデルは、割込(ソフトウェア割込)処理によりパケット転送を行うので、他の割込との競合や、割込先CPUがより優先度の高いプロセスに使用されていると待ち合わせが発生し、パケット転送の遅延が大きくなるといった課題がある。この場合、割込処理が混雑すると、更に待ち合わせ遅延は大きくなる。
例えば、図7に示すように、割込モデルによるパケット転送は、割込処理(図7の符号a,b参照)によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
一般的なkernelは、パケット転送処理はハードウェア割込処理の後、ソフトウェア割込処理にて伝達される。
パケット転送処理のソフトウェア割込が発生した際に、下記条件(1)~(3)においては、前記ソフトウェア割込処理を即時に実行することができない。このため、ksoftirqd(CPU毎のカーネルスレッドであり、ソフトウェア割込の負荷が高くなったときに実行される)等のスケジューラにより調停され、割込処理がスケジューリングされることにより、msオーダの待ち合わせが発生する。
(1)他のハードウェア割込処理と競合した場合
(2)他のソフトウェア割込処理と競合した場合
(3)優先度の高い他プロセスやkernel thread(migration thread等)、割込先CPUが使用されている場合
上記条件では、前記ソフトウェア割込処理を即時に実行することができない。
例えば、図8に示すように、ポーリングモデルによるパケット転送は、パケット処理APL1にGuest OS50区間においてポーリングを行う機能部であるdpdk(PMD)2を具備させる必要があり、パケット処理APL1の改変が必要となる。
[概要]
図1は、本発明の実施形態に係るサーバ内遅延制御システムの概略構成図である。本実施形態は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理に適用した例である。図9と同一構成部分には、同一符号を付している。
図1に示すように、サーバ内遅延制御システム1000は、OS70(例えば、Host OS)を備えるサーバ上で、ユーザが使用可能なuser space60に配置されたパケット処理APL1を実行し、OS170に接続されたHW10のNIC11とパケット処理APL1との間でパケット転送を行う。
kernel171は、Socket75を介して、パケット処理APL1へパケットを送信する。Kernel71は、Socket75を介してパケット処理APL1からパケットを受信する。
サーバ内遅延制御装置100は、パケット到着監視部110と、パケット刈取部120と、を備える。
パケット到着監視部110は、パケットが到着していないかを監視するためのthreadである。パケット到着監視部110は、poll_list186(図2参照)を常に監視(busy poll)する。
<Device driver>
図2に示すように、Device driverには、ネットワークインターフェースカードであるNIC11、NIC11の処理要求の発生によって呼び出され要求された処理(ハードウェア割込)を実行するハンドラであるhardIRQ81、およびハードウェア割込の処理機能部であるnetif_rx182が配置される。
Networking layerには、NIC11からのハードウェア割込がどのデバイスのものであるかを示すネットデバイス(net_device)の情報を登録するpoll_list186、パケット到着監視部110、キューを刈取ったパケットを、割込の発生しないソケット通信のためのsk_buff構造体(kernel171が、パケットの状態を示す構造体)を作成するnetif_receive_skb87、およびRing Buffer72が配置される。
Protocol layerには、パケット処理機能部であるip_rcv88、arp_rcv89等が配置される。なお、プロトコル処理は、ip_rcv88、arp_rcv89以外にもある。
[New API(NAPI)によるRx側パケット処理動作]
図2の矢印(符号)d~g,k~oは、Rx側パケット処理の流れを示している。
NIC11が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA転送によりCPUを使用せずに、Ring Buffer72へ到着したパケットをコピーする(図2の符号d参照)。このRing Buffer72は、サーバ中のメモリ空間で、Kernel171(図1参照)が管理している。
ここまでで、図2の<Device driver>におけるハードウェア割込の処理は停止する。
パケット刈取部120は、受信した情報をもとにRing_Buffer72からパケットを取り出し、netif_receive_skb87へパケットを伝達する(図2の符号m参照)。
次に、live patchによる登録動作について説明する。
サーバ内遅延制御システム1000(図1参照)は、図1に示すOS70のkernel171が、サーバ内遅延制御装置100を備える。kernel171は、livepatchを用いることで、既存のkernel71(図9参照)を改造(新しくビルド)することなく、実現が可能になる。以下、kernel171に適用されるlivepatchについて説明する。
(1)livepatchは、netif_rx182(図2参照)のsoftIRQスケジューリング機能を抑制する。
以降、図2に示すパケット処理の動作が実行される。
図3は、サーバ内遅延制御装置100(図2参照)のRx側動作を示すフローチャートである。図2を参照してRx側動作を説明する。
ステップS11では、サーバ内遅延制御装置100のパケット到着監視部110(図2参照)は、poll_list186(図2参照)をCPUを専有して常に監視(busy poll)し(図2の符号k参照)、パケット到着有無を確認する。
poll list186にパケット到着を意味するポインタ情報がある場合(S12:Yes)、ステップS13に進み、poll list186にパケット到着を意味するポインタ情報がない場合(S12:No)、本フローの処理を終了する。
次に、本実施形態と既存技術(図10参照)との差異について説明する。
一般に、ハードウェア割込(hardIRQ)は、優先度が高く、該当CPUの処理を中断し、hardIRQの処理を最優先で処理する必要がある。このため、オーバーヘッドが大きい。そのため、hardIRQでは、パケット到着を知らせるのみとし、パケット処理は、softIRQで処理する設計思想となっている(「kernelの原則」という)。ここで、softIRQは、他のsoftIRQと競合し、待たされる事象が発生する(遅延発生の要因となる)。
従来技術が割込モデルにしている理由は、かつてはCPUリソースが限られていた(または、Raspberry PiのようなSingle board ComputerのようにCPUコアが少ないデバイスでも動作させる)ために、1つのCPUコアを他の処理と共有して使用する設計思想になっていたためである。この場合、通常の処理や割込処理等でCPUタイムを切り替えながら処理を行う。上記割込処理であっても、softIRQは競合することになり、待ち時間が発生する。
なお、softIRQのスケジューリングを行うスケジューラであるksoftirqdは、softIRQの種別に応じて優先度を付与する機能を具備しておらず、この競合による遅延発生は抑制できない。
図10に示すように、kernel71(図9)は、NIC11からのパケット到着の知らせを、hardIRQにより受け取り(図10の符号h参照)、パケット処理のためのsoftIRQをスケジューリングする(図10の破線囲みp参照)。この際、他の割込処理と競合すると待合せが発生し、msオーダのNW遅延が発生する。
図2に示すように、サーバ内遅延制御システム1000は、<Networking layer>において、netif_rx182は、poll_list86にnet_deviceを登録するが、既存技術(図10参照)のnetif_rx82とは異なり、ソフトウェア割込(softIRQ)のスケジューリングは行わない(「変更点1」)。
サーバ内遅延制御装置100のパケット到着監視部110は、poll_list186を常に監視(busy poll)し(図2の符号k参照)、パケット到着有無を確認する。
まず、本実施形態では、ハードウェア割込(hardIRQ)によるパケット到着の通知については、NAPIを踏襲する。softIRQは、CPUリソースを有効活用する点では便利であるが、パケットの即時転送の観点では適さない。そのため、本実施形態では、softIRQの機能を停止し、kernelの中でpollingモデルを実現する点が新しい。具体的には、図2に示すnetif_rx182が、図10に示すnetif_rx82のように、softIRQ83(ハンドラ)を立ち上げる通知(図10の符号h参照)を行わないことに示されている。
本実施形態は、図2に示すkernel171の中でpolling専用のthread(サーバ内遅延制御装置100のパケット到着監視部110)を起動し、サーバ内遅延制御装置100のパケット刈取部120が、パケット到着時に、pollingモデル(softIRQなし)によりパケット処理を行う。これにより、APL改変不要になる、換言すれば、既存のPOSIX socket APIを利用することが可能になる。
本実施形態に係るサーバ内遅延制御装置100は、例えば図4に示すような構成のコンピュータ900によって実現される。
図4は、サーバ内遅延制御装置100の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU910、RAM920、ROM930、HDD940、通信インターフェイス(I/F:Interface)950、入出力インターフェイス(I/F)960、およびメディアインターフェイス(I/F)970を有する。
サーバ内遅延制御装置100は、Kernel内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置であればよく、OSは限定されない。また、サーバ仮想化環境下であることも限定されない。したがって、サーバ内遅延制御システム1000は、図5および図6に示す各構成に適用が可能である。
図5は、汎用Linux kernel(登録商標)およびVM構成のサーバ仮想化環境における、割込モデルに、サーバ内遅延制御システム1000Aを適用した例を示す図である。図1および図7と同一構成部分には、同一符号を付している。
図5に示すように、サーバ内遅延制御システム1000Aは、Guest OS70のKernel171内にサーバ内遅延制御装置100が配置され、Host OS90のKernel91内にサーバ内遅延制御装置100が配置される。
HostOS90は、Kernel91と、HostOS90を備えるサーバ中のメモリ空間で、Kernel91が管理するRing Buffer22と、NIC11からのハードウェア割込(hardIRQ)がどのデバイスのものであるかを示すネットデバイスの情報を登録するpoll_list186(図2)と、kernel threadであるvhost-netモジュール221と、Kernel91により作成される仮想インターフェイスであるtapデバイス222と、仮想スイッチ(br)223と、を有する。
Kernel91は、tapデバイス222を介して、仮想マシン30へパケットを伝達する。
Kernel171は、プロトコル処理部74を介して、パケット処理APL1へパケットを伝達する。
図6は、コンテナ構成のサーバ仮想化環境における、割込モデルに、サーバ内遅延制御システム1000Bを適用した例を示す図である。図1と同一構成部分には、同一符号を付している。
図6に示すように、サーバ内遅延制御システム1000Bは、Guest OS180と、OSをContainer210に代えた、コンテナ構成を備える。Container210は、vNIC(仮想NIC)211を有する。Guest OS180のKernel181内にサーバ内遅延制御装置100が配置される。
本発明は、ペアメタル構成のように非仮想化構成のシステムに適用できる。非仮想化構成のシステムにおいて、APL3を改変することなく、サーバ内の遅延を小さくしてパケット転送を行うことができる。
本発明は、トラヒックフロー数が増えた場合に、インバウンドのネットワークトラフィックを複数CPUで処理可能なRSS(Receive-Side Scaling)と連携して、パケット到着監視threadに割り当てるCPU数を増やすことで、ネットワーク負荷に対するスケールアウトが可能になる。
以上説明したように、OS(OS70)が、カーネル(Kernel171)と、OSを備えるサーバ中のメモリ空間で、カーネルが管理するリングバッファ(Ring Buffer72)と、インターフェイス部(NIC11)からのハードウェア割込(hardIRQ)がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリスト(poll_list186)と、を有し、カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッド(thread)を立ち上げるサーバ内遅延制御装置100を備えており、サーバ内遅延制御装置100は、ポールリストを監視(busy poll)するパケット到着監視部110と、パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリをリングバッファから削除する刈取りを実行するパケット刈取部120と、を備える。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
10 HW
11 NIC(物理NIC)(インターフェイス部)
22,52,72 Ring Buffer(リングバッファ)
70 OS
74 プロトコル処理部
60 user space(ユーザスペース)
90 Host OS(OS)
91,171,181 Kernel(カーネル)
100 サーバ内遅延制御装置
110 パケット到着監視部
120 パケット刈取部
180 Guest OS(OS)
186 poll_list(ポールリスト)
210 Container
1000,1000A,1000B サーバ内遅延制御システム
Claims (15)
- サーバ内遅延制御装置であって、
OSが、
カーネルと、
前記OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、を有し、
前記カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記ポールリストを監視するパケット到着監視部と、
前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - サーバ内遅延制御装置であって、
仮想マシン内で動作するOSである Guest OSが、
カーネルと、
前記Guest OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、
刈取りが実行されたパケットのプロトコル処理を行うプロトコル処理部と、を有し、
前記カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記ポールリストを監視するパケット到着監視部と、
前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - サーバ内遅延制御装置であって、
仮想マシンおよび前記仮想マシン外に形成された外部プロセスが動作可能なOSであるHost OSが、
カーネルと、
前記Host OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、
前記カーネルにより作成される仮想インターフェイスであるtapデバイスと、を備え、
前記カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記ポールリストを監視するパケット到着監視部と、
前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - 前記カーネルは、当該カーネルを起動させたまま、処理動作を変更可能なパッチを有する
ことを特徴とする請求項1乃至請求項3のいずれか一項に記載のサーバ内遅延制御装置。 - ポーリングモデルによりパケットの到着を監視するパケット到着監視部と、
リングバッファに保持したパケットを参照し、前記リングバッファへの到着が検知された前記パケットを取得するパケット刈取部と、
前記パケット到着監視部と前記パケット刈取部とを含むカーネルと、を備え、
前記パケット到着監視部は、
当該カーネル内で、前記ポーリングモデルによりパケット到着を監視するスレッドを起動させる
ことを特徴とするサーバ。 - 仮想マシン内で動作するOSであるGuest OSが、
前記Guest OSを備えるサーバ中のメモリ空間で、カーネルが管理するリングバッファと、
ポーリングモデルによりパケットの到着を監視するパケット到着監視部と、
リングバッファに保持したパケットを参照し、前記リングバッファへの到着が検知された前記パケットを取得するパケット刈取部と、を備える
ことを特徴とするサーバ。 - 仮想マシンおよび前記仮想マシン外に形成された外部プロセスが動作可能なOSであるHost OSが、
前記Host OSを備えるサーバ中のメモリ空間で、カーネルが管理するリングバッファと、
ポーリングモデルによりパケットの到着を監視するパケット到着監視部と、
リングバッファに保持したパケットを参照し、前記リングバッファへの到着が検知された前記パケットを取得するパケット刈取部と、を備える
ことを特徴とするサーバ。 - 前記カーネルは、当該カーネルを起動させたまま、処理動作を変更可能なパッチを有する
ことを特徴とする請求項5乃至請求項7のいずれか一項に記載のサーバ。 - 前記パケット到着監視部が監視する対象は、インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストである
ことを特徴とする請求項5乃至請求項8のいずれか一項に記載のサーバ。 - 前記カーネルは、流入するパケット量に応じて、スレッドに割り当てるCPUの数を増減する
ことを特徴とする請求項5または請求項6に記載のサーバ。 - 前記パケット刈取部は、
パケットが到着している場合、前記リングバッファに保持したパケットを参照する
ことを特徴とする請求項5乃至請求項8のいずれか一項に記載のサーバ。 - サーバ内遅延制御装置のサーバ内遅延制御方法であって、
OSを備えるサーバ中のメモリ空間で、カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、を前記サーバが有し、前記カーネル内に前記サーバ内遅延制御装置を備え、
前記サーバ内遅延制御装置は、前記カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御ステップを実行し、
前記サーバ内遅延制御ステップは、
前記ポールリストを監視するステップと、
前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するステップと、を含む
ことを特徴とするサーバ内遅延制御方法。 - サーバのサーバ内遅延制御方法であって、
前記サーバは、
ポーリングモデルによりパケットの到着を監視するパケット到着監視ステップと、
リングバッファに保持したパケットを参照し、前記リングバッファへの到着が検知された前記パケットを取得するパケット取得ステップと、を実行するとともに、
前記パケット到着監視ステップでは、
前記サーバのカーネル内で、前記ポーリングモデルによりパケット到着を監視するスレッドを起動させる
ことを特徴とするサーバ内遅延制御方法。 - OSが、
カーネルと、
前記OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、を有し、
前記カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置を備えており、前記サーバ内遅延制御装置としてのコンピュータに、
前記ポールリストを監視するパケット到着監視手順、
前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取手順、
を実行させるためのプログラム。 - カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバとしてのコンピュータに、
ポーリングモデルによりパケットの到着を監視するパケット到着監視手順、
リングバッファに保持したパケットを参照し、前記リングバッファへの到着が検知された前記パケットを取得する手順、
を実行させるためのプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/050426 WO2021130828A1 (ja) | 2019-12-23 | 2019-12-23 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JPWO2021130828A1 JPWO2021130828A1 (ja) | 2021-07-01 |
JPWO2021130828A5 JPWO2021130828A5 (ja) | 2022-09-05 |
JP7310924B2 true JP7310924B2 (ja) | 2023-07-19 |
Family
ID=76575746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021566407A Active JP7310924B2 (ja) | 2019-12-23 | 2019-12-23 | サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230029932A1 (ja) |
EP (1) | EP4083803A4 (ja) |
JP (1) | JP7310924B2 (ja) |
WO (1) | WO2021130828A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023002547A1 (ja) * | 2021-07-19 | 2023-01-26 | 日本電信電話株式会社 | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム |
WO2023105692A1 (ja) * | 2021-12-08 | 2023-06-15 | 日本電信電話株式会社 | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム |
WO2023144958A1 (ja) * | 2022-01-27 | 2023-08-03 | 日本電信電話株式会社 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
WO2023199519A1 (ja) * | 2022-04-15 | 2023-10-19 | 日本電信電話株式会社 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
WO2023218596A1 (ja) * | 2022-05-12 | 2023-11-16 | 日本電信電話株式会社 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
WO2024013830A1 (ja) * | 2022-07-11 | 2024-01-18 | 日本電信電話株式会社 | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009060530A1 (ja) | 2007-11-09 | 2009-05-14 | Fujitsu Limited | ネットワーク処理制御装置,プログラムおよび方法 |
JP2015197874A (ja) | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | 仮想通信路構築システム、仮想通信路構築方法、及び仮想通信路構築プログラム |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5617537A (en) * | 1993-10-05 | 1997-04-01 | Nippon Telegraph And Telephone Corporation | Message passing system for distributed shared memory multiprocessor system and message passing method using the same |
US7174393B2 (en) * | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US7649901B2 (en) * | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US20050108518A1 (en) * | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
US9558132B2 (en) * | 2013-08-14 | 2017-01-31 | Intel Corporation | Socket management with reduced latency packet processing |
WO2020051505A1 (en) * | 2018-09-07 | 2020-03-12 | The Board Of Trustees Of The University Of Illinois | Application-transparent near-memory processing architecture with memory channel network |
US10768982B2 (en) * | 2018-09-19 | 2020-09-08 | Oracle International Corporation | Engine for reactive execution of massively concurrent heterogeneous accelerated scripted streaming analyses |
US10678724B1 (en) * | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US10817291B2 (en) * | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US20190391940A1 (en) * | 2019-06-28 | 2019-12-26 | Intel Corporation | Technologies for interrupt disassociated queuing for multi-queue i/o devices |
US20200409709A1 (en) * | 2019-06-29 | 2020-12-31 | Intel Corporation | Apparatuses, methods, and systems for time-multiplexing in a configurable spatial accelerator |
JP7251648B2 (ja) * | 2019-10-08 | 2023-04-04 | 日本電信電話株式会社 | サーバ内遅延制御システム、サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
US11029958B1 (en) * | 2019-12-28 | 2021-06-08 | Intel Corporation | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator |
US11907713B2 (en) * | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US20220100680A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
-
2019
- 2019-12-23 EP EP19957193.6A patent/EP4083803A4/en active Pending
- 2019-12-23 US US17/787,782 patent/US20230029932A1/en active Pending
- 2019-12-23 JP JP2021566407A patent/JP7310924B2/ja active Active
- 2019-12-23 WO PCT/JP2019/050426 patent/WO2021130828A1/ja unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009060530A1 (ja) | 2007-11-09 | 2009-05-14 | Fujitsu Limited | ネットワーク処理制御装置,プログラムおよび方法 |
JP2015197874A (ja) | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | 仮想通信路構築システム、仮想通信路構築方法、及び仮想通信路構築プログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2021130828A1 (ja) | 2021-07-01 |
US20230029932A1 (en) | 2023-02-02 |
JPWO2021130828A1 (ja) | 2021-07-01 |
EP4083803A1 (en) | 2022-11-02 |
EP4083803A4 (en) | 2023-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7310924B2 (ja) | サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム | |
US10095645B2 (en) | Presenting multiple endpoints from an enhanced PCI express endpoint device | |
US9996484B1 (en) | Hardware acceleration for software emulation of PCI express compliant devices | |
JP7251648B2 (ja) | サーバ内遅延制御システム、サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
TWI408934B (zh) | 網路介面技術 | |
US8225332B2 (en) | Method and system for protocol offload in paravirtualized systems | |
WO2015031279A1 (en) | Pass-through network interface controller configured to support latency sensitive virtual machines | |
US10452570B1 (en) | Presenting physical devices to virtual computers through bus controllers emulated on PCI express endpoints | |
WO2002031672A2 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
WO2022143714A1 (zh) | 服务器系统、虚拟机创建方法及装置 | |
US8392629B1 (en) | System and methods for using a DMA module for a plurality of virtual machines | |
CN114397999A (zh) | 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备 | |
US11625199B2 (en) | Communication apparatus, communication method, and computer program product | |
Chang et al. | Virtualization technology for TCP/IP offload engine | |
JP7451438B2 (ja) | 通信装置、通信システム、通知方法及びプログラム | |
WO2022172366A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
WO2022195826A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
WO2023002547A1 (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
WO2024013830A1 (ja) | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム | |
WO2023144878A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
Zhang et al. | NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs | |
WO2023218596A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
WO2023144958A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
WO2023199519A1 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
Ngoc et al. | Flexible NVMe request routing for virtual machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220401 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220825 |
|
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: 20230606 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230619 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7310924 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |