JP7485101B2 - サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム - Google Patents
サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム Download PDFInfo
- Publication number
- JP7485101B2 JP7485101B2 JP2022581084A JP2022581084A JP7485101B2 JP 7485101 B2 JP7485101 B2 JP 7485101B2 JP 2022581084 A JP2022581084 A JP 2022581084A JP 2022581084 A JP2022581084 A JP 2022581084A JP 7485101 B2 JP7485101 B2 JP 7485101B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- kernel
- server
- delay control
- interrupt
- 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
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
- H04L47/568—Calendar queues or timing rings
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/54—Interprogram communication
-
- 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/22—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (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との間でデータ送受信の通信を行う。以下の説明において、図9の太矢印に示すように、パケット処理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参照)。
図10に示すように、Host OS20は、パケット処理のためのソフトウェアであるOvS-DPDK70を備え、OvS-DPDK70は、仮想マシン(ここではVM1)に接続するための機能部であるvhost-user71と、NIC(DPDK)11(物理NIC)に接続するための機能部であるdpdk(PMD)72と、を有する。
また、パケット処理APL1Aは、Guest OS50区間においてポーリングを行う機能部であるdpdk(PMD)2を具備する。すなわち、パケット処理APL1Aは、図9のパケット処理APL1にdpdk(PMD)2を具備させて、パケット処理APL1を改変したAPLである。
図11は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理の概略図である(非特許文献2参照)。図9と同一構成部分には、同一符号を付している。
図11に示すように、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)により、パケット処理を行う。図11に示すように、割込モデルによるパケット転送は、割込処理(図11の符号c参照)によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
[New API(NAPI)によるRx側パケット処理構成]
図12は、図11の破線で囲んだ箇所におけるNew API(NAPI)によるRx側パケット処理の概要を説明する図である。
<Device driver>
図12に示すように、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等が配置される。
図12の矢印(符号)d~oは、Rx側パケット処理の流れを示している。
NIC11のhardware機能部11a(以下、NIC11という)が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA(Direct Memory Access)転送によりCPUを使用せずに、Ring Buffer72へ到着したパケットをコピーする(図12の符号d参照)。このRing Buffer72は、サーバの中にあるメモリ空間で、Kernel71(図11参照)が管理している。
ここまでで、図12の<Device driver>におけるハードウェア割込の処理は停止する。
その後、net_rx_action85は、netif_receive_skb87に通達をする(図12の符号m参照)。
割込モデルは、HWからイベント(ハードウェア割込)を受けたkernelがパケット加工を行うためのソフトウェア割込処理によってパケット転送を行う。このため、割込モデルは、割込(ソフトウェア割込)処理によりパケット転送を行うので、他の割込との競合や、割込先CPUがより優先度の高いプロセスに使用されていると待ち合わせが発生し、パケット転送の遅延が大きくなるといった課題がある。この場合、割込処理が混雑すると、更に待ち合わせ遅延は大きくなる。
例えば、図9に示すように、割込モデルによるパケット転送は、割込処理(図9の符号a,b参照)によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
一般的なkernelは、パケット転送処理はハードウェア割込処理の後、ソフトウェア割込処理にて伝達される。
パケット転送処理のソフトウェア割込が発生した際に、下記条件(1)~(3)においては、前記ソフトウェア割込処理を即時に実行することができない。このため、ksoftirqd(CPU毎のカーネルスレッドであり、ソフトウェア割込の負荷が高くなったときに実行される)等のスケジューラにより調停され、割込処理がスケジューリングされることにより、msオーダの待ち合わせが発生する。
(1)他のハードウェア割込処理と競合した場合
(2)他のソフトウェア割込処理と競合した場合
(3)優先度の高い他プロセスやkernel thread(migration thread等)、割込先CPUが使用されている場合
上記条件では、前記ソフトウェア割込処理を即時に実行することができない。
例えば、図10に示すように、ポーリングモデルによるパケット転送は、パケット処理APL1にGuest OS50区間においてポーリングを行う機能部であるdpdk(PMD)2を具備させる必要があり、パケット処理APL1の改変が必要となる。
(第1実施形態)
[概要]
図1は、本発明の第1実施形態に係るサーバ内遅延制御システムの概略構成図である。本実施形態は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理に適用した例である。図11および図12と同一構成部分には、同一符号を付している。
図1に示すように、サーバ内遅延制御システム1000は、OS70(例えば、Host OS)を備えるサーバ上で、ユーザが使用可能なuser space60に配置されたパケット処理APL1を実行し、OS70に接続されたHW10AのNIC11とパケット処理APL1との間でパケット転送を行う。
HW10Aは、NIC11(物理NIC)(インターフェイス部)と、timer12と、を有する。
timer12は、所定のタイマ間隔でハードウェア割込によるタイマ割込を発生する。timer12は、指定した間隔で処理を実行することが可能なタイマ割込を発生する。例えば、kernelにはhrtimersという仕組みがあり、このhrtimersを用いてもよい。
OS70は、kernel171、Ring Buffer72、およびDriver73を有し、kernel171は、サーバ内遅延制御装置100、poll_list186、およびプロトコル処理部74を有する。
kernel171は、Socket75を介して、パケット処理APL1へパケットを送信する。Kernel71は、Socket75を介してパケット処理APL1からパケットを受信する。
サーバ内遅延制御装置100は、所定指定間隔のタイマ割込を受付けるとともに、タイマ割込(ハードウェア割込)契機で、ハードウェア割込のコンテキストでパケットの到着を確認し、パケット到着時の刈り取り処理を行う。
サーバ内遅延制御装置100は、パケット到着監視部110と、パケット刈取部120と、を備える。
パケット到着監視部110は、タイマ割込をハードウェア割込とし、当該タイマ割込を契機にpoll_list186(図2参照)のパケットの有無を確認してpoll_list186を監視(poll)する。
パケット到着監視部110は、poll_list186からRing_Buff72(図2参照)にパケットが存在するポインタ情報と、NET_DEVICE情報を取得し、パケット刈取部120へ当該情報(ポインタ情報およびnet_device情報)を伝達する。パケット到着監視部110は、poll_list186に複数パケット情報が存在する場合は、複数分伝達する。
パケット刈取部120は、予め保守運用者が設定した期間、受信した情報をもとにRing_Buff72からパケットを取り出し、netif_receive_skb87へパケットを伝達する。
<Device driver>
図2に示すように、Device driverには、ネットワークインターフェースカードであるNIC11、NIC11の処理要求の発生によって呼び出され要求された処理(ハードウェア割込)を実行するハンドラであるhardIRQ81、およびソフトウェア割込の処理機能部であるnetif_rx182が配置される。
また、Device driverには、timer12を構成するhw_clock12a、hw_clock12aの発生によって呼び出され要求された処理(ハードウェア割込)を実行するハンドラであるhardIRQ91が配置される。
Networking layerには、NIC11からのハードウェア割込がどのデバイスのものであるかを示すネットデバイス(net_device)の情報を登録するpoll_list186、サーバ内遅延制御装置100、キューを刈取ったパケットを、割込の発生しないソケット通信のためのsk_buff構造体(kernel171が、パケットの状態を示す構造体)を作成するnetif_receive_skb87、およびRing Buffer72が配置される。
Protocol layerには、パケット処理機能部であるip_rcv88、arp_rcv89等が配置される。なお、プロトコル処理は、ip_rcv88、arp_rcv89以外にもある。
[本発明によるパケット処理概要]
図2の矢印(符号)d~g,p~uは、Rx側パケット処理の流れを示している。
サーバ内遅延制御システム1000は、<NIC11契機>によるハードウェア割込と<タイマ割込契機>によるハードウェア割込とを有する。以下、順に説明する。
NIC11が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA(Direct Memory Access)転送によりCPUを介さずに、Ring Buffer72に到着したパケットをコピーする(図2の符号d参照)。このRing Buffer72は、サーバ中のメモリ空間で、Kernel171(図1参照)が管理している。
ここまでで、図2の<Device driver>における、<NIC11契機>によるハードウェア割込の処理は停止する。
パケット刈取部120は、受信した情報をもとにRing_Buff72からパケットを取り出し、netif_receive_skb87へパケットを伝達する(図2の符号u参照)。
クロックデバイスであるtimer12(通常はCPUに搭載)は、hw_clock12aを用いて指定時間を計時し、ハードウェア割込(hardIRQ)をhardIRQ91(ハンドラ)に立ち上げる(図2の符号s参照)。この指定時間は、予め運用者が指定した時間間隔であり、指定時間が経過するとタイマ割込(ハードウェア割込)が起動する(図2の符号t参照)。運用者は、指定時間としてパケット処理に適する間隔(例えば、1μsなど)を指定する。サーバ内遅延制御装置100は、timer12による指定した間隔のタイマ割込を受け付けることで、ハードウェア割込による実行権を得る。
上記指定間隔は、ハードウェア割込によるパケット処理が、システム動作に必要なCPUタイムであり、かつ、所定時間(運用者が設定;例えば、1μs)以上はCPUタイムを専有しないような時間間隔である。
なお、kernel(登録商標)には、タイマに関して、hrtimersという既存の仕組みがある。
また、NIC11へのパケット到着の度に、全てハードウェア割込を起動して、ハードウェア割込コンテキストで処理を実行すると、システムがCPUを使用できず、不安定動作となる。本実施形態では、NIC11へのパケット到着の度のハードウェア割込を起動は行わず、タイマ割込によりハードウェア割込を実行させることで、システムが不安定になることを回避する。
netif_receive_skb87は、受信したデータからsk_buff構造体を作成する。以降、kernel171(図1参照)によるプロトコル処理へ続く。具体的には、kernel171は、パケットの内容を解析し、タイプ毎に後段のプロトコル処理部74(図11参照)へ処理をまわす。すなわち、netif_receive_skb87は、パケットの中身を解析し、パケットの中身に応じて処理をする場合には、<Protocol layer>のip_rcv88に処理を回し、また、例えばL2であればarp_rcv89に処理をまわす。
次に、live patchによる登録動作について説明する。
サーバ内遅延制御システム1000(図1参照)は、図1に示すOS70のkernel171が、サーバ内遅延制御装置100を備える。kernel171は、livepatchを用いることで、既存のkernel71(図11参照)を改造(新しくビルド)することなく、実現が可能になる。以下、kernel171に適用されるlivepatchについて説明する。
(1)livepatchは、netif_rx182(図2参照)のsoftIRQスケジューリング機能を抑制する。
以降、図2に示すパケット処理の動作が実行される。
図3は、本実施形態のサーバ内遅延制御装置100(図2参照)のタイマ割込による救済処理を示すフローチャートである。図2を参照してRx側動作を例に採り説明する。
ステップS11でtimer12による指定時間が経過すると(図2の符号s参照)、ステップS12でkernel171(図1参照)が具備するタイマ割込機能によりハードウェア割込を起動する(図2の符号t参照)。
パケットの取り出しが完了した場合(S17:Yes)、ステップS18でパケット刈取部120は、poll_list186から該当キュー情報を削除する。
poll_list186が空になる、または、予め保守運用者が設定した期間が経過した場合(S19:Yes)、本フローの処理を終了する。
次に、本実施形態と既存技術(図12参照)との差異について説明する。
一般に、ハードウェア割込(hardIRQ)は、優先度が高く、該当CPUの処理を中断し、hardIRQの処理を最優先で処理する必要がある。このため、オーバーヘッドが大きい。そのため、hardIRQでは、パケット到着を知らせるのみとし、パケット処理は、softIRQで処理する設計思想となっている(「kernelの原則」という)。ここで、softIRQは、他のsoftIRQと競合し、待たされる事象が発生する(遅延発生の要因となる)。
従来技術が割込モデルにしている理由は、かつてはCPUリソースが限られていた(または、Raspberry PiのようなSingle board ComputerのようにCPUコアが少ないデバイスでも動作させる)ために、1つのCPUコアを他の処理と共有して使用する設計思想になっていたためである。この場合、通常の処理や割込処理等でCPUタイムを切り替えながら処理を行う。上記割込処理であっても、softIRQは競合することになり、待ち時間が発生する。
なお、softIRQのスケジューリングを行うスケジューラであるksoftirqdは、softIRQの種別に応じて優先度を付与する機能を具備しておらず、この競合による遅延発生は抑制できない。
図12に示すように、kernel71(図11)は、NIC11からのパケット到着の知らせを、hardIRQにより受け取り(図12の符号h参照)、パケット処理のためのsoftIRQをスケジューリングする(図12の破線囲み参照)。この際、他の割込処理と競合すると待合せが発生し、msオーダのNW遅延が発生する。
図2に示すように、サーバ内遅延制御システム1000は、<Networking layer>において、netif_rx1182は、poll_list186にnet_deviceを登録するが、既存技術(図12参照)のnetif_rx82とは異なり、ソフトウェア割込(softIRQ)のスケジューリングは行わない(「変更点1」)。
パケット刈取部120は、受信した情報をもとにRing_Buff72からパケットを取り出し、netif_receive_skb87へパケットを伝達する(図2の符号u参照)。
・低遅延なパケット処理
タイマ割込(ハードウェア割込)を契機に、パケット到着を確認することで、最低でもタイマ間隔でのパケット転送処理を可能とし、遅延時間の保証が可能である。すなわち、ハードウェア割込のコンテキストでパケット刈り取り処理を行うため、ソフトウェア割込競合の問題は発生しない。
本実施形態では、ハードウェア割込(hardIRQ)によるパケット到着の通知については、NAPIを踏襲する。softIRQは、CPUリソースを有効活用する点では便利であるが、パケットの即時転送の観点では適さない。そのため、本実施形態では、softIRQの機能を停止し、kernelの中でpollingモデルを実現する点が新しい。具体的には、図2に示すnetif_rx182が、図12に示すnetif_rx82のように、softIRQ83(ハンドラ)を立ち上げる通知(図12の符号h参照)を行わないことに示されている。
本実施形態は、kernelを起動させたまま処理を変更可能なlivepatchにより、本発明を有効化可能である。このため、kernelのセキュリティアップデートの度にソフトウェアを再開発する必要がない(関連するkernel機能に変更があった場合のみでよい)。
本実施形態は、既存技術のNAPIと異なり、タイマ割込契機のハードウェア割込コンテキストでパケット処理を行うためソフトウェア割込み競合は発生しない。
本実施形態は、既存技術のDPDKと異なり、kernel内でパケット処理は完結するため、APLに改変が不要である。
サーバ内遅延制御装置100は、遅延発生要因となるsoftIRQを停止し、タイマ契機で、高い優先度であるhardIRQのコンテキストでパケット処理を行う。これにより、softIRQ競合を回避する。
本発明の第2実施形態に係るサーバ内遅延制御システム1000Aの概略構成は、図1に示すサーバ内遅延制御システム1000と同様である。
図4は、本発明の第2実施形態に係るサーバ内遅延制御システム1000Aのパケット処理の詳細を説明する図である。図2および図12と同一構成部分には、同一符号を付して重複箇所の説明を省略する。
サーバ内遅延制御システム1000Aは、既存のNAPIのソフトウェア割込競合時の遅延(パケット刈り取り遅れ)を救済するために、既存NAPIによるパケット受信処理(図12に対応する符号部分参照)はそのまま活かし、NAPIに重畳する形で、タイマ割込によるパケット受信処理(図2に対応する符号部分参照)を行う。
これにより、NAPIによるパケット刈り取り遅れを、タイマ割込によるパケット受信処理により救済が可能となる。その結果、パケット受信処理の低遅延化の実現が可能になる。
サーバ内遅延制御システム1000Aは、既存のNAPIが図4に示すNAPIによる処理を有する。なお、図5に示す「NAPIによる処理」と、図3に示す「タイマ割込による救済処理」とは、独立して動作する。このため、両者間のタイミング制御を行う管理機能部は不要である。また、両者が独立して動作することは、実装により確認している。
ステップS21でNIC11は、パケットを受信し、DMA処理後か否かを判別する。
パケットを受信し、DMA処理後の場合は(S21:Yes)、ステップS22でNIC11は、ハードウェア割込を起動し、poll_list186にRing Buffer72に格納したパケットのポインタ情報とNET_DEVICE(ドライバ)情報とを登録する。
ステップS23でNIC11は、後段のパケットプロトコル処理のために、ソフトウェア割込をスケジューリングする。
ステップS25で、ソフトウェア割込ハンドラは、取得した情報をもとにRing_Buffer72からパケットを取り出し、netif_receive_skb87へパケットを伝達する。
パケットの取り出しが完了した場合(S26:Yes)、ステップS27で、poll_list186から当該キュー情報は削除する。
ステップS28で、poll_list186が空になったか否かを判別する。poll_list186が空になっていない場合(S28:No)、ステップS26に戻る。
poll_list186が空になった場合(S28:Yes)、本フローの処理を終了する。本フローの処理は、poll_list186が空になるまで繰り返し実行される。
本実施形態では、poll_list186からのパケット到着確認が遅れる場合の救済として、タイマ割込契機で、図3に示す「タイマ割込による救済処理」によって定期的に取りこぼしを確認して、取りこぼしを救済する。
具体的には、パケット到着監視部110が、poll_list186を確認し、poll_list186にパケットの有無を確認することで、NAPIによる刈り取り漏れを検知する。この際、NAPIが特に遅れていなくても、タイミングによっては、図3に示す「タイマ割込による救済処理」によりpoll_list186からパケットが刈り取られることもある。
本実施形態に係るサーバ内遅延制御装置100は、例えば図6に示すような構成のコンピュータ900によって実現される。
図6は、サーバ内遅延制御装置100の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU901、RAM902、ROM903、HDD904、通信インターフェイス(I/F:Interface)906、入出力インターフェイス(I/F)905、およびメディアインターフェイス(I/F)907を有する。
サーバ内遅延制御装置100は、Kernel内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置であればよく、OSは限定されない。また、サーバ仮想化環境下であることも限定されない。したがって、サーバ内遅延制御システム1000は、図7および図8に示す各構成に適用が可能である。
図7は、汎用Linux kernel(登録商標)およびVM構成のサーバ仮想化環境における、割込モデルに、サーバ内遅延制御システム1000Bを適用した例を示す図である。図1および図9と同一構成部分には、同一符号を付している。
図7に示すように、サーバ内遅延制御システム1000Bは、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を介して、VM40仮想マシン30へパケットを伝達する。
Kernel171は、プロトコル処理部74を介して、パケット処理APL1へパケットを伝達する。
図8は、コンテナ構成のサーバ仮想化環境における、割込モデルに、サーバ内遅延制御システム1000Cを適用した例を示す図である。図1と同一構成部分には、同一符号を付している。
図8に示すように、サーバ内遅延制御システム1000Cは、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は、タイマ割込をハードウェア割込とし、当該タイマ割込を契機にポールリストのパケットの有無を確認して当該ポールリストを監視(poll)するパケット到着監視部110と、パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリをリングバッファから削除する刈取りを実行するパケット刈取部120と、を備える。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
10,10A HW
11 NIC(物理NIC)(インターフェイス部)
12 timer(タイマ)
60 user space(ユーザスペース)
70 OS
72 Ring Buffer(リングバッファ)
74 プロトコル処理部
81 hardIRQ(割込ハンドラ)
90 Host OS(OS)
91,171,181 Kernel(カーネル)
100 サーバ内遅延制御装置
110 パケット到着監視部
120 パケット刈取部
180 Guest OS(OS)
186 poll_list(ポールリスト)
210 Container
1000,1000A,1000B,1000C サーバ内遅延制御システム
Claims (8)
- サーバ内遅延制御装置であって、
OSが、
カーネルと、
前記OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、を有し、
前記カーネル内に、所定指定間隔のタイマ割込を受付けるとともに、
ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記タイマ割込をハードウェア割込とし、当該タイマ割込を契機に前記ポールリストのパケットの有無を確認して当該ポールリストを監視するパケット到着監視部と、
パケットが到着している場合は、前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - サーバ内遅延制御装置であって、
仮想マシン内で動作するGuest OSが、
カーネルと、
前記Guest OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、
刈取りが実行されたパケットのプロトコル処理を行うプロトコル処理部と、を有し、
前記カーネル内に、所定指定間隔のタイマ割込を受付けるとともに、
ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記タイマ割込をハードウェア割込とし、当該タイマ割込を契機に前記ポールリストのパケットの有無を確認して当該ポールリストを監視するパケット到着監視部と、
パケットが到着している場合は、前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - サーバ内遅延制御装置であって、
仮想マシンおよび前記仮想マシン外に形成された外部プロセスが動作可能なHost OSが、
カーネルと、
前記Host OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、
前記カーネルにより作成される仮想インターフェイスであるtapデバイスと、を備え、
前記カーネル内に、所定指定間隔のタイマ割込を受付けるとともに、
ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記タイマ割込をハードウェア割込とし、当該タイマ割込を契機に前記ポールリストのパケットの有無を確認して当該ポールリストを監視するパケット到着監視部と、
パケットが到着している場合は、前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - 前記インターフェイス部は、ハードウェア割込を割込ハンドラに立ち上げて前記ポールリストにデバイスを登録する場合、ソフトウェア割込によるスケジューリングを停止する
ことを特徴とする請求項1乃至3のいずれか一項に記載のサーバ内遅延制御装置。 - 前記所定指定間隔は、ハードウェア割込によるパケット処理が、システム動作に必要なCPUタイムであり、かつ、所定時間以上は前記CPUタイムを専有しないような時間間隔である
ことを特徴とする請求項1乃至3のいずれか一項に記載のサーバ内遅延制御装置。 - 前記カーネルは、当該カーネルを起動させたまま、処理動作を変更可能なパッチを有する
ことを特徴とする請求項1乃至3のいずれか一項に記載のサーバ内遅延制御装置。 - サーバ内遅延制御装置のサーバ内遅延制御方法であって、
OSが、
カーネルと、
前記OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、を有し、
前記カーネル内に、所定指定間隔のタイマ割込を受付けるとともに、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記タイマ割込をハードウェア割込とし、当該タイマ割込を契機に前は記ポールリストのパケットの有無を確認して当該ポールリストを監視するステップと、
パケットが到着している場合は、前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するステップと、を実行する
ことを特徴とするサーバ内遅延制御方法。 - OSが、
カーネルと、
前記OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、を有し、
前記カーネル内に、所定指定間隔のタイマ割込を受付けるとともに、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置を備えており、前記サーバ内遅延制御装置としてのコンピュータに、
前記タイマ割込をハードウェア割込とし、当該タイマ割込を契機に前記ポールリストのパケットの有無を確認して当該ポールリストを監視するパケット到着監視手順、
パケットが到着している場合は、前記リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取手順、
を実行させるためのプログラム。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2021/005002 WO2022172366A1 (ja) | 2021-02-10 | 2021-02-10 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPWO2022172366A1 JPWO2022172366A1 (ja) | 2022-08-18 |
| JP7485101B2 true JP7485101B2 (ja) | 2024-05-16 |
Family
ID=82838467
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2022581084A Active JP7485101B2 (ja) | 2021-02-10 | 2021-02-10 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12476921B2 (ja) |
| JP (1) | JP7485101B2 (ja) |
| WO (1) | WO2022172366A1 (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20240160468A1 (en) * | 2021-03-18 | 2024-05-16 | Nippon Telegraph And Telephone Corporation | Server delay control device, server delay control method, and program |
| CN116932234A (zh) * | 2022-03-29 | 2023-10-24 | 华为技术有限公司 | 应用程序间通信方法、装置、存储介质及程序产品 |
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 (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7467202B2 (en) * | 2003-09-10 | 2008-12-16 | Fidelis Security Systems | High-performance network content analysis platform |
| US9558132B2 (en) * | 2013-08-14 | 2017-01-31 | Intel Corporation | Socket management with reduced latency packet processing |
| JP6543231B2 (ja) | 2016-08-23 | 2019-07-10 | 日本電信電話株式会社 | 仮想マシンの接続制御システムおよび仮想マシンの接続制御方法 |
| US11520724B2 (en) * | 2018-09-07 | 2022-12-06 | The Board Of Trustees Of The University Of Illinois | Application-transparent near-memory processing architecture with memory channel network |
| US11249660B2 (en) * | 2020-07-17 | 2022-02-15 | Vmware, Inc. | Low-latency shared memory channel across address spaces without system call overhead in a computing system |
-
2021
- 2021-02-10 JP JP2022581084A patent/JP7485101B2/ja active Active
- 2021-02-10 WO PCT/JP2021/005002 patent/WO2022172366A1/ja not_active Ceased
- 2021-02-10 US US18/264,991 patent/US12476921B2/en active Active
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 |
|---|---|
| JPWO2022172366A1 (ja) | 2022-08-18 |
| US20240129255A1 (en) | 2024-04-18 |
| US12476921B2 (en) | 2025-11-18 |
| WO2022172366A1 (ja) | 2022-08-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7310924B2 (ja) | サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム | |
| JP7251648B2 (ja) | サーバ内遅延制御システム、サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| WO2002031672A2 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
| JP7451438B2 (ja) | 通信装置、通信システム、通知方法及びプログラム | |
| JP2024180507A (ja) | サーバおよびプログラム | |
| JP2025100826A (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
| JP7485101B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| Chang et al. | Virtualization technology for TCP/IP offload engine | |
| JP7662062B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7754299B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7816498B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7852718B2 (ja) | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム | |
| JP7574902B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP2026074185A (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230612 |
|
| 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: 20240402 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240415 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7485101 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |