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
JP7709645B2 - サーバ内データ転送装置、サーバ内データ転送方法およびプログラム - Google Patents
[go: Go Back, main page]

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

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

Info

Publication number
JP7709645B2
JP7709645B2 JP2023565786A JP2023565786A JP7709645B2 JP 7709645 B2 JP7709645 B2 JP 7709645B2 JP 2023565786 A JP2023565786 A JP 2023565786A JP 2023565786 A JP2023565786 A JP 2023565786A JP 7709645 B2 JP7709645 B2 JP 7709645B2
Authority
JP
Japan
Prior art keywords
application
queue
physical
virtual
data
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
JP2023565786A
Other languages
English (en)
Other versions
JPWO2023105692A1 (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 JPWO2023105692A1 publication Critical patent/JPWO2023105692A1/ja
Priority to JP2025112707A priority Critical patent/JP2025133855A/ja
Application granted granted Critical
Publication of JP7709645B2 publication Critical patent/JP7709645B2/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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、サーバ内データ転送装置、サーバ内データ転送方法およびプログラムに関する。
NFV(Network Functions Virtualization:ネットワーク機能仮想化)による仮想化技術の進展などを背景に、サービス毎にシステムを構築して運用することが行われている。また、上記サービス毎にシステムを構築する形態から、サービス機能を再利用可能なモジュール単位に分割し、独立した仮想マシン(VM:Virtual Machineやコンテナなど)環境の上で動作させる。
仮想マシンを構成する技術として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参照)。
virtioでは、コンソール、ファイル入出力、ネットワーク通信といったデータ入出力に関して、転送データの単一方向の転送用トランスポートとして、リングバッファで設計されたキューによるデータ交換をキューのオペレーションにより定義している。そして、virtioのキューの仕様を利用して、それぞれのデバイスに適したキューの個数と大きさをGuest OS起動時に用意することにより、Guest OSと自仮想マシン外部との通信を、ハードウェアエミュレーションを実行せずにキューによるオペレーションだけで実現することができる。
サーバ内のデータ転送技術としてNew API(NAPI)、DPDK(Data Plane Development Kit)、KBP(Kernel Busy Poll)がある。
New API(NAPI)は、パケットが到着するとハードウェア割込要求の後、ソフトウェア割込要求によりパケット処理を行う。
DPDKは、アプリケーションが動作するユーザスペースでパケット処理機能を実現し、ユーザスペースからpollingモデルでパケット到着時に即時刈取りを行う(非特許文献1参照)。詳細には、DPDKは、従来Linux kernel(登録商標)が行っていたNIC(Network Interface Card)の制御をユーザ空間で行うためのフレームワークである。Linux kernelにおける処理との最大の違いは、PMD(Pull Mode Driver)と呼ばれるポーリングベースの受信機構を持つことである。通常、Linux kernelでは、NICへのデータの到達を受けて、割込が発生し、それを契機に受信処理が実行される。一方、PMDは、データ到達の確認や受信処理を専用のスレッドが継続的に行う。コンテキストスイッチや割込などのオーバーヘッドを排除することで高速なパケット処理を行うことができる。DPDKは、パケット処理のパフォーマンスとスループットを大幅に高めて、データプレーン・アプリケーション処理に多くの時間を確保することを可能にする。ただし、DPDKは、CPU(Central Processing Unit)やNICなどのコンピュータ資源を占有的に使用する。
非特許文献2には、サーバ内ネットワーク遅延制御装置(KBP:Kernel Busy Poll)が記載されている。KBPは、kernel内でpollingモデルによりパケット到着を常時監視する。これにより、softIRQを抑止し、低遅延なパケット処理を実現する。
次に、DPDKシステムについて説明する。
[DPDKシステム構成]
図23は、アクセラレータ11を備えるHW10の制御を行うDPDKシステムの構成を示す図である。
DPDKシステムは、HW10、パケット処理API(Application Programming Interface)14、アプリケーション(APL)20を有する。
APL20は、APLの実行に先立って行われるパケット処理である。APL20は、ここではAPL1,APL2である。
パケット処理API14は、NICやアクセラレータに向けてパケット処理をオフロードする際のAPIである。パケット処理API14は、user space(ユーザ空間)上に配置されたデータ高速転送ミドルウェアでありDPDKである。
DPDKは、APL20が動作するuser spaceでパケット処理機能を実現し、user spaceからpollingモデルでパケット到着時に即時刈取りを行うことで、パケット転送遅延を小さくすることを可能にする。すなわち、DPDKは、polling(CPUでキューをbusy poll)によりパケットの刈取り(バッファに溜まっているパケットの中身を参照して、そのパケットの処理を、次に行う処理を考慮してバッファから該当するキューのエントリを削除する)を行うため、待ち合わせがなく遅延小である。
HW10は、APL1,APL2との間でデータ送受信の通信を行う。以下の説明において、APL1,APL2が、HW10からのパケットを受け取るデータの流れをRx側受信と称し、APL1,APL2が、HW10にパケットを送信するデータの流れをTx側送信と称する。
HW10は、アクセラレータ11を備える。また、HW10は、通信ネットワークに接続するためのNIC(物理NIC)を備えていてもよい。
アクセラレータ11は、CPUからの入力をもとに、特定の演算を高速に行う計算ユニットハードウェアである。アクセラレータ11は、具体的には、GPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)等のPLD(Programmable Logic Device)である。図23では、アクセラレータ11は、複数のIPコア(Intellectual Property Core)12、データを先入れ先出しのリスト構造で保持するRxキュー(queue:待ち行列)およびTxキューからなる物理キュー13を備える。IPコア12は、FPGA、IC、LSIなどの半導体を構成する再利用可能な回路コンポーネントの設計情報であり、デバイスコア(Coreプロセッサ)と呼ぶこともある。
アクセラレータ11にAPL1,APL2の処理の一部をオフロードし、ソフトウェア(CPU処理)のみでは到達できない性能や電力効率を実現する。
NFV(Network Functions Virtualization)やSDN(Software Defined Network)を構成するデータセンタなど、大規模なサーバクラスタにおいて、上記のようなアクセラレータ11を適用するケースが想定される。
DPDK等、ポールモードでデータをアクセラレータに転送する既存アプリケーション(APL20,APL1,APL2)は、初期化時にアプリケーションが使用する物理キュー13を固定的に紐付けて動作する(図23の破線囲み参照)。アプリケーションのスレッド(以下、アプリスレッドという)はアクセラレータ11に対応するRing Buffer16(図24参照)を介して送受信処理を行う。アプリスレッド15は、ここではPollingThreadである。
図24は、図23のDPDKシステムのポーリングによる受信処理を説明する図である。
アプリスレッド(PollingThread)15およびパケット処理API14は、ユーザ空間(user space)30上に配置される。
ポーリングによる受信処理では、転送すべきデータがあるときに該当データのポインタをRing Buffer16に格納する(図24の符号a参照)。
アクセラレータ11からの遅延を抑制するために、アプリスレッド15はRing Buffer16をポーリングし、転送すべきデータがあるときに該当データのポインタを取得し受信処理を行う(図24の符号b参照)。その際、アプリスレッド15はポーリングによりCPU使用率が100%となり、消費電力が増大する。
DPDKは、アプリスレッド15がパケット到着をポーリングするため遅延は少ないが消費電力が増大する。図23に示すように、複数のアプリケーションAPL1,APL2がある場合、消費電力の増大の影響は甚大である。
特開2018-32156号公報
THE LINUX FOUNDATION PROJECTS DPDK, [online],[令和3年11月5日検索],インターネット 〈http:// www.dpdk.org/〉 Kei Fujimoto, Kenichi Matsui, Masayuki Akutsu, "KBP: Kernel Enhancements for Low-Latency Networking without Application Customization in Virtual Server", IEEE CCNC 2021.
しかしながら、ポーリングモデルによるパケット転送では、下記課題がある。
DPDKでは、kernel threadはpolling(CPUでキューをbusy poll)を行うために、CPUコアを専有する。このため、例えば間欠的なパケット受信であっても、DPDKでは、パケット到着有無に関わらず、CPUを常に100%使用するため、消費電力が大きくなる課題がある。
KBPについても、上記DPDKと同様の課題がある。すなわち、KBPは、kernel内でpollingモデルによりパケット到着を常時監視することで、softIRQを抑止し、低遅延なパケット処理を実現することができる。しかし、パケット到着を常時監視するkernel threadがCPUコアを専有し、常にCPUタイムを使用するため、消費電力が高くなる課題がある。
このような背景を鑑みて本発明がなされたのであり、本発明は、物理サーバに搭載されたアクセラレータリソースを複数のアプリケーションで使用する際、アクセラレータからアプリケーションへのデータ転送遅延を抑えつつ、データのポーリングに用いるCPUの消費電力を削減することを課題とする。
前記した課題を解決するため、アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置であって、前記デバイスと前記アプリケーションに対応するアプリスレッドとの間の通信を監視しデータ到着タイミングを計るデータ到着監視部と、前記データ到着監視部がデータの到着を検知したデータ到着時に前記アプリスレッドを起床させてデータを受信させ、前記データの到着がない間はSleepさせるポーリング制御部と、前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するデバイス擬似部と、前記仮想キューと前記物理キューの間を動的に接続変更するプロキシ部と、を備えることを特徴とする。
本発明によれば、物理サーバに搭載されたアクセラレータリソースを複数のアプリケーションで使用する際、アクセラレータからアプリケーションへのデータ転送遅延を抑えつつ、データのポーリングに用いるCPUの消費電力を削減することができる。
本発明の実施形態に係るサーバ内データ転送システムの概略構成図である。 本発明の実施形態に係るサーバ内データ転送システムのブロック構成図である。 本発明の実施形態に係るサーバ内データ転送システムのアプリスレッドのsleep制御動作を説明する図である。 図3のアプリスレッドのsleep制御動作の制御シーケンス図である。 本発明の実施形態に係るサーバ内データ転送システムのアクセラレータとの通信プロキシを説明する図である。 本発明の実施形態に係るサーバ内データ転送システムのプロキシ部のスレッドIDと物理キューの対応表を示す図である。 本発明の実施形態に係るサーバ内データ転送システムのプロキシ部の仮想キューテーブルを示す図である。 本発明の実施形態に係るサーバ内データ転送システムのプロキシ部の論物マッピングテーブルを示す図である。 本発明の実施形態に係るサーバ内データ転送システムのプロキシ部の物理キューテーブルを示す図である。 本発明の実施形態に係るサーバ内データ転送システムのポーリング制御において、パケット到着情報を用いた起床判断処理を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのポーリング制御において、タイミング情報(統計)を用いた起床判断処理を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムの仮想キューのパケットタイマをテーブルにして示す図である。 本発明の実施形態に係るサーバ内データ転送システムの仮想キューの閾値テーブルを示す図である。 本発明の実施形態に係るサーバ内データ転送システムのパケット送信の制御シーケンス図である。 本発明の実施形態に係るサーバ内データ転送システムのパケット受信・ポーリングの制御シーケンス図である。 本発明の実施形態に係るサーバ内データ転送システムのIPコアスケールインの制御シーケンス図である。 図16のIPコアスケールインを説明する図である。 本発明の実施形態に係るサーバ内データ転送システムの論物マッピングテーブル更新処理を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのスレッドスケールインの制御シーケンス図である。 本発明の実施形態に係るサーバ内データ転送システムのスレッドスケールインを説明する図である。 本発明の実施形態に係るサーバ内データ転送システムの論物マッピングテーブル更新処理を示すフローチャートである。 本発明の実施形態に係るサーバ内データ転送システムのサーバ内データ転送装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。 アクセラレータを備えるHWの制御を行うDPDKシステムの構成を示す図である。 図23のDPDKシステムのポーリングによる受信処理を説明する図である。
以下、図面を参照して本発明を実施するための形態(以下、「本実施形態」という)におけるサーバ内データ転送システム等について説明する。
(実施形態)
[全体構成]
図1は、本発明の実施形態に係るサーバ内データ転送システムの概略構成図である。図23と同一構成部分には、同一符号を付している。
図1に示すように、サーバ内データ転送システム1000は、HW10、パケット処理API14、コントローラ(CTRL)(サーバ内データ転送装置)100、アプリケーション(APL)20を有する。
コントローラ100は、アプリケーション20とHW10との間に配置される。このため、パケット処理API14は、アプリケーション20とコントローラ100間に配置された形となるが、アプリケーション20からみると、コントローラ100の存在は見えず、NICやアクセラレータに向けてパケット処理をオフロードする際のAPIである。
コントローラ100は、アクセラレータ11を含むデバイスをアプリケーション20で使用する際、デバイスからアプリケーション20へのデータ転送を行うサーバ内データ転送装置である。
コントローラ100は、アプリスレッド15と複数のアクセラレータ11のIPコア12の間の紐付けを管理し、アプリケーション20の代わりにアクセラレータ11との通信を行う。
コントローラ100は、パケット到着監視部110と、ポーリング制御部120と、デバイス擬似部130と、プロキシ部140と、を備える。
パケット到着監視部110は、アクセラレータ11(デバイス)とアプリスレッド15との間の通信を監視しパケット到着タイミングを計る。すなわち、アクセラレータ11とアプリスレッド15との間で処理が終わった後のパケットがアプリケーションで受信するために上がってくるが、パケット到着監視部110は、このパケット到着を監視して、アクセラレータ11からのパケット到着タイミングを計る。
ポーリング制御部120は、パケット到着監視部110がパケット到着を検知したパケット到着時にアプリスレッド15を起床させてパケット処理を促し、パケットがない間はSleepさせる。
いままでは、100%起きてポーリング処理していたものを、不要な時は、パケット処理を止める(ポーリングを止める;Sleepさせる)。ポーリング制御部120は、パケット到着時だけアプリスレッド15を起床させる)。
デバイス擬似部130は、アプリケーション20に対して既存と同等のインターフェイスで接続し、デバイスの物理キュー13の代わりに仮想キュー200(図5参照)を提供する。
デバイス擬似部130は、デバイスの物理キューに対応し、当該物理キューの代わりに仮想キュー200を用いて、アプリスレッド15にパケット処理を行わせることで、アプリケーション20に対してデバイスを接続する。
仮想キュー200は、物理キュー13の代わりにアプリスレッド15に見せているキューである。
アプリケーション20からは、アクセラレータ11を常に使っている(アクセラレータ11と常に通信している)と思わせたい(換言すれば、コントローラ100をアクセラレータ11から隠したい)。デバイス擬似部130は、アプリケーション20に対して既存と同等のインターフェイスで接続し、デバイスの物理キュー13の代わりに仮想キュー200を提供する。これにより、アプリケーション20は、アクセラレータ11と常に通信しているように見せかける。
プロキシ部140は、仮想キュー200と物理キュー13の間を動的に接続変更する。
仮想キュー200によって、アプリスレッド15からパケットが来たときに、そのパケットをアクセラレータ11まで届ける必要があるが、プロキシ部140は、仮想キュー200と物理キュー13の間を接続する。
プロキシ部140は、仮想キュー200に対する物理キュー13の紐付けを変更すると同時にIPコア12やアプリスレッド15の増減を指示する。プロキシ部140は、さらに、1つのアプリスレッド15に対して複数の物理キュー(1:N)や、複数のアプリスレッド15に対して1つの物理キュー(M:1)を紐づける(NおよびMは、任意の自然数)。
[サーバ内データ転送システム]
図2は、コントローラ100を備えるサーバ内データ転送システム1000のブロック構成図である。図1と同一構成部分には、同一符号を付している。
サーバ内データ転送システム1000は、ユーザ空間30上に配置されるアプリスレッド15と、複数の物理キュー13およびIPコア12を有するアクセラレータ11と、コントローラ100と、を備える。
また、サーバ内データ転送システム1000には、RIC(RAN Intelligent Controller)などの外部コントローラ50が接続される。RICは、RAN(Radio Access Network)アーキテクチャというソフトウェアによって定義されたコンポーネントであり、RAN機能の制御と最適化、インテリジェント化を実現する。
図2の白抜き矢印は、データの流れを示しており、データ送受信処理の流れからみると、コントローラ100は、アプリスレッド15とアクセラレータ11間に介在した構成である。
コントローラ100は、パケット到着監視部110と、ポーリング制御部120と、デバイス擬似部130と、プロキシ部140と、統合制御部150と、アプリ制御部160と、デバイス制御部170と、外部コントローラIF180と、を備える。
統合制御部150は、各部を統合制御する。統合制御部150は、外部コントローラIF180の要求に対しスケールイン判断を行う(後記図19参照)。また、統合制御部150は、プロキシ部140に「論物マッピングテーブル更新要求」を行う(後記図19参照)。統合制御部150は、デバイス制御部170に、スケールイン要求を行う(後記図19)。
アプリ制御部160は、統合制御部150からの指示に従ってアプリスレッド15を制御する。
デバイス制御部170は、統合制御部150からの指示に従ってアクセラレータ11を制御する。
外部コントローラIF180は、外部コントローラ50からの指示を受ける。
以下、上述のように構成されたサーバ内データ転送システムの動作を説明する。
[アプリスレッドのSleep制御動作]
図3は、アプリスレッドのSleep制御動作を説明する図である。図1および図24と同一構成部分には、同一符号を付している。
アプリスレッド15、パケット処理API14、およびコントローラ100は、ユーザ空間30上に配置される。
上述したように、複数のアプリケーションAPL1,APL2(図1参照)がある場合、消費電力の増大の影響は甚大である。そこで、複数のアプリケーションAPL1,APL2がある場合のアプリスレッドのSleep制御動作について説明する。
複数のアプリケーションAPL1,APL2について、それぞれ複数のアプリスレッド15が存在する。
コントローラ100のポーリング制御部120(図1参照)は、パケット到着時にアプリスレッド15を起床させてパケット処理を促し、パケットがない間はSleepさせる。
コントローラ100のパケット到着監視部110(図1参照)は、アクセラレータ11との通信を監視しパケット到着タイミングを計る。
パケット到着監視部110(図1参照)は、ポーリングによる受信処理では、転送すべきデータのポインタを物理キュー41を用いて、Ring Buffer17(Ring Buffer<1>)に格納する(図3の符号a参照)。
ちなみに、従来であれば、図24に示すように、アプリスレッド15はRing Buffer16をポーリングし、パケットを刈り取っていた。
これに対し、本実施形態では、パケット到着監視部110(図1参照)は、アプリスレッド15に代わって、仮想キュー200(図5参照)を用いて、Ring Buffer17をポーリングし、転送すべきデータがあるときに該当データのポインタを取得し受信処理を行う(図3の符号b参照)。
プロキシ部140は、アプリスレッド15に代わって、転送すべきデータのポインタを、Ring Buffer18(Ring Buffer<2>)(=仮想キュー200)に格納する(図3の符号c参照)。
ポーリング制御部120は、アプリスレッド15に対してイベントを通知する(図3の符号d参照)。
アプリスレッド15は、転送すべきデータがあるときに該当データのポインタを仮想キュー200を用いて取得する(図の符号e参照)。
ここで、パケット到着監視部110が、すべてのアプリスレッド15を代表して物理キュー13のポーリングを行う。これにより、複数のアプリスレッド15がある場合であっても、1つのパケット到着監視部110のみで物理キュー13の監視ができる。例えば、図23の場合、複数のアプリケーションAPL1,APL2に対し複数の(6つの)アプリスレッド15が並列で処理が存在し、図23の従来例であればその6つのアプリスレッド15についてポーリングを行う必要があった。これに対し、本実施形態では、並列に存在する複数のアプリスレッド15に対して、1つのパケット到着監視部110による全物理キュー13のポーリングだけで、すべての物理キュー13を監視できる。このため、単純計算で、電力消費を1/6に抑えることができる。ポーリングをすべてなくせなくても課題は解決できる。
以上、アプリスレッド15の代わりにコントローラ100が代表してアクセラレータ11のパケット到着を監視しRing Buffer17をポーリングする。
コントローラ100がイベント通知等の方法でアプリスレッド15にパケット到着を通知する。
図4は、図3のアプリスレッドのsleep制御動作の制御シーケンス図である。
アプリスレッド15は、Ring Buffer17にアクセラレータ実行要求を通知し(S1)、Ring Buffer17は、この実行要求をRing Buffer18に通知する(S2)。Ring Buffer18は、この実行要求をアクセラレータ11に通知する(S3)。
ここで、コントローラ100は、アプリスレッド15が、Ring Buffer17にアクセラレータ実行要求を通知すると、アプリスレッド15をSleepさせる(図4の符号f参照)。
アクセラレータ11は、アクセラレータ11からの要求を実行し(S4)、処理結果をRing Buffer18に送信する(S5)。コントローラ100のパケット到着監視部110は、アクセラレータ11との通信を監視しており、コントローラ100は、Ring Buffer18との間で、アプリスレッド15に代わって、Ring Buffer18をポーリングする(図4の符号g参照)。
コントローラ100は、イベント通知等の方法でアプリスレッド15にパケット到着を通知する(図4の符号h参照)。
Ring Buffer18は、処理結果をRing Buffer17に送信し(S6)、Ring Buffer17は、イベント通知を受けて起床したアプリスレッド15からデータ送信要求があった場合にアクセラレータ11の処理結果をアプリスレッド15に送信する(S7)。
このように、コントローラ100が代表してアクセラレータ11からのパケット到着をポーリングにより監視できる。このため、アプリスレッド15がそれぞれでポーリングによりパケット到着を監視する必要がなくなり、消費電力を削減することができる。
コントローラ100は、全てのアプリスレッド15の通信を監視できるため、全てのアプリスレッド15のポーリングを効率化し、サーバ全体の消費電力の削減が可能になる。
サーバ内データ転送システム1000は、パケット到着時にコントローラ100からアプリスレッド15に対してイベント通知を行う、パケット送受信間隔の統計データから得たタイミング情報をもとにイベント通知を行う、などの方法で遅延を抑制することが可能になる。
[アクセラレータとの通信プロキシ]
図5は、アクセラレータとの通信プロキシを説明する図である。図1と同一構成部分には、同一符号を付している。
アプリケーション20にとってアクセラレータ11と同様に扱えるように、コントローラ100が既存と同等のインターフェイスを持った擬似的なデバイスとしてアプリケーション20との通信を行う。その際、アプリケーション20に対して物理キュー13の代わりに仮想キュー200を提供する。
デバイス擬似部130(図1、図2)は、アプリケーションに対して既存と同等のインターフェイスで接続し、デバイスの物理キュー13の代わりに仮想キュー200を提供する。
図6は、プロキシ部140のスレッドIDと物理キュー13の対応表210を示す図である。
スレッドID「1001…」ごとに対応する物理キュー13を割り当てる。例えば、図5に示すアクセラレータ11のIPコア12の左から順に、物理キュー(0~5)がある場合、スレッドID「1001」は、図5に示すアクセラレータ11のIPコア12の一番左の物理キュー(0)に割り当てられる。スレッドIDに対して複数の物理キューを割り当てることも可能である。例えば、スレッドID「1003」は、図5に示すアクセラレータ11のIPコア12の物理キュー(2,3)に割り当てられる。この例は、仮想キューから見たときの接続が物理キュー(2,3)に分岐していることで示される。逆に、スレッドID「2001」と「2002」は、いずれも物理キュー(4)に割り当てられる。この例は、接続が物理キュー(4)に集約していることで示される。
なお、従来では、スレッドIDと物理キューは1対1に対応しており、上記分岐・集約はない。
図7は、プロキシ部140の仮想キューテーブル220を示す図である。
仮想キューテーブル220は、スレッドIDがどの仮想キューに対応しているかを記述する。
スレッドIDと仮想キューは、1対1で対応している。例えば、スレッドID「1001」は、仮想キュー(0)に対応し、スレッドID「1002」は、仮想キュー(1)に対応している。なお、Proc_type(プロセスタイプ)は、アクセラレータにどのような種別の処理をさせたいかを規定する。例えば、Proc_type「1」は、種別1の処理に対応するIPコア12に接続可能であり、Proc_type「2」は、種別2の処理に対応するIPコア12に接続可能である、などである。APLは、スレッドが複数のアプリケーションに対応しているとき、そのアプリケーション種別を記述する。「状態」は、スレッドがアクティブ(Used)か非アクティブ(空欄)かを記述する。
図8は、プロキシ部140の論物マッピングテーブル230を示す図である。
論物マッピングテーブル230は、仮想キュー(0~4)に対して物理キュー(0~3)を割り当てる。例えば、仮想キュー(0)に対して物理キュー0を割り当て、仮想キュー(1)に対して物理キュー1を割り当てる。なお、複数の物理キュー(物理キュー2,3)を仮想キュー(3)に割り当てることも可能である。
図9は、プロキシ部140の物理キューテーブル240を示す図である。
IPコアIDは、実際に処理を行うコアのIDであり、IPコアIDごとに、物理キュー、Proc_type、デバイスID、「状態」が対応付けられる。Proc_typeは、同じ種別の処理でないと繋げないことを記述している。デバイスIDは、アクセラレータで処理されるアクセラレータの種別を示しており、例えばデバイスID「1」であればアクセラレータ1が対応していることを記述する。
[ポーリング制御]
<パケット到着情報を用いた起床判断>
図10は、ポーリング制御において、パケット到着情報を用いた起床判断処理を示すフローチャートである。
ステップS11でポーリング制御部120は、パケット到着監視部110がパケット到着を確認したか否かを判別する。パケット到着を確認できない場合(S11:No)、ステップS11に戻ってパケット到着を待つ。
パケット到着を確認できた場合(S11:Yes)、ステップS12でポーリング制御部120は、仮想キュー200に対応するアプリスレッド15(以下の説明において、アプリスレッド15は、ポーリング制御におけるスレッドであるため、ポーリングスレッド15と表記する)に対して起床指示を送信する。
ステップS13でポーリング制御部120は、ポーリングスレッド15が起床しパケットを刈り取ったか否かを判別する。パケットを刈り取っていない場合(S13:No)、ステップS13に戻ってパケット刈り取りを待つ。
パケットを刈り取った場合(S13:Yes)、ステップS14でポーリング制御部120は、仮想キュー200に対応するポーリングスレッド15に対して次の刈り取りまでSleepを指示して本フローの処理を終了する。
<タイミング情報(統計)を用いた起床判断>
図11は、ポーリング制御において、タイミング情報(統計)を用いた起床判断処理を示すフローチャートである。
ステップS21でポーリング制御部120は、仮想キュー200を選択する。
ステップS22でポーリング制御部120は、仮想キュー200のパケットタイマ250(図12参照)で最大のものを確認する。
図12は、仮想キュー200のパケットタイマ250をテーブルにして示す図である。
パケットIDごとに仮想キューおよびタイマを設定する。
仮想キュー200ごとにタイマを設定しておくことで、パケット到着時の起床のタイミングをあらかじめ設定しておくことができ、Sleep制御の実効を図ることができる。
図11に戻り、ステップS23でポーリング制御部120は、パケットタイマ250は仮想キュー200の閾値を超えているか否かを判別する。
図13は、仮想キュー200の閾値テーブル260を示す図である。
仮想キューごとに刈り取りをするか否かの閾値を設定する。例えば、仮想キュー(0)が、閾値「200」になるまでは刈り取りを行わない、ことを設定する。
図11に戻り、パケットタイマ250が仮想キュー200の閾値を超えていない場合(S23:No)、ステップS21に戻ってパケットタイマ250が仮想キュー200の閾値を超えるまでステップS21およびステップS22を繰り返す。パケットタイマ250の閾値は、パケット送信から受信までの統計情報から別途設定する。
パケットタイマ250が仮想キュー200の閾値を超えた場合(S23:Yes)、ステップS24でポーリング制御部120は、仮想キュー200に対応するポーリングスレッドに対して起床指示を送信する。
ステップS25でポーリング制御部120は、スレッドが起床しパケットを刈り取ったか否かを判別する。パケットを刈り取っていない場合(S25:No)、ステップS25に戻ってパケット刈り取りを待つ。
スレッドが起床しパケットを刈り取った場合(S25:Yes)、ステップS26でポーリング制御部120は、仮想キュー200に対応するポーリングスレッド15に対して次の刈り取りまでsleepを指示して本フローの処理を終了する。
[パケット送信]
図14は、パケット送信の制御シーケンス図である。本パケット送信は、<ポーリングパターン>と<ポーリングなしパターン>とがある。なお、このポーリングはパケット到着監視部110と仮想キュー200間のポーリングである。
<ポーリングパターン>
アプリスレッド15は、仮想キュー200にパケットのポインタ情報を送信する(S101)。
一方、パケット到着監視部110は、パケット到着をポーリングにより確認する(S151)。
仮想キュー200は、パケット到着監視部110に「パケット到着あり」および「パケットのポインタ情報」の通知を行う(S152)。
パケット到着監視部110は、仮想キュー200からの「パケット到着あり」および「パケットのポインタ情報」を受けて、プロキシ部140に「パケットのポインタ情報」を送信する(S105)。
プロキシ部140は、「パケットのポインタ情報」を受けて、仮想キュー200に対応する物理キュー13の確認を行う(S106)。
プロキシ部140は、物理キュー13に「パケットのポインタ情報」を送信する(S107)。
この<ポーリングパターン>(ポーリングありパターン)によるパケット送信は、下記<ポーリングなしパターン>のようなコントローラ100への通知がない。
<ポーリングなしパターン>
上記<ポーリングパターン>と同一手順には同一ステップ番号を付している。
アプリスレッド15は、仮想キュー200にパケットのポインタ情報を送信するとともに(S101)、パケット到着監視部110に「パケット到着あり」の通知を行う(S102)。
アプリスレッド15からの「パケット到着あり」の通知を受けて、パケット到着監視部110は、仮想キュー200に対してパケット到着確認を行う(S103)。仮想キュー200は、パケット到着監視部110に「パケット到着あり」および「パケットのポインタ情報」を送信する(S104)。
パケット到着監視部110は、仮想キュー200からの「パケット到着あり」および「パケットのポインタ情報」を受けて、プロキシ部140に「パケットのポインタ情報」を送信する(S105)。
プロキシ部140は、「パケットのポインタ情報」を受けて、仮想キュー200に対応する物理キュー13の確認を行う(S106)。
プロキシ部140は、物理キュー13に「パケットのポインタ情報」を送信する(S107)。
[パケット受信・ポーリング制御]
図15は、パケット受信・ポーリングの制御シーケンス図である。
パケット到着監視部110は、物理キュー13に対してパケット到着をポーリングにより確認する(S111)。物理キュー13は、パケット到着監視部110に「パケット到着あり」および「パケットのポインタ情報」を送信する(S112)。
パケット到着監視部110は、物理キュー13からの「パケット到着あり」および「パケットのポインタ情報」を受けて、プロキシ部140に「パケットのポインタ情報」を送信する(S113)。
プロキシ部140は、「パケットのポインタ情報」を受けて、物理キュー13に対応する仮想キュー200の確認を行う(S114)。
プロキシ部140は、仮想キュー200に「パケットのポインタ情報」を送信するとともに(S115)、パケット到着監視部110に「対応する仮想キュー情報」を送信する(S116)。
パケット到着監視部110は、プロキシ部140からの「対応する仮想キュー情報」を受けて、ポーリング制御部120に「パケット到着あり」を送信する(S117)。
ポーリング制御部120は、パケット到着監視部110からの「パケット到着あり」を受けて、アプリスレッド15に「イベント通知」を行う(S118)。
アプリスレッド15は、「起床処理」を行う(S119)。
アプリスレッド15は、仮想キュー200に「パケットのポインタ情報」を要求する(S120)。仮想キュー200は、この要求を受けて、仮想キュー200に「パケットのポインタ情報」を送信する(S121)。
[IPコアスケールイン]
図16は、IPコアスケールインの制御シーケンス図である。
外部コントローラIF180は、統合制御部150に「スケールイン判断要求」を行う(S131)。
統合制御部150は、スケールイン判断を行う(S132)。
統合制御部150は、プロキシ部140に「論物マッピングテーブル更新要求」を行う(S133)。プロキシ部140は、論物マッピングテーブル230(図8参照)を更新し(図18の論物マッピングテーブル更新参照)、統合制御部150にその旨を通知する(S135)。
IPコアスケールイン処理では、IPコア12のうち、IPコア#2がスケールインされる場合を例にとる(図17参照)。
統合制御部150は、デバイス制御部170に「IPコア#2スケールイン要求」を行う(S136)。デバイス制御部170は、IPコア#2の電源停止操作を行うとともに(S137)、統合制御部150に「IPコア#2スケールイン完了」を通知する(S138)。
図17は、図16のIPコアスケールインを説明する図である。図5と同一構成部分には、同一符号を付している。
図16のIPコアスケールイン処理により、IPコア#2はスケールインされる(図17の破線矢印参照)。
図18は、論物マッピングテーブル更新処理を示すフローチャートである。
ステップS31でプロキシ部140は、スケールインする物理キューに対応する仮想キュー200があるか否かを判別する。対応する仮想キュー200がない場合(S31:No)、本フローによる論物マッピングテーブル更新処理を正常終了する。
対応する仮想キュー200がある場合(S31:Yes)、ステップS32でプロキシ部140は、仮想キュー200を1つ選択する。
ステップS33でプロキシ部140は、仮想キュー200のproc_typeと同じproc_typeの物理キュー13があるか否かを判別する。仮想キュー200のproc_typeと同じproc_typeの物理キュー13がない場合(S33:No)、本フローによる論物マッピングテーブル更新処理をNG終了する。
上記ステップS33で仮想キュー200のproc_typeと同じproc_typeの物理キュー13がある場合(S33:Yes)、仮想キュー200と物理キュー13の再紐付けを行うと判断してステップS34でプロキシ部140は、複数デバイスがある場合デバイスを選択する(ただしポリシーによる)。このポリシーは、例えばなるべく負荷が高いデバイスに集中させる(集約)、または負荷が小さいデバイスに分散する(負荷分散)である。
ステップS35でプロキシ部140は、複数物理キュー13がある場合物理キュー13を選択(ポリシーによる)する。このポリシーは、例えばなるべく負荷が高い物理キューに集中させる(集約)、または負荷が小さい物理キューに分散する(負荷分散)である。
ステップS36でプロキシ部140は、論物マッピングテーブル230(図8参照)から仮想キュー200と紐付けする物理キュー13のセルの値を1に変更する。
ステップS37でプロキシ部140は、論物マッピングテーブル230から仮想キュー200とスケールイン物理キュー13のセルの値を0に変更して上記ステップS31に戻る。
[スレッドスケールイン]
図19は、スレッドスケールインの制御シーケンス図である。
外部コントローラIF180は、統合制御部150に「スケールイン判断要求」を行う(S141)。
統合制御部150は、スケールイン判断を行う(S142)。
統合制御部150は、プロキシ部140に「論物マッピングテーブル更新要求」を行う(S143)。プロキシ部140は、論物マッピングテーブル230(図8参照)を更新し(S144)(図21の論物マッピングテーブル更新参照)、統合制御部150にその旨を通知する(S145)。
スレッドスケールイン処理では、アプリスレッド15のうち、スレッド#2がスケールインされる場合を例にとる(図20参照)。
統合制御部150は、デバイス制御部170に「スレッド#2スケールイン要求」を行う(S146)。デバイス制御部170は、スレッド#2のポーリング停止操作を行うとともに(S147)、統合制御部150に「スレッド#2スケールイン完了」を通知する(S148)。
図20は、スレッドスケールインを説明する図である。図5および図17と同一構成部分には、同一符号を付している。
図19のスレッドスケールイン処理により、図20に示すスレッド#2はスケールインされる(図20の破線矢印j参照)。
図21は、論物マッピングテーブル更新処理を示すフローチャートである。
ステップS41でプロキシ部140は、スケールインする仮想キューに対応する物理キュー13があるか否かを判別する。対応する物理キュー13がない場合(S41:No)、本フローによる論物マッピングテーブル更新処理を正常終了する。
対応する物理キュー13がある場合(S41:Yes)、ステップS42でプロキシ部140は、物理キュー13を1つ選択する。
ステップS43でプロキシ部140は、物理キュー13のproc_typeと同じproc_typeの仮想キュー200があるか否かを判別する。物理キュー13のproc_typeと同じproc_typeの仮想キュー200がない場合(S43:No)、ステップS47に進む。
上記ステップS43で物理キュー13のproc_typeと同じproc_typeの仮想キュー200がある場合(S43:Yes)、仮想キュー200と物理キュー13の再紐付けを行うと判断してステップS44でプロキシ部140は、複数アプリがある場合アプリを選択する(ただしポリシーによる)。このポリシーは、例えばなるべく負荷が高いAPLに集中させる(集約)、または負荷が小さいAPLに分散する(負荷分散)である。
ステップS45でプロキシ部140は、複数仮想キュー200がある場合仮想キュー200を選択する(ただしポリシーによる)。このポリシーは、例えばなるべく負荷が高い仮想キューに集中させる(集約)、または負荷が小さい仮想キューに分散する(負荷分散)である。
ステップS46でプロキシ部140は、論物マッピングテーブル230(図8参照)から物理キュー13と紐付けする仮想キュー200のセルの値を1に変更する。
ステップS47でプロキシ部140は、論物マッピングテーブル230から物理キュー13とスケールイン仮想キュー200のセルの値を0に変更して上記ステップS41に戻る。
[ハードウェア構成]
上記実施形態に係るコントローラ(サーバ内データ転送装置)100は、例えば図22に示すような構成のコンピュータ900によって実現される。
図22は、コントローラ100の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU901、RAM902、ROM903、HDD904、アクセラレータ905、入出力インターフェイス(I/F)906、メディアインターフェイス(I/F)907、および通信インターフェイス(I/F:Interface)908およびを有する。アクセラレータ905は、図1、図3、図5のアクセラレータ11に対応する。
アクセラレータ905は、通信I/F908からのデータ、または、RAM902からのデータの少なくとも一方のデータを高速に処理するアクセラレータ(デバイス)11(図1、図5)である。なお、アクセラレータ905として、CPU901またはRAM902からの処理を実行した後にCPU901またはRAM902に実行結果を戻すタイプ(look-aside型)を用いてもよい。一方、アクセラレータ905として、通信I/F908とCPU901またはRAM902との間に入って、処理を行うタイプ(in-line型)を用いてもよい。
アクセラレータ905は、通信I/F908を介して外部装置915と接続される。入出力I/F906は、入出力装置916と接続される。メディアI/F907は、記録媒体917からデータを読み書きする。
CPU901は、ROM903またはHDD904に格納されたプログラムに基づいて動作し、RAM902に読み込んだプログラム(アプリケーションや、その略のアプリとも呼ばれる)を実行することにより、図1、図3、図5に示すコントローラ100の各部の制御を行う。そして、このプログラムは、通信回線を介して配布したり、CD-ROM等の記録媒体917に記録して配布したりすることも可能である。
ROM903は、コンピュータ900の起動時にCPU901によって実行されるブートプログラムや、コンピュータ900のハードウェアに依存するプログラム等を格納する。
CPU901は、入出力I/F906を介して、マウスやキーボード等の入力部、および、ディスプレイやプリンタ等の出力部からなる入出力装置916を制御する。CPU901は、入出力I/F906を介して、入出力装置916からデータを取得するともに、生成したデータを入出力装置916へ出力する。なお、プロセッサとしてCPU901とともに、GPU(Graphics Processing Unit)等を用いてもよい。
HDD904は、CPU901により実行されるプログラムおよび当該プログラムによって使用されるデータ等を記憶する。通信I/F908は、通信網(例えば、NW(Network))を介して他の装置からデータを受信してCPU901へ出力し、また、CPU901が生成したデータを、通信網を介して他の装置へ送信する。
メディアI/F907は、記録媒体917に格納されたプログラムまたはデータを読み取り、RAM902を介してCPU901へ出力する。CPU901は、目的の処理に係るプログラムを、メディアI/F907を介して記録媒体917からRAM902上にロードし、ロードしたプログラムを実行する。記録媒体917は、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto Optical disk)等の光磁気記録媒体、磁気記録媒体、導体メモリテープ媒体又は半導体メモリ等である。
例えば、コンピュータ900が本実施形態に係る一装置として構成されるサーバ内データ転送装置100として機能する場合、コンピュータ900のCPU901は、RAM902上にロードされたプログラムを実行することによりコントローラ(サーバ内データ転送装置)100の機能を実現する。また、HDD904には、RAM902内のデータが記憶される。CPU901は、目的の処理に係るプログラムを記録媒体917から読み取って実行する。この他、CPU901は、他の装置から通信網を介して目的の処理に係るプログラムを読み込んでもよい。
[効果]
以上説明したように、本実施形態に係るサーバ内データ転送装置は、アクセラレータ11を含むデバイスをアプリケーション20で使用する際、デバイスからアプリケーション20へのデータ転送を行うサーバ内データ転送装置(コントローラ100)であって、デバイスとアプリケーション20に対応するアプリスレッド15との間の通信を監視しパケット到着タイミングを計るパケット到着監視部110と、パケット到着監視部110がパケット到着を検知したパケットの到着時にアプリスレッド15を起床させてパケット処理を行わせ、パケットの到着がない間はSleepさせるポーリング制御部120と、を備える。
このようにすることで、パケット到着監視部110およびポーリング制御部120を備えたコントローラ(サーバ内データ転送装置)100がアプリケーション20とアクセラレータ11を仲介する構成をとる。
コントローラ100が代表してアクセラレータ11からのパケット到着をポーリングにより監視できるため、アプリスレッド15がそれぞれでポーリングによりパケット到着を監視する必要がなくなり、消費電力を削減することができる。
コントローラ100は、全てのアプリスレッド15の通信を監視できるため、全てのアプリスレッド15のポーリングを効率化してサーバ全体の消費電力の削減が可能になる。
また、コントローラ100は、パケット到着時にアプリスレッド15に対してイベント通知を行う、パケット送受信間隔の統計データからタイミング情報をもとにイベント通知を行う、などの方法で遅延を抑制することが可能になる。
さらに、vRAN(virtual Radio Access Network:仮想無線アクセスネットワーク)等、アクセラレータを用いてデータ処理を高速化するネットワークアプリケーションを同一サーバに複数搭載する際、本システムを適用することで、以下の効果が得られる。
省電力性:各アプリスレッド15におけるポーリングが不要になり、CPUコアの消費電力を大幅に削減することができる。
効率性(動的な側面):昼夜のように大きく需要が変化するケースでは、IPコアスケールインやスレッドスケールインにより不要なリソースを停止することで消費電力の削減を図ることができる。
効率性(静的な側面):アクセラレータ11に余力のある場合には1つの物理キューに対して複数のアプリケーションの仮想キューを紐付けることでアクセラレータに収容可能なユーザ数を増加することができる。
本実施形態に係るサーバ内データ転送装置(コントローラ)100は、デバイスの物理キューに対応し、当該物理キューの代わりに仮想キュー200を用いて、アプリスレッド15にパケット処理を行わせることで、アプリケーション20に対してデバイスを接続するデバイス擬似部130と、仮想キュー200と物理キュー13の間を動的に接続変更するプロキシ部140と、を備える。
このように、デバイス擬似部130およびプロキシ部140を備え、デバイス擬似部130は、アプリケーションに対して物理キュー13の代わりに仮想キュー200を提供する。アプリケーション20からは実際のアクセラレータ11と通信しているように見えるため、改造が不要である。
コントローラ100は、アプリスレッド15と複数のアクセラレータ11のIPコア12の間の紐付けを管理し、アプリケーション20の代わりにアクセラレータ11との通信を行う。コントローラ100は、仮想キュー200に対する物理キュー13の紐付けを変更すると同時にIPコア12やアプリスレッド15の増減を指示することで、需要に応じてIPコア12やアプリスレッド15を増やしたり(スケールアウト)、減らしたり(スケールイン)といった、動的なリソース変更が可能となる。
さらに、1つのアプリスレッド15に対して複数の物理キュー(1:N)や、複数のアプリスレッドに対して1つの物理キュー(M:1)を紐付けることで、より柔軟なリソース管理や重畳によるリソース集約が可能となる。
なお、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)カード、光ディスク等の記録媒体に保持することができる。
10 HW
11,905 アクセラレータ(デバイス)
12 IPコア(デバイスコア)
14 パケット処理API
17,18 Ring Buffer
15 アプリスレッド(ポーリングスレッド)
20 アプリケーション(APL)
100 コントローラ(サーバ内データ転送装置)
110 パケット到着監視部
120 ポーリング制御部
130 デバイス擬似部
140 プロキシ部
150 統合制御部
160 アプリ制御部
170 デバイス制御部
180 外部コントローラIF
220 仮想キューテーブル
230 論物マッピングテーブル
240 物理キューテーブル
250 パケットタイマ
260 閾値テーブル
1000 サーバ内データ転送システム
APL1,APL2 アプリケーション

