JP7662062B2 - サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム - Google Patents
サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム Download PDFInfo
- Publication number
- JP7662062B2 JP7662062B2 JP2023576278A JP2023576278A JP7662062B2 JP 7662062 B2 JP7662062 B2 JP 7662062B2 JP 2023576278 A JP2023576278 A JP 2023576278A JP 2023576278 A JP2023576278 A JP 2023576278A JP 7662062 B2 JP7662062 B2 JP 7662062B2
- Authority
- JP
- Japan
- Prior art keywords
- packet
- interrupt
- sleep
- thread
- 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
- 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
-
- 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/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
複数の仮想マシンを接続、連携させる手法はInter-VM Communicationと呼ばれ、データセンタなどの大規模な環境では、VM間の接続に、仮想スイッチが標準的に利用されてきた。しかし、通信の遅延が大きい手法であることから、より高速な手法が新たに提案されている。例えば、SR-IOV(Single Root I/O Virtualization)と呼ばれる特別なハードウェアを用いる手法や、高速パケット処理ライブラリであるIntel DPDK(Intel Data Plane Development Kit)(以下、DPDKという)を用いたソフトウェアによる手法などが提案されている。
図13は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理の概略図である(非特許文献1参照)。
図13に示すように、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)により、パケット処理を行う。図13に示すように、割込モデルによるパケット転送は、割込処理(図13の符号a参照)によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
[New API(NAPI)によるRx側パケット処理構成]
図14は、図13の破線で囲んだ箇所におけるNew API(NAPI)によるRx側パケット処理の概要を説明する図である。
<Device driver>
図14に示すように、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等が配置される。
図14の矢印(符号)b~mは、Rx側パケット処理の流れを示している。
NIC11のhardware機能部11a(以下、NIC11という)が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA(Direct Memory Access)転送によりCPUを使用せずに、Ring Buffer72へ到着したパケットをコピーする(図14の符号b参照)。このRing Buffer72は、サーバの中にあるメモリ空間で、Kernel71(図13参照)が管理している。
ここまでで、図14の<Device driver>におけるハードウェア割込の処理は停止する。
その後、net_rx_action85は、netif_receive_skb87に通達をする(図14の符号k参照)。
割込モデルは、HWからイベント(ハードウェア割込)を受けたkernelがパケット加工を行うためのソフトウェア割込処理によってパケット転送を行う。このため、割込モデルは、割込(ソフトウェア割込)処理によりパケット転送を行うので、他の割込との競合や、割込先CPUがより優先度の高いプロセスに使用されていると待ち合わせが発生し、パケット転送の遅延が大きくなるといった課題がある。この場合、割込処理が混雑すると、更に待ち合わせ遅延は大きくなる。
例えば、割込モデルによるパケット転送は、割込処理によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
一般的なkernelは、パケット転送処理はハードウェア割込処理の後、ソフトウェア割込処理にて伝達される。
パケット転送処理のソフトウェア割込が発生した際に、下記条件(1)~(3)においては、前記ソフトウェア割込処理を即時に実行することができない。このため、ksoftirqd(CPU毎のカーネルスレッドであり、ソフトウェア割込の負荷が高くなったときに実行される)等のスケジューラにより調停され、割込処理がスケジューリングされることにより、msオーダの待ち合わせが発生する。
(1)他のハードウェア割込処理と競合した場合
(2)他のソフトウェア割込処理と競合した場合
(3)優先度の高い他プロセスやkernel thread(migration thread等)、割込先CPUが使用されている場合
上記条件では、前記ソフトウェア割込処理を即時に実行することができない。
一方、特許文献1に記載の技術を用いると、パケット到着を常時監視することにより、ソフトウェア割込を抑止し、低遅延なパケット刈取を実現できる。しかしながら、パケット到着を監視するため、CPUコアを専有しCPUタイムを使用するため、消費電力が高くなる。すなわち、パケット到着を常時監視するkernel threadがCPUコアを専有し、常にCPUタイムを使用するため、消費電力が大きくなる課題がある。図15および図16を参照して、ワークロードとCPU使用率の関係について説明する。
図16に示すように、KBPでは、kernel threadはbusy pollを行うために、CPUコアを専有する。図15に示す間欠的なパケット受信であっても、KBPでは、パケット到着有無に関わらず常にCPUを使用するため、消費電力が大きくなる課題がある。
[概要]
図1は、本発明の実施形態に係るサーバ内遅延制御システムの概略構成図である。本実施形態は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理に適用した例である。図13と同一構成部分には、同一符号を付している。
図1に示すように、サーバ内遅延制御システム1000は、OS(例えば、Host OS)を備えるサーバ上で、ユーザが使用可能なUser spaceに配置されたパケット処理APL1を実行し、OSに接続されたHWのNIC11とパケット処理APL1との間でパケット転送を行う。
Ring Buffer72は、サーバの中にあるメモリ空間においてkernelが管理する。Ring Buffer72は、kernelが出力するメッセージをログとして格納する一定サイズのバッファであり、上限サイズを超過すると先頭から上書きされる。
プロトコル処理部74は、Ethernet,IP,TCP/UDP等である。プロトコル処理部74は、例えばOSI参照モデルが定義するL2/L3/L4のプロトコル処理を行う。
サーバ内遅延制御装置100は、kernel space またはUser spaceのいずれかに配置されるpolling threadである。
サーバ内遅延制御装置100は、パケット到着監視部110と、パケット刈取部120と、sleep管理部130と、CPU周波数/CPU idle設定部140と、HW割込回数管理テーブル150a(HW割込回数記憶部)を有するHW割込頻度制御部150と、を備える。
パケット刈取部120は、Ring_Buffer72に複数のパケットが貯まっているときは、複数パケットをまとめて刈り取って、後続のプロトコル処理部74へ渡す。なお、このまとめて刈り取る数をquotaと言い、バッチ処理という呼び方をすることも多い。プロトコル処理部74は、プロトコル処理も複数パケットをまとめて処理するので高速である。
図2および図3は、図1のpolling thread(サーバ内遅延制御装置100)の配置を説明する図である。
・polling threadのkernel space配置
図2は、図1のpolling thread(サーバ内遅延制御装置100)をkernel spaceに配置した構成例である。
図2に示すサーバ内遅延制御システム1000は、kernel spaceにpolling thread(サーバ内遅延制御装置100)、プロトコル処理部74が配置される。このpolling thread(サーバ内遅延制御装置100)は、kernel space内で動作する。サーバ内遅延制御システム1000は、OSを備えるサーバ上で、User spaceに配置されたパケット処理APL1を実行し、OSに接続されたDevice driverを介してHWのNIC11とパケット処理APL1との間でパケット転送を行う。
なお、図2に示すように、Device driverには、hardIRQ81、HW割込処理部182、receive list186、Ring_Buffer72が配置される。
Device driverは、ハードウェアの監視を行うためのドライバである。
図3は、図1のpolling thread(サーバ内遅延制御装置100)をUser spaceに配置した構成例である。
図3に示すサーバ内遅延制御システム1000は、User spaceにpolling thread(サーバ内遅延制御装置100)、プロトコル処理部74が配置される。このpolling thread(サーバ内遅延制御装置100)は、Kernel space内ではなく、User spaceで動作する。
図3に示すサーバ内遅延制御システム1000は、polling thread(サーバ内遅延制御装置100)が、kernel spaceをバイパスして、Device driverおよびNIC11とパケット処理APL1との間でパケット転送を行う。
[本発明によるRx側パケット処理動作]
図1~図3の矢印(符号)aa~jjは、Rx側パケット処理の流れを示している。
NIC11が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA転送によりCPUを使用せずに、Ring Buffer72へ到着したパケットをコピーする(図1~図3の符号aa参照)。このRing Buffer72は、<Device driver>で管理している。
ここまでで、図1~図3の<Device driver>におけるハードウェア割込の処理は停止する。
パケット刈取部120は、受信した情報をもとにRing_Buffer72からパケットを取り出し、プロトコル処理部74へパケットを伝達する(図1~図3の符号jj参照)。
サーバ内遅延制御システム1000は、NW遅延発生の主要因であるパケット処理のsoftIRQを停止し、サーバ内遅延制御装置100のパケット到着監視部110がパケット到着を監視するpolling threadを実行する。そして、パケット刈取部120が、パケット到着時に、pollingモデル(softIRQなし)によりパケット処理を行う。
polling thread(サーバ内遅延制御装置100)は、パケット到着有無に応じてsleepし、パケット到着時はhardIRQ81によりsleep解除を行う。具体的には、サーバ内遅延制御装置100のsleep管理部130は、パケット到着有無に応じて、すなわち所定期間パケットの到着がないと、polling threadをsleepさせる。sleep管理部130は、パケット到着時はhardIRQ81によりsleep解除を行う。これにより、softIRQ競合を回避して、低遅延化を実現する。
図4に示すように、サーバ内遅延制御装置100のsleep管理部130は、所定期間パケットの到着がない場合(より詳細には、あるパケット到着してから、保守・運用者があらかじめ定めた固定値(一定期間)を経過しても次のパケット到着がない場合)に、polling threadをsleepさせる(図4の符号p参照)。そして、sleep管理部130は、パケット到着のhardIRQ81でpolling threadを起動させる(図4の符号q参照)。
なお、sleep 時には、kernelthreadがCPUコアを専有していないため、polling threadが使用する以外にも、システム安定動作のためのタイマの割込みが該当CPUコアに入ったり、エラー処理等のためのmigration threadが該当CPUコアに入ったりすることで、polling threadが使用するCPUコアのCPU使用率が変動する場合がある(図4の符号r参照)。
上述したように、polling thread(サーバ内遅延制御装置100)は、Ring Buffer72に未受信のパケットがある場合は、ハードウェア割込要求(hardIRQ)を禁止しpollingによるパケット受信を行う。
ここで、パケット到着速度とパケット受信速度が同等である等の所定の条件を満たすと、パケット到着によるhardIRQ回数が多くなり、hardIRQオーバーヘッドにより、パケット転送遅延時間と消費電力が増大する場合がある。hardIRQオーバーヘッドについて述べる。ハードウェア割込は極めて高い優先度の処理であり、割り込まれたプロセスは処理を中断して、途中処理をメモリに退避する必要がある。hardIRQ回数が増えると、パケット受信処理(プロトコル処理等)がhardIRQにCPUタイムを奪われて中断されるため、パケット受信処理効率が下がってしまう。以下、パケット到着速度とパケット受信速度の関係について説明する。
・パケット到着頻度が低い「疎」の場合(図5の中段に示す短い双方向矢印参照)
図5の下図左に示すように、Ring Buffer72にパケットが貯まる速度(図5の白抜き矢印t参照)と、Ring Buffer72から1パケットずつパケットを受信する速度(図5の白抜き矢印u参照)とが同等である(拮抗している)場合、パケット到着頻度が低いため、Ring Buffer72にパケットが貯まらず、パケット到着の度にhardIRQが発動される。
図5の下図右に示すように、Ring Buffer72にパケットが貯まる速度(図5の白抜き矢印v参照)が大きく、Ring Buffer72からある程度貯まったらバッチ処理で複数受信する速度(図5の白抜き矢印w参照)が小さい場合、パケット到着頻度が高く、Ring Buffer72にパケットが貯まるため、hardIRQ禁止時間が長く、hardIRQ回数は小さくなる。
パケット到着頻度について補足して説明する。
パケット到着頻度が低い状態は、それだけsleepできるチャンスが多く省電力効果が期待できる。
ところが、パケット到着頻度がそこそこ低く、しかしハードウェア割込は都度発生してしまうような、Sleepと起床を繰り返す場合、パケット到着の度にhardIRQが発動され、遅延時間が増大させる。
本実施形態は、パケット到着速度とパケット受信速度が拮抗するような状況において、polling threadをsleepさせることによるHW割込の過剰な発生を抑制する技術を提供する。
図6および図7を参照して、polling thread(サーバ内遅延制御装置100)動作の基本的な考え方について説明する。図6は、比較例のパケット到着によるHW割込と、HW割込で立ち上がるpolling threadを示す図である。図7は、本実施形態のパケット到着によるHW割込と、HW割込で立ち上がるpolling threadを示す図である。図中、「●」はパケット到着を示し、「↑」はHW割込を示し、網掛けブロックはpolling状態を示す。
図6の比較例において、パケット到着が中程度の場合、HW割込が大量に発生し(図6の符号x参照)、大量に発生したHW割込によりpolling threadはpolling状態となる。HW割込が過剰になり、オーバーヘッドによる遅延時間が増加する。なお、パケット到着が疎の場合やパケット到着が密の場合には、HW割込の発生が少なく、オーバーヘッドによる遅延時間は小さい。
図8は、polling thread(サーバ内遅延制御装置100)のNICおよびHW割込処理を示すフローチャートである。
polling threadが起動している間は、本動作フローをループして実行する。
NIC11にパケットが到着すると、本フローがスタートする。ステップS1でNIC11は、DMA(Direct Memory Access)により到着したパケットデータをメモリ領域へコピーする。
ステップS3でNIC11は、HW割込(hardIRQ)をhardIRQ81(ハンドラ)に立ち上げてHW割込を起動し、receive list186にパケット到着情報(NICデバイス情報等)を登録する。
ステップS4でNIC11は、polling thread(サーバ内遅延制御装置100)がsleepしている場合、polling threadを起こして本フローの処理を終了する。
polling threadがsleepしているときに、パケットが到着し、HW割込により起こされ、本フローがスタートする。
ステップS11でHW割込頻度制御部150は、NIC11によるHW割込を禁止する。処理している最中にHW割込されると、処理が中断されてしまうので、HW割込頻度制御部150は、NIC11によるHW割込を一旦禁止する。
なお、receive list186というControl Planeのlistを参照するのではなく、直接Ring Buffer72を参照し、パケットの到着有無を確認してもよい。例えば、Linux kernelに実装されたNAPIでは、poll_listというControl Planeのlistを監視する。
ちなみに、HW割込を禁止している間にpollingループを回すことで、計算する毎にHW割込頻度fは小さくなる。
なお、HW割込頻度fによる判定は、運用者が設定する固定的な閾値でなく、流入トラヒックの特徴に応じて学習して動的に閾値を決定してもよい。
ステップS22でHW割込頻度制御部150は、該当NICによるHW割込を許可する。
ステップS23でsleep管理部130は、polling threadをsleepさせて本フローの処理を終了する。
ステップS24で所定時間(例えば、一定時間tの経過後)polling threadをsleepさせて、ステップS16に進む。
上記実施形態に係るサーバ内遅延制御装置100は、例えば図10に示すような構成のコンピュータ900によって実現される。
図10は、サーバ内遅延制御装置100の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU901、ROM902、RAM903、HDD904、通信インターフェイス(I/F:Interface)906、入出力インターフェイス(I/F)905、およびメディアインターフェイス(I/F)907を有する。
図2に示すpolling thread(サーバ内遅延制御装置100)のように、Kernel内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置に適用できる。この場合、OSは限定されない。また、サーバ仮想化環境下であることも限定されない。したがって、サーバ内遅延制御システム1000は、図11および図12に示す各構成に適用が可能である。
図11は、汎用Linux kernel(登録商標)およびVM構成のサーバ仮想化環境における、割込モデルに、サーバ内遅延制御システム1000Aを適用した例を示す図である。図1と同一構成部分には、同一符号を付している。
図11に示すように、サーバ内遅延制御システム1000Aは、Guest OS70のKernel171内にサーバ内遅延制御装置100が配置され、Host OS90のKernel91内にサーバ内遅延制御装置100が配置される。
HostOS90は、Kernel91と、HostOS90を備えるサーバ中のメモリ空間で、Kernel91が管理するRing Buffer22と、NIC11からのハードウェア割込(hardIRQ)がどのデバイスのものであるかを示すネットデバイスの情報を登録するreceive list186(図2)と、kernel threadであるvhost-netモジュール221と、Kernel91により作成される仮想インターフェイスであるtapデバイス222と、仮想スイッチ(br)223と、を有する。
Kernel91は、tapデバイス222を介して、仮想マシン30へパケットを伝達する。
Kernel171は、プロトコル処理部74を介して、パケット処理APL1へパケットを伝達する。
図12は、コンテナ構成のサーバ仮想化環境における、割込モデルに、サーバ内遅延制御システム1000Bを適用した例を示す図である。図1と同一構成部分には、同一符号を付している。
図12に示すように、サーバ内遅延制御システム1000Bは、Guest OS180と、OSをContainer210に代えた、コンテナ構成を備える。Container210は、vNIC(仮想NIC)211を有する。Guest OS180のKernel181内にサーバ内遅延制御装置100が配置される。
本発明は、ベアメタル構成のように非仮想化構成のシステムに適用できる。非仮想化構成のシステムにおいて、APLを改変することなく、サーバ内の遅延を小さくしてパケット転送を行うことができる。
トラヒック量が多く、複数のNICデバイスやNICポートを使用する場合に、これらと関連付けて複数のpolling threadを動作させることで、HW割込頻度制御を行いつつ、polling threadをスケールイン/アウトすることができる。
本発明は、トラヒックフロー数が増えた場合に、インバウンドのネットワークトラフィックを複数CPUで処理可能なRSS(Receive-Side Scaling)と連携して、パケット到着監視threadに割り当てるCPU数を増やすことで、ネットワーク負荷に対するスケールアウトが可能になる。
以上説明したように、OSのカーネル空間(kernel space)に配置され、ポーリングモデルを用いてパケット到着を監視するスレッド(thread)を立ち上げるサーバ内遅延制御装置100(図1および図2参照)であって、インターフェイス部(NIC11)からのハードウェア割込(hardIRQ)がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリスト(receive list186)を監視(polling)するパケット到着監視部110と、パケットが到着している場合は、リングバッファ(Ring Buffer72)に保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリをリングバッファから削除する刈取りを実行するパケット刈取部120と、パケットが所定期間到着しない場合はスレッド(polling thread)をスリープ(sleep)させ、かつ、パケット到着時はハードウェア割込(hardIRQ)によりこのスレッド(polling thread)のスリープ解除を行うsleep管理部130と、ハードウェア割込回数を記憶するHW割込回数記憶部(HW割込回数管理テーブル150a)と、ハードウェア割込回数をもとにHW割込頻度を算出し、算出したHW割込頻度に基づいてsleep管理部130のスリープによる、HW割込許可または禁止を制御するHW割込頻度制御部150と、を備える。
これにより、下記(1)~(4)の効果を奏する。
サーバ内遅延制御装置100を含むサーバ内遅延制御システムにおいて、インターフェイス部(NIC11)は、ハードウェア割込を割込ハンドラ(hardIRQ81)に立ち上げてポールリストにデバイスを登録する場合、ソフトウェア割込によるスケジューリングを停止する。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
10 HW
11 NIC(物理NIC)(インターフェイス部)
70 Guest OS
74 プロトコル処理部
60 user space(ユーザスペース)
72 Ring Buffer(リングバッファ)
90 Host OS(OS)
91,171,181 Kernel(カーネル)
100 サーバ内遅延制御装置(polling thread)
110 パケット到着監視部
120 パケット刈取部
130 sleep管理部
140 CPU周波数/CPU idle設定部
150 HW割込頻度制御部
150a HW割込回数管理テーブル(HW割込回数記憶部)
180 Guest OS(OS)
186 receive list(ポールリスト)
210 Container
1000,1000A,1000B サーバ内遅延制御システム
Claims (7)
- OSのカーネル空間に配置され、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置であって、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストを監視するパケット到着監視部と、
パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、
パケットが所定期間到着しない場合は前記スレッドをスリープさせ、かつ、パケット到着時はハードウェア割込により当該スレッドのスリープ解除を行うスリープ管理部と、
ハードウェア割込回数を記憶するHW割込回数記憶部と、
前記ハードウェア割込回数をもとにHW割込頻度を算出し、算出した前記HW割込頻度に基づいて前記スリープ管理部のスリープによる、HW割込許可または禁止を制御するHW割込頻度制御部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - ユーザ空間に配置され、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置であって、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストを監視するパケット到着監視部と、
パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、
パケットが所定期間到着しない場合は前記スレッドをスリープさせ、かつ、パケット到着時はハードウェア割込により当該スレッドのスリープ解除を行うスリープ管理部と、
ハードウェア割込回数を記憶するHW割込回数記憶部と、
前記ハードウェア割込回数をもとにHW割込頻度を算出し、算出した前記HW割込頻度に基づいて前記スリープ管理部のスリープによる、HW割込許可または禁止を制御するHW割込頻度制御部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - サーバ内遅延制御装置であって、
仮想マシン内で動作するGuest OSが、
カーネルと、
前記Guest OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、
刈取りが実行されたパケットのプロトコル処理を行うプロトコル処理部と、を有し、
前記カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記ポールリストによりパケット到着を監視するパケット到着監視部と、
パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、
パケットが所定期間到着しない場合は前記スレッドをスリープさせ、かつ、パケット到着時はハードウェア割込により当該スレッドのスリープ解除を行うスリープ管理部と、
ハードウェア割込回数を記憶するHW割込回数記憶部と、
前記ハードウェア割込回数をもとにHW割込頻度を算出し、算出した前記HW割込頻度に基づいて前記スリープ管理部のスリープによる、HW割込許可または禁止を制御するHW割込頻度制御部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - サーバ内遅延制御装置であって、
仮想マシンおよび前記仮想マシン外に形成された外部プロセスが動作可能なHost OSが、
カーネルと、
前記Host OSを備えるサーバ中のメモリ空間で、前記カーネルが管理するリングバッファと、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストと、
前記カーネルにより作成される仮想インターフェイスであるtapデバイスと、を備え、
前記カーネル内に、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げる前記サーバ内遅延制御装置を備えており、
前記サーバ内遅延制御装置は、
前記ポールリストによりパケット到着を監視するパケット到着監視部と、
パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するパケット刈取部と、
パケットが所定期間到着しない場合は前記スレッドをスリープさせ、かつ、パケット到着時はハードウェア割込により当該スレッドのスリープ解除を行うスリープ管理部と、
ハードウェア割込回数を記憶するHW割込回数記憶部と、
前記ハードウェア割込回数をもとにHW割込頻度を算出し、算出した前記HW割込頻度に基づいて前記スリープ管理部のスリープによる、HW割込許可または禁止を制御するHW割込頻度制御部と、を備える
ことを特徴とするサーバ内遅延制御装置。 - 前記HW割込頻度制御部は、算出した前記HW割込頻度と所定閾値とを比較し、当該HW割込頻度が所定閾値以上の場合、前記スリープ管理部によるスリープを一定時間実行させる
ことを特徴とする請求項1乃至4のいずれか一項に記載のサーバ内遅延制御装置。 - OSのカーネル空間に配置され、ポーリングモデルを用いてパケット到着を監視するスレッドを立ち上げるサーバ内遅延制御装置のサーバ内遅延制御方法であって、
前記サーバ内遅延制御装置は、
インターフェイス部からのハードウェア割込がどのデバイスのものであるかを示すネットデバイスの情報を登録するポールリストを監視するステップと、
パケットが到着している場合は、リングバッファに保持したパケットを参照し、次に行う処理に基づいて該当するキューのエントリを前記リングバッファから削除する刈取りを実行するステップと、
パケットが所定期間到着しない場合は前記スレッドをスリープさせ、かつ、パケット到着時はハードウェア割込により当該スレッドのスリープ解除を行うスリープ管理ステップと、
ハードウェア割込回数を記憶するステップと、
前記ハードウェア割込回数をもとにHW割込頻度を算出し、算出した前記HW割込頻度に基づいて前記スリープ管理ステップのスリープによる、HW割込許可または禁止を制御するステップと、を実行する
ことを特徴とするサーバ内遅延制御方法。 - コンピュータを、請求項1乃至5のいずれか1項に記載のサーバ内遅延制御装置として機能させるためのプログラム。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2022/002637 WO2023144878A1 (ja) | 2022-01-25 | 2022-01-25 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPWO2023144878A1 JPWO2023144878A1 (ja) | 2023-08-03 |
| JP7662062B2 true JP7662062B2 (ja) | 2025-04-15 |
Family
ID=87471135
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2023576278A Active JP7662062B2 (ja) | 2022-01-25 | 2022-01-25 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12498964B2 (ja) |
| JP (1) | JP7662062B2 (ja) |
| WO (1) | WO2023144878A1 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20260050319A1 (en) * | 2024-08-16 | 2026-02-19 | Qualcomm Incorporated | Dynamic power management for data plane applications in user space |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2009060530A1 (ja) | 2007-11-09 | 2009-05-14 | Fujitsu Limited | ネットワーク処理制御装置,プログラムおよび方法 |
| JP2015036991A (ja) | 2013-08-14 | 2015-02-23 | インテル コーポレイション | 待ち時間低減パケット処理を備えたソケット管理 |
| JP2015197874A (ja) | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | 仮想通信路構築システム、仮想通信路構築方法、及び仮想通信路構築プログラム |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10521265B2 (en) * | 2008-09-19 | 2019-12-31 | Microsoft Technology Licensing, Llc | Coalescing periodic timer expiration in guest operating systems in a virtualized environment |
| US9535483B2 (en) * | 2012-12-19 | 2017-01-03 | Intel Corporation | Adaptively disabling and enabling sleep states for power and performance |
| US11281473B2 (en) * | 2019-04-05 | 2022-03-22 | Arm Limited | Dual wakeup interrupt controllers |
| EP4675992A3 (en) | 2019-12-23 | 2026-04-15 | NTT, Inc. | Intra-server delay control device, intra-server delay control method, and program |
-
2022
- 2022-01-25 JP JP2023576278A patent/JP7662062B2/ja active Active
- 2022-01-25 WO PCT/JP2022/002637 patent/WO2023144878A1/ja not_active Ceased
- 2022-01-25 US US18/832,245 patent/US12498964B2/en active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2009060530A1 (ja) | 2007-11-09 | 2009-05-14 | Fujitsu Limited | ネットワーク処理制御装置,プログラムおよび方法 |
| JP2015036991A (ja) | 2013-08-14 | 2015-02-23 | インテル コーポレイション | 待ち時間低減パケット処理を備えたソケット管理 |
| JP2015197874A (ja) | 2014-04-03 | 2015-11-09 | 日本電信電話株式会社 | 仮想通信路構築システム、仮想通信路構築方法、及び仮想通信路構築プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| JPWO2023144878A1 (ja) | 2023-08-03 |
| US12498964B2 (en) | 2025-12-16 |
| WO2023144878A1 (ja) | 2023-08-03 |
| US20250103382A1 (en) | 2025-03-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7310924B2 (ja) | サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム | |
| JP7251648B2 (ja) | サーバ内遅延制御システム、サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| US20020091826A1 (en) | Method and apparatus for interprocessor communication and peripheral sharing | |
| JP2025100826A (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
| JP2024180507A (ja) | サーバおよびプログラム | |
| JP7485101B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7662062B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7754299B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7816498B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7574902B2 (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7852718B2 (ja) | サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム | |
| JP7740368B2 (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
| JP2026074185A (ja) | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム | |
| JP7709645B2 (ja) | サーバ内データ転送装置、サーバ内データ転送方法およびプログラム | |
| Van Hensbergen et al. | Multi-Personality Network Interfaces |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240619 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20241210 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20250203 |
|
| 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: 20250304 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20250317 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7662062 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 |