Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7740368B2 - サーバ内データ転送装置、サーバ内データ転送方法およびプログラム - Google Patents
[go: Go Back, main page]

JP7740368B2 - サーバ内データ転送装置、サーバ内データ転送方法およびプログラム - Google Patents

サーバ内データ転送装置、サーバ内データ転送方法およびプログラム

Info

Publication number
JP7740368B2
JP7740368B2 JP2023565685A JP2023565685A JP7740368B2 JP 7740368 B2 JP7740368 B2 JP 7740368B2 JP 2023565685 A JP2023565685 A JP 2023565685A JP 2023565685 A JP2023565685 A JP 2023565685A JP 7740368 B2 JP7740368 B2 JP 7740368B2
Authority
JP
Japan
Prior art keywords
polling
information
traffic characteristic
characteristic information
data transfer
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
Application number
JP2023565685A
Other languages
English (en)
Other versions
JPWO2023105578A1 (ja
Inventor
廣 名取
圭 藤本
育生 大谷
奨悟 斎藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Inc
NTT Inc USA
Original Assignee
Nippon Telegraph and Telephone Corp
NTT Inc USA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp, NTT Inc USA filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2023105578A1 publication Critical patent/JPWO2023105578A1/ja
Application granted granted Critical
Publication of JP7740368B2 publication Critical patent/JP7740368B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、サーバ内データ転送装置、サーバ内データ転送方法およびプログラムに関する。
NFV(Network Functions Virtualization:ネットワーク機能仮想化)による仮想化技術の進展などを背景に、サービス毎にシステムを構築して運用することが行われている。また、上記サービス毎にシステムを構築する形態から、サービス機能を再利用可能なモジュール単位に分割し、独立した仮想マシン(VM:Virtual Machineやコンテナなど)環境の上で動作させることで、部品のようにして必要に応じて利用し運用性を高めるといったSFC(Service Function Chaining)と呼ばれる形態が主流となりつつある。
仮想マシンを構成する技術としてLinux(登録商標)とKVM(kernel-based virtual machine)で構成されたハイパーバイザー環境が知られている。この環境では、KVMモジュールが組み込まれたHost OS(物理サーバ上にインストールされたOSをHost OSと呼ぶ)がハイパーバイザーとしてカーネル空間と呼ばれるユーザ空間とは異なるメモリ領域で動作する。この環境においてユーザ空間にて仮想マシンが動作し、その仮想マシン内にGuest OS(仮想マシン上にインストールされたOSをGuest OSと呼ぶ)が動作する。
Guest OSが動作する仮想マシンは、Host OSが動作する物理サーバとは異なり、(イーサネット(登録商標)カードデバイスなどに代表される)ネットワークデバイスを含むすべてのHW(hardware)が、HWからGuest OSへの割込処理やGuest OSからハードウェアへの書き込みに必要なレジスタ制御となる。このようなレジスタ制御では、本来物理ハードウェアが実行すべき通知や処理がソフトウェアで擬似的に模倣されるため、性能がHost OS環境に比べ、低いことが一般的である。
この性能劣化において、特にGuest OSから自仮想マシン外に存在するHost OSや外部プロセスに対して、HWの模倣を削減し、高速かつ統一的なインターフェイスにより通信の性能と汎用性を向上させる技術がある。この技術として、virtioというデバイスの抽象化技術、つまり準仮想化技術が開発されており、すでにLinux(登録商標)を始め、FreeBSD(登録商標)など多くの汎用OSに組み込まれ、現在利用されている(特許文献1,2参照)。
virtioでは、コンソール、ファイル入出力、ネットワーク通信といったデータ入出力に関して、転送データの単一方向の転送用トランスポートとして、リングバッファで設計されたキューによるデータ交換をキューのオペレーションにより定義している。そして、virtioのキューの仕様を利用して、それぞれのデバイスに適したキューの個数と大きさをGuest OS起動時に用意することにより、Guest OSと自仮想マシン外部との通信を、ハードウェアエミュレーションを実行せずにキューによるオペレーションだけで実現することができる。
サーバ内のデータ転送技術としてNew API(NAPI)、DPDK(Data Plane Development Kit)、KBP(Kernel Busy Poll)がある。
New API(NAPI)は、パケットが到着するとハードウェア割込要求の後、ソフトウェア割込要求によりパケット処理を行う(非特許文献1参照)(後記図15参照)。
DPDKは、アプリケーションが動作するユーザスペースでパケット処理機能を実現し、ユーザスペースからpollingモデルでパケット到着時に即時刈取りを行う(非特許文献2参照)。詳細には、DPDKは、従来Linux kernel(登録商標)が行っていたNIC(Network Interface Card)の制御をユーザ空間で行うためのフレームワークである。Linux kernelにおける処理との最大の違いは、PMD(Pull Mode Driver)と呼ばれるポーリングベースの受信機構を持つことである。通常、Linux kernelでは、NICへのデータの到達を受けて、割込が発生し、それを契機に受信処理が実行される。一方、PMDは、データ到達の確認や受信処理を専用のスレッドが継続的に行う。コンテキストスイッチや割込などのオーバーヘッドを排除することで高速なパケット処理を行うことができる。DPDKは、パケット処理のパフォーマンスとスループットを大幅に高めて、データプレーン・アプリケーション処理に多くの時間を確保することを可能にする。ただし、DPDKは、CPU(Central Processing Unit)やNICなどのコンピュータ資源を占有的に使用する。
非特許文献3には、サーバ内ネットワーク遅延制御装置(KBP:Kernel Busy Poll)が記載されている。KBPは、kernel内でpollingモデルによりパケット到着を常時監視する。これにより、softIRQを抑止し、低遅延なパケット処理を実現する。
[New API(NAPI)によるRx側パケット処理]
図15は、Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理の概略図である(非特許文献1参照)。
図15に示すように、New API(NAPI)は、OS70(例えば、Host OS)を備えるサーバ上で、ユーザが使用可能なuser space60に配置されたデータ処理APL1を実行し、OS70に接続されたHW10のNIC11とデータ処理APL1との間でパケット転送を行う。
OS70は、kernel71、Ring Buffer72、およびDriver73を有し、kernel71は、プロトコル処理部74を有する。
Kernel71は、OS70(例えば、Host OS)の基幹部分の機能であり、ハードウェアの監視やプログラムの実行状態をプロセス単位で管理する。ここでは、kernel71は、データ処理APL1からの要求に応えるとともに、HW10からの要求をデータ処理APL1に伝える。Kernel71は、データ処理APL1からの要求に対して、システムコール(「非特権モードで動作しているユーザプログラム」が「特権モードで動作しているカーネル」に処理を依頼)を介することで処理する。
Kernel71は、Socket75を介して、データ処理APL1へパケットを伝達する。Kernel71は、Socket75を介してデータ処理APL1からパケットを受信する。
Ring Buffer72は、Kernel71が管理し、サーバ中のメモリ空間にある。Ring Buffer72は、Kernel71が出力するメッセージをログとして格納する一定サイズのバッファであり、上限サイズを超過すると先頭から上書きされる。
Driver73は、kernel71でハードウェアの監視を行うためデバイスドライバである。なお、Driver73は、kernel71に依存し、作成された(ビルドされた)カーネルソースが変われば、別物になる。この場合、該当ドライバ・ソースを入手し、ドライバを使用するOS上で再ビルドし、ドライバを作成することになる。
プロトコル処理部74は、OSI(Open Systems Interconnection)参照モデルが定義するL2(データリンク層)/L3(ネットワーク層)/L4(トランスポート層)のプロトコル処理を行う。
Socket75は、kernel71がプロセス間通信を行うためのインターフェイスである。Socket75は、ソケットバッファを有し、データのコピー処理を頻繁に発生させない。Socket75を介しての通信確立までの流れは、下記の通りである。1.サーバ側がクライアントを受け付けるソケットファイルを作成する。2.受付用ソケットファイルに名前をつける。3.ソケット・キューを作成する。4.ソケット・キューに入っているクライアントからの接続の最初の1つを受け付ける。5.クライアント側ではソケットファイルを作成する。6.クライアント側からサーバへ接続要求を出す。7.サーバ側で、受付用ソケットファイルとは別に、接続用ソケットファイルを作成する。通信確立の結果、データ処理APL1は、kernel71に対してread()やwrite()などのシステムコールを呼び出せるようになる。
以上の構成において、Kernel71は、NIC11からのパケット到着の知らせを、ハードウェア割込(hardIRQ)により受け取り、パケット処理のためのソフトウェア割込(softIRQ)をスケジューリングする。
上記、Linux kernel 2.5/2.6より実装されているNew API(NAPI)は、パケットが到着するとハードウェア割込(hardIRQ)の後、ソフトウェア割込(softIRQ)により、パケット処理を行う。図15に示すように、割込モデルによるパケット転送は、割込処理(図15の符号a参照)によりパケットの転送を行うため、割込処理の待ち合わせが発生し、パケット転送の遅延が大きくなる。
以下、NAPI Rx側パケット処理概要について説明する。
[New API(NAPI)によるRx側パケット処理構成]
図16は、図15の破線で囲んだ箇所におけるNew API(NAPI)によるRx側パケット処理の概要を説明する図である。
<Device driver>
図16に示すように、Device driverには、ネットワークインターフェースカードであるNIC11(物理NIC)、NIC11の処理要求の発生によって呼び出され要求された処理(ハードウェア割込)を実行するハンドラであるhardIRQ81、およびソフトウェア割込の処理機能部であるnetif_rx82が配置される。
<Networking layer>
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>
Protocol layerには、パケット処理機能部であるip_rcv88、arp_rcv89等が配置される。
上記netif_rx82、do_softirq84、net_rx_action85、netif_receive_skb87、ip_rcv88、およびarp_rcv89は、Kernel71の中でパケット処理のために用いられるプログラムの部品(関数の名称)である。
[New API(NAPI)によるRx側パケット処理動作]
図16の矢印(符号)b~mは、Rx側パケット処理の流れを示している。
NIC11のhardware機能部11a(以下、NIC11という)が、対向装置からフレーム内にパケット(またはフレーム)を受信すると、DMA(Direct Memory Access)転送によりCPUを使用せずに、Ring Buffer72へ到着したパケットをコピーする(図16の符号b参照)。このRing Buffer72は、サーバの中にあるメモリ空間で、Kernel71(図15参照)が管理している。
しかし、NIC11が、Ring Buffer72へ到着したパケットをコピーしただけでは、Kernel71は、そのパケットを認知できない。そこで、NIC11は、パケットが到着すると、ハードウェア割込(hardIRQ)をhardIRQ81に上げ(図16の符号c参照)、netif_rx82が下記の処理を実行することで、Kernel71は、当該パケットを認知する。なお、図16の楕円で囲んで示すhardIRQ81は、機能部ではなくハンドラを表記する。
netif_rx82は、実際に処理をする機能であり、hardIRQ81(ハンドラ)が立ち上がると(図16の符号d参照)、poll_list86に、ハードウェア割込(hardIRQ)の中身の情報の1つである、NIC11からのハードウェア割込がどのデバイスのものであるかを示すネットデバイス(net_device)の情報を保存して、キューの刈取りを登録する(図16の符号g参照)。ここで、キューの刈取りとは、バッファに溜まっているパケットの中身を参照して、そのパケットの処理を、次に行う処理を考慮してバッファから該当するキューのエントリを削除することである。具体的には、netif_rx82は、Ring Buffer72にパケットが詰め込まれたことを受けて、NIC11のドライバを使って、以後のキューの刈取りをpoll_list86に登録する(図16の符号e参照)。これにより、poll_list86には、Ring Buffer72にパケットが詰め込まれたことによる、キューの刈取り情報が登録される。
このように、図16の<Device driver>において、NIC11は、パケットを受信すると、DMA転送によりRing Buffer72へ到着したパケットをコピーする。また、NIC11は、hardIRQ81(ハンドラ)を上げ、netif_rx82は、poll_list86にnet_deviceを登録し、ソフトウェア割込(softIRQ)をスケジューリングする。
ここまでで、図16の<Device driver>におけるハードウェア割込の処理は停止する。
その後、netif_rx82は、poll_list86に積まれているキューに入っている情報(具体的にはポインタ)を用いて、Ring Buffer72に格納されているデータを刈取ることを、ソフトウェア割込(softIRQ)でsoftIRQ83(ハンドラ)に上げ(図16の符号f参照)、ソフトウェア割込の制御機能部であるdo_softirq84に通知する(図16の符号g参照)。
do_softirq84は、ソフトウェア割込制御機能部であり、ソフトウェア割込の各機能を定義(パケット処理は各種あり、割込処理はそのうちの一つ。割込処理を定義する)している。do_softirq84は、この定義をもとに、実際にソフトウェア割込処理を行うnet_rx_action85に、今回の(該当の)ソフトウェア割込の依頼を通知する(図16の符号h参照)。
net_rx_action85は、softIRQの順番がまわってくると、poll_list86に登録されたnet_deviceをもとに(図16の符号i参照)、Ring Buffer72からパケットを刈取るためのポーリングルーチンを呼び出し、パケットを刈取る(図16の符号j参照)。このとき、net_rx_action85は、poll_list86が空になるまで刈取りを続ける。
その後、net_rx_action85は、netif_receive_skb87に通達をする(図16の符号k参照)。
netif_receive_skb87は、sk_buff構造体を作り、パケットの内容を解析し、タイプ毎に後段のプロトコル処理部74(図15参照)へ処理をまわす。すなわち、netif_receive_skb87は、パケットの中身を解析し、パケットの中身に応じて処理をする場合には、<Protocol layer>のip_rcv88に処理を回し(図16の符号l)、また、例えばL2であればarp_rcv89に処理をまわす(図16の符号m)。
図17は、映像(30FPS)のデータ転送例である。図17に示すワークロードは、転送レート350Mbpsで、30msごとに間欠的にデータ転送を行っている。
図18は、非特許文献3に記載のKBPにおける、busy poll threadが使用するCPU使用率を示す図である。
図18に示すように、KBPでは、kernel threadはbusy pollを行うために、CPUコアを専有する。図17に示す間欠的なパケット受信であっても、KBPでは、パケット到着有無に関わらず常にCPUを使用するため、消費電力が大きくなる課題がある。
次に、DPDKシステムについて説明する。
[DPDKシステム構成]
図19は、アクセラレータ120を備えるHW110の制御を行うDPDKシステムの構成を示す図である。
DPDKシステムは、HW110、OS140、user space(ユーザ空間)160上に配置されたデータ高速転送ミドルウェアであるDPDK150、データ処理APL1を有する。
データ処理APL1は、APLの実行に先立って行われるパケット処理である。
HW110は、データ処理APL1との間でデータ送受信の通信を行う。以下の説明において、図19に示すように、データ処理APL1が、HW110からのパケットを受け取るデータの流れをRx側受信と称し、データ処理APL1が、HW110にパケットを送信するデータの流れをTx側送信と称する。
HW110は、アクセラレータ120と、通信ネットワークに接続するためのNIC130(物理NIC)と、を備える。
アクセラレータ120は、CPUからの入力をもとに、特定の演算を高速に行う計算ユニットハードウェアである。アクセラレータ120は、具体的には、GPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)等のPLD(Programmable Logic Device)である。図19では、アクセラレータ120は、複数のCore(Coreプロセッサ)121、データを先入れ先出しのリスト構造で保持するRxキュー(queue:待ち行列)122およびTxキュー123を備える。
アクセラレータ120にデータ処理APL1の処理の一部をオフロードし、ソフトウェア(CPU処理)のみでは到達できない性能や電力効率を実現する。
NFV(Network Functions Virtualization)やSDN(Software Defined Network)を構成するデータセンタなど、大規模なサーバクラスタにおいて、上記のようなアクセラレータ120を適用するケースが想定される。
NIC130は、NWインターフェイスを実現するNICハードウェアであり、データを先入れ先出しのリスト構造で保持するRxキュー131およびTxキュー132を備える。NIC130は、例えば通信ネットワークを介して対向装置170に接続され、パケット送受信を行う。
なお、NIC130は、例えばアクセラレータ付きのNICであるSmartNICであってもよい。SmartNICは、処理能力が落ちる原因となるIPパケット処理など、負荷のかかる処理をオフロードしてCPUの負荷を軽減することができるNICである。
DPDK150は、NICの制御をuser space160で行うためのフレームワークであり、具体的にはデータ高速転送ミドルウェアからなる。DPDK150は、ポーリングベースの受信機構であるPMD(Poll Mode Driver)151(データ到着をポーリングモードまたは割込モードで選択可能なドライバ)を有する。PMD151は、データ到達の確認や受信処理を専用のスレッドが継続的に行う。
DPDK150は、APLが動作するuser space160でパケット処理機能を実現し、user space160からpollingモデルでパケット到着時に即時刈取りを行うことで、パケット転送遅延を小さくすることを可能にする。すなわち、DPDK150は、polling(CPUでキューをbusy poll)によりパケットの刈取りを行うため、待ち合わせがなく遅延小である。
特開2015-197874号公報 特開2018-32156号公報
New API Intel, [online],[令和3年11月5日検索],インターネット 〈http://lwn.net/2002/0321/a/napi-howto.php3〉 "リソース設定(NIC) ~DPDK入門 第6回~," NTTテクノクロス, [online],[令和3年11月5日検索],インターネット 〈https://www.ntt-tx.co.jp/column/dpdk_blog/190610/〉 Kei Fujimoto, Kenichi Matsui, Masayuki Akutsu, "KBP: Kernel Enhancements for Low-Latency Networking without Application Customization in Virtual Server", IEEE CCNC 2021.
しかしながら、割込モデルとポーリングモデルによるパケット転送のいずれについても下記課題がある。
割込モデルは、HWからイベント(ハードウェア割込)を受けたkernelがパケット加工を行うためのソフトウェア割込処理によってパケット転送を行う。このため、割込モデルは、割込(ソフトウェア割込)処理によりパケット転送を行うので、他の割込との競合や、割込先CPUがより優先度の高いプロセスに使用されていると待ち合わせが発生し、パケット転送の遅延が大きくなるといった課題がある。この場合、割込処理が混雑すると、更に待ち合わせ遅延は大きくなる。
割込モデルにおいて、遅延が発生するメカニズムについて補足する。
一般的なkernelは、パケット転送処理はハードウェア割込処理の後、ソフトウェア割込処理にて伝達される。
パケット転送処理のソフトウェア割込が発生した際に、下記条件(1)~(3)においては、上記のソフトウェア割込処理を即時に実行することができない。このため、ksoftirqd(CPU毎のカーネルスレッドであり、ソフトウェア割込の負荷が高くなったときに実行される)等のスケジューラにより調停され、割込処理がスケジューリングされることにより、msオーダの待ち合わせが発生する。
(1)他のハードウェア割込処理と競合した場合
(2)他のソフトウェア割込処理と競合した場合
(3)優先度の高い他プロセスやkernel thread(migration thread等)、割込先CPUが使用されている場合
上記条件では、前記ソフトウェア割込処理を即時に実行することができない。
<割込処理競合に起因したネットワーク遅延>
パケット処理のためのソフトウェア割込と、他の処理のためのソフトウェア割込(disk I/O、swapなど)が競合すると、ソフトウェア割込用のスケジューラ(ksoftirqd)がソフトウェア割込の実行頻度を調停する。
ソフトウェア割込の競合発生について説明する。Ksoftirqdは、ソフトウェア割込処理をスケジューリングする。ksoftirqdに処理が移譲されると、config_hzの頻度(ms程度)でソフトウェア割込が実行される。この待ち時間に起因して、msオーダのパケット転送遅延が発生する。
<New API(NAPI)による課題>
New API(NAPI)によるパケット処理についても同様に、図16の破線囲みnに示すように、割込処理(softIRQ)の競合に起因し、msオーダのNW遅延が発生する。
<DPDKの課題>
DPDKでは、kernel threadはpolling(CPUでキューをbusy poll)を行うために、CPUコアを専有するので、図17に示す間欠的なパケット受信であっても、DPDKでは、パケット到着有無に関わらず、CPUを常に100%使用するため、消費電力が大きくなる課題がある。
<KBPの課題>
KBPについても、上記DPDKと同様の課題がある。
上述したように、KBPは、kernel内でpollingモデルによりパケット到着を常時監視することで、softIRQを抑止し、低遅延なパケット処理を実現することができる。
しかし、パケット到着を常時監視するkernel threadがCPUコアを専有し、常にCPUタイムを使用するため、消費電力が高くなる課題がある。図17および図18を参照して、ワークロードとCPU使用率の関係について説明する。
図18に示すように、KBPでは、kernel threadはbusy pollを行うために、CPUコアを専有する。図17に示す間欠的なパケット受信であっても、KBPでは、パケット到着有無に関わらず常にCPUを使用するため、消費電力が大きくなる課題がある。
このように、DPDKは、user spaceでpollingモデルを実現するためsoftIRQ競合は発生しない、また、KBPは、kernel内でpollingモデルを実現するためsoftIRQ競合は発生しないので、低遅延なパケット転送が可能である。しかしながら、DPDKおよびKBPは、いずれもパケット到着有無に関わらず、常にパケット到着監視のためにCPUリソースを無駄使いし、消費電力が大きくなる課題がある。
このような背景を鑑みて本発明がなされたのであり、本発明は、低遅延性を維持しつつ、CPU使用率を削減して省電力化を可能とすることを課題とする。
前記した課題を解決するため、Pollingモデルによるパケット転送を行うデータ転送部のPollingスレッドに対して、Sleep制御を行うサーバ内データ転送装置であって、前記パケット転送におけるトラフィック特性情報を収集するトラフィック特性情報収集部と、前記トラフィック特性情報収集部から受け取った前記トラフィック特性情報をもとに、前記Pollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成するPolling判定部と、前記Polling判定部から時刻同期情報と前記Pollingスケジュール情報を受け取り、前記時刻同期情報および前記Pollingスケジュール情報をもとに、Pollingに必要な時刻と時間を示すPollingスケジュールを前記Pollingスレッドに配信して当該Pollingスレッドを前記Pollingスケジュールで指示した時間だけPollingさせるPolling指示部と、を備え、前記トラフィック特性情報収集部は、上位アプリケーションから時間および周波数領域のチャンネル割り当て情報を収集し、前記トラフィック特性情報として前記Polling判定部へ伝達することを特徴とするサーバ内データ転送装置とした。
本発明によれば、低遅延性を維持しつつ、CPU使用率を削減して省電力化を図ることができる。
本発明の実施形態に係るサーバ内データ転送システムの概略構成図である。 本発明の実施形態に係るサーバ内データ転送システムのデータ到着パターン例に応じた、チャンネル例、データ到着の特徴およびPolling判定部によるSleep制御対応策を説明する図である。 本発明の実施形態に係るサーバ内データ転送システムのトラフィック特性情報収集部から得た時間・周波数領域へのチャンネル割り当て情報例を示す図である。 本発明の実施形態に係るサーバ内データ転送システムの動作を説明する図である。 本発明の実施形態に係るサーバ内データ転送システムのデータ高速転送ミドルウェアとの連携によるパケットの到着統計のトラフィック特性の取得を説明する図である。 本発明の実施形態に係るサーバ内データ転送システムのトラフィック特性情報収集部のトラフィック特性情報収集処理1を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのトラフィック特性情報収集部のトラフィック特性情報収集処理2を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのPolling判定部におけるSleep制御スケジュール決定処理を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムの統計情報例に応じた、データの特徴例、特徴から推察できることおよびPolling判定部によるSleep制御対応策を説明する図である。 本発明の実施形態に係るサーバ内データ転送システムのPolling判定部のPollingスケジュール情報配信処理を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのPolling判定部のPolling可否決定のロジックを示すサブルーチンである。 本発明の実施形態に係るサーバ内データ転送システムのPolling指示部の動作を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのデータ高速転送ミドルウェアの動作を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのサーバ内データ転送装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。 Linux kernel 2.5/2.6より実装されているNew API(NAPI)によるRx側パケット処理の概略図である。 図15の破線で囲んだ箇所におけるNew API(NAPI)によるRx側パケット処理の概要を説明する図である。 映像(30FPS)のデータ転送例を示す図である。 非特許文献3に記載のKBPにおける、busy poll threadが使用するCPU使用率を示す図である。 アクセラレータを備えるHWの制御を行うDPDKシステムの構成を示す図である。
以下、図面を参照して本発明を実施するための形態(以下、「本実施形態」という)におけるサーバ内データ転送システム等について説明する。
(実施形態)
[全体構成]
図1は、本発明の実施形態に係るサーバ内データ転送システムの概略構成図である。図19と同一構成部分には、同一符号を付している。
図1に示すように、サーバ内データ転送システム1000は、HW110と、メモリ180と、Pollingモデルによるパケット転送を行うデータ高速転送ミドルウェア300(データ転送部)と、データ高速転送ミドルウェア300のPollingスレッドに対して、Sleep制御を行うSleep制御ミドルウェアであるサーバ内データ転送装置200と、user spaceで実行されるプログラムであるApplications2(上位アプリケーション)と、を有する。
HW110は、対向装置170に接続するためのNIC130(物理NIC)を備える。NIC130は、NWインターフェイスを実現するNICハードウェアであり、例えば通信ネットワークを介して対向装置170に接続され、パケット送受信を行う。
HW110は、Applications2との間でデータ送受信の通信を行う。Applications2が、HW110からのパケットを受け取るデータの流れをRx側受信と称し、Applications2が、HW110にパケットを送信するデータの流れをTx側送信と称する。
HW110は、アクセラレータを備えていてもよい。このアクセラレータは、CPUからの入力をもとに、特定の演算を高速に行う計算ユニットハードウェアであり、例えばGPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)等のPLD(Programmable Logic Device)である。
メモリ180は、データを先入れ先出しのリスト構造で保持するRxキュー(queue:待ち行列)181およびTxキュー182を格納するレジスタである。
[サーバ内データ転送装置200]
サーバ内データ転送装置200は、トラフィック特性情報収集部210と、Polling判定部220と、Polling指示部230と、を備える。
<トラフィック特性情報収集部210>
トラフィック特性情報収集部210は、トラフィック特性情報(チャンネル割り当て情報(後記)と、Sleep制御スケジュールに用いることができる統計情報(過去に到着したパケット情報等)とがある)を収集し、Polling判定部220へ伝達する。
具体的には、トラフィック特性情報収集部210は、Applications2から時間・周波数領域へのチャンネル割り当て情報を収集し(図4の符号s参照)、Polling判定部220へトラフィック特性情報(図1の符号o参照)として伝達する。
また、トラフィック特性情報収集部210は、データ高速転送ミドルウェア300と連携し、時系列によるパケット到着頻度の特徴などの、Sleep制御スケジュールに用いることができる情報を、データ高速転送ミドルウェア300から収集し、Polling判定部220へトラフィック特性情報(図1の符号o参照)として伝達する。
なお、トラフィック特性情報収集部210が、チャンネル割り当て情報(トラフィック特性情報)をApplications2から収集する例は、後記図4の符号sに示されており、Sleep制御スケジュールに用いることができる統計情報(トラフィック特性情報)をデータ高速転送ミドルウェア300から情報収集する例は、後記図4の符号tに示されている。
<Polling判定部220>
Polling判定部220は、トラフィック特性情報収集部210から受け取ったトラフィック特性情報をもとに、データ高速転送ミドルウェア300のPollingThread310をパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成し、Polling指示部230へ時刻同期情報と共に伝達する(図1の符号p参照)。
上記パケットの到着確率の所定閾値について述べる。
所定閾値は、ユースケースに応じて、本システムの運用者が決定し、例えばテーブル値として記憶部(図示省略)に記憶する。Polling判定部220は、パケットの到着確率と記憶部に記憶したテーブル値とを比較し、パケットの到着確率が所定閾値以上の場合、PollingThread310を起床させるPollingスケジュール情報を生成する。すなわち、
(1)
ユースケースAにおいては、「99%以上のパケットの到着確率でパケットが到着するタイミングで起床させる」という基準でスケジュール情報を生成する
ユースケースBにおいては、「80%以上のパケットの到着確率でパケットが到着するタイミングで起床させる」という基準でスケジュール情報を生成する
ユースケースCにおいては、「50%以上のパケットの到着確率でパケットが到着するタイミングで起床させる」という基準でスケジュール情報を生成する
等である。
(2)
運用者は、確率0から1(0%から100%)の範囲であらかじめ閾値を決定できる。確率の閾値は、0または1もありうるとし、事実上、確率を適用しない(すべて適用する)こともある。例えば、特定UE等については、確率を適用しない除外規定があるなどである。
(3)
運用者は、動的にこの閾値(上記の例では、閾値99%、閾値80%、閾値50%)を変更することができる。
<Polling指示部230>
Polling指示部230は、Polling判定部220から時刻同期情報とPollingスケジュール情報を受け取り、時刻同期情報およびPollingスケジュール情報をもとに、Pollingに必要な時刻と時間を示すPollingスケジュールをPollingThread310に配信してPollingThread310をトリガし、当該PollingThread310をPollingスケジュールで指示した時間だけPollingさせる。
具体的には、Polling指示部230は、データ高速転送ミドルウェア300のPollingスレッド(PollingThread)310へPollingスケジューリング(図1の符号q参照)を指示する。後記するように、Polling指示部230が、PollingThread310に指示するPollingスケジューリングは、Polling指示部230が、PollingThread310を実際に起床させるトリガである。
[データ高速転送ミドルウェア300]
データ高速転送ミドルウェア300は、Pollingモデルによるパケット転送を行うデータ転送部である。データ高速転送ミドルウェア300は、プログラムの実行単位であるPollingThread310を複数有する。PollingThread310は、Polling指示部230からのPollingスケジューリングによってSleepから起床し、Pollingモデルによるパケット転送を行う。PollingThread310は、Polling指示部230からのPollingスケジューリングを受け、パケットの到着確率が所定値以上のタイミングで起床し、それ以外はSleepする(図1の符号r参照)。
[特性に応じたトラフィックのカテゴライズ]
サーバ内データ転送装置200は、データ高速転送ミドルウェア300内のPollingスレッドをパケットの到着確率が所定値以上のタイミングで起床させ、それ以外はSleepさせる。このような制御を実現するため、データ到着パターンの特性をカテゴライズしておく(図2参照)。
例えば、RAN(Radio Access Network)ユースケースでは、トラフィックを、特性に応じてカテゴライズし、そのそれぞれのカテゴリに対してPollingの必要有無を定めることができる。
データ到着パターンとそれに応じたSleep制御対応策の例について説明する。
Sleep制御スケジュールに用いることができるトラフィック特性情報(図1の符号o参照)を収集できるユースケースとしてRANがある。RANの無線信号は、チャンネル毎にデータ到着パターンに特徴がある。それらの特徴毎に適するSleep制御スケジュールを定めることが可能である。
図2は、データ到着パターン例に応じた、チャンネル例、データ到着の特徴およびPolling判定部220によるSleep制御対応策を説明する図である。
データ到着パターン例には、1.いつデータが到着するか予測不可の場合、2.データ到着タイミングを予測可能な場合とそうでない場合、3.データ到着タイミングを予測可能な場合がある。
1.いつデータが到着するか予測不可の場合のチャンネル例は、PRACH(Physical Random Access Channel)(第1チャンネル)があり、データ到着の特徴は、「いつデータが到着するか予測不可」である。Polling判定部220によるSleep制御対応策は、Sleep状態で待機し、パケットが届いた際にはハードウェア割り込みにより起床する。PRACHに届くパケットは多少の遅延時間は許容されるため、Pollingで待機する必要はないものとする。Pollingで待機していると、ハードウェア割り込みからの起床がないので、低遅延となる。また、いつデータが到着するか予測不可の場合は、一般に、多少の遅延時間は許容されるカテゴリに属している。このため、Pollingで待機する必要はなく、ハードウェア割り込みにより起床する。
2.予測可能な場合と予測不可の場合の両方の可能性があるときのチャンネル例は、PUSCH(Physical Uplink Shared Channel)(第2チャンネル)があり、データ到着の特徴は、「UE(User Equipment)が帰属してない場合はデータが到着しない、UEが帰属している場合はデータが到着する可能性がある」である。
UEの帰属について説明する。UEは、例えば基地局のネットワークに接続される携帯端末である。携帯端末のネットワーク側は、ユーザの携帯端末が使用可能な周波数領域と時間領域で分けられたリソースで通信することを事前に通知してあり、該当携帯端末はその周波数領域と時間領域で通信可能であることが分かっている。UEの帰属とは、基地局が指定した周波数領域と時間領域に該当携帯端末が属しているこという(携帯端末が使用している/していないは問わない)をいう。ここで、基地局が指定した周波数領域と時間領域に割り当てられているからといって、必ずしも該当携帯端末が、基地局が指定した周波数領域と時間領域に帰属していて通信を行って来るかどうかは分からない(UEが帰属していれば、そのリソースを使って通信が行われる場合と通信が行われない場合とがある)。UEの帰属していないとは、リソースは割り当てられているがどの携帯端末もそのリソースを使っていない場合をいう(割り当てられたリソースを使って通信が行われることはない)。
Polling判定部220によるSleep制御対応策は、UEが帰属していない場合はSleepを行う。UEが帰属していない場合は、そもそもデータが到着しない場合であるため、Sleepを行う。
また、UEが帰属している場合は更に、UEのこれまでのパケット送信特性等の情報に応じた制御も可能である。例えば、UEは帰属しているが、該当UEはデータ送信確率が1%(1%は、一例であり限定されない。)に満たないため、PollingではなくSleepを行う。
3.いつデータが到着するか予測可能な場合のチャンネル例は、SRS(Sounding Reference Signal)(第3チャンネル)があり、データ到着の特徴は、「信号を受信するサブフレーム内のタイミングが確定している」である。Polling判定部220によるSleep制御対応策は、データが到着する直前にPollingを開始する。Pollingを開始すると、ハードウェア割り込みからの起床がないので、低遅延となる。
いつデータが到着するか予測可能な場合のチャンネル例(「SRS」)は、上記2.のUEの帰属とは、無関係である。SRSは、時刻同期のために基地局が発する同期信号や基地局が情報を得るために送信する信号であり、UEの使用状況やUEの帰属とは、無関係に、特定の時間・周波数領域を使って信号を送信する。いつデータが到着するか予測可能であるため、データが到着する直前にPollingを開始する。
なお、図2に示すデータ到着パターン特性のカテゴライズを用いたSleep制御スケジュール決定については、図8により後記する。
トラフィック特性情報収集部210によるトラフィック特性情報について説明する。
図3は、トラフィック特性情報の一例である、トラフィック特性情報収集部210から得た時間・周波数領域へのチャンネル割り当て情報を示す図である。
図3に示すチャンネル割り当て情報は、基準:hh時mm分ss秒xxxxから各時間領域1-80[usec]、81-160[usec]、161-240[usec]、321-400[usec]、401-480[usec]ごとに、周波数領域K-L[Hz]、L-M[Hz]、M-N[Hz]、N-O[Hz]、O-P[Hz]で割り当てられたチャンネルで示される。
321-400[usec]、401-480[usec]とM-N[Hz]、N-O[Hz]、O-P[Hz]で割り当てられたチャンネルは、同期信号などの最も優先度の高いSRSである。このSRSは、特定の時間・周波数領域を使って送信される信号(なお、説明の便宜上、SRSをチャンネルと呼ぶ。)であり、いつデータが到着するか予測可能である。
また、81-160[usec]、161-240[usec]、321-400[usec]とM-N[Hz]、N-O[Hz]、O-P[Hz]で割り当てられたチャンネルは、PUSCHである。このPUSCHは、データ到着タイミングを予測可能な場合とそうでない場合のチャンネルである。
また、1-80[usec]、81-160[usec]、161-240[usec]、321-400[usec]、401-480[usec]の全時間帯に亘ってL-M[Hz]で割り当てられたチャンネルは、PRACHである。このPRACHは、いつデータが到着するか予測不可の場合のチャンネルである。
なお、図3において空欄は、チャンネル割り当て情報がない状態である。
例えば、周波数領域L-M[Hz]では、時間帯域に関係なく(1-80[usec]、81-160[usec]、161-240[usec]、321-400[usec]、401-480[usec]の全時間帯で)チャンネルPUSCHが割り当てられる。
また、周波数領域M-N[Hz]、N-O[Hz]、O-P[Hz]M-N[Hz]では、1-80[usec]ではチャンネル割り当て情報がなく、81-160[usec]、161-240[usec]、321-400[usec]ではチャンネルPUSCHが割り当てられ、161-240[usec]、321-400[usec]ではSRSが割り当てられる。
以下、上述のように構成されたサーバ内データ転送システムの動作を説明する。
[全体動作]
図4は、サーバ内データ転送システムの動作を説明する図である。図1と同一構成部分には、同一符号を付している。
図4に示すApplications2は、例えばL1/L2Application(物理層/データリンク層を対象とするデータ処理アプリケーション)である。
データ高速転送ミドルウェア300は、時系列によるパケット到着頻度の情報を保持する共有メモリ320を有する。共有メモリ320は、各UEが割り当てられているリソースブロックに実際にパケットが到着した回数を格納する。共有メモリ320は、パケットの到着統計をSleep制御スケジュールに用いることができる統計情報としてトラフィック特性情報収集部210に伝達する。
トラフィック特性情報収集部210は、例えばRANへの適用例では以下のようにトラフィック特性情報を収集する。すなわち、トラフィック特性情報収集部210は、定期的にL1/L2Applicationから時間・周波数領域へのチャンネル割り当て情報を取得する。また、トラフィック特性情報収集部210は、時刻同期を行い、チャンネル割り当て情報と時刻の情報を合わせてPolling判定部220に情報を受け渡す。
トラフィック特性情報収集部210は、共有メモリ320を介してパケット到着頻度の情報を収集し、トラフィック特性情報としてPolling判定部220へ伝達する。
図5は、データ高速転送ミドルウェア300との連携によるパケットの到着統計のトラフィック特性の取得を説明する図である。図5において、「+」は各UEにパケットが到着した回数を示している。例えば、UE1は、UE1が割り当てられているリソースブロックに実際にパケットが到着した回数が4である。同様に、UE2は、パケットが到着した回数が2、UE3は、パケットが到着した回数が5である。
データ高速転送ミドルウェア300は、各UEが割り当てられているリソースブロックに実際にパケットが到着した回数を収集し、共有メモリ320に格納する。データ高速転送ミドルウェア300は、共有メモリ320に格納された情報をトラフィック特性情報収集部210に伝達する(図4の符号t参照)。
Polling判定部220は、トラフィック特性情報収集部210から受け取ったトラフィック特性情報(図3参照)をもとに、データ高速転送ミドルウェア300のPolling Thread(Pollingスレッド)310をパケットの到着確率が所定値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成して、Polling指示部230へ伝達する(図4の符号p参照)。
Polling指示部230は、Polling判定部220から時刻同期情報とPollingスケジュール情報を受け取り、時刻同期情報およびPollingスケジュール情報をもとに、Pollingが必要な時刻と時間を示すPollingスケジュールをデータ高速転送ミドルウェア300のPollingThread310へPollingスケジューリング(図4の符号q参照)に配信して当該PollingスレッドをPollingスケジュールで指示した時間だけPollingさせる。
[トラフィック特性情報収集部210の動作]
<トラフィック特性情報収集処理1>
図6は、トラフィック特性情報収集部210のトラフィック特性情報収集処理1を示すフローチャートである。図6は、トラフィック特性情報収集部210が、L1/L2Application(上位アプリケーション)から時間・周波数領域へのチャンネル割り当て情報を取得する(図4の符号s参照)場合の処理フローである。
ステップS11でトラフィック特性情報収集部210(図4参照)は、L1/L2Applicationからトラフィック特性情報としてチャンネル割り当て情報を定期的に(もしくは、チャンネル割り当てパターンが変更されるタイミングで)収集を行う。
ステップS12でトラフィック特性情報収集部210は、時刻同期を行い、チャンネル割り当て情報を時間軸に沿った形にする。すなわち、図3に示すように、トラフィック特性情報収集部210は、チャンネル割り当て情報を、基準:hh時mm分ss秒xxxxから時間軸に沿って配置する。
ステップS13でトラフィック特性情報収集部210は、時刻同期されたチャンネル割り当て情報をPolling判定部220(図4参照)に配信して本フローの処理を終了する。
<トラフィック特性情報収集処理2>
図7は、トラフィック特性情報収集部210のトラフィック特性情報収集処理2を示すフローチャートである。図7は、トラフィック特性情報収集部210が、データ高速転送ミドルウェア300からパケットの到着統計を取得する(図4の符号t参照)場合の処理フローである。
ステップS21でトラフィック特性情報収集部210(図4参照)は、データ高速転送ミドルウェア300(図4参照)が収集し、共有メモリ320(図4参照)に書き込んだ各UEのパケット到着頻度の情報を定期的に収集する。
ステップS22でトラフィック特性情報収集部210(図4参照)は、「UEのID:パケット到着頻度情報」の形でデータを成形する。パケット到着頻度情報は、
1.これまで全ての到着割合
2.直前の共有メモリ320(図4参照)からデータ収集時の到着割合
の2種類を保持する。
トラフィック特性情報収集部210は、このパケット到着頻度情報を用いて、後記図9の「直前に割り当てられたリソースを使い通信を行ったUEであること」「リソースが割り当てられるのが初回のUEであること」を判断することができる。なお、初回のUEであることは、UEに割り振られているIDをもとに、すべてのパケット到着割合と直前のパケット到着割合を取得し、直前のパケット到着がなければ初回のUEであると判断する(例えば、UEのIDがそもそも記録されていない場合は初回の通信であると判断する)。
ステップS23でトラフィック特性情報収集部210は、チャンネル割り当て情報(図3参照)をPolling判定部220に配信(図4の符号o参照)する際、チャンネル割り当て情報にPUSCHのチャンネルが含まれていれば、同時に「UEのID:パケット到着頻度情報」の情報を配信して本フローの処理を終了する。
<データ到着タイミング情報の補正>
データ到着タイミング情報の補正について説明する。
図1に示す対向装置170と時刻同期がとれていないことや、対向装置170内で一定のデータ処理時間が発生すること等が原因で、トラフィック特性情報収集部210(図1および図4参照)がPolling判定部220に渡すタイミング情報と実際のデータ到着タイミング情報の間に、定常的あるいはデータサイズ等に応じた規則的差分が生じる場合がある。この場合、データ高速転送ミドルウェア300(図1および図4参照)が実際のパケット到着時刻をトラフィック特性情報収集部210に送付し、トラフィック特性情報収集部210がその差分を補正することによって対応してもよい。
以上、トラフィック特性情報収集部210の動作について説明した。
[Polling判定部220の動作]
RANユースケースにおいて、トラフィック特性情報収集部210から、図3に示す時間・周波数領域へのチャンネル割り当て情報が得られた場合、Polling判定部220は以下のようにSleep制御スケジュールを決定し、決定したSleep制御スケジュールをもとにPollingスケジュール情報を生成する。
<Sleep制御スケジュール決定処理>
図8は、Polling判定部220におけるSleep制御スケジュール決定処理を示すフローチャートである。本フローは、図2に示すデータ到着パターン特性のカテゴライズを用いてSleep制御スケジュールを決定する。
ステップS31でPolling判定部220は、各時間領域に対して、周波数領域のチャンネル割り当て情報を走査(本明細書において、走査とは、トラフィック特性情報(図3参照)を、基準から時間的終端まで時間的に順に確認していくことをいう)する。
ステップS32でPolling判定部220は、該当時間のいずれかの周波数ブロックに「パケットが到着することがわかっている」チャンネル(図3のトラフィック特性情報の場合、「SRS」)が割り当てられているか否かを判別する。Polling判定部220は、例えば、図3に示すトラフィック特性情報を、基準から時間的終端(1-80[usec]から401-480[usec])まで走査したときに、「SRS」が周波数領域M-N[Hz]、N-O[Hz]、O-P[Hz]で、かつ、時間領域321-400[usec]、401-480[usec]で割り当てられていることを判別する。
該当時間のいずれかの周波数ブロックに「パケットが到着することがわかっている」チャンネル(「SRS」)が割り当てられていない場合(S32:No)、ステップS33に進み、割り当てられている場合(S32:Yes)、ステップS35に進む。
ステップS33でPolling判定部220は、該当時間のいずれかの周波数ブロックに「UEの帰属有無によって、パケットが来るか来ないかに依存する」チャンネル(図3のトラフィック特性情報の場合、「PUSCH」)が割り当てられているか否かを判別する。Polling判定部220は、例えば、図3に示すトラフィック特性情報を、基準から時間的終端(1-80[usec]から401-480[usec])まで走査したときに、「PUSCH」が周波数領域M-N[Hz]、N-O[Hz]、O-P[Hz]で、かつ、時間領域81-160[usec]、161-240[usec]、241-320[usec]で割り当てられていることを判別する。
該当時間のいずれかの周波数ブロックに「UEの帰属有無によって、パケットが来るか来ないかに依存する」チャンネル(「PUSCH」)が割り当てられていない場合(S33:No)、ステップS34に進み、割り当てられている場合(S33:Yes)、ステップS36に進む。
ステップS34でPolling判定部220は、該当時間はデータ高速転送ミドルウェア300内のPollingスレッドをSleepさせ、パケット到着時には割り込みモードで起動させるSleep制御スケジュール決定を行って本フローの処理を終了する。すなわち、上記ステップS33において、「PUSCH」が割り当てられていない場合、ステップS34でPolling判定部220は、Sleep状態で待機し、パケットが届いた際にはハードウェア割り込みにより起床する。
一方、上記ステップS32で(「SRS」)が割り当てられている場合、ステップS35でPolling判定部220は、該当時間は起床し、Pollingによってパケット到着を待機して本フローの処理を終了する。Polling判定部220は、該当時間は起床し、データが到着する直前にPollingを開始することで、ハードウェア割り込みからの起床を回避し、低遅延を実現できる。
上記ステップS33で(「PUSCH」)が割り当てられている場合、ステップS36でPolling判定部220は、UEが帰属しているか否かを判別する。
上記ステップS36でUEが帰属していない場合、ステップS37でPolling判定部220は、該当時間はSleepして本フローの処理を終了する。UEが帰属していない場合は、(「PUSCH」)が割り当てられてたとしてもそもそもデータが到着しない場合であるため、Polling判定部220は、該当時間はデータ高速転送ミドルウェア300内のPollingスレッドをSleepさせるSleep制御スケジュール決定を行って本フローの処理を終了する。
一方、上記ステップS36でUEが帰属している場合、ステップS38でPolling判定部220は、該当UEの特性や統計に応じたロジック(図9で後記するロジック)を適用して本フローの処理を終了する。
以上の処理により、サーバ内データ転送装置200は、データ高速転送ミドルウェア300内のPollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせることができる(「ステップS34のSleep制御スケジュール決定」参照)。Polling判定部220は、パケットの到着確率が著しく低いときは、Sleepさせるのが妥当であると判断する。
しかしながら、パケットの到着確率が著しく低くSleepさせた場合において、Sleep中にパケットが到着してしまうことはありうる。データ高速転送ミドルウェア300は、パケット到着時に割り込みモードで起床する機能を元々備えている。Sleep中にパケットが到着してしまった場合、データ高速転送ミドルウェア300は、この機能を使って割り込みモードで起床(NICからハードウェア割り込みが立ち上がり、NICからの指示によりデータ高速転送ミドルウェア300が起床)する。ただし、割り込みモードで起床するので、低遅延性は図れない。補足して説明する。
ハードウェア割り込みからの起床は、下記デメリットがある。すなわち、ハードウェア割り込みからの起床の方がPollingに比べて遅延時間が増大する特徴がある。このため、データ高速転送ミドルウェア300が起床しておいてPollingを開始してパケットを取得した方が、ハードウェア割り込みのコンテキストから起床されるよりも遅延時間が小さくなる。このため、最も理想的なパターンとしては、事前に(特に、パケット到着がある直前に)起床してPollingを開始していることであり、このとき遅延時間が最小となる。最悪、Sleep中で起床できなかった場合でも遅延時間は多少増大したとしても、ハードウェア割り込みによって起床させることはできる。
ちなみに、データ高速転送ミドルウェア300が起床してPollingしている場合には、データ高速転送ミドルウェア300側でハードウェア割り込みの立ち上げを禁止する。すなわち、ハードウェア割り込みが起こらなくてもパケットが到着したかどうかはPollingによって検知できている状態であるため、ハードウェア割り込みを立ち上げる必要はなく、禁止する形がとれる(ハードウェア割り込みの立ち上げを禁止した状態でPollingをしている)。
以上のように、Polling判定部220は、Sleep制御スケジュールを決定し、決定したSleep制御スケジュールをもとにPollingスケジュール情報を生成する。
図9は、統計情報例に応じた、データの特徴例、特徴から推察できることおよびPolling判定部220によるSleep制御対応策を説明する図である。図9は、図8のステップS38の該当UEの特性や統計に応じたロジックを説明する。
統計情報例には、1.該当ユーザの通信のバースト性、2.該当ユーザがライトユーザか否か、3.該当ユーザにリソースが割り当てられるのは初回か否か、4.該当ユーザに対する下りリンクの通信情報がある。以下、順に説明する。
1.統計情報例が該当ユーザの通信のバースト性の場合
データの特徴例は、「該当UEは直前に割り当てられたリソースを使い、通信を行っている」である。このデータ特徴から推察できることは、「前回通信を行っていたUEであれば、今回のリソースでもデータを送信してくる確率が高い」ことである。Polling判定部220によるSleep制御対応策は、今回のリソースでもデータを送信してくる確率が高いUEであると判断してPollingによってパケットを待機する。
2.統計情報例において該当ユーザがライトユーザ(UEが帰属しているにも拘らず、割り当てられたリソースを使って通信を行ったことが殆どないユーザ;初回基地局に同期したのみのユーザなど)か否かの場合
データの特徴例は、「該当UEは割り当てられたリソースをこれまで1%しか使っていない」である。このデータ特徴から推察できることは、「今回のリソースでもデータを送信してくる確率が低い」ことである。Polling判定部220によるSleep制御対応策は、このリソースではデータを送信してくる確率が低いUEであると判断してSleepによってパケットを待機する。
3.統計情報例が該当ユーザにリソースが割り当てられるのは初回か否かの場合
データの特徴例は、「該当UEによる通信はこれまでなく、新規に割り当て要求を行ってきてその最初の通信である」である。このデータ特徴から推察できることは、「初回であり、データを送信してくる確率が高い」ことである。初回の場合は、上記1.の前回通信を行っていたUEの場合と同様にデータを送信してくる確率が高いUEであると判断して、Polling判定部220によるSleep制御対応策は、Pollingによってパケットを待機する。
4.統計情報例が該当ユーザに対する下りリンク(基地局からUEに対してメッセージを送った場合のリンク)の通信情報の場合
データの特徴例は、「下りリンクにて、該当UEに対する何らかの要求メッセージが送られている」である。このデータ特徴から推察できることは、「その要求に応答するべく、直ちにデータを送信してくる確率が高い」ことである。基地局からUEに対してメッセージを送った場合、該当UEは基地局に応答する確率が高いと判断して、Polling判定部220によるSleep制御対応策は、Pollingによってパケットを待機する。
<Pollingスケジュール情報配信処理>
図10は、Polling判定部220のPollingスケジュール情報配信処理を示すフローチャートである。
ステップS41でPolling判定部220は、トラフィック特性情報収集部からチャンネル割り当て情報が配信されることを契機に本プログラムを起動する。
ステップS42でPolling判定部220は、トラフィック特性情報収集部210がApplications2(図4のL1/L2Application)から収集して、Polling判定部220に配信されたチャンネル割り当て情報(図3参照)について時間的なスロットに分割し(図3の例では80[usec]ごとに分割)、各スロットにどのチャンネルが割り当てられているか走査する。
ステップS43でPolling判定部220は、スロットのいずれかの周波数ブロックに「パケットが到着することがわかっている」チャンネル(図3のトラフィック特性情報の場合、「SRS」)が含まれるか否かを判別する。ここで、ステップS43は、図8のフローのステップS32に対応し、後記ステップS46は、図8のフローのステップS35に対応する。ステップS43では、パケットが到着することが分かっている時間・周波数領域のチャンネルに、最も優先度の高い「SRS」が割り当てられている場合は、ステップS44以降に進まずに、ステップS46に移行する。
スロットのいずれかの周波数ブロックに「パケットが到着することがわかっている」チャンネル(「SRS」)が含まれていない場合(S43:No)、ステップS44でPolling判定部220は、スロットのいずれかの周波数ブロックに「UEの帰属有無によって、パケット到着特性が変わる」チャンネル(図3のトラフィック特性情報の場合、「PUSCH」)が含まれるか否かを判別する。ここで、ステップS44は、図8のフローのステップS33に対応し、後記ステップS47は、図8のフローのステップS36に対応する。
すなわち、ステップS44では、「SRS」の次に優先度の高い「PUSCH」が割り当てられているか判定し、スロットのいずれかの周波数ブロックに「UEの帰属有無によって、パケット到着特性が変わる」チャンネル(「PUSCH」)が含まれていない場合(S44:No)、ステップS45でPolling判定部220は、該当時間はsleepすることを決定し、次の時間的スロットを走査してステップS48に進む。
一方、上記ステップS43でスロットのいずれかの周波数ブロックに「パケットが到着することがわかっている」チャンネル(「SRS」)が含まれている場合(S43:Yes)、ステップS46でPolling判定部220は、該当時間はPollingを行うことを決定し、次の時間的スロットを走査してステップS48に進む。
また、上記ステップS44でスロットのいずれかの周波数ブロックに「UEの帰属有無によって、パケット到着特性が変わる」チャンネル(「PUSCH」)が含まれている場合(S44:Yes)、ステップS47でPolling判定部220は、所定ロジック(図11のサブルーチンに示すロジック)を適用してPolling可否を決定し、次の時間的スロットを走査してステップS48に進む。
ステップS48では、Polling判定部220は、与えられたチャンネル割り当て情報の時間的終端(トラフィック特性情報収集部210によって定義された時間的終端(トラフィック特性情報収集部210が次のどこまでを収集するか定義した時間的区切り);例えば1msごとの時間的区切り)であるか否かを判別する。
与えられたチャンネル割り当て情報の時間的終端でない場合(S48:No)、上記ステップS42に戻ってチャンネル割り当て情報の時間的終端になるまで上記各ステップを繰り返す。与えられたチャンネル割り当て情報の時間的終端の場合(S48:Yes)、ステップS49に進む。
ステップS49でPolling判定部220は、各時間的スロットに対してPollingを行うかSleepを行うかをまとめ、時刻情報(時間軸の基準を決めるための情報)と共にPolling指示部に配信して本フローの処理を終了する。例えば、Polling判定部220は、各時間的スロット(図8の例では80[usec]ごとに分割されたスロット)に対して、あるスロットではPollingを行い、他のスロットではSleepを行うなど、80[usec]ごとの例えば10回分の情報としてまとめ、まとめた情報(「Polling必要有無の情報」)を時刻情報と共にPolling指示部230にPollingスケジュール情報として渡す。
図11は、Polling判定部220のPolling可否決定のロジックを示すサブルーチンである。図11は、図10のステップS47のサブルーチンコールにより呼び出され実行される。
ステップS51でPolling判定部220は、配信されたチャンネル割り当て情報を走査している際、該当タイムスロットのいずれかの周波数ブロックに「UEの帰属有無によってパケット到着特性が変わるチャンネル」が含まれている場合に本ロジックはトリガ(再設定)される。
ステップS52でPolling判定部220は、該当チャンネルのいずれにもUEが帰属しているか否かを判別する。
上記ステップS52で該当チャンネルのいずれかにUEが帰属している場合(S52:Yes)、ステップS53でPolling判定部220は、トラフィック特性情報収集部210からチャンネル割り当て情報と同時に配信された「UEのID:パケット到着特性」の情報群のキーに今回帰属しているUEが存在するかを確認する。
ステップS54でPolling判定部220は、該当UEのIDが存在するか否かを判別する。
上記ステップS54で該当UEのIDが存在する場合(S54:Yes)、ステップS55でPolling判定部220は、該当UEが直前に割り当てられたリソースを用いてパケットを送信しているか否かを判別する。
上記ステップS55で該当UEが直前に割り当てられたリソースを用いてパケットを送信していない場合(S55:No)、ステップS56でPolling判定部220は、該当UEはこれまで割り当てられたリソースを1%しか使っていないか否か、つまり、1%は使っているか否かを判別する。
上記ステップS56で該当UEはこれまで割り当てられたリソースを1%は使っていない場合(S56:No)、ステップS57でPolling判定部220は、該当時間はPollingを行うことを決定して図10のステップS47に戻る。
一方、上記ステップS52でPolling判定部220は、該当チャンネルのいずれにもUEが帰属していない場合(S52:No)、ステップS58でPolling判定部220は、該当時間はSleepを行うことを決定して図10のステップS47に戻る。本実施形態では、本フローは、図10のステップS47のサブルーチンコールにより呼び出され実行される態様としたため、図10のステップS47に戻るが、図11の処理を単独で実行するものでもよい。
上記ステップS54で該当UEのIDが存在しない場合(S54:No)、ステップS59でPolling判定部220は、該当時間はSleepを行うことを決定して図10のステップS47に戻る。
上記ステップS55で該当UEが直前に割り当てられたリソースを用いてパケットを送信している場合(S55:Yes)、ステップS60でPolling判定部220は、該当時間はPollingを行うことを決定して図10のステップS47に戻る。
上記ステップS56で該当UEはこれまで割り当てられたリソースを1%は使っている場合(S56:Yes)、ステップS61でPolling判定部220は、該当時間はSleepを行うことを決定して図10のステップS47に戻る。
以上、Polling判定部220の動作について説明した。
[Polling指示部230の動作]
図12は、Polling指示部230の動作を示すフローチャートである。
ステップS71でPolling指示部230(図1および図4参照)は、Polling判定部220(図1および図4参照)から、時刻同期(例えば図3のように80[usec]ごとに)された「Polling必要有無の情報」(図10のステップS49参照)を受け取る。
ステップS72でPolling指示部230は、Pollingに必要な時刻と必要な時間をデータ高速転送ミドルウェア300に配信するとともに、データ高速転送ミドルウェア300のPolling Thread310をトリガ(Polling Thread310を起床させる)して本フローの処理を終了する。上記トリガについて述べる。すなわち、Polling指示部230は、データ高速転送ミドルウェア300に対し、Pollingさせる該当時間の直前になったとき、Polling指示部230がPolling Thread310を起床させる。例えば、Polling指示部230は、Polling Thread310に対し、次の例えば160[usec]で、Pollingを行いなさい、次の例えば80[usec]間は、Pollingを行いなさい等、Polling開始とPolling時間を指示する。このように、Polling指示部230が、Polling Thread310を実際に起床させることをトリガ(図1では、トリガを「Pollingスケジューリング」と記載している)という。
[データ高速転送ミドルウェア300の動作]
図13は、データ高速転送ミドルウェア300の動作を示すフローチャートである。
ステップS81でデータ高速転送ミドルウェア300(図1および図4参照)は、Polling指示部230にトリガされることにより、Polling Thread310は指示された時間だけPollingを行う。
ステップS82でデータ高速転送ミドルウェア300は、Pollingが終了した場合、自動的にSleepして本フローの処理を終了する。
[ハードウェア構成]
上記実施形態に係るサーバ内データ転送装置200は、例えば図14に示すような構成のコンピュータ900によって実現される。
図14は、サーバ内データ転送装置200の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU901、ROM902、RAM903、HDD904、通信インターフェイス(I/F:Interface)906、入出力インターフェイス(I/F)905、およびメディアインターフェイス(I/F)907を有する。
CPU901は、ROM902またはHDD904に格納されたプログラムに基づいて動作し、図1および図4に示すサーバ内データ転送装置200の各部の制御を行う。ROM902は、コンピュータ900の起動時にCPU901によって実行されるブートプログラムや、コンピュータ900のハードウェアに依存するプログラム等を格納する。
CPU901は、入出力I/F905を介して、マウスやキーボード等の入力装置910、および、ディスプレイ等の出力装置911を制御する。CPU901は、入出力I/F905を介して、入力装置910からデータを取得するともに、生成したデータを出力装置911へ出力する。なお、プロセッサとしてCPU901とともに、GPU(Graphics Processing Unit)等を用いてもよい。
HDD904は、CPU901により実行されるプログラムおよび当該プログラムによって使用されるデータ等を記憶する。通信I/F906は、通信網(例えば、NW(Network)920)を介して他の装置からデータを受信してCPU901へ出力し、また、CPU901が生成したデータを、通信網を介して他の装置へ送信する。
メディアI/F907は、記録媒体912に格納されたプログラムまたはデータを読み取り、RAM903を介してCPU901へ出力する。CPU901は、目的の処理に係るプログラムを、メディアI/F907を介して記録媒体912からRAM903上にロードし、ロードしたプログラムを実行する。記録媒体912は、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto Optical disk)等の光磁気記録媒体、磁気記録媒体、導体メモリテープ媒体又は半導体メモリ等である。
例えば、コンピュータ900が本実施形態に係る一装置として構成されるサーバ内データ転送装置200として機能する場合、コンピュータ900のCPU901は、RAM903上にロードされたプログラムを実行することによりサーバ内データ転送装置200の機能を実現する。また、HDD904には、RAM903内のデータが記憶される。CPU901は、目的の処理に係るプログラムを記録媒体912から読み取って実行する。この他、CPU901は、他の装置から通信網(NW920)を介して目的の処理に係るプログラムを読み込んでもよい。
[効果]
以上説明したように、本実施形態に係るサーバ内データ転送装置は、Pollingモデルによるパケット転送を行うデータ転送部(データ高速転送ミドルウェア300)のPollingスレッド(Polling Thread310)に対して、Sleep制御を行うサーバ内データ転送装置200であって、パケット転送におけるトラフィック特性情報を収集するトラフィック特性情報収集部210と、トラフィック特性情報収集部210から受け取ったトラフィック特性情報をもとに、Pollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成するPolling判定部220と、Polling判定部220から時刻同期情報とPollingスケジュール情報を受け取り、時刻同期情報およびPollingスケジュール情報をもとに、Pollingが必要な時刻と時間を示すPollingスケジュールをPollingスレッドに配信して当該PollingスレッドをPollingスケジュールで指示した時間だけPollingさせるPolling指示部230と、を備える。
このようにすることで、Polling判定部220は、トラフィック特性情報収集部210から受け取ったトラフィック特性情報をもとに、データ高速転送ミドルウェア300がPollingモードによって受信処理を行うかSleepを行うかを判定し、Pollingスケジュール情報を生成する。Polling指示部230は、Polling判定部220から受け取った時刻同期情報およびPollingスケジュール情報をもとに、PollingスケジュールをPollingスレッドに配信して指示した時間だけPollingさせる。これにより、データ高速転送ミドルウェア300内のPollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせることができ、データ転送の低遅延性と省電力性を実現することができる。
また、サーバ内データ転送装置200は、サーバ内のデータ転送遅延を、割込モデルではなくpollingモデルで実現することができ、低遅延化の達成が可能である。例えば、RANにおける信号処理のように、トラフィック特性によってSleep制御スケジュールを決定できるユースケースにおいて、サーバ内データ転送装置200は、Pollingモデルによって受信待機するかSleepするかの判定を行うことで、トラフィック特性に応じた受信スケジュールを行うことができる。これにより、サーバ内データ転送装置200は、低遅延性を維持しつつ省電力化を図ることができる。
サーバ内データ転送装置200において、トラフィック特性情報収集部210は、上位アプリケーション(Applications2)から時間および周波数領域のチャンネル割り当て情報を収集し、トラフィック特性情報としてPolling判定部220へ伝達する。
このように、L1/L2Application(上位アプリケーション)は、データ転送のための時間・周波数領域のチャンネル割り当て情報を有している。トラフィック特性情報収集部210は、Sleep制御スケジュールに用いる情報を上位アプリケーションから収集することができる。よって、サーバ内データ転送装置200は、新たな部品等を追加することなく、またアプリケーションを改変することなく、汎用的にトラフィック特性情報を取得することができる。
サーバ内データ転送装置200において、データ転送部(データ高速転送ミドルウェア300)は、時系列によるパケット到着頻度の情報を保持する共有メモリ320を有し、トラフィック特性情報収集部210は、共有メモリ320を介してパケット到着頻度の情報を収集し、トラフィック特性情報としてPolling判定部220へ伝達する。
このように、トラフィック特性情報収集部210は、時系列によるパケット到着頻度の特徴などの、Sleep制御スケジュールに用いる情報をデータ転送部(データ高速転送ミドルウェア300)から収集することができる。よって、サーバ内データ転送装置200は、アプリケーションを改変することなく、時系列によるパケット到着頻度の特徴などの、Sleep制御スケジュールに用いる情報を取得することができる。
サーバ内データ転送装置200において、トラフィック特性情報は、パケット到着パターン(データ到着パターン)が時間領域と周波数領域とで割り当てられたチャンネルを有し、このチャンネルは、パケット到着が予測不可の場合の第1チャンネル(「PRACH」)と、パケット到着タイミングを予測可能な場合と予測不可の場合の第2チャンネル(「PUSCH」)と、パケット到着が予測可能な場合の第3チャンネル(「SRS」)と、を有し、Polling判定部220は、第1チャンネルの場合、PollingスレッドがSleep状態で待機し、パケットが到着した場合にはハードウェア割り込み割込により起床させるPollingスケジュール情報を生成し、第2チャンネルの場合、PollingスレッドがSleepを行うPollingスケジュール情報を生成し、第3チャンネルの場合、Pollingスレッドがパケットの到着する直前にPollingを開始するPollingスケジュール情報を生成する。
このように、サーバ内データ転送装置200は、RANの無線信号のように、チャンネル毎にデータ到着パターンの特徴毎に、適するSleep制御スケジュールを定めることが可能になる。また、第2チャンネル(「PUSCH」)のように、UEが帰属しているチャンネルに対しては、該当ユーザからのこれまでのトラフィック統計を反映したsleep制御スケジュールを生成することが可能になる。
[適用例]
サーバ内データ転送システム1000(図1参照)は、パケット到着頻度などの時間領域における特徴が定まったトラフィックであれば適用可能であるため、RANにおける上りリンクのトラフィックのみならず、下りリンクのトラフィック等にも適用が可能である。
また、サーバ内データ転送システム1000は、ネットワーク対向だけでなく、アクセラレータ対向に対しても適用が可能である。
なお、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)カード、光ディスク等の記録媒体に保持することができる。
2 Applications(上位アプリケーション)
110 HW
180 メモリ
200 サーバ内データ転送装置
210 トラフィック特性情報収集部
220 Polling判定部
230 Polling指示部
300 データ高速転送ミドルウェア(データ転送部)
310 Polling Thread(Pollingスレッド)
320 共有メモリ
1000 サーバ内データ転送システム
PRACH(第1チャンネル)
PUSCH(第2チャンネル)
SRS(第3チャンネル)