Claims (7)

  1. アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置であって、
    前記デバイスと前記アプリケーションに対応するアプリスレッドとの間の通信を監視しデータ到着タイミングを計るデータ到着監視部と、
    前記データ到着監視部がデータの到着を検知したデータ到着時に前記アプリスレッドを起床させてデータを受信させ、前記データの到着がない間はSleepさせるポーリング制御部と、
    前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するデバイス擬似部と、
    前記仮想キューと前記物理キューの間を動的に接続変更するプロキシ部と、を備える
    ことを特徴とするサーバ内データ転送装置。
  2. アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置であって、
    前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するデバイス擬似部と、
    前記仮想キューと前記物理キューの間を動的に接続変更するプロキシ部と、を備えるとともに、
    前記アプリスレッドと一または複数の前記物理キューとを対応付ける対応情報と、
    前記アプリスレッドがどの仮想キューに対応しているかを記述する記述情報と、
    前記仮想キューに対して前記物理キューを割り当てる論物マッピング情報と、を有し、
    前記プロキシ部は、
    前記アプリスレッドの減少が指示された場合、前記論物マッピング情報を参照して、スケールインする前記物理キューに対応する前記仮想キューがあるか否かを判別し、対応する前記仮想キューがある場合、前記対応情報および前記記述情報をもとに、前記物理キューと接続している前記仮想キューの数を動的に減少し、前記仮想キューを使用する前記アプリスレッドを停止させる
    ことを特徴とするサーバ内データ転送装置。
  3. アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置であって、
    前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するデバイス擬似部と、
    前記仮想キューと前記物理キューの間を動的に接続変更するプロキシ部と、を備えるとともに、
    前記アプリスレッドと一または複数の前記物理キューとを対応付ける対応情報と、
    前記アプリスレッドがどの仮想キューに対応しているかを記述する記述情報と、
    前記仮想キューに対して前記物理キューを割り当てる論物マッピング情報と、を有し、
    前記プロキシ部は、
    前記アプリスレッドの増加が指示された場合、前記論物マッピング情報を参照して、スケールアウトする前記物理キューに対応する前記仮想キューがあるか否かを判別し、対応する前記仮想キューがある場合、前記対応情報および前記記述情報をもとに、前記物理キューと接続している前記仮想キューの数を動的に増加し、前記仮想キューを使用する前記アプリスレッドを再開させる
    ことを特徴とするサーバ内データ転送装置。
  4. アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置であって、
    前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するデバイス擬似部と、
    前記仮想キューと前記物理キューの間を動的に接続変更するプロキシ部と、を備えるとともに、
    前記アプリスレッドと一または複数の前記物理キューとを対応付ける対応情報と、
    前記アプリスレッドがどの仮想キューに対応しているかを記述する記述情報と、
    前記仮想キューに対して前記物理キューを割り当てる論物マッピング情報と、
    前記デバイスのIPコアごとに、物理キュー、Proc_type、デバイスIDが対応付けられる物理キュー情報と、を有し、
    前記プロキシ部は、
    前記IPコアの減少が指示された場合、前記論物マッピング情報を参照して、スケールインする前記物理キューに対応する前記仮想キューがあるか否かを判別し、対応する前記仮想キューがある場合、前記対応情報、前記記述情報および前記物理キュー情報をもとに、前記仮想キューと接続している前記物理キューの数を動的に減少し、前記物理キューを使用する前記デバイスの前記IPコアを停止させる構成を有する
    ことを特徴とするサーバ内データ転送装置。
  5. アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置であって、
    前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するデバイス擬似部と、
    前記仮想キューと前記物理キューの間を動的に接続変更するプロキシ部と、を備えるとともに、
    前記アプリスレッドと一または複数の前記物理キューとを対応付ける対応情報と、
    前記アプリスレッドがどの仮想キューに対応しているかを記述する記述情報と、
    前記仮想キューに対して前記物理キューを割り当てる論物マッピング情報と、
    前記デバイスのIPコアごとに、物理キュー、Proc_type、デバイスIDが対応付けられる物理キュー情報と、を有し、
    前記プロキシ部は、
    前記IPコアの増加が指示された場合、前記論物マッピング情報を参照して、スケールアウトする前記物理キューに対応する前記仮想キューがあるか否かを判別し、対応する前記仮想キューがある場合、前記対応情報、前記記述情報および前記物理キュー情報をもとに、前記仮想キューと接続している前記物理キューの数を動的に増加し、前記物理キューを使用するデバイスの前記IPコアを再開させる
    ことを特徴とするサーバ内データ転送装置。
  6. アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置のサーバ内データ転送方法であって、
    前記サーバ内データ転送装置は、
    前記デバイスと前記アプリケーションに対応するアプリスレッドとの間の通信を監視しデータ到着タイミングを計るステップと、
    データの到着を検知したデータ到着時に前記アプリスレッドを起床させてデータを受信させ、前記データの到着がない間はSleepさせるステップと、
    前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するステップと、
    前記仮想キューと前記物理キューの間を動的に接続変更するステップと、を実行する
    ことを特徴とするサーバ内データ転送方法
  7. アクセラレータを含むデバイスをアプリケーションで使用する際、前記デバイスから前記アプリケーションへのデータ転送を行うサーバ内データ転送装置としてのコンピュータに、
    前記デバイスと前記アプリケーションに対応するアプリスレッドとの間の通信を監視しデータ到着タイミングを計るデータ到着監視手段、
    前記データ到着監視手段がデータの到着を検知したデータ到着時に前記アプリスレッドを起床させてデータを受信させ、前記データの到着がない間はSleepさせるポーリング制御手段、
    前記デバイスの物理キューの代わりとなる仮想キューを用いて、前記デバイスと前記アプリケーションに対応するアプリスレッドにデータ処理を行わせることで、前記アプリケーションに対して前記デバイスを接続するデバイス擬似手段、
    前記仮想キューと前記物理キューの間を動的に接続変更するプロキシ手段、
    を実行させるためのプログラム。
