[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP6545802B2 - Techniques for power management associated with processing of received packets in network devices - Google Patents

Techniques for power management associated with processing of received packets in network devices Download PDF

Info

Publication number
JP6545802B2
JP6545802B2 JP2017530249A JP2017530249A JP6545802B2 JP 6545802 B2 JP6545802 B2 JP 6545802B2 JP 2017530249 A JP2017530249 A JP 2017530249A JP 2017530249 A JP2017530249 A JP 2017530249A JP 6545802 B2 JP6545802 B2 JP 6545802B2
Authority
JP
Japan
Prior art keywords
power management
polling
management module
processing element
dpdk
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
JP2017530249A
Other languages
Japanese (ja)
Other versions
JP2018507457A (en
Inventor
ワイ. ジョウ,ダニー
ワイ. ジョウ,ダニー
ディー. グレイ,マーク
ディー. グレイ,マーク
ジェイ. ブラウン,ジョン
ジェイ. ブラウン,ジョン
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2018507457A publication Critical patent/JP2018507457A/en
Application granted granted Critical
Publication of JP6545802B2 publication Critical patent/JP6545802B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0212Power saving arrangements in terminal devices managed by the network, e.g. network or access point is master and terminal is slave
    • H04W52/0222Power saving arrangements in terminal devices managed by the network, e.g. network or access point is master and terminal is slave in packet switched networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/0833Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability for reduction of network energy consumption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Power Sources (AREA)
  • Small-Scale Networks (AREA)

Description

本明細書において説明される複数の例は、概して、ネットワークパケット処理と関連している。   The examples described herein are generally associated with network packet processing.

データプレーン展開キット(data plane development kit(DPDK))は、複数のソフトウェアライブラリ及び複数のドライバのセットであり、そのセットを使用して、インテル(登録商標)プロセッサアーキテクチャ等のプロセッサアーキテクチャに基づくネットワークコンピューティングプラットフォームのためのユーザ空間のパケット処理を促進してもよい。DPDKは、高性能のネットワークパケット処理アプリケーションをサポートするために世界中でデータセンターネットワークに展開されてきた。これらのネットワークパケット処理アプリケーションは、以下のものには限定されないが、ファイアウォールアプリケーション、仮想私設ネットワーク(VPN)アプリケーション、ネットワークアドレス変換(NAT)アプリケーション、ディープパケットインスペクション(DPI)アプリケーション、又は負荷バランサアプリケーションを含んでもよい。例えば、標準x86サーバプラットフォームにおいてこれらのファイアウォールアプリケーション、VPNアプリケーション、NATアプリケーション、DPIアプリケーション、又は負荷バランサアプリケーションを実装してもよく、標準x86サーバプラットフォームは、以下のものには限定されないが、インテル10[Gb]/40[Gb](10G/40G)ネットワークインターフェイスカード(NICs)に接続されるIntelXeon(登録商標)プロセッサを含んでもよい。高性能ネットワークパケット処理アプリケーションをサポートするためにDPDKを使用すると、ネットワークデバイスの少なくともいくつかの高価な柔軟性に乏しい物理的な構成要素を置き換えることが可能となる。   A data plane development kit (DPDK) is a set of software libraries and drivers that is used to network computing based on a processor architecture such as Intel® processor architecture. May facilitate user space packet processing for the DPDK has been deployed in data center networks worldwide to support high performance network packet processing applications. These network packet processing applications include, but are not limited to, firewall applications, virtual private network (VPN) applications, network address translation (NAT) applications, deep packet inspection (DPI) applications, or load balancer applications May be. For example, one may implement these firewall applications, VPN applications, NAT applications, DPI applications, or load balancer applications on a standard x86 server platform, including, but not limited to Intel 10 [] Gb] / 40 [Gb] (10G / 40G) network interface cards (NICs) may include an Intel Xeon® processor connected to the network interface cards (NICs). Using the DPDK to support high performance network packet processing applications makes it possible to replace at least some expensive and inflexible physical components of network devices.

システムの1つの例を図示している。Figure 1 illustrates one example of a system. 第1の論理フローの1つの例を図示している。FIG. 7 illustrates one example of a first logic flow. 第1のプロセスの1つの例を図示している。An example of the first process is illustrated. 第2のプロセスの1つの例を図示している。An example of the second process is illustrated. 第3のプロセスの1つの例を図示している。An example of the third process is illustrated. ある1つの装置のブロック図の1つの例を図示している。FIG. 1 illustrates one example of a block diagram of one device. 第2の論理フローの1つの例を図示している。FIG. 7 illustrates one example of a second logic flow. 第3の論理フローの1つの例を図示している。FIG. 7 illustrates one example of a third logic flow. 記憶媒体の1つの例を図示している。Figure 1 illustrates one example of a storage medium. コンピューティングプラットフォームの1つの例を図示している。Figure 1 illustrates one example of a computing platform.

いくつかの例において、高性能パケット処理アプリケーションのためのDPDKの実装は、インテル1G/10G/40G NIC等のネットワーク(NW)I/Oデバイスを構成し及び/又は動作させるポーリングモードドライバ(PMD)の展開を含んでもよい。これらの例では、PMDの展開は、DPDKベースのネットワークアプリケーションが、高性能及び低遅延の手法でパケットを受信し、処理し、そして送信するために、割り込みをトリガすることなく、最も高いプロセッサ/コア周波数又は最大のプロセッサ/コア周波数でNW I/Oデバイスの(例えば、受信(Rx)キュー及び送信(Tx)キュー等の)リソースにアクセスすることを可能としてもよい。しかしながら、データセンターネットワークにおいては、"潮汐効果"と呼ばれるよく知られた現象が発生する。潮汐効果は、時間期間にわたって複数の異なる地理的領域において生じるネットワークトラフィックパターンの有意な変化に起因する可能性がある。このようにして、ごく小さなネットワークトラフィックしか処理しない或いはネットワークトラフィックを全く処理しない期間の間、x86プロセッシングコアにおいて実行されているDPDKベースのアプリケーション("DPDKポーリングスレッド"( DPDK polling thread))は、依然として、(例えば、ネットワークパケットを処理するのではなく連続的にポーリングするといったように)待機でビジーとなっている可能性がある。ネットワークパケットを待っていると、かなりの量の電力のみならずかなりの量の計算資源を浪費する可能性がある。   In some instances, DPDK implementations for high-performance packet processing applications may use polling mode drivers (PMDs) to configure and / or operate network (NW) I / O devices such as Intel 1G / 10G / 40G NICs. May include the development of In these examples, PMD deployment is the highest processor / network protocol application based on DPDK, without triggering interrupts to receive, process, and transmit packets in a high performance and low latency manner. It may be possible to access resources (e.g., receive (Rx) and transmit (Tx) queues) of the NW I / O device at the core frequency or at the maximum processor / core frequency. However, in data center networks, a well-known phenomenon called "tidal effects" occurs. Tidal effects can be attributed to significant changes in network traffic patterns that occur in multiple different geographic areas over a time period. In this way, DPDK-based applications ("DPDK polling threads") running on the x86 processing core are still running for periods of time that they handle very little network traffic or no network traffic at all. , May be busy waiting (eg, polling continuously instead of processing network packets). Waiting for network packets can waste considerable amounts of computing resources as well as considerable amounts of power.

オペレーティングシステム(OS)電力管理サブシステム又はモジュールは、(主として、OSカーネル空間でのパフォーマンス状態(P-state)及び電力状態(C-state)の制御等の)いくつかの技術を提供してもよく、それらのいくつかの技術は、ピークネットワークトラフィック又は低ネットワークトラフィックのいずれかの期間の間のプロセッサ電力を調整する。(例えば、Linux(登録商標)又はWindows(登録商標)等の)標準的なOSにおいては、OS電力管理モジュールは、CPU使用量を周期的にサンプリングすることにより、プロセッサ又はコアがとるべき適切なプロセッサ電圧及び/又は周波数、動作点(P-state)及びプロセッサアイドル状態(C-state)をそれぞれ決定してもよい。しかしながら、DPDKポーリングスレッドが実際にパケットを処理しているのか又は待機でビジーになっているのかをOS電力管理モジュールが判定することができないということに起因して、上記のアプローチは、DPDKポーリングスレッドを有するPMDベースのパケット処理アプリケーションには適していない。OS電力管理モジュールがDPDKポーリングスレッドの動作状態を決定することができないということは、"潮汐効果"の影響を受けるデータセンターネットワークにおける電力を節約するために、これらのDPDKポーリングスレッドをサポートするプロセッサ又はコアがとるべき適切な電力状態を決定する際に問題を生ずる可能性がある。本明細書で説明される複数の例が必要となるのは、これらの課題に関してである。   The operating system (OS) power management subsystem or module may also provide several techniques (primarily control of performance states (P-states) and power states (C-states) in OS kernel space) Well, some of those techniques adjust processor power during periods of either peak network traffic or low network traffic. In a standard OS (e.g., Linux (R) or Windows (R)), the OS power management module will be able to pick the appropriate processor or core to take by periodically sampling CPU usage. The processor voltage and / or frequency, operating point (P-state) and processor idle state (C-state) may be determined respectively. However, due to the fact that the OS power management module can not determine whether the DPDK polling thread is actually processing a packet or is busy waiting, the above approach is based on the DPDK polling thread Not suitable for PMD based packet processing applications. The inability of the OS power management module to determine the operating state of the DPDK polling thread means that processors or processors that support these DPDK polling threads may be used to conserve power in data center networks affected by "tidal effects" Problems can arise in determining the proper power state for the core to take. It is with respect to these issues that several examples described herein are required.

第1の複数の例によれば、受信したパケットをNW I/Oデバイスで処理することと関連する電力管理のための技術は、あるDPDKポーリングスレッドのための複数のポーリングの反復(polling iterations)にわたって、NW I/Oデバイスの受信キューで保持されている利用可能な受信したパケット記述子をモニタリングするステップを含んでもよい。これらの第1の複数の例は、各々のポーリングの反復の後に、受信キューで保持されている利用可能なパケット記述子に基づいて受信キューの充足のレベル(level of fullness)を決定し、受信キューの充足のレベルに基づいてトレンド計数(trend count)を増加させるステップを含んでもよい。これらの第1の複数の例は、トレンド計数がトレンド計数閾値を超えているか否かに基づいて、OS電力管理モジュールにパフォーマンス指標を送信するステップを含んでもよい。上記のパフォーマンス指標は、OS電力管理モジュールが、DPDKポーリングスレッドを実行している処理要素のパフォーマンス状態を増加させることを可能としてもよい。   According to a first plurality of examples, techniques for power management associated with processing received packets at an NW I / O device include multiple polling iterations for a given DPDK polling thread And monitoring the available received packet descriptors held in the receive queue of the NW I / O device. These first examples determine the level of fullness of the receive queue based on the available packet descriptors held in the receive queue after each polling iteration, and receive It may include the step of increasing the trend count based on the level of queue filling. The first plurality of examples may include transmitting the performance indicator to the OS power management module based on whether the trending count exceeds the trending threshold. The above performance indicators may allow the OS power management module to increase the performance state of the processing element executing the DPDK polling thread.

第2の複数の例によれば、受信したパケットをNW I/Oデバイスで処理することと関連する電力管理のための技術は、そのDPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスの受信キューで保持されている利用可能な受信したパケット記述子をモニタリングするステップを含んでもよい。これらの第2の複数の例は、各々のポーリングの反復の後に、受信キューで保持されている利用可能なパケット記述子に基づいて、各々のポーリングの反復について受信キューで受信されたパケットの数を決定し、連続的な閾値を超える連続的な数のポーリングの反復について受信したパケットの数が0である場合に、1である計数だけアイドル計数を増加させるステップを含んでもよい。これらの第2の複数の例は、アイドル計数が第1のアイドル計数閾値を超えるか又は第1のアイドル計数閾値よりも小さいかに基づいて、第1の時間期間又は第2の時間期間のうちの一方の間、DPDKポーリングスレッドをスリープ状態にさせるステップを含んでもよい。第2の時間期間は、第1の時間期間よりも長くてもよい。   According to a second plurality of examples, the techniques for power management associated with processing received packets at the NW I / O device are performed by the NW I over multiple polling iterations for its DPDK polling thread. Monitoring the available received packet descriptors held in the receive queue of the / O device. These second examples illustrate, after each polling iteration, the number of packets received in the reception queue for each polling iteration based on the available packet descriptors held in the reception queue. And determining the idle count to be increased by a count of 1 if the number of packets received for successive numbers of polling iterations above a continuous threshold is zero. These second plurality of examples are based on whether the idle count is above or below the first idle count threshold, and during the first time period or the second time period. During one of the steps, the DPDK polling thread may be put to sleep. The second time period may be longer than the first time period.

図1は、例示的なシステム100を図示している。いくつかの例において、図1に示されているように、システム100は、NW I/Oデバイス110を含み、NW I/Oデバイス110は、NWトラフィック105に含まれるパケットを受信し又は送信するように構成される。プリフロー負荷バランサ120は、受信(Rx)キュー130-1乃至130-nにパケットを分配してもよく、"n"は、1よりも大きいいずれかの正の整数である。これらの例では、Rxキュー130-1乃至130-nは、それぞれDPDKポーリングスレッド140-1乃至140-nによる処理のために、受信したパケットを少なくとも一時的に保持するように構成されてもよい。各々のDPDKポーリングスレッド140-1乃至140-nは、これらには限定されないが、ファイアウォールアプリケーション、VPNアプリケーション、NATアプリケーション、DPIアプリケーション、又は負荷バランサアプリケーションを含むネットワークパケット処理アプリケーションの少なくとも複数の部分を実行することが可能であってもよい。各々のDPDKポーリングスレッド140-1乃至140-nは、それぞれのポーリングモードドライバ142-1乃至142-nを含んでもよく、プロセスを受信し又はNWトラフィック105において受信したパケットを送信するRxキュー130-1乃至130-nへのアクセスをあるポーリングモードの動作において割り込みなしで可能にする。   FIG. 1 illustrates an exemplary system 100. In some examples, as shown in FIG. 1, system 100 includes NW I / O device 110, which receives or transmits packets included in NW traffic 105. Configured as. The preflow load balancer 120 may distribute packets to the receive (Rx) queues 130-1 through 130-n, where "n" is any positive integer greater than one. In these examples, Rx queues 130-1 through 130-n may be configured to at least temporarily hold received packets for processing by DPDK polling threads 140-1 through 140-n, respectively. . Each DPDK polling thread 140-1 to 140-n executes at least portions of a network packet processing application including, but not limited to, a firewall application, a VPN application, a NAT application, a DPI application, or a load balancer application It may be possible. Each DPDK polling thread 140-1 to 140-n may include a respective polling mode driver 142-1 to 142-n and may receive a process or transmit received packets in the NW traffic 105 Rx queue 130- Allows access to 1-130-n without interruption in certain polling mode operations.

図1に示されているように、いくつかの例によれば、システム100は、ユーザ空間101で動作するように構成されるDPDK電力管理構成要素150及びカーネル空間102で動作するように構成されるOS電力管理モジュール160を含んでもよい。以下でより詳細に説明するように、DPDK電力管理構成要素150は、DPDKポーリングスレッド140-1乃至140-nによる処理のために、Rxキュー130-1乃至130-nで保持されている利用可能な受信したパケット記述子をモニタリングすることが可能であるロジック及び/又は特徴を含んでもよい。DPDK電力管理構成要素150におけるロジック及び/又は特徴は、DPDKポーリングスレッド140-1乃至140-nのためのスリープ時間又はアイドル時間をモニタリングしてもよい。   As shown in FIG. 1, according to some examples, system 100 is configured to operate with DPDK power management component 150 and kernel space 102 configured to operate in user space 101. An OS power management module 160 may be included. As described in more detail below, the DPDK power management component 150 is available at the Rx queues 130-1 to 130-n for processing by the DPDK polling threads 140-1 to 140-n. May include logic and / or features capable of monitoring received packet descriptors. The logic and / or features in DPDK power management component 150 may monitor sleep time or idle time for DPDK polling threads 140-1 through 140-n.

いくつかの例において、DPDK電力管理構成要素150の状態アルゴリズム154は、モニタリングされた情報を利用して、DPDKポーリングスレッド140-1乃至140-nが一時的なスリープ状態に置かれるようにし、(ワンショット(単発の)Rx割込みオンヒント180を介して)NW I/Oデバイス110に割込みターンオンヒンターメッセージを送信し、そして、ポーリングモードから割込みモードへと動作の変化を生じさせ、或いは、ライブラリ152がC-state(スリープ)ヒント又は指標或いはP-state(パフォーマンス)ヒント又は指標を送信するのを可能にする。図1に示されているように、これらの例では、OS電力管理モジュール160のプロセッサ要素(PE)アイドル162又はPE周波数164にC-stateヒント又はP-stateヒントを送信してもよい。OS電力管理モジュール160の複数の要素は、受信したC-stateヒント又はP-stateヒントに基づいて、1つ又は複数のプロセッサ170に含まれる1つ又は複数のPE172-1乃至172-nのC-state又はP-stateのいずれかへの変化を生じさせてもよい。統一拡張ファームウェアインターフェイス討論会(Unified Extensible Firmware Interface Forum)によって2014年6月に発行された拡張構成及び電力インターフェイス(ACPI)仕様書(Advanced Configuration and Power Interface (ACPI) Specification)改訂5.1版("ACPI仕様書")等の1つ又は複数のプロセッサ電力管理規格又は仕様書にしたがって、C-state又はP-stateを変化させ又は制御してもよい。   In some instances, the state algorithm 154 of the DPDK power management component 150 utilizes monitored information to cause the DPDK polling threads 140-1 through 140-n to be put to a temporary sleep state ( Send an interrupt turn-on hinter message to the NW I / O device 110 via the one-shot Rx interrupt on hint 180 and cause a change of operation from polling mode to interrupt mode or library 152 allows C-state (Sleep) hints or indicators or P-state (performance) hints or indicators to be sent. As shown in FIG. 1, in these examples, C-state hints or P-state hints may be sent to processor element (PE) idle 162 or PE frequency 164 of OS power management module 160. The elements of the OS power management module 160 may be configured to include one or more Cs of one or more PEs 172-1 to 172-n included in one or more processors 170 based on the received C-state hint or P-state hint. A change to either -state or P-state may occur. Advanced Configuration and Power Interface (ACPI) Specification Revised 5.1 ("ACPI Specification") published in June 2014 by the Unified Extensible Firmware Interface Forum C-state or P-state may be changed or controlled according to one or more processor power management standards or specifications, such as

いくつかの例によれば、1つ又は複数のプロセッサ170は、マルチコアプロセッサを含んでもよく、PE172-1乃至172-nは、各々がマルチコアプロセッサのコアであってもよく、及び/又はマルチコアプロセッサの1つ又は複数のコアによってサポートされる仮想機械(VM)であってもよい。また、これらの例では、PE172-1乃至172-nによってDPDKポーリングスレッド140-1乃至140-nを実行することが可能であってもよい。1つ又は複数のプロセッサ170は、これらには限定されないが、AMD(登録商標)プロセッサ、Athlon(登録商標)プロセッサ、Duron(登録商標)プロセッサ、Phenom(登録商標)プロセッサ、及びOpteron(登録商標)プロセッサ、インテルAtom(登録商標)Coreプロセッサ、Celeron(登録商標)コア(2)プロセッサ、Duoコアi3プロセッサ、コアi5プロセッサ、コアi7プロセッサ、Pentium(登録商標)Xeon又はXeon Phi(登録商標)プロセッサを含むさまざまなタイプの商業的に利用可能なx86プロセッサを含んでもよい。   According to some examples, one or more processors 170 may include a multi-core processor, and PEs 172-1 through 172-n may each be a core of a multi-core processor and / or a multi-core processor May be a virtual machine (VM) supported by one or more cores. Also, in these examples, it may be possible to execute the DPDK polling threads 140-1 to 140-n by the PEs 172-1 to 172-n. The one or more processors 170 may be, but are not limited to, AMD (R) processors, Athlon (R) processors, Duron (R) processors, Phenom (R) processors, and Opteron (R). Processor, Intel Atom (R) Core Processor, Celeron (R) Core (2) Processor, Duo Core i3 Processor, Core i5 Processor, Core i7 Processor, Pentium (R) Xeon or Xeon Phi (R) Processor It may include various types of commercially available x86 processors, including:

いくつかの例によれば、新たなAPI(NAPI)は、(例えば、Linux kernel等の)カーネル空間102において使用するための割込み軽減技術であってもよく、その割込み軽減技術は、DPDKポーリングスレッド140-1乃至140-nによるパケット処理をサポートしていてもよい。NAPIは、通常、OS及びNIC又はNW I/Oドライバのためのポーリングモード能力を取り入れることにより、高速ネットワーキングの性能を改善するように設計される。NAPIを使用すると、NW I/Oドライバは、ディフォルト設定で割込み駆動モードで動作してもよく、入来パケットのフローがある閾値をこえる場合に、ポーリングモードに切り替わるにすぎない。NAPIは、頻繁なモードの切り替えを可能にし、(例えば、サーバ又はパーソナルコンピュータ等の)ネットワーク端末エンドポイントは、厳格な低遅延要件及び厳格なジッタ要件を有していない可能性があるので、頻繁なモード切り替えは、これらの端末エンドポイントのためにうまく受け入れられてもよい。これに対して、(例えば、スイッチ、ルータ、及びL4乃至L7ネットワーク機器等の)あるタイプのネットワークデバイスは、厳格な遅延要件、厳格なジッタ要件及び厳格なパケット損失要件のもとで動作する可能性がある。これらのタイプのネットワークデバイスについて、頻繁なモードの切り替え、割込みを提供すること、及び停止中のスレッド又は中断しているスレッドをウェイクアップすること、或いはスレッドをスリープ状態にすることは、プロセッサリソース及び待ち時間ヒットの観点から代償の大きいものとなる可能性がある。これらのプロセッサリソース及び待ち時間ヒットは、データセンターネットワークにおけるような展開等においては、ネットワークデバイスにとっては受け入れることができないものとなる可能性がある。   According to some examples, the new API (NAPI) may be an interrupt mitigation technique for use in the kernel space 102 (e.g., the Linux kernel), which interrupt mitigation technique may be a DPDK polling thread It may support packet processing according to 140-1 to 140-n. NAPI is typically designed to improve the performance of high speed networking by incorporating polling mode capabilities for the OS and NIC or NW I / O drivers. Using NAPI, the NW I / O driver may operate in interrupt driven mode with default settings, and will only switch to polling mode if the flow of incoming packets exceeds a certain threshold. NAPI allows frequent mode switching, and network terminal endpoints (such as servers or personal computers, for example) may not have stringent low latency requirements and stringent jitter requirements, so frequent. Mode switching may be successfully accepted for these terminal endpoints. In contrast, certain types of network devices (eg, switches, routers, and L4 to L7 network equipment, etc.) can operate under strict delay requirements, stringent jitter requirements and stringent packet loss requirements. There is sex. For these types of network devices, frequent mode switching, providing interrupts, and waking up a suspended or suspended thread, or putting a thread to sleep are processor resources and It can be costly in terms of latency hits. These processor resources and latency hits may be unacceptable to network devices, such as in deployments such as in data center networks.

いくつかの例によれば、DPDKポーリングスレッド140-1乃至140-nのポーリングモードドライバ142-1乃至142-nは、ディフォルト設定で、あるポーリングモードで動作するように設計され又は構成されてもよい。以下でより詳細に説明されるように、DPDK電力管理構成要素150がますます低下する傾向を有するネットワークトラフィックを検出する場合には、DPDK電力管理構成要素150は、1つ又は複数の時間期間の間、DPDKポーリングスレッド140-1乃至140-nをスリープ状態にしてもよく、また、OS電力管理モジュール160にヒントを送信してもよい。それらのヒントに基づいて、OS電力管理モジュール160は、PE172-1乃至172-nが、プロセッサの周波数をある割合に応じて減少させ、或いは、アイドル状態又はスリープ状態への遷移をある割合に応じて減少させて、電力を節約するようにさせてもよい。DPDK電力管理構成要素150がある継続時間閾値の間にいかなるトラフィックも検出しない場合には、ポーリングモードドライバ142-1乃至142-nは、ディフォルトのポーリングモードから割込みモードに切り替わってもよい。このような方法で、DPDKポーリングスレッド140-1乃至140-nは、パケットを処理する際に、パフォーマンス要件をより良く満足するために主としてポーリングモード環境で動作することができ、したがって、頻繁なモードの切り替えを避けることができる。   According to some examples, polling mode drivers 142-1 through 142-n of DPDK polling threads 140-1 through 140-n may be designed or configured to operate in certain polling modes with default settings. Good. As described in more detail below, if the DPDK power management component 150 detects network traffic that has a declining trend, then the DPDK power management component 150 may be configured to perform one or more time periods. Meanwhile, the DPDK polling threads 140-1 to 140-n may be put to sleep, and a hint may be sent to the OS power management module 160. Based on those hints, the OS power management module 160 may cause the PEs 172-1 to 172-n to decrease the processor frequency according to a certain percentage, or to change a transition to an idle state or a sleep state. It may be reduced to save power. Polling mode drivers 142-1 through 142-n may switch from the default polling mode to an interrupt mode if DPDK power management component 150 does not detect any traffic during certain duration thresholds. In this manner, DPDK polling threads 140-1 through 140-n can operate primarily in a polling mode environment to better meet performance requirements when processing packets, and thus frequent mode Switching can be avoided.

図2は、第1の論理フローの1つの例を図示している。図2に示されているように、例示的な第1の論理フローは、論理フロー200を含んでいる。いくつかの例によれば、論理フロー200は、(例えば、データセンターに位置している)NWデバイスのための受信パケットを処理することと関連する電力管理のための論理フローであってもよい。これらの例では、図1に示されているシステム100の少なくともいくつかの構成要素は、論理フロー200の複数の部分を実装することが可能であってもよい。しかしながら、例示的な論理フロー200は、図1において図示され又は説明されているシステム100の構成要素を使用することに限定されない。   FIG. 2 illustrates one example of the first logic flow. As shown in FIG. 2, an exemplary first logic flow includes logic flow 200. According to some examples, logic flow 200 may be a logic flow for power management associated with processing received packets for an NW device (eg, located at a data center) . In these examples, at least some components of system 100 shown in FIG. 1 may be capable of implementing multiple portions of logic flow 200. However, the exemplary logic flow 200 is not limited to using the components of the system 100 illustrated or described in FIG.

図2に示されているように、いくつかの例では、ステップS202で、DPDK電力管理構成要素を初期化してもよい。これらの例では、(例えば、DPDKポーリングスレッド140-1等の)DPDKポーリングスレッドは、NW I/Oデバイスのための(例えば、Rxキュー130-1等の)Rxキューからのパケットをポーリングする継続的なループ(continuous loop)を開始してもよい。そのループは、以下で詳細に説明されるように、スリープ状態又は割込み状態に置かれることが生じるまで、継続してもよい。ステップS204において、(例えば、1乃至2[μs](マイクロ秒)ごとに)各々のポーリングの反復について、Rxキューに保持されている使用されそして制限のないパケット記述子の数を、DPDK電力管理構成要素によって取得してもよい。ステップS206において、ある与えられたポーリングの反復の間に受信したパケットが0個である場合に、ステップS208において、受信したパケットが0個であるポーリングの反復の数と、(例えば、5回の反復等の)連続的な数の閾値とを比較してもよい。いくつかの例では、連続的な数の閾値をこえなかった場合に、論理フローは、ステップS204に戻る。   As shown in FIG. 2, in some examples, the DPDK power management component may be initialized at step S202. In these examples, the DPDK polling thread (e.g., DPDK polling thread 140-1) continues polling the packets from the Rx queue (e.g., Rx queue 130-1) for the NW I / O device. You may start a continuous loop. The loop may continue until it is put to sleep or to an interrupt as described in detail below. In step S 204, for each polling iteration (eg, every 1 to 2 μs) (microseconds), the number of used and unrestricted packet descriptors held in the Rx queue, DPDK power management It may be acquired by a component. In step S206, if there are 0 packets received during a given polling iteration, then in step S208 the number of polling iterations with 0 received packets; It may compare to a continuous number of thresholds, such as iterations. In some instances, if the continuous number of thresholds is not exceeded, the logic flow returns to step S204.

いくつかの例によれば、受信したパケットの数が0個であるポーリングの反復の数に基づいて、ステップS210において、"アイドル"計数を1だけ増加させてもよい。ステップS212において、"アイドル"計数が閾値"THRESHOLD_1"を下回るか否か、すなわち、"アイドル"計数が閾値"THRESHOLD_1"よりも小さいか否かについての判定を行う。"アイドル"計数が閾値"THRESHOLD_1"よりも小さい場合には、ステップS214において、DPDKポーリングスレッドは、DPDK電力管理構成要素によって(例えば、数[μs]等の)短い期間の間、スリープ状態に置かれてもよい。ステップS216で、"アイドル"計数が閾値"THRESHOLD_2"よりも小さい場合には、ステップS218において、DPDKポーリングスレッドは、(例えば、数十[μs]等の)比較的長い期間の間、スリープ状態に置かれてもよい。   According to some examples, the "idle" count may be increased by one at step S210 based on the number of polling iterations where the number of received packets is zero. In step S212, a determination is made as to whether the "idle" count is below the threshold "THRESHOLD_1", ie, whether the "idle" count is less than the threshold "THRESHOLD_1". If the "idle" count is less than the threshold "THRESHOLD_1", then in step S214, the DPDK polling thread is put to sleep by the DPDK power management component for a short period of time (eg, a few [μs]). You may In step S216, if the "idle" count is less than the threshold "THRESHOLD_2", then in step S218 the DPDK polling thread sleeps for a relatively long period of time (e.g., tens of microseconds). It may be placed.

いくつかの例において、短いスリープ期間は、短い数[μs]のスリープ期間であってもよく、連続的なスピンループと比較して、電力消費を減少させてもよい。したがって、トラフィックの傾向がいまだに識別可能でない時間の間の高価なコンテキストスイッチの使用を、DPDKポーリングスレッドに回避させる。比較的長いスリープ期間は、より低いトラフィックの傾向がすでに識別されている場合のスリープ期間になっていてもよい。上記の場合には、DPDK電力管理構成要素は、DPDKポーリングスレッドを、より長い期間の間、スリープ状態にさせてもよく、OS電力管理モジュールに長いスリープ指標又はC-stateヒントを送信してもよい。OS電力管理モジュールは、その後、DPDKポーリングスレッドをサポートするPEが、ACPI C1電力状態となるようにしてもよい。上記のC1電力状態は、新たなNWトラフィックが到達した場合に、PEがC0電力状態まで迅速に給電するのを可能にする。また、新たなNWトラフィックが到達した場合には、"アイドル"計数は、0の係数にリセットされる。   In some examples, the short sleep period may be a short number of [μs] sleep periods, and may reduce power consumption as compared to a continuous spin loop. Thus, having the DPDK polling thread avoid the use of expensive context switches during times when traffic trends are not yet discernible. The relatively long sleep period may be a sleep period if a lower traffic trend is already identified. In the above case, the DPDK power management component may put the DPDK polling thread to sleep for a longer period of time, and even send a long sleep indicator or C-state hint to the OS power management module. Good. The OS power management module may then cause the PE supporting the DPDK polling thread to be in ACPI C1 power state. The above C1 power state allows the PE to power up quickly to the C0 power state when new NW traffic arrives. Also, if new NW traffic arrives, the "idle" count is reset to a factor of zero.

いくつかの例によれば、閾値"THRESHOLD_1"は、閾値"THRESHOLD_2"と比較して数分の一の長さであってもよく、Rxキューにおけるパケットが0個の比較的短い期間の後に、DPDKポーリングスレッドをスリープ状態にさせてもよい。これに対して、"アイドル"計数が閾値"THRESHOLD_2"をこえる場合には、ステップS220において、ワンショット(単発の)Rx割込み(one-shot Rx interrupt)を有効にしてもよい。入来パケットがNW I/Oデバイスによって受信されると、ステップS222で、単発の割込みがトリガされ、単発の割込みは、中断されているDPDKポーリングスレッドを、割込みモードから再びポーリングモードに切り替わるようにさせてもよい。閾値"THRESHOLD_2"をこえる"アイドル"計数は、低速のネットワークトラフィック期間又はネットワークトラフィックが全くない期間を示してもよい。また、DPDKポーリングスレッドを中断させると、OS電力管理モジュールが、DPDKポーリングスレッドを実行するPEを、C1電力状態よりもより低い電力使用量を有するより深いC-stateにおくようにすることを可能にする。実際には、DPRKポーリングスレッドは、現時点で割込みモードで動作していてもよく、その割込みモードは、ネットワークトラフィックを再び受信したことに応答して、ポーリングモードに再び切り替わってもよい。   According to some examples, the threshold "THRESHOLD_1" may be a fraction of the length compared to the threshold "THRESHOLD_2", and after a relatively short period of zero packets in the Rx queue, The DPDK polling thread may be put to sleep. On the other hand, if the "idle" count exceeds the threshold "THRESHOLD_2", then one-shot Rx interrupt may be enabled in step S220. When an incoming packet is received by the NW I / O device, a single interrupt is triggered in step S222 so that the single interrupt switches the suspended DPDK polling thread from interrupt mode back to polling mode. You may An "idle" count above the threshold "THRESHOLD_2" may indicate periods of slow network traffic or periods of no network traffic. Also, interrupting the DPDK polling thread allows the OS power management module to put the PE that runs the DPDK polling thread into a deeper C-state with lower power usage than the C1 power state Make it In fact, the DPRK polling thread may currently be operating in interrupt mode, which may switch back to polling mode in response to receiving network traffic again.

いくつかの例において、Rxキューでパケットを受信した場合には、Rxキューの充足のレベルを決定してもよい。例えば、ステップS224において、Rxキューが(例えば、25%乃至50%満たされているといったように)ほぼ空である場合には、ステップS226において、"トレンド"計数を小さな数だけ増加させてもよい。ステップS234において、Rxキューが(例えば、51%乃至75%満たされているといったように)半分満たされている場合には、ステップS236において、"トレンド"計数を大きな数だけ増加させてもよい。また、ステップS228で、"トレンド"計数がトレンド計数閾値をこえている場合には DPDK電力管理構成要素は、OS電力管理モジュールにパフォーマンス指標又はP-stateヒントを送信してもよい。パフォーマンス指標は、ステップS230で、OS電力管理モジュールが、DPDKポーリングスレッドを実行しているPEのための動作周波数を増加させるようにしてもよく、或いは、ACPI P-stateを上昇させるようにしてもよい。ネットワークトラフィックの漸増的な増加を検出することができ、かつ、ステップS232で、受信したパケットを処理しながら、PEのためのP-stateを緩やかに増加させて、電力節約とパフォーマンスとの間のバランスをとることが可能であるように、"トレンド"計数を設定してもよい。   In some examples, if a packet is received at the Rx queue, the level of Rx queue fullness may be determined. For example, if the Rx queue is nearly empty (eg, 25% to 50% full, etc.) in step S224, then the "trend" count may be increased by a small number in step S226. . If, in step S234, the Rx queue is half full (eg, 51% to 75% full), then in step S236 the "trend" count may be increased by a large number. Also, in step S228, the DPDK power management component may send a performance indicator or P-state hint to the OS power management module if the "trend" count exceeds the trend count threshold. The performance index may be such that the OS power management module may increase the operating frequency for the PE executing the DPDK polling thread, or may increase the ACPI P-state in step S230. Good. An incremental increase in network traffic can be detected and, in step S232, while processing the received packets, gradually increase the P-state for the PE, between power saving and performance. The "trend" count may be set so that it is possible to balance.

いくつかの例によれば、ステップS238で、Rxキューが(例えば、76%よりも大きなパーセンテイジだけ満たされているといったように)ほぼ満たされている場合には、ステップS240で、Rxキューがほぼ満たされているポーリング反復の連続的な数と、(例えば、5回のポーリングの反復等の)連続的な閾値とを比較してもよい。これらの例では、上記の連続的な閾値をこえている場合には、DPDK電力管理構成要素は、OS電力管理モジュールに高いパフォーマンス指標又は高いP-stateヒントを送ってもよい。高いパフォーマンス指標は、ステップS242において、OS電力管理モジュールが、DPDKポーリングスレッドを実行しているPEのための動作周波数をある割合に応じて最も高い周波数に増加させることを可能にしてもよく、或いは、DPDKポーリングスレッドを実行しているPEのためのACPI P-stateを最も高いパフォーマンスP-stateに上昇させることを可能にしてもよい。ある割合に応じて最も高いパフォーマンスP-stateに増加させることは、OS電力管理モジュールが、高いネットワークトラフィック負荷に迅速に反応することを可能とし、したがって、受信したパケットをステップS232において処理しながら、DPDKポーリングスレッドを実行しているPEを、電力節約とパフォーマンスとの間のバランスから純粋にパフォーマンスベースの動作状態へと切り替えることを可能とする。   According to some examples, if the Rx queue is substantially filled (e.g., filled with a percentage greater than 76%, etc.) at step S238, then the Rx queue is at step S240. The continuous number of substantially satisfied polling iterations may be compared to a continuous threshold (e.g., 5 polling iterations). In these examples, the DPDK power management component may send a high performance indicator or high P-state hint to the OS power management module if the above continuous threshold is exceeded. A high performance indicator may allow the OS power management module to increase the operating frequency for the PE executing the DPDK polling thread to the highest frequency according to a percentage, in step S242, or It may be possible to raise the ACPI P-state for the PE running the DPDK polling thread to the highest performance P-state. Increasing to the highest performance P-state according to a percentage allows the OS power management module to react quickly to high network traffic loads, thus processing the received packets in step S232. Allows PEs running DPDK polling threads to switch from a balance between power savings and performance to a purely performance-based operating state.

いくつかの例において、DPDK電力管理構成要素は、DPDKポーリングスレッドがスリープ状態にある時間長を周期的にモニタリングする。これらの例では、DPDK電力管理構成要素は、ステップS244において、周期的なタイマを初期化してもよく、ステップS244は、タイマ期間を開始させてもよく、DPDKポーリングスレッドのスリープ状態のモニタリングが、そのタイマ期間の間に行われてもよい。ステップS246でのタイマの終了に続いて、DPDK電力管理構成要素は、DPDKポーリングスレッドが、複数のポーリングの反復のうちの25%よりも長い間、スリープ状態に置かれているか否かということを判定してもよい。上記で説明したように、"アイドル"計数が閾値"THRESHOLD_1"よりも小さいか又は閾値"THRESHOLD_2"よりも小さいかに基づいて、DPDKポーリングスレッドは、さまざまな時間の間、スリープ状態に置かれ続けてもよい。DPDKポーリングスレッドが、複数のポーリングの反復のうちの25%よりも長い間、スリープ状態に置かれているということを、DPDK電力管理構成要素が見出した場合には、DPDK電力管理構成要素は、ステップS252において、OS電力管理モジュールにパフォーマンス指標又はP-stateヒントを送信してもよい。パフォーマンス指標の送信の結果、OS電力管理モジュールは、DPDKポーリングスレッドを実行しているPEが、低くされた又は減少させられた動作周波数で動作するようにさせてもよい。言い換えると、そのPEのためのACPI P-stateをより低いパフォーマンスP-stateに下げてもよい。   In some examples, the DPDK power management component periodically monitors the length of time the DPDK polling thread is in sleep. In these examples, the DPDK power management component may initialize a periodic timer in step S244, and step S244 may start a timer period, and monitoring of the sleep state of the DPDK polling thread is: It may be performed during the timer period. Following expiration of the timer in step S246, the DPDK power management component determines whether the DPDK polling thread has been put to sleep for more than 25% of the multiple polling iterations. You may judge. As explained above, based on whether the "idle" count is less than the threshold "THRESHOLD_1" or less than the threshold "THRESHOLD_2", the DPDK polling thread continues to be put to sleep for various periods of time May be If the DPDK power management component finds that the DPDK polling thread has been sleeping for more than 25% of the multiple polling iterations, then the DPDK power management component In step S252, the performance indicator or P-state hint may be sent to the OS power management module. As a result of the transmission of the performance indicator, the OS power management module may cause the PEs executing the DPDK polling thread to operate at a reduced or reduced operating frequency. In other words, the ACPI P-state for that PE may be reduced to a lower performance P-state.

いくつかの例によれば、DPDKポーリングスレッドが、複数のポーリングの反復のうちの25%よりも長い間、スリープ状態に置かれていない場合には、DPDK電力管理構成要素は、ステップS250において、その時間期間の間に受信したパケットについての平均の反復ごとのパケット数が、予想される平均の反復ごとのパケット数の閾値よりも小さいか否かを判定してもよい。その時間期間の間に受信したパケットについての平均の反復ごとのパケット数が、予想される平均の反復ごとのパケット数の閾値を下回る場合には、DPDK電力管理構成要素は、ステップS252において、OS電力管理モジュールにパフォーマンス指標又はP-stateヒントを送信してもよい。DPDKポーリングスレッドが複数のポーリングの反復のうちの25%よりも長い間スリープ状態に置かれているということ、又はその時間期間の間に受信したパケットについての平均の反復ごとのパケット数が予想される平均の反復ごとのパケット数の閾値よりも小さいということに応答して、PEにそのPEのP-stateを下げさせるということは、モニタリングされている情報に基づいて電力を節約するためにパフォーマンス状態を一定の比率で下降させるある1つの方法であるということができ、そのモニタリングされている情報は、ネットワークトラフィック自体或いはネットワークトラフィックからのパケットを少なくとも処理することが低下しているということを示している。   According to some examples, if the DPDK polling thread has not been put to sleep for more than 25% of the plurality of polling iterations, then the DPDK power management component, in step S250 It may be determined whether the average number of packets per iteration for packets received during the time period is less than the expected average number of packets per iteration threshold. If the average number of packets per iteration for packets received during that time period is below the expected average number of packets per iteration threshold, then the DPDK power management component, in step S252, Performance indicators or P-state hints may be sent to the power management module. The DPDK polling thread has been put to sleep for longer than 25% of multiple polling iterations, or the average number of packets per iteration for packets received during that time period is expected Having the PE lower the P-state of the PE in response to being smaller than the average number of packets per iteration threshold is a performance savings based on the information being monitored. It can be said that there is one way to lower the state at a constant rate, and the information being monitored indicates that the network traffic itself or packets from the network traffic are at least degraded to process. ing.

図3は、第1のプロセス300の1つの例を図示している。図3に示されているように、第1のプロセスは、プロセス300を含んでいる。いくつかの例によれば、プロセス300は、システム100の複数の異なる要素が、図2について上記で説明された論理フロー200の複数の部分をいかにして実装することができるかを説明している。特に、これらの複数の部分は、DPDK電力管理構成要素(PMC)によってとられるスリープ動作、アイドル動作、又は割込み動作と関連している。これらの例では、図1に示されているシステム100の少なくともいくつかの構成要素が、プロセス300に関連付けられていてもよい。しかしながら、例示的なプロセス300は、図1において示され又は説明されているシステム100の構成要素を使用する実装には限定されない。   FIG. 3 illustrates one example of a first process 300. As shown in FIG. 3, the first process includes process 300. According to some examples, process 300 illustrates how multiple different elements of system 100 can implement multiple portions of logic flow 200 described above for FIG. There is. In particular, these parts are associated with sleep operation, idle operation or interrupt operation taken by the DPDK power management component (PMC). In these examples, at least some of the components of system 100 shown in FIG. 1 may be associated with process 300. However, the exemplary process 300 is not limited to implementations using components of the system 100 shown or described in FIG.

(パケットを受信する)プロセス3.1から開始して、NW I/Oデバイス110で複数のパケットを受信し、それらの複数のパケットをRxキュー130に少なくとも一時的に収納する。   Starting with process 3.1 (receiving packets), the NW I / O device 110 receives a plurality of packets and at least temporarily stores them in the Rx queue 130.

(ポーリング及び処理)プロセス3.2に移り、DPDKポーリングスレッド140は、Rxキュー130のポーリングが可能であってもよく、パケットがRxキュー130で受信されている場合には、それらのパケットを処理してもよい。   Moving to process 3.2, the DPDK polling thread 140 may be able to poll the Rx queue 130 and process those packets if they are received at the Rx queue 130. It is also good.

(利用可能な受信したパケット記述子をモニタリングする)プロセス3.3に移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、複数のDPDKポーリングスレッド140のための複数のポーリングの反復にわたって、Rxキュー130で保持されている利用可能な受信したパケット記述子をモニタリングする。   Moving to process 3.3 (monitoring available received packet descriptors), the DPDK power management component 150 may include logic and / or features, the logic and / or features comprising a plurality of DPDK polling threads 140 The available received packet descriptors held in the Rx queue 130 are monitored over multiple polling iterations.

(連続的な閾値を超える連続的な数のポーリングの反復について受信したパケットの数が0)プロセス3.4に移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、(例えば、5個のポーリングの反復等の)連続的な閾値をこえる数のポーリングの反復について受信されているパケットの数が0であるか否かを判定する。   (The number of packets received for consecutive number of polling iterations above the continuous threshold is zero) Moving to process 3.4, the DPDK power management component 150 may include logic and / or features that logic and The feature may determine whether the number of packets being received is zero for a number of polling iterations (e.g., 5 polling iterations) that exceed a continuous threshold.

(アイドル計数を増加させる)プロセス3.5に移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、連続的な閾値を超える連続的な数のポーリングの反復について受信したパケットの数が0である場合に、1である計数だけアイドル計数を増加させる。   Moving to process 3.5 (increasing idle count), the DPDK power management component 150 may include logic and / or features, which logic and / or features poll a continuous number of consecutive thresholds above threshold If the number of packets received for a repetition of 0 is 0, then increase the idle count by a count that is 1.

(短い期間のスリープ)プロセス3.6Aに移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、増加したアイドル計数が(例えば、THRESHOLD_1等の)第1のアイドル計数閾値よりも小さいと考えられる場合には、(例えば、数[μs]等の)短い期間の間、DPDKポーリングスレッド140をスリープ状態に置く。上記のプロセスは、その後、終了してもよい。   Moving to process 3.6A (sleep for a short period of time), the DPDK power management component 150 may include logic and / or features whose logic and / or features have increased idle count (eg, such as THRESHOLD_1, etc.) The DPDK polling thread 140 is put to sleep for a short period of time (e.g., a few microseconds) if it is considered to be less than the first idle count threshold. The above process may then end.

(長い期間のスリープ)プロセス3.6Bにおける第1の代替処理に移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、増加したアイドル計数が、第1のアイドル計数閾値よりも大きいが第2のアイドル計数閾値(THRESHOLD_2)よりも小さいと考えられる場合には、(例えば、数十[μs]等の)比較的長いスリープ期間の間、DPDKポーリングスレッド140をスリープ状態に置く。   Moving to the first alternative process in (long-duration sleep) process 3.6B, the DPDK power management component 150 may include logic and / or features whose logic and / or features include increased idle count. If it is considered to be greater than the first idle count threshold but smaller than the second idle count threshold (THRESHOLD_2), DPDK polling during a relatively long sleep period (eg, several tens of μs) Put thread 140 to sleep.

(長いスリープの指標)プロセス3.7Bに移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、OS電力管理モジュール(PMM)160に長いスリープの指標を送信し、DPDKポーリングスレッド140が、長いスリープ期間の間、スリープ状態に置かれていたということを示してもよい。   Moving to process 3.7B (indicator of long sleep), the DPDK power management component 150 may include logic and / or features, which may be included in the OS power management module (PMM) 160 for long sleep An indicator may be sent to indicate that the DPDK polling thread 140 has been put to sleep for a long sleep period.

(長い期間の間のスリープモード)プロセス3.8Bに移り、OS電力管理モジュール160は、最大で長いスリープ期間までの間、1つ又は複数のPE172をスリープモードに置くようにしてもよい。いくつかの例において、スリープモードは、ACPI C1電力状態を含んでもよい。上記のプロセスは、その後、この第1の代替処理については終了してもよい。   Moving to process 3.8B (sleep mode for a long period of time), the OS power management module 160 may place one or more PEs 172 in sleep mode for up to a long sleep period. In some examples, the sleep mode may include an ACPI C1 power state. The above process may then end for this first alternative process.

(ワンショット(単発の)Rx割込みをオンにする)プロセス3.6Cにおける第2の代替処理に移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、アイドル計数が(例えば、THRESHOLD_2等の)第2のアイドル計数閾値をこえたことに基づいて、NW I/Oデバイス110に割込みターンオンヒンターメッセージを送信する。   Moving to the second alternative process in process 3.6C (turn on one-shot Rx interrupts), the DPDK power management component 150 may include logic and / or features that logic and / or features Sends an interrupt turn-on hinter message to the NW I / O device 110 based on the idle count exceeding a second idle count threshold (eg, THRESHOLD_2, etc.).

(割り込みモードに切り替える)プロセス3.7Cに移ると、ポーリングモードドライバ142は、ポーリングモードでのNW I/Oデバイス110に対する動作から割り込みモードへと切り替わってもよい。上記のモード切替は、DPDKポーリングスレッド140を中断状態にさせてもよい。   Moving to process 3.7C (switch to interrupt mode), the polling mode driver 142 may switch from operating on the NW I / O device 110 in polling mode to an interrupt mode. The above mode switching may cause the DPDK polling thread 140 to be suspended.

(パケットを受信する)プロセス3.8Cに移ると、ネットワークトラフィック105は、この段階では、DPDKスレッド140による処理のためのパケットを含んでもよい。   Moving to process 3.8C (receiving a packet), network traffic 105 may, at this stage, include the packet for processing by DPDK thread 140.

(ポーリングモードへの切り替え)プロセス3.9Cに移ると、ポーリングモードドライバ142は、ポーリングモードでのNW I/Oデバイス110に対する動作に再び切り替わってもよく、プロセスは、その後、この第2の代替処理で終了してもよい。   Turning to process 3.9C, the polling mode driver 142 may switch back to operation on the NW I / O device 110 in polling mode, and the process then proceeds with this second alternative process. You may end with

図4は、第2のプロセス400の1つの例を図示している。図4に示されているように、第2のプロセスは、プロセス400を含んでいる。プロセス300と同様に、プロセス400は、図2について上記で説明された論理フロー200の複数の部分をシステム100の複数の異なる要素がいかに実装するかを説明してもよい。特に、これらの複数の部分は、DPDKポーリングスレッドのスリープ状態のパーセンテイジ又は平均の反復ごとのパケット数をモニタリングして、1つ又は複数のPE172のパフォーマンス状態を下げるか否かを決定することに関連している。これらの例では、図1に示されているシステム100の少なくともいくつかの構成要素が、プロセス400と関連していてもよい。しかしながら、例示的なプロセス400は、図1で説明されているシステム100の構成要素を使用する実装には限定されない。   FIG. 4 illustrates one example of the second process 400. As shown in FIG. 4, the second process includes process 400. Similar to process 300, process 400 may describe how different elements of system 100 implement the portions of logic flow 200 described above with respect to FIG. In particular, these portions monitor the percentage of sleep state sleeps or the average number of packets per iteration of the DPDK polling thread to determine whether to degrade the performance state of one or more PEs 172. It is related. In these examples, at least some of the components of system 100 shown in FIG. 1 may be associated with process 400. However, the exemplary process 400 is not limited to implementations using components of the system 100 described in FIG.

(タイマを初期化する)プロセス4.1から開始して、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、あるタイマ期間を有するタイマを初期化し又は開始してもよい。いくつかの例において、そのタイマ期間は、およそ100[ms](ミリ秒)であってもよい。   Starting with process 4.1 (initializing a timer), the DPDK power management component 150 may include logic and / or features, which logic and / or features initialize a timer having a timer period or May start. In some examples, the timer period may be approximately 100 ms (milliseconds).

(活動をモニタリングして、スリープ状態のパーセンテイジを決定する)プロセス4.2に移ると、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、DPDKポーリングスレッド140がスリープ状態に置かれた頻度をモニタリングする。   Moving to process 4.2 (monitoring activity and determining percentage of sleep states), the DPDK power management component 150 may include logic and / or features, which may be DPDK polled. Monitor how often thread 140 has been put to sleep.

(タイマが終了する)プロセス4.3に移ると、タイマは、上記のタイマ期間の後に終了する。   Moving to process 4.3 (the timer ends), the timer ends after the timer period described above.

(パフォーマンス指標(スリープ%))プロセス4.4Aに移ると、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、DPDKポーリングスレッド140が、タイマ期間の期間中にパーセンテイジ閾値を上回るパーセンテイジの時間の間スリープ状態にあったか否かを判定する。DPDKポーリングスレッド140がスリープ状態にあるパーセンテイジが上記のパーセンテイジ閾値を上回る又はこえている(例えば、25%より大きい)場合には、DPDK電力管理構成要素150は、OS電力管理モジュール160にパフォーマンス指標を送ってもよい。   (Performance Indicator (Sleep%)) Moving to process 4.4A, the DPDK power management component 150 may include logic and / or features that cause the DPDK polling thread 140 to It is determined whether the computer has been in a sleep state for a period of percentage time exceeding a percentage threshold during a period. If the percentage that the DPDK polling thread 140 is in sleep state is above or exceeds the above percentage threshold (eg, greater than 25%), then the DPDK power management component 150 will perform the OS power management module 160 performance. You may send an indicator.

(より低いパフォーマンス状態)プロセス4.5Aに移ると、OS電力管理モジュール160は、1つ又は複数のPE172がパフォーマンス状態又はP-stateを低くするようにさせてもよい。上記のプロセスは、その後、終了してもよい。   (Lower Performance State) Moving to process 4.5A, the OS power management module 160 may cause one or more PEs 172 to lower the performance state or P-state. The above process may then end.

(パフォーマンス指標(平均の反復ごとのパケット数))プロセス4.4Bにおける第1の代替処理に移り、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、平均の反復ごとのパケット数がパケット平均閾値よりも大きいか又は小さいかを判定する。いくつかの例では、平均の反復ごとのパケット数がパケット平均閾値を下回る場合には、DPDK電力管理構成要素150は、OS電力管理モジュール160にパフォーマンス指標を送ってもよい。   Moving to the first alternative processing in process 4.4B (performance indicator (number of packets per average iteration)), the DPDK power management component 150 may include logic and / or features, which may be logic and / or features Determine whether the average number of packets per iteration is greater or smaller than the packet average threshold. In some examples, the DPDK power management component 150 may send the performance indicator to the OS power management module 160 if the average number of packets per iteration is below the packet average threshold.

(より低いパフォーマンス状態)プロセス4.5Bに移ると、OS電力管理モジュール160は、1つ又は複数のPE172がパフォーマンス状態又はP-stateを低くするようにさせてもよい。上記のプロセスは、この第1の代替処理で終了してもよい。   (Lower Performance State) Moving to process 4.5B, the OS power management module 160 may cause one or more PEs 172 to lower the performance state or P-state. The above process may end with this first alternative process.

図5は、第3のプロセス500の1つの例を図示している。図5に示されているように、第3のプロセスは、プロセス500を含む。いくつかの例によれば、プロセス500は、図2について上記で説明された論理フロー200の複数の部分をシステム100の複数の異なる要素がいかにして実装するかを説明してもよい。特に、これらの部分は、Rxキューの充足のレベルをモニタリングして、1つ又は複数のPEのパフォーマンスを上げるべきであるか、そして、いつあげるべきであるのかを決定することと関連している。これらの例では、図1に示されているシステム100の少なくともいくつかの構成要素が、プロセス500に関連していてもよい。しかしながら、例示的なプロセス500は、図1で示され又は説明されているシステム100の構成要素を使用する実装には限定されない。   FIG. 5 illustrates one example of a third process 500. As shown in FIG. 5, the third process includes process 500. According to some examples, process 500 may describe how different components of system 100 implement portions of logic flow 200 described above with respect to FIG. In particular, these parts are related to monitoring the level of Rx queue fullness to determine if and when to increase the performance of one or more PEs . In these examples, at least some of the components of system 100 shown in FIG. 1 may be associated with process 500. However, the exemplary process 500 is not limited to implementations using components of the system 100 shown or described in FIG.

(パケットを受信する)プロセス5.1から開始して、NW I/Oデバイス100でパケットを受信して、Rxキュー130にそれらのパケットを少なくとも一時的に収納してもよい。   Starting from process 5.1 (receiving packets), the NW I / O device 100 may receive packets and store them at least temporarily in the Rx queue 130.

(ポーリング及び処理)プロセス5.2に移ると、DPDKポーリングスレッド140は、Rxキュー130をポーリングすることが可能であってもよく、パケットがRxキュー130で受信されている場合には、それらのパケットを処理してもよい。   Moving to process 5.2, the DPDK polling thread 140 may be able to poll the Rx queue 130 and, if packets are being received at the Rx queue 130, those packets. It may be processed.

(利用可能な受信したパケット記述子をモニタリングする)プロセス5.3に移ると、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、DPDKポーリングスレッド140のための複数のポーリングの反復にわたって、Rxキュー130で保持されている利用可能な受信したパケット記述子をモニタリングする。   Moving to process 5.3 (monitoring available received packet descriptors), the DPDK power management component 150 may include logic and / or features, which may be determined by the DPDK polling thread 140. The available received packet descriptors held in the Rx queue 130 are monitored over multiple polling iterations.

(Rxキューの充足のレベルを決定する)プロセス5.4に移ると、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、各々のポーリングの反復の後に、Rxキュー130で保持されている利用可能なパケット記述子に基づいて、Rxキュー130の充足のレベルを決定する。   Turning to process 5.4 (determining the level of Rx queue fullness), the DPDK power management component 150 may include logic and / or features, which may be included after each polling iteration. , Determine the level of Rx queue 130 fullness based on the available packet descriptors held in Rx queue 130.

(トレンド計数を増加させる)プロセス5.5に移ると、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、図2に示されている論理フロー200について上記で説明されたようにRxキュー130の決定された充足のレベルに基づいて、単一の係数又はより大きな係数だけトレンド計数を増加させる。   Moving to process 5.5 (increasing trend count), the DPDK power management component 150 may include logic and / or features, the logic and / or features being for the logic flow 200 shown in FIG. Based on the determined level of fulfillment of Rx queue 130 as described above, the trend count is increased by a single factor or a larger factor.

(パフォーマンス指標)プロセス5.6Aに移ると、DPDK電力管理構成要素150は、ロジック及び/特徴を含んでもよく、そのロジック及び/又は特徴は、増加させられたトレンド計数がスレッド計数閾値をこえたことに基づいて、OS電力管理モジュール160にパフォーマンス指標を送ってもよい。   Performance Indicators Turning to process 5.6A, the DPDK power management component 150 may include logic and / or features that indicate that the increased trend count has exceeded the thread count threshold. The performance indicator may be sent to the OS power management module 160 based on

(動作周波数を漸増的に増加させる)プロセス5.7Aに移ると、OS電力管理モジュール160は、1つ又は複数のPE172がパフォーマンス状態又はP-stateを増加させてもよい。いくつかの例において、1つ又は複数のPE172のパフォーマンス状態を漸増的に又は単一のP-stateだけ上げてもよく、パフォーマンス状態を上げると、DPDKポーリングスレッド140を実行しているときに、1つ又は複数のPE172の動作周波数を増加させることができる。上記のプロセスは、その後、終了してもよい。   Moving to process 5.7A (increasing the operating frequency incrementally), the OS power management module 160 may cause one or more PEs 172 to increase the performance state or P-state. In some instances, the performance state of one or more PEs 172 may be increased incrementally or by a single P-state, raising the performance state when executing the DPDK polling thread 140 The operating frequency of one or more PEs 172 can be increased. The above process may then end.

(高いパフォーマンス指標)プロセス5.6Bにおける第1の代替処理に移ると、DPDK電力管理構成要素150は、ロジック及び/又は特徴を含んでもよく、そのロジック及び/又は特徴は、Rxキュー130が(例えば、75%をこえるといったように)ほぼ充足していると判定される連続的な数のポーリングの反復に応答して、OS電力管理モジュール160に高いパフォーマンス指標を送る。   Turning to the first alternative process (high performance indicator) process 5.6B, the DPDK power management component 150 may include logic and / or features that may be received by the Rx queue 130 (eg, The OS power management module 160 is sent a high performance indicator in response to a continuous number of polling iterations that are determined to be substantially full, such as greater than 75%.

(動作周波数を最も高い周波数に増加させる)プロセス5.7Bに移ると、OS電力管理モジュール160は、1つ又は複数のPE172のパフォーマンス状態又はP-stateを最も高いP-state又は最大のP-stateに増加させてもよい。いくつかの例において、PE172のパフォーマンス状態又はP-stateを最も高いP-state又は最大のP-stateに上げることは、結果として、DPDKポーリングスレッド140を実行しているときに、1つ又は複数のPE172をそれらの最も高い動作周波数又は最大の動作周波数に上昇させる。上記のプロセスは、その後、この第1の代替処理で終了してもよい。   Moving to process 5.7 B (increasing the operating frequency to the highest frequency), the OS power management module 160 causes the performance state or P-state of one or more PEs 172 to be the highest P-state or the largest P-state. May be increased. In some instances, raising the performance state or P-state of PE 172 to the highest P-state or maximum P-state results in one or more when running DPDK polling thread 140 To raise their PEs 172 to their highest or highest operating frequency. The above process may then end with this first alternative process.

図6は、装置600のブロック図の1つの例を図示している。図6に示されている装置600は、ある1つの接続形態の限定された数の要素を有しているが、装置600は、ある与えられた実装について説明されたように代替的な接続形態のより多くの要素又はより少ない要素を含んでもよい。   FIG. 6 illustrates one example of a block diagram of an apparatus 600. While the device 600 shown in FIG. 6 has a limited number of elements in one connection configuration, the device 600 may use alternative connection configurations as described for a given implementation. May contain more or less elements of.

いくつかの例によれば、装置600は、回路620によってサポートされていてもよく、回路620は、コンピューティングプラットフォーム又はネットワークデバイスにおいて又はコンピューティングプラットフォーム又はネットワークデバイスとして維持されていてもよく、データセンターの中にそれらのコンピューティングプラットフォーム又はネットワークデバイスを展開してもよい。ソフトウェアによって実装される又はファームウェアによって実装される1つ又は複数のモジュール又は構成要素622-aを実行するように、回路620を構成してもよい。本明細書で使用される"a"、"b"、"c"、及び同様の指定子は、いずれかの正の整数を表す変数であることを意図しているということに留意すべきである。したがって、例えば、ある実装がa=6として値を設定する場合には、複数の構成要素622-aのためのソフトウェア又はファームウェアの完全なセットは、構成要素622-1、622-2、622-3、622-4、622-5、及び622-6を含んでもよい。提示される複数の例は、上記の文脈には限定されず、明細書を通じて使用される複数の異なる変数が、同一の整数値又は複数の異なる整数値を表してもよい。また、これらの"構成要素"は、コンピュータ読み取り可能な記憶媒体に格納されるソフトウェア/ファームウェアであってもよく、それらの複数の構成要素は、図6に示されているように複数の個別のボックスとして示されているが、このことは、これらの構成要素を、(例えば、個別のメモリ等の)複数の異なるコンピュータ読み取り可能なメディアコンポーネントの中の記憶装置に限定するものではない。   According to some examples, apparatus 600 may be supported by circuit 620, which may be maintained at or as a computing platform or network device, and as a data center The computing platforms or network devices may be deployed within. The circuit 620 may be configured to execute one or more modules or components 622-a implemented by software or implemented by firmware. It should be noted that "a", "b", "c", and similar specifiers used herein are intended to be variables that represent any positive integer. is there. Thus, for example, if an implementation sets the value as a = 6, then the complete set of software or firmware for multiple components 622-a may be configured 622- 622- 622-. 3, 622-4, 622-5, and 622-6. The examples presented are not limited to the above context, and different variables used throughout the specification may represent the same integer value or different integer values. Also, these "components" may be software / firmware stored in a computer readable storage medium, the plurality of components being a plurality of individual components as shown in FIG. Although shown as a box, this does not limit these components to storage within a plurality of different computer readable media components (e.g., separate memories, etc.).

いくつかの例によれば、回路620は、プロセッサ又はプロセッサ回路を含んでもよい。回路620は、これらには限定されないが、AMDプロセッサ、Athlonプロセッサ、Duronプロセッサ、Phenomプロセッサ、及びOpteronプロセッサ、Intel Atomプロセッサ、Celeronプロセッサ、Core(2) Duoプロセッサ、Core i3プロセッサ、Core i5プロセッサ、Core i7プロセッサ、Pentiumプロセッサ、Xeon又はXeon Phiプロセッサ等を含むさまざまな商業的に利用可能なプロセッサのいずれかであってもよい。いくつかの例によれば、回路620は、特定用途向け集積回路((ASIC))を含んでもよく、少なくともいくつかの例示的な構成要素622-aは、ASICのハードウェア構成要素として実装されてもよい。   According to some examples, circuitry 620 may include a processor or processor circuitry. The circuit 620 includes, but is not limited to, an AMD processor, Athlon processor, Duron processor, Phenom processor, and Opteron processor, Intel Atom processor, Celeron processor, Core (2) Duo processor, Core i3 processor, Core i5 processor, Core It may be any of a variety of commercially available processors, including i7 processors, Pentium processors, Xeon or Xeon Phi processors, and the like. According to some examples, circuit 620 may include an application specific integrated circuit (ASIC), wherein at least some of the example components 622-a are implemented as hardware components of the ASIC May be

いくつかの例において、装置600は、キュー構成要素622-1を含んでもよい。キュー構成要素622-1は、回路620によって実行されて、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューにおいて保持されている利用可能な受信したパケット記述子をモニタリングしてもよい。その利用可能な受信したパケット記述子は、利用可能な受信したパケット記述子610の中に含まれていてもよく、(例えば、ルックアップテーブル(LUT)等のデータ構造の中でといったように)Rxキュー情報623-aの中でキュー構成要素622-1によって保持されていてもよい。キュー構成要素622-1は、各々のポーリングの反復の後に、受信キューにおいて保持されている利用可能なパケット記述子に基づいて、その受信キューについての充足のレベルを決定することが可能であってもよい。その充足のレベルは、Rxキュー情報623-aの中で保持されていてもよい。   In some examples, apparatus 600 may include queue component 622-1. Queue component 622-1 is executed by circuit 620 to maintain available received packet descriptions held in the receive queue for the NW I / O device over multiple polling iterations for the DPDK polling thread. You may monitor the child. The available received packet descriptors may be included in the available received packet descriptors 610 (eg, as in a data structure such as a look-up table (LUT), etc.) It may be held by the queue component 622-1 in the Rx queue information 623-a. Queue component 622-1 may determine the level of fulfillment for its receive queue based on the available packet descriptors held in the receive queue after each polling iteration. It is also good. The level of the satisfaction may be held in the Rx queue information 623-a.

いくつかの例において、キュー構成要素622-1は、Rxキュー情報623-aの中に含まれる情報に基づいて、各々のポーリングの反復の間に受信キューで受信したパケットの数を決定してもよい。   In some examples, queue component 622-1 determines the number of packets received in the receive queue during each polling iteration based on the information contained in Rx queue information 623-a. It is also good.

いくつかの例によれば、装置600は、増加構成要素622-2を含んでもよい。増加構成要素622-2は、回路620によって実行されて、各々のポーリングの反復の後に、その受信キューについての充足のレベルに基づいてトレンド計数を増加させてもよい。これらの例では、トレンド計数は、(例えば、LUTの中でといったように)トレンド計数624-bの中で増加構成要素622-2によって保持されていてもよい。連続的な閾値をこえる連続的な数のポーリングの反復について受信されているパケットの数が0であるということを、キュー構成要素622-1が決定した場合には、増加構成要素622-2は、少なくとも1である計数だけアイドル計数を増加させてもよい。アイドル計数は、(例えば、LUTの中でといったように)アイドル計数625-cの中で増加構成要素622-2によって保持されていてもよい。   According to some examples, apparatus 600 may include an augment component 622-2. The increment component 622-2 may be performed by the circuit 620 to increase the trend count after each polling iteration based on the level of fulfillment for that receive queue. In these examples, the trend count may be held by the increment component 622-2 in the trend count 624-b (eg, as in a LUT). If the queue component 622-1 determines that the number of packets being received for consecutive number of polling iterations above the continuous threshold is zero, then the increase component 622-2 The idle count may be increased by a count that is at least one. The idle count may be held by the increment component 622-2 in the idle count 625-c (eg, as in a LUT).

いくつかの例において、装置600は、パフォーマンス構成要素622-3を含んでもよい。パフォーマンス構成要素622-3は、回路620によって実行されて、トレンド計数がトレンド計数閾値をこえているか否かに基づいて、OS電力管理モジュールにパフォーマンス指標640を送信してもよい。パフォーマンス指標640は、OS電力管理モジュールが、DPDKポーリングスレッドを実行する処理要素のパフォーマンス状態を増加させることを可能としてもよい。これらの例では、上記のトレンド計数閾値は、(例えば、LUTの中でといったように)トレンド計数閾値626-dの中でパフォーマンス構成要素622-3によって保持されていてもよい。   In some examples, apparatus 600 may include performance component 622-3. The performance component 622-3 may be executed by the circuit 620 to send the performance indicator 640 to the OS power management module based on whether the trending count is above the trending threshold. Performance indicator 640 may allow the OS power management module to increase the performance state of the processing element executing the DPDK polling thread. In these examples, the trend counting threshold described above may be held by performance component 622-3 within trend counting threshold 626-d (eg, as in a LUT).

いくつかの例によれば、連続的な閾値をこえる連続的な数のポーリングの反復の間、その受信キューがほぼ充足しているとキュー構成要素622-1によって決定されたことに応答して、パフォーマンス構成要素622-3は、OS電力管理モジュールに高いパフォーマンス指標を送ってもよい。その高いパフォーマンス指標645は、OS電力管理モジュールが、処理要素の動作周波数を最も高い動作周波数に増加させることにより、その処理要素のパフォーマンス状態を最も高いパフォーマンス状態に増加させることを可能としてもよい。これらの例では、上記の連続的な閾値は、(例えば、LUTの中でといったように)連続的な閾値627-eの中でパフォーマンス構成要素622-3によって保持されていてもよい。   According to some examples, in response to the queue component 622-1 determining that its receive queue is substantially full during successive numbers of polling iterations above a continuous threshold. The performance component 622-3 may send high performance indicators to the OS power management module. The high performance indicator 645 may allow the OS power management module to increase the performance state of the processing element to the highest performance state by increasing the operating frequency of the processing element to the highest operating frequency. In these examples, the above continuous threshold may be held by performance component 622-3 within continuous threshold 627-e (eg, as in a LUT).

いくつかの例において、装置600は、スリープ構成要素622-4を含んでいてもよい。スリープ構成要素622-4は、回路620によって実行されてもよい。増加構成要素622-2によって増加されアイドル計数625-cによって保持されるアイドル計数が、(例えば、LUTの中でといったように)アイドル計数閾値630-hの中でスリープ構成要素622-4によって保持される第1のアイドル計数閾値をこえるか又は第1のアイドル計数閾値よりも小さいかに基づいて、スリープ構成要素622-4は、第1の時間期間又は第2の時間期間のうちの一方の間、DPDKポーリングスレッドをスリープ状態にさせてもよい。これらの例では、第2の時間期間は、第1の時間期間よりも長くてもよい。スリープ615は、DPDKポーリングスレッドをスリープ状態にさせる命令又はコマンドを含んでいてもよい。   In some examples, apparatus 600 may include sleep component 622-4. The sleep component 622-4 may be implemented by the circuit 620. The idle count increased by the increase component 622-2 and held by the idle count 625-c is held by the sleep component 622-4 within the idle count threshold 630-h (eg, as in the LUT) Based on whether the first idle counting threshold is exceeded or less than the first idle counting threshold, the sleep component 622-2 selects one of the first time period or the second time period. In the meantime, the DPDK polling thread may be put to sleep. In these examples, the second time period may be longer than the first time period. Sleep 615 may include an instruction or command to put the DPDK polling thread to sleep.

いくつかの例によれば、スリープ構成要素622-4は、アイドル計数が第1のアイドル計数閾値をこえたことに基づいて、第2の時間期間の間、DPDKポーリングスレッドをスリープ状態にさせてもよく、OS電力管理モジュールに長いスリープ指標650を送ってもよい。長いスリープ指標650は、OS電力管理モジュールが、最大で第2の時間期間までの間、DPDKポーリングスレッドを実行する処理要素をスリープモードに置くことを可能としてもよい。   According to some examples, sleep component 622-4 puts the DPDK polling thread to sleep for a second period of time based on the idle count exceeding the first idle count threshold. It may also send a long sleep indicator 650 to the OS power management module. The long sleep indicator 650 may allow the OS power management module to put the processing element executing the DPDK polling thread in sleep mode for up to a second time period.

いくつかの例によれば、装置600は、割込み制御構成要素622-5を含んでもよい。割込み制御構成要素622-4は、回路620によって実行されて、増加構成要素622-2によって増加されたアイドル計数が、アイドル計数閾値630-hを用いてスリープ構成要素622-5によって保持されている第2のアイドル計数閾値をこえているか否かに基づいて、ワンショット(単発の)Rx割込みを有効にするように、NW I/Oデバイスにメッセージを送信してもよい。これらの例では、上記のメッセージは、ワンショットRx割込み635の中に含まれてもよい。   According to some examples, apparatus 600 may include an interrupt control component 622-5. The interrupt control component 622-4 is executed by the circuit 620 so that the idle count increased by the increase component 622-2 is held by the sleep component 622-5 using the idle count threshold 630-h A message may be sent to the NW I / O device to enable the one-shot Rx interrupt based on whether the second idle count threshold is exceeded. In these examples, the above messages may be included in the one-shot Rx interrupt 635.

装置600は、タイマ構成要素622-6を含んでもよい。タイマ構成要素622-6は、回路620によって実行されて、(例えば、LUTの中でといったように)タイマ期間632-jの中でタイマ構成要素622-6によって保持されているタイマ期間を有するタイマを開始してもよい。   Apparatus 600 may include timer component 622-6. Timer component 622-6 is a timer that is executed by circuit 620 and has a timer period held by timer component 622-6 within timer period 632-j (eg, as in a LUT) You may start

いくつかの例において、タイマ構成要素622-6によって開始されたタイマが終了したことに応答して、スリープ構成要素622-4は、そのタイマ期間の間にDPDKポーリングスレッドがスリープ状態にあった反復のパーセンテイジを決定してもよい。そのパーセンテイジは、スリープ情報631-iを使用してスリープ構成要素622-4によって保持されてもよい。これらの例では、上記のパーセンテイジがパーセンテイジ閾値よりも大きいか否かに基づいて、パフォーマンス構成要素622-3は、OS電力管理モジュールにパフォーマンス指標640を送ってもよい。パフォーマンス指標640は、OS電力管理モジュールが、処理要素のパフォーマンス状態を下げることを可能としてもよく、処理要素のパフォーマンス状態を下げることは、その処理要素の動作周波数を減少させること又はその処理要素の動作電圧を減少させることを含んでもよい。上記の決定に使用されるパーセンテイジ閾値は、(例えば、LUTの中でといったように)パーセンテイジ閾値628-fを使用してパフォーマンス構成要素622-3によって保持されてもよい。   In some instances, in response to the expiration of the timer initiated by the timer component 622-6, the sleep component 622-4 may repeat that the DPDK polling thread was asleep during that timer period. The percentage of may be determined. The percentage may be held by sleep component 622-4 using sleep information 631-i. In these examples, the performance component 622-3 may send the performance indicator 640 to the OS power management module based on whether the percentage is above the percentage threshold. The performance indicator 640 may allow the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may reduce the operating frequency of the processing element or its processing element It may include reducing the operating voltage. The percentage threshold used in the above determination may be held by performance component 622-3 using percentage threshold 628-f (eg, as in a LUT).

いくつかの例によれば、タイマ構成要素622-6によって開始されたタイマが終了したことに応答して、キュー構成要素622-1は、そのタイマ期間の間に、受信キューで受信したパケットについての平均の反復ごとのパケット数を決定してもよい。キュー構成要素622-1によって決定されたその平均の反復ごとのパケット数は、Rxキュー情報623-aを使用して(の中で)保持されていてもよい。これらの例では、パフォーマンス構成要素622-3は、平均の反復ごとのパケット数がパケット平均閾値よりも大きいか否かに基づいて、OS電力管理モジュールにパフォーマンス指標640を送ってもよい。パフォーマンス指標640は、OS電力管理モジュールが、その処理要素のパフォーマンス状態を下げることを可能としてもよく、その処理要素のパフォーマンス状態を下げることは、その処理要素の動作周波数を減少させることを含んでもよい。パケット平均閾値は、(例えば、LUTの中でといったように)平均閾値629-gを使用してパフォーマンス構成要素622-3によって保持されてもよい。   According to some examples, in response to the timer started by the timer component 622-2 expiring, the queue component 622-1 may receive information about packets received in the receive queue during that timer period. The average number of packets per iteration may be determined. The average number of packets per iteration determined by queue component 622-1 may be maintained (within) using Rx queue information 623-a. In these examples, performance component 622-3 may send performance indicator 640 to OS power management module based on whether the average number of packets per iteration is greater than the packet average threshold. Performance indicator 640 may allow the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may also include reducing the operating frequency of the processing element Good. The packet average threshold may be maintained by performance component 622-3 using average threshold 629-g (eg, as in a LUT).

装置600のさまざまな構成要素及び装置600を実装するデバイス、ノード、又は論理サーバは、さまざまなタイプの通信媒体によって互いに通信可能に接続され、複数の動作を調整してもよい。それらの調整は、情報の一方向性の交換又は双方向の交換を伴ってもよい。例えば、上記の構成要素は、通信媒体を介して通信される信号の形態で情報を通信してもよい。その情報は、さまざまな信号線に割り当てられた信号として実装されてもよい。そのような割り当てにおいては、各々のメッセージが信号そのものであってもよい。しかしながら、さらなる実施形態は、代替的に、データメッセージを採用してもよい。そのようなデータメッセージは、さまざまな接続を介して送られてもよい。例示的な接続は、パラレルインターフェイス、シリアルインターフェイス、及びバスインターフェイスを含んでもよい。   The various components of the apparatus 600 and the devices, nodes or logical servers implementing the apparatus 600 may be communicatively coupled to one another by various types of communication media to coordinate multiple operations. Their coordination may involve a one-way or two-way exchange of information. For example, the components described above may communicate information in the form of signals communicated via a communication medium. The information may be implemented as signals assigned to the various signal lines. In such an assignment, each message may be the signal itself. However, further embodiments may alternatively employ data messages. Such data messages may be sent via various connections. Exemplary connections may include parallel interfaces, serial interfaces, and bus interfaces.

本明細書には、開示されたアーキテクチャの新しい態様を実行するための複数の例示的な方法を表す論理フローのセットが含まれている。説明を簡単にするために、1つ又は複数の方法が、一連の動作として示されまた説明されるが、当業者は、上記の1つ又は複数の方法がそれらの動作の順序によっては限定されないということを理解し正しく認識するであろう。上記のことにしたがって、これらの動作のうちのいくつかは、本明細書において示されそして説明された順序と異なる順序で行われてもよく、及び/又は他の動作と同時に行われてもよい。例えば、当業者は、ある方法が、状態図におけるように一連の相互に関連する状態又はイベントとして代替的にあらわされてもよいということを理解し正しく認識するであろう。さらに、ある方法の中で説明されたすべての動作が、新しい実装を必要としなくてもよい。   Included herein is a set of logical flows that represent a plurality of exemplary methods for carrying out the new aspects of the disclosed architecture. Although one or more methods are shown and described as a series of acts to simplify the description, one of ordinary skill in the art would recognize that the one or more methods described above are not limited by the order of their acts. It will be understood and correctly recognized. In accordance with the above, some of these operations may be performed in an order different from that shown and described herein, and / or may be performed concurrently with other operations. . For example, one skilled in the art will understand and appreciate that certain methods may alternatively be represented as a series of interrelated states or events as in a state diagram. Furthermore, not all operations described in a method may require a new implementation.

ある1つの論理フローは、ソフトウェア、ファームウェア、及び/又はハードウェアによって実装されてもよい。ソフトウェア及びファームウェアの実施形態においては、光記憶装置、磁気記憶装置、又は半導体記憶装置等の少なくとも1つの非一時的コンピュータ読み取り可能な媒体又は機械読み取り可能な媒体に格納されているコンピュータ実行可能な命令によって、ある1つの論理フローを実装してもよい。これらの実施形態は、上記の文脈には限定されない。   One logical flow may be implemented by software, firmware, and / or hardware. In software and firmware embodiments, computer-executable instructions stored on at least one non-transitory computer-readable medium or machine-readable medium, such as an optical storage device, a magnetic storage device, or a semiconductor storage device. May implement one particular logic flow. These embodiments are not limited to the above context.

図7は、第2の論理フローの1つの例を図示している。図7に示されているように、第2の論理フローの例は、論理フロー700を含む。論理フロー700は、装置600等の本明細書で説明された1つ又は複数のロジック、特徴、又はデバイスによって実行される動作のいくつか又はすべてを表していてもよい。より具体的には、少なくとも、キュー構成要素622-1、増加構成要素622-2、又はパフォーマンス構成要素622-3によって論理フロー700を実装してもよい。   FIG. 7 illustrates one example of the second logic flow. As shown in FIG. 7, the second logic flow example includes logic flow 700. Logic flow 700 may represent some or all of the operations performed by one or more logic, features, or devices described herein, such as apparatus 600. More specifically, the logical flow 700 may be implemented by at least a queue component 622-1, an increase component 622-2, or a performance component 622-3.

いくつかの例によれば、論理フロー700は、ブロック702において、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングしてもよい。これらの例では、キュー構成要素622-1が、その受信キューをモニタリングしてもよい。   According to some examples, logic flow 700 received at block 702 available available held in a receive queue for an NW I / O device over multiple polling iterations for a DPDK polling thread. Packet descriptors may be monitored. In these examples, queue component 622-1 may monitor its receive queue.

いくつかの例において、論理フロー700は、ブロック704において、各々のポーリングの反復の後に、その受信キューに保持されている利用可能なパケット記述子に基づいて、その受信キューの充足のレベルを決定してもよい。これらの例では、キュー構成要素622-1が、充足のレベルを決定してもよい。   In some examples, logic flow 700 determines the level of fulfillment of its receive queue at block 704 based on the available packet descriptors held in its receive queue after each polling iteration. You may In these examples, queue component 622-1 may determine the level of fulfillment.

いくつかの例によれば、論理フロー700は、ブロック706において、その受信キューの充足のレベルに基づいて、トレンド計数を増加させてもよい。これらの例では、増加構成要素622-2が、トレンド計数を増加させてもよい。   According to some examples, logic flow 700 may increase the trend count at block 706 based on the level of its receive queue fullness. In these examples, increasing component 622-2 may increase the trend count.

いくつかの例において、論理フロー700は、ブロック708において、トレンド計数がトレンド計数閾値をこえているか否かに基づいて、OS電力管理モジュールにパフォーマンス指標を送ってもよく、そのパフォーマンス指標は、OS電力管理モジュールが、DPDKポーリングスレッドを実行する処理要素のパフォーマンス状態を増加させることを可能としてもよい。これらの例では、パフォーマンス構成要素622-3が、パフォーマンス指標を送ってもよい。   In some examples, the logic flow 700 may send a performance indicator to the OS power management module based on whether the trending count exceeds the trending threshold at block 708, the performance indicator being the OS The power management module may also be able to increase the performance state of the processing element executing the DPDK polling thread. In these examples, performance component 622-3 may send performance indicators.

図8は、第3の論理フローの1つの例を図示している。図8に示されているように、第3の論理フローの上記の例は、論理フロー800を含んでいる。論理フロー800は、装置600等の本明細書で説明された1つ又は複数のロジック、特徴、又はデバイスによって実行される動作のいくつか又はすべてを表していてもよい。より具体的には、少なくとも、キュー構成要素622-1、増加構成要素622-2、又はスリープ構成要素622-4によって論理フロー800を実装してもよい。   FIG. 8 illustrates one example of the third logic flow. As shown in FIG. 8, the above example of the third logic flow includes logic flow 800. Logic flow 800 may represent some or all of the operations performed by one or more logic, features, or devices described herein, such as apparatus 600. More specifically, logic flow 800 may be implemented by at least queue component 622-1, increase component 622-2, or sleep component 622-4.

いくつかの例によれば、論理フロー800は、ブロック802において、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングしてもよい。これらの例では、キュー構成要素622-1が、その受信キューをモニタリングしてもよい。   According to some examples, logic flow 800 received at block 802 available available held in a receive queue for the NW I / O device over multiple polling iterations for the DPDK polling thread. Packet descriptors may be monitored. In these examples, queue component 622-1 may monitor its receive queue.

いくつかの例において、論理フロー800は、ブロック804において、各々のポーリングの反復の後に、その受信キューに保持されている利用可能なパケット記述子に基づいて、各々のポーリングの反復についてその受信キューで受信したパケットの数を決定してもよい。これらの例においては、キュー構成要素622-1が、その受信キューで受信したパケットの数を決定してもよい。   In some examples, logic flow 800 determines its receive queue for each polling iteration based on the available packet descriptors held in its receive queue after each polling iteration at block 804. The number of packets received at may be determined. In these examples, queue component 622-1 may determine the number of packets received in its receive queue.

いくつかの例によれば、論理フロー800は、ブロック806において、連続的な閾値をこえる連続的な数のポーリングの反復について受信したパケットの数が0である場合には、1である計数だけアイドル計数を増加させてもよい。これらの例では、増加構成要素622-2が、そのアイドル計数を増加させてもよい。   According to some examples, logic flow 800 may only count 1 if the number of packets received for successive numbers of polling iterations above a continuous threshold is 0 at block 806. The idle count may be increased. In these examples, the increase component 622-2 may increase its idle count.

いくつかの例において、論理フロー800は、ブロック808において、アイドル計数が第1のアイドル計数閾値を超えているか又は第1のアイドル計数閾値よりも小さいかに基づいて、第1の時間期間又は第2の時間期間のうちの一方の間、DPDKポーリングスレッドをスリープ状態にさせてもよく、第2の時間期間は、第1の時間期間よりも長い。これらの例では、スリープ構成要素622-4が、DPDKポーリングスレッドをスリープ状態にさせてもよい。   In some examples, logic flow 800 determines, at block 808, the first time period or the first time period based on whether the idle count is greater than or less than the first idle count threshold. The DPDK polling thread may be put to sleep for one of two time periods, and the second time period is longer than the first time period. In these examples, sleep component 622-4 may put the DPDK polling thread to sleep.

図9は、記憶媒体900の1つの例を図示している。図9に示されているように、第1の記憶媒体は、記憶媒体900を含む。記憶媒体900は、製品を含んでもよい。いくつかの例では、記憶媒体900は、光記憶装置、磁気記憶装置、又は半導体記憶装置等のいずれかの非一時的なコンピュータ読み取り可能な媒体又は機械読み取り可能な媒体を含んでもよい。記憶媒体900は、論理フロー700又は論理フロー800を実装するための命令等のさまざまなタイプのコンピュータ実行可能な命令を格納していてもよい。コンピュータ読み取り可能な記憶媒体又は機械読み取り可能な記憶媒体の例は、電子データを格納することが可能であるいずれかの有体的な媒体を含んでもよく、それらの有体的な媒体は、揮発性メモリ又は不揮発性メモリ、取り外し可能なメモリ又は取り外し可能でないメモリ、消去可能なメモリまたは消去可能でないメモリ、書き込み可能なメモリ又は再書き込み可能なメモリ等を含んでもよい。コンピュータ実行可能な命令の例は、ソースコード、コンパイルされたコード、解釈されたコード、実行可能なコード、スタティックコード、ダイナミックコード、オブジェクト指向のコード、視覚的コード等のいずれかの適切なタイプのコードを含んでもよい。これらの例は、上記の文脈には限定されない。   FIG. 9 illustrates one example of a storage medium 900. As shown in FIG. 9, the first storage medium includes a storage medium 900. The storage medium 900 may include a product. In some examples, storage medium 900 may include any non-transitory computer readable medium or machine readable medium, such as an optical storage device, a magnetic storage device, or a semiconductor storage device. Storage medium 900 may store various types of computer-executable instructions, such as instructions to implement logic flow 700 or logic flow 800. Examples of computer readable storage media or machine readable storage media may include any tangible media capable of storing electronic data, which tangible media are volatile. Memory or non-volatile memory, removable memory or non-removable memory, erasable memory or non-erasable memory, writable memory or rewritable memory, and the like. Examples of computer-executable instructions may be any suitable type of source code, compiled code, interpreted code, executable code, static code, dynamic code, object-oriented code, visual code, etc. It may contain code. These examples are not limited to the above context.

図10は、コンピューティングプラットフォーム1000の1つの例を図示している。いくつかの例では、図10に示されているように、コンピューティングプラットフォーム1000は、処理構成要素1040、他のプラットフォーム構成要素1050又は通信インターフェイス1060を含んでもよい。いくつかの例によれば、コンピューティングプラットフォーム1000は、(例えば、DPDK電力管理構成要素及びOS電力管理モジュール等の)電力管理要素及び/又はパフォーマンス管理要素を収容してもよく、これらの電力管理要素及び/又はパフォーマンス管理要素は、図1のシステム100等のDPDKポーリングスレッドを有するシステムに電力管理機能及び/又はパフォーマンス管理機能を提供してもよい。コンピューティングプラットフォーム1000は、単一の物理ネットワークデバイスであってもよく又は構成された論理ネットワークデバイスであってもよく、構成された論理ネットワークデバイスは、データセンターの中に展開されている構成可能なコンピューティングリソースの共有のプールから構成される複数の分散された物理的構成要素又は複数の要素の組み合わせを含んでもよい。   FIG. 10 illustrates one example of a computing platform 1000. In some examples, as shown in FIG. 10, computing platform 1000 may include processing component 1040, other platform components 1050, or communication interface 1060. According to some examples, computing platform 1000 may house power management elements and / or performance management elements (e.g., DPDK power management components and OS power management modules) that are managed The element and / or performance management element may provide power management and / or performance management functions to a system having a DPDK polling thread, such as the system 100 of FIG. The computing platform 1000 may be a single physical network device or a configured logical network device, and the configured logical network device may be deployed deployed in a data center It may include a plurality of distributed physical components or a combination of elements comprised of a shared pool of computing resources.

いくつかの例によれば、処理構成要素1040は、装置600及び/又は記憶媒体900のための処理動作又はロジックを実行してもよい。処理構成要素1040は、さまざまなハードウェア要素、ソフトウェア要素、又は双方の組み合わせを含んでもよい。ハードウェア要素の例は、デバイス、論理デバイス、構成要素、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、(例えば、トランジスタ、抵抗器、キャパシタンス、インダクタンス、その他同様の素子等の)回路素子、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、ディジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、及びその他同様のものを含んでもよい。ソフトウェア要素の例は、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、デバイスドライバ、システムプログラム、ソフトウェア開発プログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーティン、サブルーティン、機能、方法、手順、ソフトウェアインターフェイス、アプリケーションプログラミングインターフェイス(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらのいずれかの組み合わせを含んでもよい。ある実施形態がハードウェア要素及び/又はソフトウェア要素を使用して実装されるべきか否かについての決定は、ある与えられた実装のための要求に応じて、望ましい計算速度、電力レベル、熱耐性、処理サイクル割当量、入力データレート、出力データレート、メモリリソース、データバス速度、及び他の設計上の制約又は性能上の制約等のある数の因子にしたがって変化してもよい。   According to some examples, processing component 1040 may perform processing operations or logic for device 600 and / or storage medium 900. Processing component 1040 may include various hardware elements, software elements, or a combination of both. Examples of hardware elements include devices, logic devices, components, processors, microprocessors, circuits, processor circuits, circuit elements (eg, transistors, resistors, capacitances, inductances, and similar elements), integrated circuits, Application Specific Integrated Circuit (ASIC), Programmable Logic Device (PLD), Digital Signal Processor (DSP), Field Programmable Gate Array (FPGA), Memory Unit, Logic Gate, Register, Semiconductor Device, Chip, Microchip, Chipset, And others may be included. Examples of software elements are software components, programs, applications, computer programs, application programs, device programs, system drivers, system programs, software development programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions , A method, a procedure, a software interface, an application programming interface (API), an instruction set, a computing code, a computer code, a code segment, a computer code segment, a word, a value, a symbol, or any combination thereof. The decision as to whether an embodiment should be implemented using hardware and / or software components depends on the desired computational speed, power level, thermal tolerance, depending on the requirements for a given implementation. It may vary according to a number of factors, such as processing cycle budget, input data rate, output data rate, memory resources, data bus speed, and other design or performance constraints.

いくつかの例においては、他のプラットフォーム構成要素1050は、1つ又は複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェイス、発振器、タイミングデバイス、ビデオカード、オーディオカード、(例えば、ディジタルディスプレイ等の)マルチメディア入力/出力(I/O)構成要素、電源、及びその他同様のもの等の共通のコンピューティング要素を含んでもよい。メモリユニットの例は、これらに限定されるわけではないが、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、強誘電性高分子メモリ素子、オボニックメモリ、相変化又は強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン(SONOS)構造を有するメモリ等の高分子メモリ素子、磁気カード又は光カード、個別ディスクからなる冗長アレイ(RAID)デバイス等のデバイスのアレイ、(例えば、USBメモリ、ソリッドステイトデバイス(SSD)等の)ソリッドステイトメモリデバイス、及び情報を格納するのに適しているいずれかの他のタイプの記憶媒体等の1つ又は複数の高速メモリユニットの形態のさまざまなタイプのコンピュータ読み取り可能な記憶媒体及び機械読み取り可能な記憶媒体を含んでもよい。   In some instances, other platform components 1050 may include one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio Common computing elements such as cards, multimedia input / output (I / O) components (e.g., digital displays), power supplies, and the like may also be included. Examples of memory units include, but are not limited to, read only memory (ROM), random access memory (RAM), dynamic RAM (DRAM), double data rate DRAM (DDRAM), synchronous DRAM (SDRAM), Static RAM (SRAM), Programmable ROM (PROM), Erasable Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), Flash Memory, Ferroelectric Polymer Memory Device, Ovonic Memory, Phase Change or Ferroelectric Memory Memory, polymer memory devices such as memory with silicon-oxide-nitride-oxide-silicon (SONOS) structure, arrays of devices such as magnetic card or optical card, redundant array (RAID) devices consisting of individual disks , Solid state memory devices (eg, USB memory, solid state devices (SSDs), etc.), and any suitable for storing information Various types of computer readable storage media and machine readable storage media in the form of one or more high speed memory units such as other types of storage media may also be included.

いくつかの例において、通信インターフェイス1060は、通信インターフェイスをサポートするロジック及び/又は特徴を含んでもよい。これらの例では、通信インターフェイス1060は、1つ又は複数の通信インターフェイスを含んでもよく、それらの1つ又は複数の通信インターフェイスは、さまざまな通信プロトコル又は通信規格にしたがって動作して、ネットワーク通信リンクを介して又は直接通信してもよい。直接通信は、複数の通信プロトコル又は通信規格を使用することにより行われてもよく、それらの通信プロトコル又は通信規格は、PCIe仕様と関連する業界標準等の(後継規格及び変更規格を含めて)1つ又は複数の業界標準の中で説明されている。ネットワーク通信は、複数の通信プロトコル又は通信規格を使用することにより行われてもよく、それらの通信プロトコル又は通信規格は、米国電気電子通信学会(IEEE)によって広められた1つ又は複数のイーサネット(登録商標)規格の中で説明されているプロトコル又は規格であってもよい。例えば、そのようなイーサネット規格のうちの1つは、IEEE802.3であってもよい。ネットワーク通信は、オープンフローハードウェア抽象化API仕様等の1つ又は複数のオープンフロー仕様に従って行われてもよい。ネットワーク通信は、インフィニバンドアーキテクチャ仕様又はTCP/IPプロトコルにしたがって行われてもよい。   In some examples, communication interface 1060 may include logic and / or features that support communication interfaces. In these examples, communication interface 1060 may include one or more communication interfaces, which operate according to various communication protocols or standards to communicate network communication links. You may communicate via or directly. Direct communication may be performed by using multiple communication protocols or standards, which may be such as industry standards associated with the PCIe specification (including successors and changes) It is described in one or more industry standards. Network communication may be performed by using a plurality of communication protocols or standards, which may be one or more Ethernets (IEEE), as promulgated by the Institute of Electrical and Electronics Engineers (IEEE). It may be the protocol or standard described in the registered trademark standard. For example, one such Ethernet standard may be IEEE 802.3. Network communication may occur according to one or more open flow specifications, such as the open flow hardware abstraction API specification. Network communication may be performed according to the Infiniband architecture specification or the TCP / IP protocol.

上記のように、単一のネットワークデバイスの中で或いは論理的なネットワークデバイスの中でコンピューティングプラットフォーム1000を実装してもよく、論理的なネットワークデバイスは、構成可能なコンピューティングリソースの共有のプールから構成される複数の分散された物理構成要素又は複数の要素からなってもよい。したがって、物理ネットワークデバイス又は論理的なネットワークデバイスに対する適切な要求に応じて、コンピューティングプラットフォーム1000のさまざまな実施形態の中に、本明細書で説明されたコンピューティングプラットフォーム1000の機能及び/又は特定の構成を含めてもよく又は省略してもよい。   As noted above, computing platform 1000 may be implemented within a single network device or within a logical network device, where the logical network device is a pool of configurable computing resource shares. May consist of a plurality of distributed physical components or elements. Thus, among the various embodiments of the computing platform 1000, the functionality and / or specific features of the computing platform 1000 described herein, as appropriate to physical network devices or logical network devices. The configuration may be included or omitted.

個別の回路、特定用途向け集積回路(ASIS)、ロジックゲート及び/又は単一チップアーキテクチャのいずれかの組み合わせを使用して、コンピューティングプラットフォーム1000の構成要素及び特徴を実装してもよい。さらに、マイクロコントローラ、プログラマブル論理アレイ、及び/又はマイクロプロセッサ、又は上記の構成要素のいずれかの組み合わせを使用して、コンピューティングプラットフォーム1000の特徴を実装してもよい。本明細書においては、ハードウェア要素、ファームウェア要素、及び/又はソフトウェア要素を、集合的に又は個々に、"ロジック"又は"回路"と称してもよいということに留意すべきである。   Components and features of computing platform 1000 may be implemented using any combination of discrete circuitry, application specific integrated circuits (ASIS), logic gates and / or single chip architectures. Further, features of computing platform 1000 may be implemented using a microcontroller, a programmable logic array, and / or a microprocessor, or a combination of any of the above components. It should be noted that, herein, hardware, firmware, and / or software components may be collectively or individually referred to as "logic" or "circuits."

図10のブロック図で示される例示的なコンピューティングプラットフォーム1000は、多くの可能性のある実装のうちの機能的に説明される1つの例を表していてもよいということを理解すべきである。したがって、添付の図面に示されている複数のブロック機能を分割し、省略し、又は含めることは、これらの機能を実装するためのハードウェア構成要素、回路、ソフトウェア、及び/又は要素を、複数の実施形態において必然的に分割し、省略し、又は含めるであろうということを示唆するものではない。   It should be understood that the exemplary computing platform 1000 shown in the block diagram of FIG. 10 may represent one functionally described example of many possible implementations. . Thus, dividing up, omitting, or including multiple block features illustrated in the accompanying drawings is intended to provide a plurality of hardware components, circuits, software, and / or elements for implementing those features. It does not imply that it will necessarily be split, omitted or included in embodiments of the invention.

少なくとも1つの機械読み取り可能な媒体に格納されている複数の表現的な命令によって、少なくとも1つの例の1つ又は複数の態様を実装してもよく、それらの複数の表現的な命令は、プロセッサの中でさまざまなロジックを表現し、機械、コンピューティングデバイス、又はシステムによって読み取られると、本明細書において説明された複数の技術を実行するロジックを、その機械、コンピューティングデバイス、又はシステムに構成させてもよい。"IPコア"として知られているそのような表現を、有体的な機械読み取り可能な媒体に格納してもよく、そして、それらの表現をさまざまな顧客の設備又は生産設備に提供して、製造機械にロードしてもよく、それらの製造機械は、上記のロジック又はプロセッサを実際に作成してもよい。   One or more aspects of the at least one example may be implemented by a plurality of expressive instructions stored in at least one machine readable medium, the plurality of expressive instructions being a processor To express various logic in the machine, computing device, or system, and configure the logic to execute the techniques described herein into the machine, computing device, or system when read by the machine, computing device, or system You may Such representations, known as "IP cores", may be stored in tangible machine-readable media, and provide those representations to various customer equipment or production equipment, They may be loaded into manufacturing machines, which may actually create the logic or processor described above.

複数のハードウェア要素、ソフトウェア要素、又は双方の組み合わせを使用して、さまざまな例を実装してもよい。いくつかの例では、ハードウェア要素は、デバイス、構成要素、プロセッサ、マイクロプロセッサ、回路、(例えば、トランジスタ、抵抗器、キャパシタンス、インダクタンス、その他同様の素子等の)回路素子、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、ディジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、及びその他同様のものを含んでもよい。いくつかの例では、ソフトウェア要素は、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーティン、サブルーティン、機能、方法、手順、ソフトウェアインターフェイス、アプリケーションプログラミングインターフェイス(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらのいずれかの組み合わせを含んでもよい。ある実施形態がハードウェア要素及び/又はソフトウェア要素を使用して実装されるべきか否かに関する決定は、ある与えられた実装のための要求に応じて、望ましい計算速度、電力レベル、熱耐性、処理サイクル割当量、入力データレート、出力データレート、メモリリソース、データバス速度、及び他の設計上の制約又は性能上の制約等のある数の因子にしたがって変化してもよい。   Various examples may be implemented using multiple hardware elements, software elements, or a combination of both. In some instances, hardware elements may be devices, components, processors, microprocessors, circuits, circuit elements (eg, transistors, resistors, capacitances, inductances, and the like), integrated circuits, specific applications Integrated circuits (ASICs), programmable logic devices (PLDs), digital signal processors (DSPs), field programmable gate arrays (FPGAs), memory units, logic gates, registers, semiconductor devices, chips, microchips, chipsets, and more The same may be included. In some instances, software elements include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, A procedure, software interface, application programming interface (API), instruction set, computing code, computer code, code segment, computer code segment, word, value, symbol, or any combination thereof may be included. The decision as to whether an embodiment should be implemented using hardware and / or software components depends on the desired computational speed, power level, thermal tolerance, depending on the requirements for a given implementation. It may vary according to a number of factors such as processing cycle budget, input data rate, output data rate, memory resources, data bus speed, and other design or performance constraints.

いくつかの例は、製品又は少なくとも1つのコンピュータ読み取り可能な媒体を含んでもよい。コンピュータ読み取り可能な媒体は、ロジックを格納する非一時的な記憶媒体を含んでもよい。いくつかの例では、非一時的な記憶媒体は、電子データを格納することが可能である1つ又は複数のタイプのコンピュータ読み取り可能な記憶媒体を含んでもよく、それらのコンピュータ読み取り可能な記憶媒体は、揮発性メモリ、不揮発性メモリ、取り外し可能なメモリ、取り外し可能でないメモリ、消去可能なメモリ、消去可能でないメモリ、書き込み可能なメモリ、又は再書き込み可能なメモリ等を含んでもよい。いくつかの例では、ロジックは、ソフトウェア構成要素、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーティン、サブルーティン、機能、方法、手順、ソフトウェアインターフェイス、アプリケーションプログラミングインターフェイス(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はこれらのいずれかの組み合わせ等のさまざまなソフトウェア要素を含んでもよい。   Some examples may include the product or at least one computer readable medium. Computer readable media may also include non-transitory storage media storing logic. In some instances, non-transitory storage media may include one or more types of computer readable storage media capable of storing electronic data, the computer readable storage media May include volatile memory, non-volatile memory, removable memory, non-removable memory, erasable memory, non-erasable memory, writable memory, or re-writable memory. In some instances, logic may be software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures May also include various software elements such as, software interfaces, application programming interfaces (APIs), instruction sets, computing codes, computer codes, code segments, computer code segments, words, values, symbols, or any combination thereof. Good.

いくつかの例によれば、コンピュータ読み取り可能な記憶媒体は、非一時的な記憶媒体を含んでもよく、その非一時的な記憶媒体は、複数の命令を格納又は保持し、それらの複数の命令は、機械、コンピューティングデバイス、又はシステムによって実行されると、説明された複数の例に従って複数の方法及び/又は動作を、その機械、コンピューティングデバイス、又はシステムに実行させてもよい。これらの複数の命令は、ソースコード、コンパイルされたコード、解釈されたコード、実行可能なコード、スタティックコード、ダイナミックコード等のいずれかの適切なタイプのコードを含んでもよい。ある機能を実行するように機械、コンピューティングデバイス、又はシステムに指示するためのあらかじめ定義されたコンピュータ言語、様式、又は構文にしたがって、上記の複数の命令を実装してもよい。いずれかの適切なハイレベルプログラミング言語、低レベルプログラミング言語、オブジェクト指向のプログラミング言語、視覚的なプログラミング言語、コンパイルされたプログラミング言語、及び/又は解釈されたプログラミング言語を使用して、上記の複数の命令を実装してもよい。   According to some examples, a computer readable storage medium may include a non-transitory storage medium, the non-transitory storage medium storing or holding a plurality of instructions, the plurality of instructions May cause the machine, computing device or system to perform a plurality of methods and / or actions according to the described examples when being executed by the machine, computing device or system. The plurality of instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The plurality of instructions described above may be implemented according to a predefined computer language, manner, or syntax for instructing a machine, computing device, or system to perform a certain function. Using any suitable high-level programming language, low-level programming language, object-oriented programming language, visual programming language, compiled programming language, and / or interpreted programming language, the above plurality of Instructions may be implemented.

"1つの例(one example)"又は"ある例(an example)"との表現とともにそれらの派生語を使用していくつかの例を説明してもよい。これらの語は、少なくとも1つの例の中に、その例に関連して説明されたある特定の特徴、構成、又は特性が含まれるということを意味する。本明細書の中のさまざまな場所で"1つの例において(in one example)"との記載が出現した場合には、必ずしも、これらのすべてが、その同一の例に言及しているわけではない。   Some examples may be described using their derivatives in conjunction with the expressions "one example" or "an example". These terms are meant to mean that at least one example includes certain features, configurations, or characteristics described in connection with that example. Where the description "in one example" appears in various places in the specification, not all of them necessarily refer to the same example. .

"結合された(coupled)"及び"接続された(connected)"との表現とともにそれらの派生語を使用して、いくつかの例を説明してもよい。これらの語は、必ずしも、互いに対する同義語であると意図されているわけではない。例えば、"結合された"及び/又は"接続された"を使用する説明は、2つ又はそれ以上の要素が、互いに物理的な又は電気的な直接的な接触状態にあるということを示してもよい。しかしながら、"結合された"の語は、2つ又はそれ以上の要素が、互いに直接的な接触状態にはないが、互いと協働し又は相互作用をするということを意味してもよい。   Some examples may be described using their derivatives in conjunction with the expressions "coupled" and "connected." These terms are not necessarily intended as synonyms for each other. For example, the description using "coupled" and / or "connected" indicates that two or more elements are in direct physical or electrical contact with each other It is also good. However, the term "coupled" may mean that two or more elements are not in direct contact with each other but cooperate or interact with each other.

以下の例は、本明細書で開示された複数の例のうちの追加的な例に関している。   The following examples relate to additional ones of the examples disclosed herein.

例1:1つの例示的な装置は、ホストコンピューティングプラットフォームに位置する回路及びキュー構成要素を含んでもよく、そのキュー構成要素は、その回路によって実行されて、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングしてもよい。そのキュー構成要素は、各々のポーリングの反復の後に、その受信キューに保持されている利用可能なパケット記述子に基づいて、その受信キューについての充足のレベルを決定してもよい。上記の装置は、増加構成要素を含んでもよく、その増加構成要素は、上記の回路によって実行されて、各々のポーリングの反復の後に、その受信キューについての充足のレベルに基づいて、トレンド計数を増加させてもよい。上記の装置は、パフォーマンス構成要素を含んでもよく、そのパフォーマンス構成要素は、上記の回路によって実行されて、トレンド計数がトレンド計数閾値をこえるか否かに基づいて、OS電力管理モジュールにパフォーマンス指標を送ってもよい。パフォーマンス指標は、OS電力管理モジュールが、DPDKポーリングスレッドを実行している処理要素のパフォーマンス状態を増加させることを可能としてもよい。   Example 1: One exemplary device may include a circuit and queue component located on a host computing platform, the queue component being executed by the circuit to generate multiple polls for the DPDK polling thread The available received packet descriptors held in the receive queue for the NW I / O device may be monitored over the iterations of. The queue component may determine the level of fulfillment for the receive queue based on the available packet descriptors held in the receive queue after each polling iteration. The above apparatus may include an increment component, which is executed by the above circuit to, after each polling iteration, trend count based on the level of satisfaction for the receive queue. It may be increased. The above apparatus may include a performance component, which is executed by the above circuit to provide the OS power management module with a performance indicator based on whether the trend count exceeds the trend count threshold. You may send it. The performance indicator may allow the OS power management module to increase the performance state of the processing element executing the DPDK polling thread.

例2:例1の装置において、OS電力管理モジュールが処理要素のパフォーマンス状態を増加させることが可能であるということは、そのOS電力管理モジュールが、その処理要素の動作周波数を増加させるようにすること可能であるということを含んでもよい。   Example 2: In the apparatus of Example 1, the fact that the OS power management module can increase the performance state of a processing element causes that OS power management module to increase the operating frequency of the processing element It may include that it is possible.

例3:例1の装置において、キュー構成要素によって決定される充足のレベルは、ほぼ空、半分充足している、又はほぼ充足しているのうちの1つを含んでもよい。   Example 3: In the apparatus of Example 1, the level of fulfillment determined by the queue component may include one of approximately empty, half full, or near full.

例4:例3の装置において、増加構成要素は、キュー構成要素が充足のレベルをほぼ空であると決定した場合には、小さな数だけ、或いは、キュー構成要素が充足のレベルを半分充足していると決定した場合には、大きな数だけ、トレンド計数を増加させてもよく、大きな数は、小さな数の概ね100倍の数である。   Example 4: In the apparatus of Example 3, if the queue component determines that the level of satisfaction is nearly empty, then the increase component is either a small number or half of the level of satisfaction with the queue component. If it is determined that the trend count may be increased by a large number, the large number is approximately 100 times the small number.

例5:例3の装置は、キュー構成要素により受信キューがほぼ充足していると決定されるポーリングの反復の連続的な数が、連続的な閾値をこえるということに応答して、パフォーマンス構成要素が、OS電力管理モジュールに高いパフォーマンス指標を送ることを含んでもよい。高いパフォーマンス指標は、OS電力管理モジュールが、処理要素の動作周波数を最も高い動作周波数に増加させるようにすることによって、処理要素のパフォーマンス状態を最も高いパフォーマンス状態に増加させるようにすることを可能としてもよい。   Example 5: The apparatus of Example 3 has a performance configuration in response to the continuous number of polling iterations determined by the queue component that the receive queue is substantially full exceeds a continuous threshold. An element may include sending high performance indicators to the OS power management module. High performance indicators allow the OS power management module to increase the performance state of the processing element to the highest performance state by causing the operating frequency of the processing element to increase to the highest operating frequency. It is also good.

例5-1:例3の装置において、ほぼ空であるは、25%乃至50%充足しているレベルであってもよく、半分充足しているは、51%乃至75%充足しているレベルであってもよく、ほぼ充足しているは、75%よりも大きなパーセンテイジ充足しているレベルであってもよい。   Example 5-1: In the device of Example 3, substantially empty may be 25% to 50% full level, and half full may be 51% to 75% full level And may be substantially satisfied may be at a percentage filled level greater than 75%.

例6:例1の装置において、OS電力管理モジュールは、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.1版を含む1つ又は複数の業界標準にしたがって、処理要素のパフォーマンス状態を増加させることが可能であってもよい。これらの例では、OS電力管理モジュールは、処理要素のパフォーマンス状態をPn-1パフォーマンス状態に入るように増加させることが可能であってもよく、"n"は、結果として、処理要素の最も低い動作周波数につながる最も低いパフォーマンス状態を表している。 Example 6: In the apparatus of Example 1, the OS power management module may increase the performance state of the processing element according to one or more industry standards, including Advanced Configuration and Power Interface (ACPI) Specification Revision 5.1 It may be possible. In these examples, the OS power management module may be able to increase the performance state of the processing element to enter the P n -1 performance state, where "n" results in the most of the processing elements It represents the lowest performance state leading to a lower operating frequency.

例7:例1の装置は、キュー構成要素が、各々のポーリングの反復の後に、受信キューに保持されている利用可能なパケット記述子に基づいて、各々のポーリングの反復について受信キューで受信したパケットの数を決定することを含んでもよい。連続的な閾値をこえる連続的な数のポーリングの反復の間に受信したパケットの数が0である場合に、増加構成要素は、アイドル計数を1である計数だけ増加させてもよい。当該装置は、スリープ構成要素を含んでもよく、スリープ構成要素は、回路によって実行され、アイドル計数が第1のアイドル計数閾値をこえるか又は第1のアイドル計数閾値よりも小さいかに基づいて、第1の時間期間又は第2の時間期間のうちの一方の間、DPDKポーリングスレッドをスリープ状態にさせてもよい。これらの例では、第2の時間期間は、第1の時間期間よりも長い。   Example 7: The device of Example 1 has received in the receive queue for each polling iteration the queue component based on the available packet descriptors held in the receiving queue after each polling iteration It may include determining the number of packets. The increment component may increase the idle count by a count of one if the number of packets received during successive number of polling iterations above a continuous threshold is zero. The apparatus may include a sleep component, the sleep component being executed by the circuit and based on whether the idle count is above or below the first idle count threshold. The DPDK polling thread may be put to sleep for one of a time period or a second time period. In these examples, the second time period is longer than the first time period.

例8:例7の装置は、割込み制御構成要素を含んでもよく、割込み制御構成要素は、回路によって実行され、アイドル計数が第2のアイドル計数閾値をこえるか否かに基づいて、NW I/Oデバイスに割込みターンオンメッセージを送ってもよく、割込みターンオンメッセージは、単発の受信(Rx)割込みを有効にしてもよい。   Example 8: The apparatus of Example 7 may include an interrupt control component, the interrupt control component being implemented by the circuit and based on whether the idle count exceeds a second idle count threshold, the NW I //. An interrupt turn on message may be sent to the O device, and the interrupt turn on message may enable a single receive (Rx) interrupt.

例9:例7の装置において、スリープ構成要素は、アイドル計数が第1のアイドル計数閾値をこえたことに基づいて、DPDKポーリングスレッドを第2の時間期間の間スリープ状態にさせ、OS電力管理モジュールに長いスリープ指標を送ってもよい。長いスリープ指標は、OS電力管理モジュールが、最大で第2の時間期間までの間、DPDKポーリングスレッドを実行する処理要素をスリープモードに置くようにさせることを可能としてもよい。   Example 9: In the apparatus of Example 7, the sleep component causes the DPDK polling thread to sleep for a second period of time based on the idle count exceeding the first idle count threshold, and OS power management. The module may send a long sleep indicator. The long sleep indicator may allow the OS power management module to put the processing element executing the DPDK polling thread into sleep mode for up to a second time period.

例10:例9の装置は、タイマ構成要素を含んでもよく、タイマ構成要素は、回路によって実行され、タイマ期間を有するタイマを開始してもよい。タイマが終了したことに応答して、スリープ構成要素は、タイマ期間の間にDPDKポーリングスレッドがスリープ状態であったポーリングの反復のパーセンテイジを決定してもよい。パーセンテイジがパーセンテイジ閾値よりも大きいか否かに基づいて、パフォーマンス構成要素は、OS電力管理モジュールにパフォーマンス指標を送ってもよい。パフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を下げることを可能としてもよく、処理要素のパフォーマンス状態を下げることは、処理要素の動作周波数を減少させること又は動作電圧を減少させることを含んでもよい。   Example 10 The apparatus of Example 9 may include a timer component, which may be executed by the circuit to start a timer having a timer period. In response to the timer expiring, the sleep component may determine a percentage of the polling iteration that the DPDK polling thread was asleep for the timer period. The performance component may send a performance indicator to the OS power management module based on whether the percentage is greater than the percentage threshold. The performance indicator may allow the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may reduce the operating frequency of the processing element or reduce the operating voltage May be included.

例11:例9の装置は、タイマ構成要素を含んでもよく、タイマ構成要素は、回路によって実行され、タイマ期間を有するタイマを開始してもよい。タイマが終了したことに応答して、キュー構成要素は、タイマ期間の間に受信キューで受信したパケットについて平均の反復ごとのパケット数を決定してもよい。平均の反復ごとのパケット数がパケット平均閾値よりも小さいか否かに基づいて、パフォーマンス構成要素は、OS電力管理モジュールにパフォーマンス指標を送ってもよい。パフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を下げることを可能としてもよく、処理要素のパフォーマンス状態を下げることは、処理要素の動作周波数を下げることを含んでもよい。   Example 11 The apparatus of Example 9 may include a timer component, which may be executed by the circuit to start a timer having a timer period. In response to the timer expiring, the queue component may determine an average number of packets per iteration for packets received in the receive queue during the timer period. The performance component may send a performance indicator to the OS power management module based on whether the average number of packets per iteration is less than the packet average threshold. The performance indicator may allow the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may include reducing the operating frequency of the processing element.

例12:例9の装置において、OS電力管理モジュールは、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、処理要素をスリープモードに置くことが可能であってもよい。これらの例では、OS電力管理モジュールは、スリープ指標に応答して、処理要素を少なくともC1プロセッサ電力状態にすることによって処理要素をスリープモードに置くようにしてもよい。   Example 12: In the apparatus of Example 9, the OS power management module can place the processing element in sleep mode according to one or more industry standards, including Advanced Configuration and Power Interface (ACPI) Specification Revision 5.0 It may be In these examples, the OS power management module may be responsive to the sleep indicator to place the processing element in sleep mode by bringing the processing element into at least a C1 processor power state.

例13:例7の装置において、連続的な閾値は、5回の反復であってもよく、各々のポーリングの反復は、おおむね1[μs]ごとに行われてもよい。   Example 13: In the apparatus of Example 7, the continuous threshold may be 5 iterations, and each polling iteration may be performed approximately every 1 [μs].

例14:例13の装置において、スリープ指標は、アイドル計数が第1のアイドル計数閾値よりも小さいということを示し、スリープ指標は、DPDKポーリングスレッドを第1の時間期間の間スリープ状態にしてもよい。これらの例では、第1の時間期間は、おおむね5回のポーリングの反復の間持続してもよい。   Example 14: In the apparatus of Example 13, the sleep indicator indicates that the idle count is less than the first idle count threshold, and the sleep indicator allows the DPDK polling thread to sleep for a first period of time. Good. In these instances, the first time period may last for approximately five polling iterations.

例15:例13の装置において、スリープ指標は、アイドル計数が第1のアイドル計数閾値をこえているということを示し、スリープ指標は、DPDKポーリングスレッドを第2の時間期間の間スリープ状態にしてもよい。これらの例では、第2の時間期間は、おおむね50回のポーリングの反復の間持続してもよい。   Example 15: In the apparatus of Example 13, the sleep indicator indicates that the idle count is above the first idle count threshold, and the sleep indicator sleeps the DPDK polling thread for a second period of time. It is also good. In these examples, the second time period may last for approximately fifty polling iterations.

例16:例1の装置において、処理要素は、マルチコアプロセッサのコア又はマルチコアプロセッサの1つ又は複数のコアによってサポートされる仮想機械のうちの一方を含んでもよい。   Example 16: In the apparatus of Example 1, the processing element may include one of a core of a multi-core processor or a virtual machine supported by one or more cores of the multi-core processor.

例17:例1の装置において、DPDKポーリングスレッドは、ネットワークパケット処理アプリケーションを実行することが可能であってもよく、ネットワークパケット処理アプリケーションは、NW I/Oデバイスで受信したパケットを処理してもよい。ネットワークパケット処理アプリケーションは、ファイアウォールアプリケーション、仮想私設ネットワーク(VPN)アプリケーション、ネットワークアドレス変換(NAT)アプリケーション、ディープパケットインスペクション(DPI)アプリケーション、又は負荷バランサアプリケーションのうちの1つを含んでもよい。   Example 17: In the apparatus of Example 1, the DPDK polling thread may be capable of executing a network packet processing application, and the network packet processing application may process packets received by the NW I / O device. Good. The network packet processing application may include one of a firewall application, a virtual private network (VPN) application, a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application.

例18:例1の装置は、回路に接続され、ユーザインタフェイスビューを提示するディジタルディスプレイを含んでもよい。   Example 18 The apparatus of Example 1 may include a digital display connected to the circuit to present a user interface view.

例19:1つの例示的な方法は、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングするステップを含んでもよい。上記の方法は、また、各々のポーリングの反復の後に、受信キューに保持されている利用可能なパケット記述子に基づいて、受信キューについての充足のレベルを決定するステップを含んでもよい。上記の方法は、さらに、受信キューについての充足のレベルに基づいてトレンド計数を増加させるステップを含んでもよい。上記の方法は、さらに、トレンド計数がトレンド計数閾値をこえるか否かに基づいて、OS電力管理モジュールにパフォーマンス指標を送るステップとを含んでもよい。パフォーマンス指標は、OS電力管理モジュールが、DPDKポーリングスレッドを実行する処理要素のパフォーマンス状態を増加させることを可能としてもよい。   Example 19: One exemplary method monitors available received packet descriptors held in the receive queue for NW I / O devices over multiple polling iterations for the DPDK polling thread It may include steps. The above method may also include the step of determining the level of fulfillment for the receive queue based on the available packet descriptors held in the receive queue after each polling iteration. The above method may further include the step of increasing the trend count based on the level of fulfillment for the receive queue. The method may further include the step of sending the performance indicator to the OS power management module based on whether the trend count exceeds the trend count threshold. The performance indicator may allow the OS power management module to increase the performance state of the processing element executing the DPDK polling thread.

例20:例19の方法において、OS電力管理モジュールが処理要素のパフォーマンス状態を増加させることは、OS電力管理モジュールが処理要素の動作周波数を増加させることを可能とすることを含んでもよい。   Example 20: In the method of Example 19, increasing the performance state of the processing element by the OS power management module may include enabling the OS power management module to increase the operating frequency of the processing element.

例21:例19の方法において、充足のレベルは、ほぼ空である、半分充足している、又はほぼ充足しているのうちの1つを含んでもよい。   Example 21: In the method of Example 19, the level of fulfillment may include one of near empty, half full, or near full.

例22:例21の方法において、充足のレベルがほぼ空である場合には、小さな数だけ、或いは、充足のレベルが半分充足している場合には、大きな数だけ、トレンド計数を増加させるステップを含んでもよい。これらの例では、大きな数は、小さな数の概ね100倍の数であってもよい。   Example 22: In the method of Example 21, increasing the trend count by a small number if the level of satisfaction is almost empty, or by a large number if the level of satisfaction is half satisfied. May be included. In these instances, the large number may be approximately one hundred times the small number.

例23:例21の方法は、受信キューがほぼ充足していると決定されるポーリングの反復の連続的な数が連続的な閾値をこえるということに応答して、OS電力管理モジュールに高いパフォーマンス指標を送るステップを含んでもよい。高いパフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を最も高いパフォーマンス状態に増加させることを可能としてもよく、最も高いパフォーマンス状態に増加させることは、処理要素の動作周波数を最も高い動作周波数に増加させることを含んでもよい。   Example 23: The method of Example 21 provides high performance to the OS power management module in response to the continuous number of polling iterations determined that the receive queue is nearly full exceeding the continuous threshold. It may include the step of sending an indicator. High performance indicators may allow the OS power management module to increase the performance state of the processing element to the highest performance state, and increasing to the highest performance state may result in the highest operating frequency of the processing element It may include increasing to the frequency.

例24:例21の方法において、ほぼ空であるは、25%乃至50%充足しているレベルであってもよく、半分充足しているは、51%乃至75%充足しているレベルであってもよく、ほぼ充足しているは、75%よりも大きなパーセンテイジ充足しているレベルであってもよい。   Example 24: In the method of Example 21, almost empty may be a level that is 25% to 50% full, and half full is a level that is 51% to 75% full. It may be sufficient that the percentage is greater than 75%.

例25:例19の方法において、OS電力管理モジュールは、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、処理要素のパフォーマンス状態を増加させることが可能であってもよい。これらの例では、OS電力管理モジュールは、処理要素のパフォーマンス状態をPn-1パフォーマンス状態に入るように増加させることが可能であってもよく、"n"は、結果として、処理要素の最も低い動作周波数につながる最も低いパフォーマンス状態を表している。 Example 25: In the method of Example 19, the OS power management module may increase the performance state of the processing element according to one or more industry standards, including Advanced Configuration and Power Interface (ACPI) Specification Revision 5.0 It may be possible. In these examples, the OS power management module may be able to increase the performance state of the processing element to enter the P n -1 performance state, where "n" results in the most of the processing elements It represents the lowest performance state leading to a lower operating frequency.

例26:例17の方法において、処理要素は、マルチコアプロセッサのコア又はマルチコアプロセッサの1つ又は複数のコアによってサポートされる仮想機械のうちの一方を含んでもよい。   Example 26 In the method of Example 17, the processing element may include one of a core of a multi-core processor or a virtual machine supported by one or more cores of the multi-core processor.

例27:例19の方法において、DPDKポーリングスレッドは、ネットワークパケット処理アプリケーションを実行することが可能であってもよく、ネットワークパケット処理アプリケーションは、NW I/Oデバイスで受信したパケットを処理してもよい。ネットワークパケット処理アプリケーションは、ファイアウォールアプリケーション、仮想私設ネットワーク(VPN)アプリケーション、ネットワークアドレス変換(NAT)アプリケーション、ディープパケットインスペクション(DPI)アプリケーション、又は負荷バランサアプリケーションのうちの1つを含んでもよい。   Example 27: In the method of Example 19, the DPDK polling thread may be capable of executing a network packet processing application, and the network packet processing application may process packets received by the NW I / O device. Good. The network packet processing application may include one of a firewall application, a virtual private network (VPN) application, a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application.

例28:少なくとも1つの機械読み取り可能な媒体の1つの例は、複数の命令を含んでもよく、それらの複数の命令は、システムによって実行されたことに応答して、例19乃至例27のうちのいずれか1つにしたがった方法をそのシステムに実行させてもよい。   Example 28: One example of the at least one machine-readable medium may include a plurality of instructions, the plurality of instructions responsive to being executed by the system, of Examples 19-27. The system may execute the method according to any one of the above.

例29:装置は、例19乃至例27のうちのいずれか1つの方法を実行する手段を含んでもよい。   Example 29 The apparatus may include means for performing the method of any one of Examples 19-27.

例30:少なくとも1つの機械読み取り可能な媒体の1つの例は、複数の命令を含んでもよく、それらの複数の命令は、ホストコンピューティングプラットフォームに位置するシステムで実行されたことに応答して、そのシステムに、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングさせてもよい。上記の複数の命令は、さらに、各々のポーリングの反復の後に、受信キューに保持されている利用可能なパケット記述子に基づいて、そのシステムに、受信キューについての充足のレベルを決定させてもよい。上記の複数の命令は、また、そのシステムに、受信キューについての充足のレベルに基づいてトレンド計数を増加させ、そのトレンド計数がトレンド計数閾値をこえるか否かに基づいて、OS電力管理モジュールにパフォーマンス指標を送らせてもよい。パフォーマンス指標は、OS電力管理モジュールが、DPDKポーリングスレッドを実行する処理要素のパフォーマンス状態を増加させることを可能としてもよい。   Example 30: One example of the at least one machine-readable medium may include a plurality of instructions, the plurality of instructions being responsive to being executed by a system located on a host computing platform The system may be made to monitor available received packet descriptors held in the receive queue for the NW I / O device over multiple polling iterations for the DPDK polling thread. The above instructions also allow the system to determine the level of fulfillment for the receive queue based on the available packet descriptors held in the receive queue after each polling iteration. Good. The above instructions also cause the system to increase the trend count based on the level of satisfaction for the receive queue, and to the OS power management module based on whether the trend count exceeds the trend count threshold. Performance indicators may be sent. The performance indicator may allow the OS power management module to increase the performance state of the processing element executing the DPDK polling thread.

例31:例30の少なくとも1つの機械読み取り可能な媒体において、OS電力管理モジュールが処理要素のパフォーマンス状態を増加させることは、OS電力管理モジュールが処理要素の動作周波数を増加させることを可能とすることを含んでもよい。   Example 31: In at least one machine readable medium of Example 30, the OS power management module increasing the performance state of the processing element enables the OS power management module to increase the operating frequency of the processing element May be included.

例32:例30の少なくとも1つの機械読み取り可能な媒体において、充足のレベルは、ほぼ空である、半分充足している、又はほぼ充足しているのうちの1つを含んでもよい。   Example 32: In at least one machine readable medium of Example 30, the level of fulfillment may include one of near empty, half full, or near full.

例33:例32の少なくとも1つの機械読み取り可能な媒体において、上記の複数の命令は、システムに、充足のレベルがほぼ空である場合には、小さな数だけ、或いは、充足のレベルが半分充足している場合には、大きな数だけ、トレンド計数を増加させるようにしてもよい。これらの例では、大きな数は、小さな数の概ね100倍の数であってもよい。   Example 33: In at least one machine-readable medium of Example 32, the plurality of instructions described above cause the system to reduce by a small number if the level of satisfaction is almost empty, or half the level of satisfaction. If so, trend counts may be increased by a large number. In these instances, the large number may be approximately one hundred times the small number.

例34:例32の少なくとも1つの機械読み取り可能な媒体において、上記の複数の命令は、さらに、受信キューがほぼ充足していると決定されるポーリングの反復の連続的な数が連続的な閾値をこえるということに応答して、システムが、OS電力管理モジュールに高いパフォーマンス指標を送るようにさせてもよい。これらの例では、高いパフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を最も高いパフォーマンス状態に増加させることを可能としてもよく、最も高いパフォーマンス状態に増加させることは、処理要素の動作周波数を最も高い動作周波数に増加させることを含んでもよい。   Example 34: In at least one machine readable medium of Example 32, the plurality of instructions further include: a continuous threshold for a continuous number of polling iterations determined that the receive queue is substantially full In response to the above, the system may cause the OS power management module to send high performance indicators. In these examples, a high performance indicator may allow the OS power management module to increase the performance state of the processing element to the highest performance state, and may increase the performance state to the highest performance state. It may include increasing the frequency to the highest operating frequency.

例35:例32の少なくとも1つの機械読み取り可能な媒体において、ほぼ空であるは、25%乃至50%充足しているレベルであってもよく、半分充足しているは、51%乃至75%充足しているレベルであってもよく、ほぼ充足しているは、75%よりも大きなパーセンテイジ充足しているレベルであってもよい。   Example 35: In at least one machine readable medium of Example 32, approximately empty may be at a level that is 25% to 50% full, and half full is 51% to 75%. The level may be satisfied, and the substantially satisfied may be a level satisfied by more than 75%.

例36:例30の少なくとも1つの機械読み取り可能な媒体において、OS電力管理モジュールは、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、処理要素のパフォーマンス状態を増加させることが可能であってもよい。OS電力管理モジュールは、処理要素のパフォーマンス状態をPn-1パフォーマンス状態に入るように増加させることが可能であってもよく、"n"は、結果として、処理要素の最も低い動作周波数につながる最も低いパフォーマンス状態を表している。 Example 36: In at least one machine readable medium of Example 30, the OS power management module is configured to process one or more of the processing elements according to one or more industry standards, including Extended Configuration and Power Interface (ACPI) Specification Revision 5.0. It may be possible to increase the performance state. The OS power management module may be able to increase the performance state of the processing element to enter P n -1 performance state, where "n" results in the lowest operating frequency of the processing element It represents the lowest performance state.

例37:例30の少なくとも1つの機械読み取り可能な媒体において、処理要素は、マルチコアプロセッサのコア又はマルチコアプロセッサの1つ又は複数のコアによってサポートされる仮想機械のうちの一方を含んでもよい。   Example 37: In at least one machine readable medium of Example 30, the processing element may include one of a core of a multi-core processor or a virtual machine supported by one or more cores of the multi-core processor.

例38:例30の少なくとも1つの機械読み取り可能な媒体において、DPDKポーリングスレッドは、ネットワークパケット処理アプリケーションを実行することが可能であってもよく、ネットワークパケット処理アプリケーションは、NW I/Oデバイスで受信したパケットを処理してもよい。ネットワークパケット処理アプリケーションは、ファイアウォールアプリケーション、仮想私設ネットワーク(VPN)アプリケーション、ネットワークアドレス変換(NAT)アプリケーション、ディープパケットインスペクション(DPI)アプリケーション、又は負荷バランサアプリケーションのうちの1つを含んでもよい。   Example 38: In at least one machine readable medium of Example 30, the DPDK polling thread may be capable of executing a network packet processing application, the network packet processing application receiving at the NW I / O device Packets may be processed. The network packet processing application may include one of a firewall application, a virtual private network (VPN) application, a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application.

例39:例示的な方法は、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングするステップを含んでもよい。当該方法は、また、各々のポーリングの反復の後に、受信キューに保持されている利用可能なパケット記述子に基づいて、各々のポーリングの反復について受信キューで受信したパケットの数を決定するステップを含んでもよい。当該方法は、さらに、連続的な閾値をこえる連続的な数のポーリングの反復の間に受信したパケットの数が0である場合に、1である計数だけアイドル計数を増加させるステップを含んでもよい。当該方法は、また、アイドル計数が第1のアイドル計数閾値をこえるか又は第1のアイドル計数閾値よりも小さいかに基づいて、DPDKポーリングスレッドを第1の時間期間又は第2の時間期間のうちの一方の間スリープ状態にさせるステップを含んでもよい。第2の時間期間は、第1の時間期間よりも長くてもよい。   Example 39: The exemplary method monitors the available received packet descriptors held in the receive queue for the NW I / O device over multiple polling iterations for the DPDK polling thread. May be included. The method also includes, after each polling iteration, determining the number of packets received in the reception queue for each polling iteration based on the available packet descriptors held in the reception queue. May be included. The method may further include the step of increasing the idle count by a count of one if the number of packets received during successive number of polling iterations above a continuous threshold is zero. . The method also determines whether the DPDK polling thread is out of the first time period or the second time period based on whether the idle count is greater than or less than the first idle count threshold. And sleep may be included during one of the steps. The second time period may be longer than the first time period.

例40:例39の方法は、アイドル計数が第2のアイドル計数閾値をこえたことに基づいて、NW I/Oデバイスに割込みターンオンヒントを送り、DPDKポーリングスレッドを中断状態にさせるステップを含んでもよい。   Example 40: The method of Example 39 also includes sending an interrupt turn-on hint to the NW I / O device based on the idle count exceeding the second idle count threshold, causing the DPDK polling thread to be suspended. Good.

例41:例39の方法は、アイドル計数が第1のアイドル計数閾値をこえたことに基づいて、DPDKポーリングスレッドが第2の時間期間の間スリープ状態になることを含んでもよい。当該方法は、OS電力管理モジュールに長いスリープ指標を送るステップを含んでもよい。長いスリープ指標は、OS電力管理モジュールが、最大で第2の時間期間までの間、DPDKポーリングスレッドを実行する処理要素をスリープモードに置くことを可能としてもよい。   Example 41: The method of Example 39 may include the DPDK polling thread going to sleep for a second period of time based on the idle count exceeding the first idle count threshold. The method may include sending a long sleep indicator to the OS power management module. The long sleep indicator may allow the OS power management module to put the processing element executing the DPDK polling thread into sleep mode for up to a second time period.

例42:例41の方法は、タイマ期間を有するタイマを開始するステップを含んでもよい。当該方法は、タイマが終了したことに応答して、タイマ期間の間にDPDKポーリングスレッドがスリープ状態であったポーリングの反復のパーセンテイジを決定するステップを含んでもよい。当該方法は、パーセンテイジがパーセンテイジ閾値よりも大きいか否かに基づいて、OS電力管理モジュールにパフォーマンス指標を送るステップを含んでもよい。パフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を下げることを可能としてもよく、処理要素のパフォーマンス状態を下げることは、処理要素の動作周波数を減少させること又は動作電圧を減少させることを含んでもよい。   EXAMPLE 42 The method of Example 41 may include the step of starting a timer having a timer period. The method may include the step of determining, in response to the expiration of the timer, a percentage of repetition of polling that the DPDK polling thread was asleep during the timer period. The method may include sending a performance indicator to the OS power management module based on whether the percentage is greater than a percentage threshold. The performance indicator may allow the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may reduce the operating frequency of the processing element or reduce the operating voltage May be included.

例43:例41の方法は、タイマ期間を有するタイマを開始するステップを含んでもよい。当該方法は、タイマが終了したことに応答して、タイマ期間の間に受信キューで受信したパケットについて平均の反復ごとのパケット数を決定するステップを含んでもよい。当該方法は、平均の反復ごとのパケット数がパケット平均閾値よりも小さいか否かに基づいて、OS電力管理モジュールにパフォーマンス指標を送るステップを含んでもよい。パフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を下げるようにし、処理要素のパフォーマンス状態を下げることは、処理要素の動作周波数を下げることを含んでもよい。   Example 43: The method of Example 41 may include the step of starting a timer having a timer period. The method may include determining an average number of packets per iteration for packets received in the receive queue during the timer period in response to the timer having expired. The method may include sending the performance indicator to the OS power management module based on whether the average number of packets per iteration is less than the packet average threshold. The performance indicator may cause the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may include reducing the operating frequency of the processing element.

例44:例41の方法において、OS電力管理モジュールは、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、処理要素をスリープモードに置くことが可能であってもよい。これらの例では、OS電力管理モジュールは、スリープ指標に応答して、処理要素を少なくともC1プロセッサ電力状態にすることによって処理要素をスリープモードに置くようにしてもよい。   Example 44: In the method of Example 41, the OS power management module can place the processing element in sleep mode according to one or more industry standards, including Advanced Configuration and Power Interface (ACPI) Specification Revision 5.0 It may be In these examples, the OS power management module may be responsive to the sleep indicator to place the processing element in sleep mode by bringing the processing element into at least a C1 processor power state.

例45:例41の方法において、処理要素は、マルチコアプロセッサのコア又はマルチコアプロセッサの1つ又は複数のコアによってサポートされる仮想機械のうちの一方を含んでもよい。   Example 45: In the method of Example 41, the processing element may include one of a core of a multi-core processor or a virtual machine supported by one or more cores of the multi-core processor.

例46:例39の方法において、連続的な閾値は、5回の反復であってもよく、各々のポーリングの反復は、おおむね1[μs]ごとに行われてもよい。   Example 46: In the method of Example 39, the continuous threshold may be 5 iterations, and each polling iteration may be performed approximately every 1 [μs].

例47:例46の方法において、スリープ指標は、アイドル計数が第1のアイドル計数閾値よりも小さいということを示してもよく、スリープ指標は、DPDKポーリングスレッドを第1の時間期間の間スリープ状態にしてもよい。第1の時間期間は、おおむね5回のポーリングの反復の間持続してもよい。   Example 47: In the method of Example 46, the sleep indicator may indicate that the idle count is less than the first idle count threshold, and the sleep indicator sleeps the DPDK polling thread for a first period of time. You may The first time period may last for approximately five polling iterations.

例48:例46の方法において、スリープ指標は、アイドル計数が第1のアイドル計数閾値をこえているということを示してもよく、スリープ指標は、DPDKポーリングスレッドを第2の時間期間の間スリープ状態にしてもよい。第2の時間期間は、おおむね50回のポーリングの反復の間持続してもよい。   Example 48: In the method of Example 46, the sleep indicator may indicate that the idle count is above the first idle count threshold, and the sleep indicator sleeps the DPDK polling thread for a second period of time. It may be in the state. The second time period may last for approximately 50 polling iterations.

例49:例39の方法において、DPDKポーリングスレッドは、ネットワークパケット処理アプリケーションを実行することが可能であってもよく、ネットワークパケット処理アプリケーションは、NW I/Oデバイスで受信したパケットを処理してもよい。ネットワークパケット処理アプリケーションは、ファイアウォールアプリケーション、仮想私設ネットワーク(VPN)アプリケーション、ネットワークアドレス変換(NAT)アプリケーション、ディープパケットインスペクション(DPI)アプリケーション、又は負荷バランサアプリケーションのうちの1つを含んでもよい。   Example 49: In the method of Example 39, the DPDK polling thread may be capable of executing a network packet processing application, and the network packet processing application may process packets received by the NW I / O device. Good. The network packet processing application may include one of a firewall application, a virtual private network (VPN) application, a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application.

例50:少なくとも1つの機械読み取り可能な媒体の1つの例は、複数の命令を含んでもよく、それらの複数の命令は、ホストコンピューティングプラットフォームに位置するシステムによって実行されたことに応答して、例39乃至例49のうちのいずれか1つにしたがった方法をそのシステムに実行させてもよい。   Example 50: One example of the at least one machine-readable medium may include a plurality of instructions, the plurality of instructions being responsive to being executed by a system located on a host computing platform The system may execute the method according to any one of Examples 39 to 49.

例51:例示的な装置は、例39乃至例49のうちのいずれか1つの方法を実行する手段を含んでもよい。   Example 51: An exemplary apparatus may include means for performing the method of any one of Examples 39-49.

例52:少なくとも1つの機械読み取り可能な媒体の1つの例は、複数の命令を含んでもよく、それらの複数の命令は、ホストコンピューティングプラットフォームに位置するシステムで実行されたことに応答して、そのシステムに、DPDKポーリングスレッドのための複数のポーリングの反復にわたって、NW I/Oデバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングさせてもよい。上記の複数の命令は、そのシステムに、各々のポーリングの反復の後に、受信キューに保持されている利用可能なパケット記述子に基づいて、各々のポーリングの反復について受信キューで受信したパケットの数を決定させてもよい。上記の複数の命令は、連続的な閾値をこえる連続的な数のポーリングの反復の間に受信したパケットの数が0である場合に、そのシステムに、1である計数だけアイドル計数を増加させてもよい。上記の複数の命令は、アイドル計数が第1のアイドル計数閾値をこえるか又は第1のアイドル計数閾値よりも小さいかに基づいて、そのシステムに、DPDKポーリングスレッドを第1の時間期間又は第2の時間期間のうちの一方の間スリープ状態にさせるようにさせてもよい。第2の時間期間は、第1の時間期間よりも長くてもよい。   Example 52: One example of the at least one machine readable medium may comprise a plurality of instructions, the plurality of instructions being responsive to being executed by a system located on a host computing platform The system may be made to monitor available received packet descriptors held in the receive queue for the NW I / O device over multiple polling iterations for the DPDK polling thread. The above instructions cause the system to count the number of packets received in the receive queue for each polling iteration based on the available packet descriptors held in the receive queue after each polling iteration. You may decide to The above instructions cause the system to increase the idle count by a count of one if the number of packets received during consecutive number of polling iterations above the consecutive threshold is zero. May be The plurality of instructions may cause the system to receive the DPDK polling thread for a first time period or a second time period based on whether the idle count is greater than or less than the first idle count threshold. It may be caused to sleep during one of the time periods. The second time period may be longer than the first time period.

例53:例52の少なくとも1つの機械読み取り可能な媒体において、上記の複数の命令は、アイドル計数が第2のアイドル計数閾値をこえたことに基づいて、そのシステムが、NW I/Oデバイスに割込みターンオンヒントを送り、DPDKポーリングスレッドを中断状態にさせるようにさせてもよい。   Example 53: In at least one machine-readable medium of Example 52, the plurality of instructions as described above, wherein the system generates an NW I / O device based on the idle count exceeding the second idle count threshold. An interrupt turn on hint may be sent to cause the DPDK polling thread to be suspended.

例54:例52の少なくとも1つの機械読み取り可能な媒体において、アイドル計数が第1のアイドル計数閾値をこえたことに基づいて、DPDKポーリングスレッドは、第2の時間期間の間スリープ状態になるように構成されてもよい。上記の複数の命令は、そのシステムが、OS電力管理モジュールに長いスリープ指標を送るようにさせてもよい。長いスリープ指標は、OS電力管理モジュールが、最大で第2の時間期間までの間、DPDKポーリングスレッドを実行する処理要素をスリープモードに置くようにさせることを可能としてもよい。   Example 54: In at least one machine-readable medium of Example 52, the DPDK polling thread sleeps for a second period of time based on the idle count exceeding the first idle count threshold. May be configured. The plurality of instructions above may cause the system to send a long sleep indicator to the OS power management module. The long sleep indicator may allow the OS power management module to put the processing element executing the DPDK polling thread into sleep mode for up to a second time period.

例55:例54の少なくとも1つの機械読み取り可能な媒体において、上記の複数の命令は、そのシステムに、タイマ期間を有するタイマを開始させ、タイマが終了したことに応答して、タイマ期間の間にDPDKポーリングスレッドがスリープ状態であったポーリングの反復のパーセンテイジを決定させてもよい。上記の複数の命令は、パーセンテイジがパーセンテイジ閾値よりも大きいか否かに基づいて、そのシステムが、OS電力管理モジュールにパフォーマンス指標を送るようにさせてもよい。パフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を下げることを可能としてもよく、処理要素のパフォーマンス状態を下げることは、処理要素の動作周波数を減少させること又は動作電圧を減少させることを含んでもよい。   Example 55: In at least one machine readable medium of Example 54, the plurality of instructions causes the system to start a timer having a timer period, and in response to the timer ending, for a timer period. Let the DPDK poll thread determine the percentage of polling iterations that were sleeping. The plurality of instructions may cause the system to send a performance indicator to the OS power management module based on whether the percentage is greater than the percentage threshold. The performance indicator may allow the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may reduce the operating frequency of the processing element or reduce the operating voltage May be included.

例56:例54の少なくとも1つの機械読み取り可能な媒体において、上記の複数の命令は、そのシステムに、タイマ期間を有するタイマを開始させ、タイマが終了したことに応答して、タイマ期間の間に受信キューで受信したパケットについて平均の反復ごとのパケット数を決定させてもよい。上記の複数の命令は、平均の反復ごとのパケット数がパケット平均閾値よりも小さいか否かに基づいて、そのシステムが、OS電力管理モジュールにパフォーマンス指標を送るようにさせてもよい。パフォーマンス指標は、OS電力管理モジュールが、処理要素のパフォーマンス状態を下げるようにしてもよく、処理要素のパフォーマンス状態を下げることは、処理要素の動作周波数を減少させることを含んでもよい。   Example 56: In at least one machine readable medium of Example 54, the plurality of instructions causes the system to start a timer having a timer period, and in response to the timer ending, for a timer period. The average number of packets per iteration may be determined for packets received in the receive queue. The plurality of instructions above may cause the system to send a performance indicator to the OS power management module based on whether the average number of packets per iteration is less than the packet average threshold. The performance indicator may cause the OS power management module to reduce the performance state of the processing element, and reducing the performance state of the processing element may include reducing the operating frequency of the processing element.

例57:例54の少なくとも1つの機械読み取り可能な媒体において、OS電力管理モジュールは、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、処理要素をスリープモードに置くことが可能であってもよい。OS電力管理モジュールは、スリープ指標に応答して、処理要素を少なくともC1プロセッサ電力状態にすることによって処理要素をスリープモードに置くようにしてもよい。   Example 57: In at least one machine-readable medium of Example 54, the OS power management module processes the processing elements according to one or more industry standards, including Extended Configuration and Power Interface (ACPI) Specification Revision 5.0 It may be possible to put it in sleep mode. The OS power management module may be responsive to the sleep indicator to place the processing element in sleep mode by bringing the processing element to at least a C1 processor power state.

例58:例54の少なくとも1つの機械読み取り可能な媒体において、処理要素は、マルチコアプロセッサのコア又はマルチコアプロセッサの1つ又は複数のコアによってサポートされる仮想機械のうちの一方を含んでもよい。   Example 58: In at least one machine readable medium of Example 54, the processing element may include one of a core of a multi-core processor or a virtual machine supported by one or more cores of the multi-core processor.

例59:例51の少なくとも1つの機械読み取り可能な媒体において、連続的な閾値は、5回の反復を含んでもよく、各々のポーリングの反復は、おおむね1[μs]ごとに行われてもよい。   Example 59: In at least one machine readable medium of Example 51, the continuous threshold may include 5 iterations, and each polling iteration may be performed approximately every 1 [μs] .

例60:例59の少なくとも1つの機械読み取り可能な媒体において、スリープ指標は、アイドル計数が第1のアイドル計数閾値よりも小さいということを示してもよく、スリープ指標は、DPDKポーリングスレッドを第1の時間期間の間スリープ状態にしてもよい。第1の時間期間は、おおむね5回のポーリングの反復の間持続してもよい。   Example 60: In at least one machine readable medium of Example 59, the sleep indicator may indicate that the idle count is less than the first idle count threshold, and the sleep indicator indicates that the DPDK polling thread Sleep for a period of time. The first time period may last for approximately five polling iterations.

例61:例59の少なくとも1つの機械読み取り可能な媒体において、スリープ指標は、アイドル計数が第1のアイドル計数閾値をこえているということを示してもよく、スリープ指標は、DPDKポーリングスレッドを第2の時間期間の間スリープ状態にしてもよい。第2の時間期間は、おおむね50回のポーリングの反復の間持続してもよい。   Example 61: In at least one machine-readable medium of Example 59, the sleep indicator may indicate that the idle count is above the first idle count threshold, and the sleep indicator includes the DPDK polling thread. It may sleep for a time period of two. The second time period may last for approximately 50 polling iterations.

例62:例52の少なくとも1つの機械読み取り可能な媒体において、DPDKポーリングスレッドは、ネットワークパケット処理アプリケーションを実行することが可能であってもよく、ネットワークパケット処理アプリケーションは、NW I/Oデバイスで受信したパケットを処理してもよい。ネットワークパケット処理アプリケーションは、ファイアウォールアプリケーション、仮想私設ネットワーク(VPN)アプリケーション、ネットワークアドレス変換(NAT)アプリケーション、ディープパケットインスペクション(DPI)アプリケーション、又は負荷バランサアプリケーションのうちの1つを含んでもよい。   Example 62: In at least one machine readable medium of Example 52, the DPDK polling thread may be capable of executing a network packet processing application, the network packet processing application receiving at the NW I / O device Packets may be processed. The network packet processing application may include one of a firewall application, a virtual private network (VPN) application, a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application.

要約書は、37C.F.R.§1.72(b)に適合するように記載され、37C.F.R.§1.72(b)は、読者が技術的な開示の性質を迅速に解明することができるようにすることを要約書に要求しているということを注記しておく。要約書が請求項に記載された発明の範囲又は意味を解釈する或いは限定するのに使用されないのは、要約書が理解のために提出されるからである。さらに、上記の発明を実施するための形態の中で、開示内容を効率的にする目的で、単一の実施形態の中にさまざまな特徴をグループとしてまとめてあるということが理解できるであろう。このような開示の手法は、実施形態のうちの請求項に係る発明の部分が、各請求項に明白に記載されている特徴よりもより多くの特徴を必要とするという意図を反映しているものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映しているように、発明の主題は、開示されている単一の実施形態のすべての特徴よりもより少ない特徴の中に存在している。このようにして、以下の特許請求の範囲は、発明を実施するための形態の中に組み込まれ、各請求項は、個別の実施形態としてそれ自体で独立して存在している。添付の特許請求の範囲の中では、"including"及び"in which"といった語が、それぞれ、"comprising"及び"wherein"の平易な同義語として使用されることもある。さらに、序数的形容詞"第1の(first)"、"第2の(second)"、及び"第3の(third)"等は、ラベルとして使用されるにすぎず、それらの序数的形容詞の対象に数的な要件を付加することを意図するものではない。   The abstract is written to comply with 37 C.FR 1.7 1.72 (b), which allows the reader to quickly uncover the nature of the technical disclosure. Note that you are requesting for the abstract. The abstract is not used to interpret or limit the scope or meaning of the claimed invention, since the abstract is submitted for understanding. Furthermore, it will be understood that, among the forms for carrying out the invention described above, various features are grouped together in a single embodiment for the purpose of streamlining the disclosure content. . Such disclosed approach reflects the intention that the claimed invention portion of the embodiments requires more features than the features explicitly stated in each claim It should not be interpreted as a thing. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are incorporated into the Description of the Invention, with each claim standing on its own as a separate embodiment. In the appended claims, the words "including" and "in which" may be used as plain synonyms for "comprising" and "wherein", respectively. Furthermore, the ordinal adjectives "first", "second", and "third" etc. are only used as labels, and their ordinal adjectives It is not intended to add numerical requirements to the subject.

本発明の主題が、構造的な特徴及び/又は方法の動作に特有の記載で説明されてきたが、添付の特許請求の範囲で規定される主題は、必ずしも、上記で説明されたその特有の特徴又は動作に限定されないということを理解すべきである。むしろ、上記で説明されたそれらの特有の特徴及び動作は、請求項に係る発明を実装する一例としての形態で開示されている。


Although the subject matter of the present invention has been described in a specific description of the structural features and / or the operation of the method, the subject matter defined in the appended claims is not necessarily the specific one described above. It should be understood that the invention is not limited to the features or operations. Rather, those specific features and acts described above are disclosed in an exemplary form for implementing the claimed invention.


Claims (21)

装置であって、
ホストコンピューティングプラットフォームに位置する回路と、
前記回路によって実行され、データプレーン展開キット(DPDK)ポーリングスレッドのための複数のポーリングの反復にわたって、ネットワーク入力/出力(NW I/O)デバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングするキュー構成要素であって、前記キュー構成要素は、各々のポーリングの反復の後に、前記受信キューに保持されている利用可能なパケット記述子に基づいて、前記受信キューについての充足のレベルを決定するように構成される、受信キュー構成要素と、
前記回路によって実行され、各々のポーリングの反復の後に、前記受信キューについての充足の前記レベルに基づいて、トレンド計数を増加させる増加構成要素と、
前記回路によって実行され、前記トレンド計数がトレンド計数閾値をこえるか否かに基づいて、オペレーティングシステム(OS)電力管理モジュールにパフォーマンス指標を送るパフォーマンス構成要素と、
を含み、
前記パフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記データプレーン展開キット(DPDK)ポーリングスレッドを実行している処理要素のパフォーマンス状態を増加させることを可能と
前記キュー構成要素によって決定された充足の前記レベルは、ほぼ空である、半分充足している、又はほぼ充足している、のうちの1つを含み、
前記増加構成要素は、前記キュー構成要素が充足の前記レベルをほぼ空であると決定した場合には、小さな数だけ、或いは、前記キュー構成要素が充足の前記レベルを半分充足していると決定した場合には、大きな数だけ、前記トレンド計数を増加させるように構成され、前記大きな数は、前記小さな数の概ね100倍の数である、
装置。
A device,
Circuitry located on the host computing platform;
Available reception performed by the circuit and held in a receive queue for network input / output (NW I / O) devices over multiple polling iterations for a data plane deployment kit (DPDK) polling thread Queue component for monitoring different packet descriptors, wherein the queue component is configured for the reception queue based on available packet descriptors held in the reception queue after each polling iteration A receive queue component configured to determine the level of satisfaction of
An incrementing component that is executed by the circuit to increase the trend count after each polling iteration based on the level of satisfaction for the receive queue;
A performance component that is executed by the circuit to send performance indicators to an operating system (OS) power management module based on whether the trending count exceeds a trending threshold or not;
Including
The performance indicators, the operating system (OS) power management module, and possible to increase the performance state of the processing element running the data plane development kit (DPDK) polling thread,
The level of fulfillment determined by the queue component includes one of: substantially empty, half filled or nearly filled;
The increasing component determines that the queue component has fulfilled the level of fulfillment by a small number, or if the queue component has determined that the level of fulfillment is substantially empty. If so, it is arranged to increase the trend count by a large number, the large number being approximately 100 times the small number,
apparatus.
前記オペレーティングシステム(OS)電力管理モジュールが前記処理要素の前記パフォーマンス状態を増加させることは、前記オペレーティングシステム(OS)電力管理モジュールが前記処理要素の動作周波数を増加させるようにすることが可能であるということを含む、請求項1に記載の装置。   The operating system (OS) power management module may increase the performance state of the processing element such that the operating system (OS) power management module increases the operating frequency of the processing element The apparatus according to claim 1, comprising: 前記キュー構成要素により前記受信キューがほぼ充足していると決定されるポーリングの反復の連続的な数が、連続的な閾値をこえるということに応答して、前記パフォーマンス構成要素が、前記オペレーティングシステム(OS)電力管理モジュールに高いパフォーマンス指標を送ることを含み、前記高いパフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記処理要素の動作周波数を最も高い動作周波数に増加させるようにすることによって、前記処理要素の前記パフォーマンス状態を最も高いパフォーマンス状態に増加させることを可能とする、請求項に記載の装置。 Said performance component responsive to the fact that a continuous number of polling iterations determined by said queue component to be substantially full of said receive queue exceeds a continuous threshold. (OS) sending a high performance indicator to a power management module, said high performance indicator causing said operating system (OS) power management module to increase the operating frequency of said processing element to the highest operating frequency it by makes it possible to increase the performance state of the processing element to the highest performance state, the apparatus according to claim 1. ほぼ空であるは、25%乃至50%充足しているレベルであり、半分充足しているは、51%乃至75%充足しているレベルであり、ほぼ充足しているは、75%よりも大きなパーセンテイジ充足しているレベルである、請求項に記載の装置。 Almost empty is a level that is 25% to 50% full, half full is a level that is 51% to 75% full, and almost full is more than 75% The apparatus according to claim 1 , wherein the apparatus is a large percentage full level. 前記オペレーティングシステム(OS)電力管理モジュールは、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、前記処理要素の前記パフォーマンス状態を増加させることが可能であり、前記オペレーティングシステム(OS)電力管理モジュールは、前記処理要素の前記パフォーマンス状態をPn-1パフォーマンス状態に入るように増加させることが可能であり、"n"は、前記処理要素の最も低い動作周波数につながる最も低いパフォーマンス状態を表している、請求項1に記載の装置。 The operating system (OS) power management module is capable of increasing the performance state of the processing element in accordance with one or more industry standards, including Advanced Configuration and Power Interface (ACPI) Specification Revision 5.0. And the operating system (OS) power management module can increase the performance state of the processing element to enter P n -1 performance state, where "n" is the lowest of the processing element The apparatus of claim 1 representing the lowest performance condition leading to an operating frequency. 当該装置は、
前記キュー構成要素が、各々のポーリングの反復の後に、前記受信キューに保持されている利用可能なパケット記述子に基づいて、各々のポーリングの反復について前記受信キューで受信したパケットの数を決定することを含み、
連続的な閾値をこえる連続的な数のポーリングの反復の間に受信したパケットの数が0である場合に、前記増加構成要素は、アイドル計数を1である計数だけ増加させるように構成され、
当該装置は、前記回路によって実行され、前記アイドル計数が第1のアイドル計数閾値をこえるか又は前記第1のアイドル計数閾値よりも小さいかに基づいて、第1の時間期間又は第2の時間期間のうちの一方の間、前記データプレーン展開キット(DPDK)ポーリングスレッドをスリープ状態にさせるスリープ構成要素を含み、前記第2の時間期間は、前記第1の時間期間よりも長い、請求項1に記載の装置。
The device is
The queue component determines, after each polling iteration, the number of packets received in the reception queue for each polling iteration based on available packet descriptors held in the reception queue. Including
The increasing component is configured to increase the idle count by a count that is one if the number of packets received during successive number of polling iterations above a continuous threshold is zero;
The apparatus is executed by the circuit and the first time period or the second time period based on whether the idle count is above or below the first idle count threshold. 2. The method of claim 1, further comprising a sleep component causing the data plane deployment kit (DPDK) polling thread to sleep during one of the steps, wherein the second period of time is longer than the first period of time. Device described.
前記回路によって実行され、前記アイドル計数が第2のアイドル計数閾値をこえるか否かに基づいて、前記ネットワーク入力/出力(NW I/O)デバイスに割込みターンオンメッセージを送って、単発の受信(Rx)割込みを有効にする割込み制御構成要素を含む、請求項に記載の装置。 Send an interrupt turn-on message to the network input / output (NW I / O) device based on whether or not performed by the circuit and based on whether the idle count exceeds a second idle count threshold to receive single-shot reception (Rx) 7. The apparatus of claim 6 , including an interrupt control component that enables interrupts. 当該装置は、前記スリープ構成要素が、前記アイドル計数が前記第1のアイドル計数閾値をこえたことに基づいて、前記データプレーン展開キット(DPDK)ポーリングスレッドを前記第2の時間期間の間スリープ状態にさせ、前記オペレーティングシステム(OS)電力管理モジュールに長いスリープ指標を送ることを含み、前記長いスリープ指標は、前記オペレーティングシステム(OS)電力管理モジュールが、最大で前記第2の時間期間までの間、前記データプレーン展開キット(DPDK)ポーリングスレッドを実行する前記処理要素をスリープモードに置くことを可能にする、請求項に記載の装置。 The apparatus sleeps the Data Plane Deployment Kit (DPDK) polling thread for the second period of time based on the idle count being greater than the first idle count threshold. And sending a long sleep indication to the operating system (OS) power management module, the long sleep indication indicating that the operating system (OS) power management module is operable for up to the second time period. 7. The apparatus of claim 6 , enabling the processing element executing the data plane deployment kit (DPDK) polling thread to be placed in sleep mode. 当該装置は、
前記回路によって実行され、タイマ期間を有するタイマを開始するタイマ構成要素を含み、
前記タイマが終了したことに応答して、前記スリープ構成要素は、前記タイマ期間の間に前記データプレーン展開キット(DPDK)ポーリングスレッドがスリープ状態であったポーリングの反復のパーセンテイジを決定し、
前記パーセンテイジがパーセンテイジ閾値よりも大きいか否かに基づいて、前記パフォーマンス構成要素は、前記オペレーティングシステム(OS)電力管理モジュールにパフォーマンス指標を送ってもよく、前記パフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記処理要素のパフォーマンス状態を下げることを可能とし、前記処理要素の前記パフォーマンス状態を下げることは、前記処理要素の動作周波数を減少させること又は動作電圧を減少させることを含む、請求項に記載の装置。
The device is
Including a timer component implemented by said circuit to start a timer having a timer period,
In response to the timer expiring, the sleep component determines a percentage of polling iterations in which the Data Plane Deployment Kit (DPDK) polling thread was asleep during the timer period;
The performance component may send a performance indicator to the operating system (OS) power management module based on whether the percentage is greater than a percentage threshold, the performance indicator being OS) Allowing a power management module to reduce the performance state of the processing element, reducing the performance state of the processing element reduces the operating frequency of the processing element or reduces the operating voltage The apparatus according to claim 8 , comprising.
当該装置は、
前記回路によって実行され、タイマ期間を有するタイマを開始するタイマ構成要素を含み、
前記タイマが終了したことに応答して、前記キュー構成要素は、前記タイマ期間の間に前記受信キューで受信したパケットについて平均の反復ごとのパケット数を決定し、
前記平均の反復ごとのパケット数がパケット平均閾値よりも小さいか否かに基づいて、前記パフォーマンス構成要素は、前記オペレーティングシステム(OS)電力管理モジュールにパフォーマンス指標を送り、前記パフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記処理要素のパフォーマンス状態を下げることを可能とし、前記処理要素の前記パフォーマンス状態を下げることは、前記処理要素の動作周波数を下げることを含む、請求項に記載の装置。
The device is
Including a timer component implemented by said circuit to start a timer having a timer period,
In response to the timer expiring, the queue component determines an average number of packets per iteration for packets received in the receive queue during the timer period;
The performance component sends a performance indicator to the operating system (OS) power management module, based on whether the average number of packets per iteration is less than a packet average threshold, the performance indicator indicating system (OS) power management module, and enables to reduce the performance state of the processing element, lowering the performance state of the processing element comprises reducing the operating frequency of the processing elements, to claim 8 Device described.
当該装置は、
前記オペレーティングシステム(OS)電力管理モジュールが、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、前記処理要素をスリープモードに置くことが可能であることを含み、前記オペレーティングシステム(OS)電力管理モジュールは、前記スリープ指標に応答して、前記処理要素を少なくともC1プロセッサ電力状態にすることによって前記処理要素を前記スリープモードに置くように構成される、請求項に記載の装置。
The device is
The operating system (OS) power management module may be capable of placing the processing element in sleep mode according to one or more industry standards, including Extended Configuration and Power Interface (ACPI) Specification Revision 5.0 The operating system (OS) power management module is configured to place the processing element in the sleep mode by bringing the processing element into at least a C1 processor power state in response to the sleep indicator. An apparatus according to claim 8 .
前記連続的な閾値は、5回の反復を含み、各々のポーリングの反復は、おおむね1マイクロ秒ごとに行われ、前記スリープ指標は、前記アイドル計数が前記第1のアイドル計数閾値よりも小さいこということを示し、前記スリープ指標は、前記データプレーン展開キット(DPDK)ポーリングスレッドを前記第1の時間期間の間スリープ状態にし、前記第1の時間期間は、おおむね5回のポーリングの反復の間持続する、請求項に記載の装置。 The continuous threshold includes 5 iterations, and each polling iteration is performed approximately every 1 microsecond, and the sleep indicator is such that the idle count is less than the first idle count threshold. Indicate that the sleep indicator puts the data plane deployment kit (DPDK) polling thread to sleep for the first period of time, and the first period of time is approximately between five polling iterations. 9. The device of claim 8 which is persistent. 前記スリープ指標は、前記アイドル計数が前記第1のアイドル計数閾値をこえているということを示し、前記スリープ指標は、前記データプレーン展開キット(DPDK)ポーリングスレッドを前記第2の時間期間の間スリープ状態にし、前記第2の時間期間は、おおむね50回のポーリングの反復の間持続する、請求項11に記載の装置。 The sleep indicator indicates that the idle count is above the first idle count threshold, and the sleep indicator sleeps the data plane deployment kit (DPDK) polling thread for the second period of time. The apparatus of claim 11 , wherein said second time period lasts for approximately fifty (50) polling iterations. 前記処理要素は、マルチコアプロセッサのコア又は前記マルチコアプロセッサの1つ又は複数のコアによってサポートされる仮想機械のうちの一方を含む、請求項1に記載の装置。   The apparatus of claim 1, wherein the processing element comprises one of a core of a multi-core processor or a virtual machine supported by one or more cores of the multi-core processor. 前記データプレーン展開キット(DPDK)ポーリングスレッドは、ネットワークパケット処理アプリケーションを実行することが可能であり、前記ネットワークパケット処理アプリケーションは、前記ネットワーク入力/出力(NW I/O)デバイスで受信したパケットを処理し、前記ネットワークパケット処理アプリケーションは、ファイアウォールアプリケーション、仮想私設ネットワーク(VPN)アプリケーション、ネットワークアドレス変換(NAT)アプリケーション、ディープパケットインスペクション(DPI)アプリケーション、又は負荷バランサアプリケーションのうちの1つを含む、請求項1に記載の装置。   The Data Plane Deployment Kit (DPDK) polling thread can execute a network packet processing application, and the network packet processing application processes packets received by the network input / output (NW I / O) device The network packet processing application includes one of a firewall application, a virtual private network (VPN) application, a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application. The device according to 1. 方法であって、
データプレーン展開キット(DPDK)ポーリングスレッドのための複数のポーリングの反復にわたって、ネットワーク入力/出力(NW I/O)デバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングするステップと、
各々のポーリングの反復の後に、前記受信キューに保持されている利用可能なパケット記述子に基づいて、前記受信キューについて充足のレベルを決定するステップであって、充足の前記レベルは、ほぼ空である、半分充足している、又はほぼ充足しているのうちの1つを含む、ステップと、
前記受信キューについての充足の前記レベルに基づいてトレンド計数を増加させるステップと、
前記トレンド計数がトレンド計数閾値をこえるか否かに基づいて、オペレーティングシステム(OS)電力管理モジュールにパフォーマンス指標を送るステップであって前記パフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記データプレーン展開キット(DPDK)ポーリングスレッドを実行する処理要素のパフォーマンス状態を増加させることを可能とする、ステップと、
前記受信キューがほぼ充足していると決定されるポーリングの反復の連続的な数が連続的な閾値をこえるということに応答して、前記オペレーティングシステム(OS)電力管理モジュールに高いパフォーマンス指標を送るステップを含み、前記高いパフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記処理要素の前記パフォーマンス状態を最も高いパフォーマンス状態に増加させることを可能とし、前記最も高いパフォーマンス状態に増加させることは、前記処理要素の動作周波数を最も高い動作周波数に増加させることを含む、
方法。
Method,
Monitoring available received packet descriptors held in a receive queue for network input / output (NW I / O) devices over multiple polling iterations for a data plane deployment kit (DPDK) polling thread Step to
Determining the level of fulfillment for the receive queue based on available packet descriptors held in the receive queue after each polling iteration, the level of fulfillment being substantially empty some, including they meet half or are almost satisfied, one of the steps,
Increasing trend counts based on the level of fulfillment for the receive queue;
Based on whether the trend count exceeds the trend count threshold, a step of sending the performance indicators for the operating system (OS) power management module, the performance indicators, the operating system (OS) power management module, Enabling to increase the performance state of processing elements executing said data plane development kit (DPDK) polling thread;
Sending a high performance indicator to the operating system (OS) power management module in response to the continuous number of polling iterations determined that the receive queue is nearly full exceeding a continuous threshold Including the steps, wherein the high performance indicator enables the operating system (OS) power management module to increase the performance state of the processing element to the highest performance state, and to the highest performance state. Includes increasing the operating frequency of the processing element to the highest operating frequency,
Method.
方法であって、
データプレーン展開キット(DPDK)ポーリングスレッドのための複数のポーリングの反復にわたって、ネットワーク入力/出力(NW I/O)デバイスのための受信キューに保持されている利用可能な受信したパケット記述子をモニタリングするステップと、
各々のポーリングの反復の後に、前記受信キューに保持されている利用可能なパケット記述子に基づいて、各々のポーリングの反復について前記受信キューで受信したパケットの数を決定するステップと、
連続的な閾値をこえる連続的な数のポーリングの反復の間に受信したパケットの数が0である場合に、1である計数だけアイドル計数を増加させるステップと、
前記アイドル計数が第1のアイドル計数閾値をこえるか又は前記第1のアイドル計数閾値よりも小さいかに基づいて、前記データプレーン展開キット(DPDK)ポーリングスレッドを第1の時間期間又は第2の時間期間のうちの一方の間スリープ状態にさせるステップであって前記第2の時間期間は、前記第1の時間期間よりも長い、ステップと、
前記アイドル計数が第2のアイドル計数閾値をこえたことに基づいて、前記ネットワーク入力/出力(NW I/O)デバイスに割込みターンオンヒントを送り、前記データプレーン展開キット(DPDK)ポーリングスレッドを中断状態にさせるステップと、を含む、
方法。
Method,
Monitoring available received packet descriptors held in a receive queue for network input / output (NW I / O) devices over multiple polling iterations for a data plane deployment kit (DPDK) polling thread Step to
Determining, after each polling iteration, the number of packets received in the reception queue for each polling iteration based on the available packet descriptors held in the reception queue;
Increasing the idle count by a count that is 1 if the number of packets received during successive number of polling iterations above a continuous threshold is zero;
The Data Plane Deployment Kit (DPDK) polling thread for a first time period or a second time based on whether the idle count is above or below a first idle count threshold. a step of the one during sleep state of period, the second time period is longer than said first time period, the steps,
Send an interrupt turn-on hint to the network input / output (NW I / O) device based on the idle count exceeding the second idle count threshold and suspend the data plane deployment kit (DPDK) polling thread Including the steps of
Method.
当該方法は、
前記アイドル計数が前記第1のアイドル計数閾値をこえたことに基づいて、前記データプレーン展開キット(DPDK)ポーリングスレッドが前記第2の時間期間の間スリープ状態になることを含み、
オペレーティングシステム(OS)電力管理モジュールに長いスリープ指標を送るステップを含み、前記長いスリープ指標は、前記オペレーティングシステム(OS)電力管理モジュールが、最大で前記第2の時間期間までの間、前記データプレーン展開キット(DPDK)ポーリングスレッドを実行する処理要素をスリープモードに置くことを可能とする、請求項17に記載の方法。
The method is
Including the Data Plane Deployment Kit (DPDK) polling thread sleeping for the second period of time based on the idle count exceeding the first idle count threshold;
Sending a long sleep indication to an operating system (OS) power management module, wherein the long sleep indication indicates that the operating system (OS) power management module has received the data plane up to the second time period. The method according to claim 17 , enabling the processing element executing the deployment kit (DPDK) polling thread to be put into sleep mode.
当該方法は、
タイマ期間を有するタイマを開始するステップと、
前記タイマが終了したことに応答して、前記タイマ期間の間に前記データプレーン展開キット(DPDK)ポーリングスレッドがスリープ状態であったポーリングの反復のパーセンテイジを決定するステップと、
前記パーセンテイジがパーセンテイジ閾値よりも大きいか否かに基づいて、前記オペレーティングシステム(OS)電力管理モジュールにパフォーマンス指標を送るステップとを含み、前記パフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記処理要素のパフォーマンス状態を下げることを可能とし、前記処理要素の前記パフォーマンス状態を下げることは、前記処理要素の動作周波数を減少させること又は動作電圧を減少させることを含む、請求項18に記載の方法。
The method is
Starting a timer having a timer period;
Determining, in response to the expiration of the timer, a percentage of polling iterations in which the Data Plane Deployment Kit (DPDK) polling thread was asleep during the timer period;
Sending a performance indicator to the operating system (OS) power management module based on whether the percentage is greater than a percentage threshold, the performance indicator including: the operating system (OS) power management module but make it possible to reduce the performance state of the processing element, lowering the performance state of the processing element comprises reducing the or operating voltage reduces the operating frequency of the processing element, according to claim 18 The method described in.
当該方法は、
タイマ期間を有するタイマを開始するステップと、
前記タイマが終了したことに応答して、前記タイマ期間の間に前記受信キューで受信したパケットについて平均の反復ごとのパケット数を決定するステップと、
前記平均の反復ごとのパケット数がパケット平均閾値よりも小さいか否かに基づいて、前記オペレーティングシステム(OS)電力管理モジュールにパフォーマンス指標を送るステップとを含み、前記パフォーマンス指標は、前記オペレーティングシステム(OS)電力管理モジュールが、前記処理要素のパフォーマンス状態を下げるようにし、前記処理要素の前記パフォーマンス状態を下げることは、前記処理要素の動作周波数を下げることを含む、請求項18に記載の方法。
The method is
Starting a timer having a timer period;
Determining an average number of packets per iteration for packets received in the receive queue during the timer period in response to the timer expiring;
Sending a performance indicator to the operating system (OS) power management module based on whether the average number of packets per iteration is less than a packet average threshold, the performance indicator including: The method according to claim 18 , wherein operating system (OS) power management module reduces the performance state of the processing element, and reducing the performance state of the processing element includes reducing the operating frequency of the processing element.
当該方法は、
前記オペレーティングシステム(OS)電力管理モジュールが、拡張構成及び電力インターフェイス(ACPI)仕様書改訂5.0版を含む1つ又は複数の業界標準にしたがって、前記処理要素をスリープモードに置くことが可能であることを含み、前記オペレーティングシステム(OS)電力管理モジュールは、前記スリープ指標に応答して、前記処理要素を少なくともC1プロセッサ電力状態にすることによって前記処理要素を前記スリープモードに置くように構成される、請求項18に記載の方法。
The method is
The operating system (OS) power management module may be capable of placing the processing element in sleep mode according to one or more industry standards, including Extended Configuration and Power Interface (ACPI) Specification Revision 5.0 The operating system (OS) power management module is configured to place the processing element in the sleep mode by bringing the processing element into at least a C1 processor power state in response to the sleep indicator. The method according to claim 18 .
JP2017530249A 2014-12-22 2014-12-22 Techniques for power management associated with processing of received packets in network devices Active JP6545802B2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/094515 WO2016101099A1 (en) 2014-12-22 2014-12-22 Techniques for power management associated with processing received packets at a network device

Publications (2)

Publication Number Publication Date
JP2018507457A JP2018507457A (en) 2018-03-15
JP6545802B2 true JP6545802B2 (en) 2019-07-17

Family

ID=56148844

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017530249A Active JP6545802B2 (en) 2014-12-22 2014-12-22 Techniques for power management associated with processing of received packets in network devices

Country Status (5)

Country Link
EP (1) EP3238403A4 (en)
JP (1) JP6545802B2 (en)
KR (1) KR102284467B1 (en)
CN (1) CN107005531A (en)
WO (1) WO2016101099A1 (en)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786674B (en) 2016-03-24 2018-11-16 华为技术有限公司 A kind of dispatching method and electronic equipment
CN108628684B (en) * 2017-03-20 2021-01-05 华为技术有限公司 DPDK-based message processing method and computer equipment
EP3646138A1 (en) 2017-06-27 2020-05-06 Telefonaktiebolaget LM Ericsson (PUBL) Power management of an event-based processing system
CN108062269B (en) * 2017-12-05 2020-12-11 上海交通大学 DPDK-based computing resource elastic expansion method and system
CN108632110B (en) * 2018-03-23 2020-06-19 北京网测科技有限公司 Device performance testing method, system, computer device and storage medium
US10642341B2 (en) * 2018-03-23 2020-05-05 Juniper Networks, Inc. Selective modification of power states based on conditions
US11296999B2 (en) * 2018-06-26 2022-04-05 Telefonaktiebolaget Lm Ericsson (Publ) Sliding window based non-busy looping mode in cloud computing
CN110968403A (en) * 2018-09-28 2020-04-07 深信服科技股份有限公司 CPU work control method, device, equipment and storage medium
CN110968402A (en) * 2018-09-28 2020-04-07 深信服科技股份有限公司 CPU work control method, device, equipment and storage medium
US11431565B2 (en) * 2018-10-15 2022-08-30 Intel Corporation Dynamic traffic-aware interface queue switching among processor cores
EP3948535A1 (en) * 2019-03-25 2022-02-09 Telefonaktiebolaget LM Ericsson (publ) Optimizing runtime framework for efficient hardware utilization and power saving
CN112817772B (en) * 2019-11-15 2023-12-29 深信服科技股份有限公司 Data communication method, device, equipment and storage medium
KR102437625B1 (en) * 2020-06-19 2022-08-29 재단법인대구경북과학기술원 Electronic device and power management method thereof
JPWO2023002547A1 (en) * 2021-07-19 2023-01-26
JPWO2023105692A1 (en) * 2021-12-08 2023-06-15
WO2023144958A1 (en) 2022-01-27 2023-08-03 日本電信電話株式会社 Intra-server delay control device, intra-server delay control method, and program
WO2023199519A1 (en) * 2022-04-15 2023-10-19 日本電信電話株式会社 Intra-server delay control device, intra-server delay control method, and program
CN115756143B (en) * 2022-11-30 2024-03-12 深圳市领创星通科技有限公司 Energy-saving method and device for data packet processing, computer equipment and storage medium
CN116055230B (en) * 2023-03-28 2023-06-09 北京博上网络科技有限公司 DPDK sleep time control method and system
KR102701471B1 (en) * 2023-12-26 2024-09-02 한화시스템 주식회사 System and method for packet processing using dpdk-based fpga

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225250B1 (en) * 2000-10-30 2007-05-29 Agilent Technologies, Inc. Method and system for predictive enterprise resource management
US8243744B2 (en) * 2004-03-01 2012-08-14 Futurewei Technologies, Inc. Priority sorting
US7711966B2 (en) * 2004-08-31 2010-05-04 Qualcomm Incorporated Dynamic clock frequency adjustment based on processor load
DE602005018549D1 (en) * 2005-05-04 2010-02-04 Telecom Italia Spa METHOD AND SYSTEM FOR PROCESSING PACKAGE FLUIDS AND COMPUTER PROGRAM PRODUCT THEREFOR
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8984309B2 (en) * 2008-11-21 2015-03-17 Intel Corporation Reducing network latency during low power operation
US8639862B2 (en) * 2009-07-21 2014-01-28 Applied Micro Circuits Corporation System-on-chip queue status power management
CN102082698A (en) * 2009-11-26 2011-06-01 上海大学 Network data processing system of high performance core based on improved zero-copy technology
JP2012168757A (en) * 2011-02-15 2012-09-06 Nec Casio Mobile Communications Ltd Performance control system, and application processor
JP2014527733A (en) * 2011-06-29 2014-10-16 ベリサイン・インコーポレイテッド Data plane packet processing tool chain
US9323319B2 (en) * 2011-06-29 2016-04-26 Nec Corporation Multiprocessor system and method of saving energy therein
JP2014121036A (en) * 2012-12-19 2014-06-30 Alaxala Networks Corp Relay device

Also Published As

Publication number Publication date
CN107005531A (en) 2017-08-01
KR102284467B1 (en) 2021-08-03
EP3238403A1 (en) 2017-11-01
WO2016101099A1 (en) 2016-06-30
JP2018507457A (en) 2018-03-15
EP3238403A4 (en) 2019-01-02
KR20170097615A (en) 2017-08-28
WO2016101099A9 (en) 2016-11-10

Similar Documents

Publication Publication Date Title
JP6545802B2 (en) Techniques for power management associated with processing of received packets in network devices
TWI526843B (en) Adaptive interrupt coalescing for energy efficient mobile platforms
US10990407B2 (en) Dynamic interrupt reconfiguration for effective power management
US9292465B2 (en) Dynamic link width adjustment
US8504690B2 (en) Method and system for managing network power policy and configuration of data center bridging
US20160179582A1 (en) Techniques to dynamically allocate resources for local service chains of configurable computing resources
US10929179B2 (en) Scheduling method and electronic device
US20190042331A1 (en) Power aware load balancing using a hardware queue manager
WO2012109564A2 (en) Techniques for managing power consumption state of a processor
WO2019070399A1 (en) Dynamic control of multi-region fabric
US20170255498A1 (en) Dynamically optimized device driver protocol assist threads
US11388074B2 (en) Technologies for performance monitoring and management with empty polling
CN117581518A (en) Congestion control
EP3640797A1 (en) Dynamic traffic-aware interface queue switching among processor cores
US20160306411A1 (en) Controlling power management in micro-server cores and peripherals
US20190004594A1 (en) Network-driven, packet context-aware power management for client-server architecture
WO2017030871A1 (en) A robust mechanism for adaptive power conservation in solid-state devices
US10003542B2 (en) Data streaming scheduler for dual chipset architectures that includes a high performance chipset and a low performance chipset
CN106375387B (en) A kind of control method and system of Cluster Rendering node

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190311

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190619

R150 Certificate of patent or registration of utility model

Ref document number: 6545802

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250