Claims (5)

  1. Pollingモデルによるパケット転送を行うデータ転送部のPollingスレッドに対して、Sleep制御を行うサーバ内データ転送装置であって、
    前記パケット転送におけるトラフィック特性情報を収集するトラフィック特性情報収集部と、
    前記トラフィック特性情報収集部から受け取った前記トラフィック特性情報をもとに、前記Pollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成するPolling判定部と、
    前記Polling判定部から時刻同期情報と前記Pollingスケジュール情報を受け取り、前記時刻同期情報および前記Pollingスケジュール情報をもとに、Pollingに必要な時刻と時間を示すPollingスケジュールを前記Pollingスレッドに配信して当該Pollingスレッドを前記Pollingスケジュールで指示した時間だけPollingさせるPolling指示部と、を備え
    前記トラフィック特性情報収集部は、上位アプリケーションから時間および周波数領域のチャンネル割り当て情報を収集し、前記トラフィック特性情報として前記Polling判定部へ伝達する
    ことを特徴とするサーバ内データ転送装置。
  2. Pollingモデルによるパケット転送を行うデータ転送部のPollingスレッドに対して、Sleep制御を行うサーバ内データ転送装置であって、
    前記パケット転送におけるトラフィック特性情報を収集するトラフィック特性情報収集部と、
    前記トラフィック特性情報収集部から受け取った前記トラフィック特性情報をもとに、前記Pollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成するPolling判定部と、
    前記Polling判定部から時刻同期情報と前記Pollingスケジュール情報を受け取り、前記時刻同期情報および前記Pollingスケジュール情報をもとに、Pollingに必要な時刻と時間を示すPollingスケジュールを前記Pollingスレッドに配信して当該Pollingスレッドを前記Pollingスケジュールで指示した時間だけPollingさせるPolling指示部と、を備え
    前記データ転送部は、時系列によるパケット到着頻度の情報を保持する共有メモリを有し、
    前記トラフィック特性情報収集部は、前記共有メモリを介してパケット到着頻度の情報を収集し、前記トラフィック特性情報として前記Polling判定部へ伝達する
    ことを特徴とするサーバ内データ転送装置。
  3. Pollingモデルによるパケット転送を行うデータ転送部のPollingスレッドに対して、Sleep制御を行うサーバ内データ転送装置であって、
    前記パケット転送におけるトラフィック特性情報を収集するトラフィック特性情報収集部と、
    前記トラフィック特性情報収集部から受け取った前記トラフィック特性情報をもとに、前記Pollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成するPolling判定部と、
    前記Polling判定部から時刻同期情報と前記Pollingスケジュール情報を受け取り、前記時刻同期情報および前記Pollingスケジュール情報をもとに、Pollingに必要な時刻と時間を示すPollingスケジュールを前記Pollingスレッドに配信して当該Pollingスレッドを前記Pollingスケジュールで指示した時間だけPollingさせるPolling指示部と、を備え
    前記トラフィック特性情報は、パケット到着パターンが時間領域と周波数領域とで割り当てられたチャンネルを有し、
    前記チャンネルは、
    パケット到着が予測不可の場合の第1チャンネルと、
    予測可能な場合と予測不可の場合の両方の可能性があるときの第2チャンネルと、
    パケット到着が予測可能な場合の第3チャンネルと、を有し、
    前記Polling判定部は、
    前記第1チャンネルの場合、前記PollingスレッドがSleep状態で待機し、パケットが到着した場合にはハードウェア割り込み割込により起床させる前記Pollingスケジュール情報を生成し、
    前記第2チャンネルの場合、前記PollingスレッドがSleepを行う前記Pollingスケジュール情報を生成し、
    前記第3チャンネルの場合、前記Pollingスレッドがパケットの到着する直前にPollingを開始する前記Pollingスケジュール情報を生成する
    ことを特徴とするサーバ内データ転送装置。
  4. Pollingモデルによるパケット転送を行うデータ転送部のPollingスレッドに対して、Sleep制御を行うサーバ内データ転送装置のサーバ内データ転送方法であって、
    前記パケット転送におけるトラフィック特性情報を収集するトラフィック特性情報収集ステップと、
    前記トラフィック特性情報収集ステップで受け取った前記トラフィック特性情報をもとに、前記Pollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成するPolling判定ステップと、
    前記Polling判定ステップから時刻同期情報と前記Pollingスケジュール情報を受け取り、前記時刻同期情報および前記Pollingスケジュール情報をもとに、Pollingに必要な時刻と時間を示すPollingスケジュールを前記Pollingスレッドに配信して当該Pollingスレッドを前記Pollingスケジュールで指示した時間だけPollingさせるPolling指示ステップと、を実行し、
    前記トラフィック特性情報収集ステップにおいて、上位アプリケーションから時間および周波数領域のチャンネル割り当て情報を収集し、前記トラフィック特性情報として前記Polling判定ステップへ伝達する
    ことを特徴とするサーバ内データ転送方法。
  5. Pollingモデルによるパケット転送を行うデータ転送部のPollingスレッドに対して、Sleep制御を行うサーバ内データ転送装置としてのコンピュータに、
    前記パケット転送におけるトラフィック特性情報を収集するトラフィック特性情報収集手順、
    前記トラフィック特性情報収集手順から受け取った前記トラフィック特性情報をもとに、前記Pollingスレッドをパケットの到着確率が所定閾値以上のタイミングで起床させ、それ以外はSleepさせるPollingスケジュール情報を生成するPolling判定手順、
    前記Polling判定手順から時刻同期情報と前記Pollingスケジュール情報を受け取り、前記時刻同期情報および前記Pollingスケジュール情報をもとに、Pollingに必要な時刻と時間を示すPollingスケジュールを前記Pollingスレッドに配信して当該Pollingスレッドを前記Pollingスケジュールで指示した時間だけPollingさせるPolling指示手順、
    を実行させ
    前記トラフィック特性情報収集手順において、上位アプリケーションから時間および周波数領域のチャンネル割り当て情報を収集し、前記トラフィック特性情報として前記Polling判定手順へ伝達する
    ことを実行させるためのプログラム。