JP2023565786A 2021-12-08 2021-12-08 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム Active JP7709645B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2025112707A JP2025133855A (ja) 2021-12-08 2025-07-03 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム

Applications Claiming Priority (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2025112707A Division JP2025133855A (ja) 2021-12-08 2025-07-03 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2023105692A1 JPWO2023105692A1 (ja) 2023-06-15
JP7709645B2 true JP7709645B2 (ja) 2025-07-17

Family

ID=86729972

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2023565786A Active JP7709645B2 (ja) 2021-12-08 2021-12-08 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
JP2025112707A Pending JP2025133855A (ja) 2021-12-08 2025-07-03 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2025112707A Pending JP2025133855A (ja) 2021-12-08 2025-07-03 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム

Country Status (4)

Country Link
EP (1) EP4447395A4 (ja)
JP (2) JP7709645B2 (ja)
CN (1) CN118355641A (ja)
WO (1) WO2023105692A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018507457A (ja) 2014-12-22 2018-03-15 インテル コーポレイション ネットワークデバイスにおける受信パケットの処理と関連する電力管理のための技術
WO2021130828A1 (ja) 2019-12-23 2021-07-01 日本電信電話株式会社 サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6543231B2 (ja) 2016-08-23 2019-07-10 日本電信電話株式会社 仮想マシンの接続制御システムおよび仮想マシンの接続制御方法
US12001895B2 (en) * 2019-10-08 2024-06-04 Nippon Telegraph And Telephone Corporation Server delay control system, server delay control device, server delay control method, and program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018507457A (ja) 2014-12-22 2018-03-15 インテル コーポレイション ネットワークデバイスにおける受信パケットの処理と関連する電力管理のための技術
WO2021130828A1 (ja) 2019-12-23 2021-07-01 日本電信電話株式会社 サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム

Also Published As

Publication number Publication date
WO2023105692A1 (ja) 2023-06-15
EP4447395A1 (en) 2024-10-16
EP4447395A4 (en) 2025-08-20
JPWO2023105692A1 (ja) 2023-06-15
CN118355641A (zh) 2024-07-16
JP2025133855A (ja) 2025-09-11

Similar Documents

Publication Publication Date Title
US8924534B2 (en) Resource optimization and monitoring in virtualized infrastructure
US8873375B2 (en) Method and system for fault tolerance and resilience for virtualized machines in a network
US8566822B2 (en) Method and system for distributing hypervisor functionality over multiple physical devices in a network and configuring sub-hypervisor to control the virtual machines
JP7310924B2 (ja) サーバ内遅延制御装置、サーバ、サーバ内遅延制御方法およびプログラム
JP7251648B2 (ja) サーバ内遅延制御システム、サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
JP2013527948A (ja) コンピュータ・システム内でタスクをディスパッチするための方法、システム及びコンピュータ・プログラム
CN114691286A (zh) 服务器系统、虚拟机创建方法及装置
JP2025100826A (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
JP2024180507A (ja) サーバおよびプログラム
JP7709645B2 (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
JP7485101B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
JP7754299B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
JP7662062B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
JP7816498B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
CN119599140A (zh) 应用和业务感知的基于机器学习的功率管理器
JP7574902B2 (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
JP7852718B2 (ja) サーバ内データ転送装置、データ転送システム、サーバ内データ転送方法およびプログラム
JP7740368B2 (ja) サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
JP2026074185A (ja) サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240528

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250311

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250508

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250616

R150 Certificate of patent or registration of utility model

Ref document number: 7709645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150