JP7574902B2 - サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム - Google Patents
サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム Download PDFInfo
- Publication number
- JP7574902B2 JP7574902B2 JP2023186709A JP2023186709A JP7574902B2 JP 7574902 B2 JP7574902 B2 JP 7574902B2 JP 2023186709 A JP2023186709 A JP 2023186709A JP 2023186709 A JP2023186709 A JP 2023186709A JP 7574902 B2 JP7574902 B2 JP 7574902B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- packet
- processing
- sleep
- unit
- 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- 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)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
図19は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理の概略図である(非特許文献1参照)。
図19に示すように、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)により、パケット処理を行う。図19に示すように、割込モデルによるパケット転送は、割込処理(図19の符号a参照)によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
[New API(NAPI)によるRx側パケット処理構成]
図20は、図19の破線で囲んだ箇所におけるNew API(NAPI)によるRx側パケット処理の概要を説明する図である。
<Device driver>
図20に示すように、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等が配置される。
図20の矢印(符号)b~mは、Rx側パケット処理の流れを示している。
NIC11のhardware機能部11a(以下、NIC11という)が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA(Direct Memory Access)転送によりCPUを使用せずに、Ring Buffer72へ到着したパケットをコピーする(図20の符号b参照)。このRing Buffer72は、サーバの中にあるメモリ空間で、Kernel71(図19参照)が管理している。
ここまでで、図20の<Device driver>におけるハードウェア割込の処理は停止する。
その後、net_rx_action85は、netif_receive_skb87に通達をする(図20の符号k参照)。
図22に示すように、KBPでは、kernel threadはbusy pollを行うために、CPUコアを専有する。図21に示す間欠的なパケット受信であっても、KBPでは、パケット到着有無に関わらず常にCPUを使用するため、消費電力が大きくなる課題がある。
[DPDKシステム構成]
図23は、アクセラレータ120を備えるHW110の制御を行うDPDKシステムの構成を示す図である。
DPDKシステムは、HW110、OS140、user space(ユーザ空間)160上に配置されたデータ高速転送ミドルウェアであるDPDK150、データ処理APL1を有する。
データ処理APL1は、APLの実行に先立って行われるパケット処理である。
HW110は、データ処理APL1との間でデータ送受信の通信を行う。以下の説明において、図23に示すように、データ処理APL1が、HW110からのパケットを受け取るデータの流れをRx側受信と称し、データ処理APL1が、HW110にパケットを送信するデータの流れをTx側送信と称する。
アクセラレータ120は、CPUからの入力をもとに、特定の演算を高速に行う計算ユニットハードウェアである。アクセラレータ120は、具体的には、GPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)等のPLD(Programmable Logic Device)である。図23では、アクセラレータ120は、複数のCore(Coreプロセッサ)121、データを先入れ先出しのリスト構造で保持するRxキュー(queue:待ち行列)122およびTxキュー123を備える。
NFV(Network Functions Virtualization)やSDN(Software Defined Network)を構成するデータセンタなど、大規模なサーバクラスタにおいて、上記のようなアクセラレータ120を適用するケースが想定される。
なお、NIC130は、例えばアクセラレータ付きのNICであるSmartNICであってもよい。SmartNICは、処理能力が落ちる原因となるIPパケット処理など、負荷のかかる処理をオフロードしてCPUの負荷を軽減することができるNICである。
割込モデルは、HWからイベント(ハードウェア割込)を受けたkernelがパケット加工を行うためのソフトウェア割込処理によってパケット転送を行う。このため、割込モデルは、割込(ソフトウェア割込)処理によりパケット転送を行うので、他の割込との競合や、割込先CPUがより優先度の高いプロセスに使用されていると待ち合わせが発生し、パケット転送の遅延が大きくなるといった課題がある。この場合、割込処理が混雑すると、更に待ち合わせ遅延は大きくなる。
例えば、割込モデルによるパケット転送は、割込処理によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
一般的なkernelは、パケット転送処理はハードウェア割込処理の後、ソフトウェア割込処理にて伝達される。
パケット転送処理のソフトウェア割込が発生した際に、下記条件(1)~(3)においては、前記ソフトウェア割込処理を即時に実行することができない。このため、ksoftirqd(CPU毎のカーネルスレッドであり、ソフトウェア割込の負荷が高くなったときに実行される)等のスケジューラにより調停され、割込処理がスケジューリングされることにより、msオーダの待ち合わせが発生する。
(1)他のハードウェア割込処理と競合した場合
(2)他のソフトウェア割込処理と競合した場合
(3)優先度の高い他プロセスやkernel thread(migration thread等)、割込先CPUが使用されている場合
上記条件では、前記ソフトウェア割込処理を即時に実行することができない。
(第1実施形態)
図1は、本発明の第1実施形態に係るサーバ内遅延制御システムの概略構成図である。図23と同一構成部分には、同一符号を付している。
図1に示すように、サーバ内遅延制御システム1000は、OS(例えば、Host OS)140を備えるサーバ上で、ユーザが使用可能なUser space160(ユーザ空間)に配置されたデータ処理APL(Application)1(アプリケーションプログラム。以下、適宜、アプリケーションという)を実行し、OSに接続されたHW110のNIC130(デバイス)とデータ処理APL1との間でパケット転送を行う。
サーバ内遅延制御システム1000は、HW110、OS140、user space160上に配置されたサーバ内遅延制御装置200、データ処理APL1を有する。
データ処理APL1は、APLの実行に先立って行われるパケット処理である。
HW110は、データ処理APL1との間でデータ送受信の通信を行う。
HW110は、通信ネットワークに接続するためのNIC130(デバイス)を備える。HW110は、図23に示すアクセラレータ120を備えていてもよい。
サーバ内遅延制御装置200は、User space(ユーザ空間)に配置されるPolling Threadである。Polling Thread(サーバ内遅延制御装置200)がOSカーネル内ではなく、ユーザ空間に備わることを特徴とする。Polling Thread(サーバ内遅延制御装置200)は、ユーザ空間でデータ受信処理が定義されるため、アプリケーション特性(アプリケーションプログラムの特性)に合わせて受信処理の方式を変更することができる。
データ到着監視部210は、デバイスの受信キューをpollingによって監視し、パケットが到着した場合にはデータを取得してデータ到着通知部220に受け渡す。
具体的には、データ到着監視部210は、デバイスの受信キューをポーリングにより監視し、パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリをリングバッファから削除する刈取りを行う。すなわち、データ到着監視部210は、デバイスの受信キューをpollingによって監視し、即時刈取を行う。
データ到着監視部210は、アプリケーションの特性に基づく所定のタイミングで、デバイスの受信キューにデータが到着しているかを確認する。
データ到着通知部220は、データ到着監視部210が取得したデータをアプリケーションに通知して受け渡す。
Sleep管理部230は、アプリケーションの特性に基づいて、ハードウェア割込を許可してスリープするタイミングを制御する。
Sleep管理部230は、Polling ThreadをSleepさせてHW割り込みを許可したり、HW割り込みを禁止してPolling Threadを起床させたりする。この際、アプリケーションの特性に合わせて、Sleepするタイミングを制御できる。
[サーバ内遅延制御システム1000の全体動作]
図2は、図1のサーバ内遅延制御システム1000の動作を説明するための図である。
図2の矢印(符号)aa~ggは、Rx側パケット処理の流れを示している。
NIC130が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、OS140をバイパスしてパケットをPolling Thread(サーバ内遅延制御装置200)のデータ到着監視部210に送信する。
データ到着監視部210は、デバイスの受信キューをpollingによって監視し(図2の<Polling>;符号aa参照)、パケットが到着した場合には刈り取ってデータ到着通知部220に受け渡す(図2の符号bb参照)。アプリケーションの遅延要件が厳しくない場合や、パケットの到着間隔が短くない場合に、Pollingに一時停止を挟むことで、CPUサイクル数を削減しながら受信監視を行うことができる(省電力化)。
データ到着通知部220は、データ到着監視部210が刈り取ったデータをデータ処理APL(Application)1に通知して受け渡す(図2の<notify>;符号cc参照)。
更に、アプリケーションが単純である場合、通知するのではなく、パケット処理をする機能を具備することで、到着通知のオーバーヘッドを削減してパケットを処理することもできる。
NIC130は、パケットが到着すると、HW割込(hardIRQ)をhardIRQ81(ハンドラ)に立ち上げる(図2の<Interrupt>;符号dd参照)。hardwire81(ハンドラ)が立ち上がると、Sleep管理部230は、Sleep時には、パケット到着時に発生するHW割り込みによって起こされ(図2の<Wakeup>;符号ee参照)、HW割り込みを禁止したままPollingを開始する。言い換えれば、Sleep管理部230は、パケット未着時にPolling ThreadをSleepさせ、再びパケットが届いた際にはHardIRQ81から起こされ、Pollingを開始させる。
また、sleep中のPolling Threadは、パケット到着時のHardIRQハンドラ81で起こすことで、softIRQ競合を回避しながら即時起動が可能である。
後記図3および図5のフローチャートで用いるパラメータU,T,Kの決定方法について説明する。
Polling Thread(サーバ内遅延制御装置200)は、データ到着監視間隔U(データ到着監視部210のパラメータ)、パケット未着になってからSleepに入るまでの時間T(Sleep管理部230のパラメータ)、パケットを通知または処理するバッチ数K(データ到着通知部220のパラメータ)を用いる。第1実施形態では、パラメータU,T,Kは運用者が事前に設定した固定値である。後記第2実施形態では、パラメータU,T,Kはロジック管理部310を介して動的に設定される(説明の便宜上、ここでまとめて述べる)。
運用者が事前に設定した固定値と、ロジック管理部310(後記)を介した動的な設定とがある。
ロジック管理部310(後記)を介した動的な設定の場合、次の2例がある。
例1:データ到着監視部210でパケット到着頻度を取得し、それに近い頻度で到着監視ができるようにUを設定する。
例2:アプリケーションやサーバ外部のコントローラから、許容される最大遅延を取得し、それを保てる頻度で到着監視ができるようにUを設定する。
運用者が事前に設定した固定値と、ロジック管理部310(後記)を介した動的な設定とがある。
ロジック管理部310を介した動的な設定の場合、次の2例がある。
例1:Sleep管理部230で、Sleepに入ってから起床するまでの時間を取得し、その間隔が遅延時間や省電力性に悪影響を与えるほど短い場合、Tを大きくする。
例2:データ到着監視部210やアプリケーションやサーバ外部のコントローラからパケット到着頻度を取得し、それが大きい場合、可能な限りSleepができるようにTを小さくする。
バッチ数Kについて述べる。すなわち、データ到着監視部210は、Ring_Buffer領域に複数のパケットが貯まっているときは、複数パケットをまとめて刈り取って、後続のプロトコル処理部(図示省略)へ渡す。このまとめて刈り取る数をquotaと言い、バッチ処理という呼び方をし、その処理数をバッチ数(バッチ処理数)という。
運用者が事前に設定した固定値と、ロジック管理部310(後記)を介した動的な設定とがある。
ロジック管理部310(後記)を介した動的な設定の場合、次の例がある。
例1:アプリケーションから、アプリケーション内のバッチ処理情報を取得し、それに合わせてKを設定する。
<フローチャート>
図3は、Polling Thread動作中の転送処理(データ到着通知部220がパケットを処理しない場合)のフローチャートである。
ステップS12でデータ到着監視部210は、受信キューにデータが到着しているか否かを判別する。受信キューにデータが到着していない場合(S12:No)、ステップS17に進む。
図4は、Polling Thread動作中の転送処理(データ到着通知部220がパケットを処理しない場合)の動作を説明する図である。
NIC130は、パケットを受信した際、DMA(Direct Memory Access)によりCPUを介さずに、直接Ring Buffer(メインメモリ上のバッファ)にパケットをコピーする(図4の<Polling>;符号aa参照)。なお、このRing Bufferは、User Space160のPolling Threadから、OSカーネルを介さずに直接アクセスが可能であるよう、あらかじめ設定する。
アプリケーションロジックが、同一スレッドで実行されるように運用者が設定していた場合、Polling Thread内で処理を行う。
図5は、Polling Thread動作中の転送処理(データ到着通知部220がパケットを処理する場合)のフローチャートである。図3のフローの同一処理を行うステップには同一番号を付して説明を省略する。
ステップS15でデータ到着通知部220は、N≧Kとなっているか否かを判別し、N≧Kとなっている場合(S15:Yes)、ステップS21に進む。
ステップS21でデータ到着通知部220は、パケットを処理(例えば、別サーバに向けての転送処理)してステップS11に戻る。また、データ到着通知部220は、これまで到達したパケット数Nを0にする。データ到着通知部220がパケットを処理するので、図3のステップS16のデータ到着通知部220のように、アプリケーションにデータ到着を通知してデータを受け渡す処理がない。
図6は、Polling Thread動作中の転送処理(データ到着通知部220がパケットを処理する場合)の動作を説明する図である。図4の動作説明図と同一構成部分には同一番号を付して説明を省略する。
図7は、Polling ThreadがSleep状態から起床するまでの処理フローチャートである。図8は、その動作説明図である。図2の動作説明図と同一構成部分には同一番号を付している。
ステップS31でNIC130にデータが到着し、NIC130からCPUに割り込みが上がる。
ステップS32で該当CPUにおいてHW割り込みのコンテキストが立ち上がる。
ステップS33でHW割り込みのコンテキストで、Polling ThreadのSleep管理部230が起床される。
図9は、本発明の第2実施形態に係るサーバ内遅延制御システムの概略構成図である。図1と同一構成部分には、同一符号を付して重複箇所の説明を省略する。
図9に示すように、サーバ内遅延制御システム1000Aは、HW110、OS140、user space160上に配置されたサーバ内遅延制御装置300、データ処理APL1を有する。
ロジック管理部310は、アプリケーションの特性情報およびスレッドの処理情報を収集し、収集した情報をもとに、時間帯によって負荷が変動し、処理方法および処理速度が変動するようなアプリケーションの場合に、データ到着監視部210、データ到着通知部220、Sleep管理部230のうち、少なくともいずれか一つの機能部の処理ロジックを変更する。
ロジック管理部310は、図1のサーバ内遅延制御装置200の各機能部について複数の処理ロジックが考えられる場合、動的に処理ロジックを選択して各機能部に通知する。
ロジック管理部310は、時間帯によって負荷が変動し、処理方法や処理速度が変動するようなアプリケーションの場合に、Polling Thread内の各機能部の処理ロジックを変更して受信処理方法を変えることで、低遅延性および省電力性を保つ。
特性情報収集部311は、アプリケーションやPolling Threadから、アプリケーションやトラフィックの特性を収集する。特性情報収集部311は、時間的に変動する特性に適したロジックを適宜決定するために必要な情報を収集する。
以下、特性情報収集部311およびロジック配信部312について動作説明図を参照して詳細に説明する。
まず、特性情報収集部311について説明する。
図10は、特性情報収集部311の動作説明図である。
特性情報収集部311は、アプリケーションやPolling Threadから特性情報を収集する。
特性情報収集部311は、アプリケーションの特性情報やPolling Threadの処理情報を収集してロジック配信部312に受け渡す。アプリケーションの特性情報やPolling Threadの処理情報は、各機能部のロジックを決定するための情報である。収集した情報は、各機能部に適したロジックを決定するために利用される。
アプリケーションの特性情報例として、「アプリケーション内パケット処理方法の変化」があげられる。
例えば、Application Logicの負荷が大きくなり、パケット処理方法が逐次処理からバッチ処理に変更された場合に、特性情報収集部311は、その情報を収集する(図10の符号hh参照)。この情報は、例えばデータ到着通知部220の処理ロジックを「データ到着時に逐次アプリケーションに通知」から「データがK個到着してからアプリケーションに通知」に変更するために使われる。
Polling Threadの処理情報例として、「Sleepに入ってから、起床されるまでの時間の統計情報」があげられる。
例えば、Sleepに入ってから即起床されるケースが増えた場合、その情報を収集する(図10の符号ii参照)。この情報は、例えばSleep管理部230がSleepを開始するロジックを「パケット未着時に即Sleep」から「パケット未着になってから一定時間後にSleep」に変更するために使われる。
例えば、サーバ内遅延制御装置300がvRAN(virtualized Radio Access Network)におけるvDU(virtualized Distributed Unit)サーバやvCU(virtualized Centralized Unit)サーバに搭載された場合、上位のコントローラであるRIC(RAN Intelligent Controller)からサービス提供状況の情報を受け取って、ロジックの選択に役立てることができる。
次に、ロジック配信部312について説明する。
図11は、ロジック配信部312の動作説明図である。
ロジック配信部312は、特性情報収集部311が収集した情報をもとに、各機能部に適したロジックを決定して配信し、各機能部のロジックを変更させる。
アプリケーションの遅延要件が弱くなった場合や、データの到着頻度が低くなった場合に、省電力性のためにデータ到着監視頻度を落としてもよい場合がある。この時、「busy loopによるデータ到着監視」から、例えば「1μsに1回データ到着監視」に変更させる(図11の符号jj参照)。
アプリケーションの処理が逐次処理からバッチ処理に変更された場合、低遅延性および省電力性のために、データ到着通知もバッチして行った方がよい場合がある。この時、「データ到着をアプリケーションに逐次通知」というロジックから「K個のデータが到着してからアプリケーションにデータ到着を通知」というロジックに変更させる(図11の符号kk参照)。
Sleepしてから即割り込みによって起床することが多くなってきた場合、割り込み過多による遅延増大・消費電力上昇を防ぐために「データ未着時に即sleep」というロジックから「データ未着になってTμs後にSleep」というロジックに変更させる(図11の符号ll参照)。
[サーバ内遅延制御システム1000Aの全体動作]
ロジック管理部310は、Polling Threadとは別のCPU上で動作する。
Polling Thread内の各機能部とロジック管理部310の間には、それぞれ共有メモリが存在する。
NIC130は、パケットを受信した際、DMA(Direct Memory Access)によりCPUを介さずに、直接Ring Buffer(メインメモリ上のバッファ)にパケットをコピーする。なお、このRing Bufferは、User SpaceのPolling Threadから、OSカーネルを介さずに直接アクセスが可能であるよう、あらかじめ設定する。
以降、当該CPUではPolling Threadが動作する。
アプリケーションロジック(データ処理APL1)が、同一スレッドで実行されるように運用者が設定していた場合、Polling Thread内で処理を行う。
以下はPolling Threadとは別CPU上で動作し、時間的に独立して動作する。
以下の<動作2>と、上記<動作1>は並列して発生しうる。
特性情報収集部311は、Polling Thread内機能部との各共有メモリを巡回して監視し、共有メモリに書き込みが行われていた場合には、以下の処理を実行する。
以上でサーバ内遅延制御システム1000Aの全体動作の説明を終了する。
次に、図12乃至図17に示すフローチャートおよび動作説明図を参照してロジック管理部310の処理例について説明する。
まず、ロジック管理部310の処理例として、データ到着監視部210へのロジック変更例について説明する。
図12は、データ到着監視部210へのロジック変更の処理フローチャートである。図13は、その動作説明図である。図11と同一構成部分には同一番号を付している。
図12のフローにおいて、ステップS41でデータ到着監視部210は、パケット到着頻度を取得し、定期的に特性情報収集部311に通知する(図13の符号mm参照)。例えば、データ到着監視部210は、PollingをSleepさせるタイミングで特性情報収集部311にパケット到着頻度を伝達する。
次に、ロジック管理部310の処理例として、データ到着通知部220へのロジック変更例について説明する。
図14は、データ到着通知部220へのロジック変更の処理フローチャートである。図15は、その動作説明図である。図11と同一構成部分には同一番号を付している。
図14のフローにおいて、ステップS51でデータ処理APL1(アプリケーション)は、バッチ処理数を変更した場合、そのバッチ処理数をロジック管理部310に通知する(図15の符号oo参照)。
次に、ロジック管理部310の処理例として、Sleep管理部230へのロジック変更例について説明する。
図16は、Sleep管理部230へのロジック変更の処理フローチャートである。図17は、その動作説明図である。図11と同一構成部分には同一番号を付している。
図16のフローにおいて、ステップS61でSleep管理部230は、Sleepに入ってからHardIRQによって起床されるまでの時間を記録し、その情報を特性情報収集部311に伝達する(図17の符号qq参照)。例えば、Sleep管理部230は、起床したタイミングで共有メモリを介して伝達する。
Sleepに入ってから起床されるまでの平均時間5μsの場合(S63:Yes)、ステップS64で特性情報収集部311は、パケット未着になってからSleepに入るまでの時間を長くすること(例えば5μs長くすること)を決定し、ロジック配信部312にロジックの変更を伝達する(図17の符号rr参照)。
第1および第2実施形態に係るサーバ内遅延制御装置200,300は、例えば図18に示すような構成のコンピュータ900によって実現される。
図18は、サーバ内遅延制御装置200,300の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU901、ROM902、RAM903、HDD904、通信インターフェイス(I/F:Interface)906、入出力インターフェイス(I/F)905、およびメディアインターフェイス(I/F)907を有する。
<VM構成への適用例>
本発明は、VM(Virtual Machine)構成におけるhost、および、guestに配置されたPolling Threadのそれぞれに適用することができる。
このようにすることにより、VMの仮想サーバ構成のシステムにおいて、HostOSとGuestOSとのいずれのOSにおいても、APLを改変することなく、サーバ内の遅延を小さくしてパケット転送を行うことができる。
本発明は、コンテナ構成において配置されたPolling Threadにも適用することができる。
コンテナなどの仮想サーバ構成のシステムにおいて、アプリケーションを改変することなく、サーバ内の遅延を小さくしてパケット転送を行うことができる。
本発明は、ベアメタル構成のように非仮想化構成のシステムに適用できる。非仮想化構成のシステムにおいて、アプリケーションを改変することなく、サーバ内の遅延を小さくしてパケット転送を行うことができる。
トラヒック量が多く、複数のNICデバイスやNICポートを使用する場合に、これらと関連付けて複数のPolling Threadを動作させることで、HW割込頻度制御を行いつつ、Polling Threadをスケールイン/アウトすることができる。
以上説明したように、第1実施形態に係るサーバ内遅延制御装置は、ユーザ空間(User space)に配置され、ポーリングモデルを用いてパケット到着を監視するスレッド(thread)を立ち上げるサーバ内遅延制御装置200(図1参照)であって、デバイス(NIC130)の受信キューをポーリングにより監視し、パケットが到着している場合は、データを取得するデータ到着監視部210と、データ到着監視部210が取得したデータをアプリケーションプログラム(データ処理APL1)に通知して受け渡すデータ到着通知部220と、パケットが所定期間到着しない場合はスレッド(Polling Thread)をスリープ(Sleep)させ、かつ、パケット到着時はハードウェア割込(hardIRQ)により当該スレッド(Polling Thread)のスリープ解除を行うSleep管理部230と、を備え、Sleep管理部230は、アプリケーションプログラムの特性に基づいて、ハードウェア割込(hardIRQ)を許可してスリープ(Sleep)するタイミングを制御することを特徴とする。
これにより、下記(1)~(4)の効果を奏する。
本発明を、DPDKのように、ユーザ空間(User space)にPolling Threadがある場合に適用することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
10 HW
70 Guest OS
72 Ring Buffer(リングバッファ)
74 プロトコル処理部
110 HW
130 NIC(物理NIC)(デバイス)
140 OS
160 user space(ユーザ空間)
200,300 サーバ内遅延制御装置(Polling Thread)
210 データ到着監視部(各機能部)
220 データ到着通知部(各機能部)
230 Sleep管理部(各機能部)
310 ロジック管理部
311 特性情報収集部
312 ロジック配信部
1000 サーバ内遅延制御システム
Claims (3)
- ユーザ空間に配置され、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置であって、
デバイスの受信キューをポーリングにより監視し、パケットが到着している場合は、データを取得するデータ到着監視部と、
前記データ到着監視部が取得したデータをアプリケーションプログラムに通知して受け渡すデータ到着通知部と、
パケットが所定期間到着しない場合は前記スレッドをスリープさせ、かつ、パケット到着時はハードウェア割込により当該スレッドのスリープ解除を行うスリープ管理部と、を備え、
前記スリープ管理部は、アプリケーションプログラムの特性に基づいて、前記ハードウェア割込を許可して前記スリープするタイミングを制御する
ことを特徴とするサーバ内遅延制御装置。 - ユーザ空間に配置され、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置のサーバ内遅延制御方法であって、
前記サーバ内遅延制御装置は、
デバイスの受信キューをポーリングにより監視し、パケットが到着している場合は、データを取得するステップと、
取得したデータをアプリケーションプログラムに通知して受け渡すステップと、
パケットが所定期間到着しない場合は前記スレッドをスリープさせ、かつ、パケット到着時はハードウェア割込により当該スレッドのスリープ解除を行うとともに、
前記アプリケーションプログラムの特性に基づいて、前記ハードウェア割込を許可して前記スリープするタイミングを制御するステップと、を実行する
ことを特徴とするサーバ内遅延制御方法。 - コンピュータを、請求項1に記載のサーバ内遅延制御装置として機能させるためのプログラム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2023186709A JP7574902B2 (ja) | 2022-01-27 | 2023-10-31 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
| JP2024181780A JP2025003495A (ja) | 2022-01-27 | 2024-10-17 | サーバおよびプログラム |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2022/003081 WO2023144958A1 (ja) | 2022-01-27 | 2022-01-27 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
| JP2023576480A JP7647938B2 (ja) | 2022-01-27 | 2022-01-27 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
| JP2023186709A JP7574902B2 (ja) | 2022-01-27 | 2023-10-31 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2023576480A Division JP7647938B2 (ja) | 2022-01-27 | 2022-01-27 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2024181780A Division JP2025003495A (ja) | 2022-01-27 | 2024-10-17 | サーバおよびプログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2024111799A JP2024111799A (ja) | 2024-08-19 |
| JP7574902B2 true JP7574902B2 (ja) | 2024-10-29 |
Family
ID=87471313
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2023576480A Active JP7647938B2 (ja) | 2022-01-27 | 2022-01-27 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
| JP2023186709A Active JP7574902B2 (ja) | 2022-01-27 | 2023-10-31 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
| JP2024181780A Pending JP2025003495A (ja) | 2022-01-27 | 2024-10-17 | サーバおよびプログラム |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2023576480A Active JP7647938B2 (ja) | 2022-01-27 | 2022-01-27 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2024181780A Pending JP2025003495A (ja) | 2022-01-27 | 2024-10-17 | サーバおよびプログラム |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20250097134A1 (ja) |
| EP (1) | EP4471589A4 (ja) |
| JP (3) | JP7647938B2 (ja) |
| CN (1) | CN118829970A (ja) |
| WO (1) | WO2023144958A1 (ja) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004199683A (ja) | 2002-12-18 | 2004-07-15 | Internatl Business Mach Corp <Ibm> | 低消費電力適応的ポーリング |
| US20090089784A1 (en) | 2007-09-28 | 2009-04-02 | Walters Glen R | Variable polling interval based on historical timing results |
| JP2018507457A (ja) | 2014-12-22 | 2018-03-15 | インテル コーポレイション | ネットワークデバイスにおける受信パケットの処理と関連する電力管理のための技術 |
| WO2021130828A1 (ja) | 2019-12-23 | 2021-07-01 | 日本電信電話株式会社 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5581487B2 (ja) * | 2010-04-14 | 2014-09-03 | 株式会社Pfu | 監視装置、監視方法、及びプログラム |
| US10547559B2 (en) * | 2015-12-26 | 2020-01-28 | Intel Corporation | Application-level network queueing |
| CN109787777B (zh) * | 2017-11-10 | 2020-04-03 | 北京金山云网络技术有限公司 | 一种网卡模式切换方法、装置、电子设备及存储介质 |
| JP7059733B2 (ja) * | 2018-03-20 | 2022-04-26 | 富士フイルムビジネスイノベーション株式会社 | 情報処理装置、方法及びプログラム |
| US11082354B2 (en) * | 2019-06-12 | 2021-08-03 | Vmware, Inc. | Adaptive polling in software-defined networking (SDN) environments |
| US20190391940A1 (en) * | 2019-06-28 | 2019-12-26 | Intel Corporation | Technologies for interrupt disassociated queuing for multi-queue i/o devices |
| CN112817772B (zh) * | 2019-11-15 | 2023-12-29 | 深信服科技股份有限公司 | 一种数据通信方法、装置、设备及存储介质 |
| CN113014627B (zh) * | 2021-02-10 | 2022-07-26 | 深圳震有科技股份有限公司 | 报文转发方法、装置、智能终端及计算机可读存储介质 |
-
2022
- 2022-01-27 EP EP22923824.1A patent/EP4471589A4/en active Pending
- 2022-01-27 CN CN202280090079.4A patent/CN118829970A/zh active Pending
- 2022-01-27 US US18/832,757 patent/US20250097134A1/en active Pending
- 2022-01-27 WO PCT/JP2022/003081 patent/WO2023144958A1/ja not_active Ceased
- 2022-01-27 JP JP2023576480A patent/JP7647938B2/ja active Active
-
2023
- 2023-10-31 JP JP2023186709A patent/JP7574902B2/ja active Active
-
2024
- 2024-10-17 JP JP2024181780A patent/JP2025003495A/ja active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004199683A (ja) | 2002-12-18 | 2004-07-15 | Internatl Business Mach Corp <Ibm> | 低消費電力適応的ポーリング |
| US20090089784A1 (en) | 2007-09-28 | 2009-04-02 | Walters Glen R | Variable polling interval based on historical timing results |
| JP2018507457A (ja) | 2014-12-22 | 2018-03-15 | インテル コーポレイション | ネットワークデバイスにおける受信パケットの処理と関連する電力管理のための技術 |
| WO2021130828A1 (ja) | 2019-12-23 | 2021-07-01 | 日本電信電話株式会社 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| EP4471589A4 (en) | 2025-11-19 |
| JPWO2023144958A1 (ja) | 2023-08-03 |
| JP2024111799A (ja) | 2024-08-19 |
| EP4471589A1 (en) | 2024-12-04 |
| US20250097134A1 (en) | 2025-03-20 |
| JP7647938B2 (ja) | 2025-03-18 |
| CN118829970A (zh) | 2024-10-22 |
| WO2023144958A1 (ja) | 2023-08-03 |
| JP2025003495A (ja) | 2025-01-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7124207B1 (en) | I2O command and status batching | |
| JP7310924B2 (ja) | サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム | |
| JP2025100826A (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
| JP2024180507A (ja) | サーバおよびプログラム | |
| JP7485101B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7662062B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7754299B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7816498B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7574902B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7740368B2 (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
| JP7852718B2 (ja) | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム | |
| JP7709645B2 (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
| JP2026074185A (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| WO2024122065A1 (ja) | 省電機能制御装置、計算システム、省電機能制御方法およびプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231031 |
|
| A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20231031 |
|
| 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: 20240917 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240930 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7574902 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 |