JP2023565685A 2021-12-06 2021-12-06 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム Active JP7740368B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/044736 WO2023105578A1 (ja) 2021-12-06 2021-12-06 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2023105578A1 JPWO2023105578A1 (ja) 2023-06-15
JP7740368B2 true JP7740368B2 (ja) 2025-09-17

Family

ID=86729780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023565685A Active JP7740368B2 (ja) 2021-12-06 2021-12-06 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム

Country Status (2)

Country Link
JP (1) JP7740368B2 (ja)
WO (1) WO2023105578A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002300173A (ja) 2001-03-30 2002-10-11 Seiko Epson Corp 無線通信ネットワークにおける通信制御方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04172032A (ja) * 1990-11-06 1992-06-19 Nec Corp ポーリング制御方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002300173A (ja) 2001-03-30 2002-10-11 Seiko Epson Corp 無線通信ネットワークにおける通信制御方法

Also Published As

Publication number Publication date
WO2023105578A1 (ja) 2023-06-15
JPWO2023105578A1 (ja) 2023-06-15

Similar Documents

Publication Publication Date Title
CN109697122B (zh) 任务处理方法、设备及计算机存储介质
JP7310924B2 (ja) サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム
JP2025100826A (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
CN102662889A (zh) 中断处理方法、中断控制器及处理器
JP2024180507A (ja) サーバおよびプログラム
JP7740368B2 (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
JP7816498B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
WO2019074821A1 (en) MOBILE RESOURCE PLANNER
JP7754299B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
JP7662062B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
WO2022172366A1 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
JP7574902B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
CN113810167B (zh) 一种分布式系统的时序控制与同步方法
JP7852718B2 (ja) サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム
JP7709645B2 (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
JP2026074185A (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
CN118660017B (zh) 接收队列调度方法、设备、介质及计算机程序产品
WO2019120274A1 (zh) 用于socfpga的数据循环缓冲方法及装置、存储介质、终端
WO2024122065A1 (ja) 省電機能制御装置、計算システム、省電機能制御方法およびプログラム
CN121262546A (zh) 数据交互方法、平台、设备、介质及程序产品
CN120583035A (zh) 网络流量控制方法及装置、网络处理器、计算机程序产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250711

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: 20250805

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250818

R150 Certificate of patent or registration of utility model

Ref document number: 7740368

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150