KR102284467B1 - Techniques for power management associated with processing received packets at a network device - Google Patents

Techniques for power management associated with processing received packets at a network device Download PDF

Info

Publication number
KR102284467B1
KR102284467B1 KR1020177013532A KR20177013532A KR102284467B1 KR 102284467 B1 KR102284467 B1 KR 102284467B1 KR 1020177013532 A KR1020177013532 A KR 1020177013532A KR 20177013532 A KR20177013532 A KR 20177013532A KR 102284467 B1 KR102284467 B1 KR 102284467B1
Authority
KR
South Korea
Prior art keywords
polling
component
power management
management module
dpdk
Prior art date
Application number
KR1020177013532A
Other languages
Korean (ko)
Other versions
KR20170097615A (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 KR20170097615A publication Critical patent/KR20170097615A/en
Application granted granted Critical
Publication of KR102284467B1 publication Critical patent/KR102284467B1/en

Links

Images

Classifications

    • 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
    • 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
    • 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)
  • Small-Scale Networks (AREA)
  • Power Sources (AREA)

Abstract

예들은 NW 디바이스에서 수신된 패킷을 처리하는 것과 연관된 전력 관리 기법들을 포함할 수 있다. DPDK(data plane development kit) 폴링 스레드들의 활동 레벨들을 결정하기 위해 NW I/O(network input/output) 디바이스들 또는 NIC(network interface card)들에 대한 수신 큐들이 모니터링될 수 있다. 수신 큐들을 모니터링하는 것으로부터 획득되는 정보에 기초하여 다양한 전력 또는 성능 관리 동작들이 취해질 수 있다.Examples may include power management techniques associated with processing a received packet at the NW device. Receive queues for network input/output (NW I/O) devices or network interface cards (NICs) may be monitored to determine activity levels of data plane development kit (DPDK) polling threads. Various power or performance management actions may be taken based on information obtained from monitoring the receive queues.

Figure R1020177013532
Figure R1020177013532

Description

네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법{TECHNIQUES FOR POWER MANAGEMENT ASSOCIATED WITH PROCESSING RECEIVED PACKETS AT A NETWORK DEVICE}TECHNIQUES FOR POWER MANAGEMENT ASSOCIATED WITH PROCESSING RECEIVED PACKETS AT A NETWORK DEVICE

본원에 기술되는 예들은 일반적으로 네트워크 패킷 처리에 관련되어 있다.The examples described herein relate generally to network packet processing.

DPDK(data plane development kit)는 Intel® 프로세서 아키텍처와 같은 프로세서 아키텍처에 기초하여 네트워크 컴퓨팅 플랫폼들에 대한 사용자 공간 패킷 처리를 가속시키기 위해 사용될 수 있는 한 세트의 소프트웨어 라이브러리들 및 드라이버들이다. DPDK가 고성능 네트워크 패킷 처리 애플리케이션들을 지원하기 위해 전세계에 걸쳐 데이터 센터 네트워크들에 배치되었다. 이 네트워크 패킷 처리 애플리케이션들은 방화벽, VPN(virtual private network), NAT(network address translation), DPI(deep packet inspection) 또는 로드 밸런서 애플리케이션들을 포함할 수 있지만, 이들로 제한되지 않는다. 예를 들어, 이 방화벽, VPN, NAT, DPI 또는 로드 밸런서 애플리케이션들은 Intel 10 기가비트/40 기가비트 (10G/40G) NIC(network interface card)들에 결합되는 Intel Xeon® 프로세서들 - 이들로 제한되지 않음 - 을 포함할 수 있는 표준의 x86 서버 플랫폼 상에 구현될 수 있다. 고성능 네트워크 패킷 처리 애플리케이션들을 지원하기 위해 DPDK를 사용하는 것은 네트워크 디바이스의 적어도 일부 고가이고 덜 유연한 물리적 컴포넌트들을 대체할 수 있다.A data plane development kit (DPDK) is a set of software libraries and drivers that can be used to accelerate user space packet processing for network computing platforms based on a processor architecture, such as the Intel® processor architecture. DPDK has been deployed in data center networks throughout the world to support high performance network packet processing applications. These network packet processing applications may include, but are not limited to, firewall, virtual private network (VPN), network address translation (NAT), deep packet inspection (DPI) or load balancer applications. For example, these firewall, VPN, NAT, DPI, or load balancer applications may include, but are not limited to, Intel Xeon® processors coupled to Intel 10 Gigabit/40 Gigabit (10G/40G) network interface cards (NICs). It can be implemented on a standard x86 server platform that can include Using a DPDK to support high performance network packet processing applications may replace at least some expensive and less flexible physical components of a network device.

도 1은 예시적인 시스템을 나타내는 도면.
도 2는 예시적인 제1 논리 흐름을 나타낸 도면.
도 3은 예시적인 제1 프로세스를 나타낸 도면.
도 4는 예시적인 제2 프로세스를 나타낸 도면.
도 5는 예시적인 제3 프로세스를 나타낸 도면.
도 6은 장치에 대한 예시적인 블록도.
도 7은 예시적인 제2 논리 흐름을 나타낸 도면.
도 8은 예시적인 제3 논리 흐름을 나타낸 도면.
도 9는 저장 매체의 일 예를 나타낸 도면.
도 10은 예시적인 컴퓨팅 플랫폼을 나타낸 도면.
1 shows an exemplary system;
Fig. 2 illustrates an exemplary first logic flow;
3 shows an exemplary first process;
4 illustrates an exemplary second process;
5 illustrates an exemplary third process.
6 is an exemplary block diagram of an apparatus;
7 illustrates an exemplary second logic flow;
Fig. 8 shows an exemplary third logic flow;
9 is a diagram illustrating an example of a storage medium;
10 depicts an exemplary computing platform.

일부 예들에서, 고성능 패킷 처리 애플리케이션들에 대한 DPDK의 구현은 Intel 1G/10G/40G NIC들과 같은 NW I/O 디바이스들을 구성하고 그리고/또는 작동시키기 위해 PMD(poll mode driver)들을 배치하는 것을 포함할 수 있다. 이러한 예들에 대해, PMD를 배치하는 것은 DPDK 기반 네트워크 애플리케이션들이, 고성능 및 저 지연시간 방식으로 패킷들을 수신, 처리 및 전송하기 위해, 인터럽트들을 트리거함이 없이 최고 또는 최대 프로세서/코어 주파수로 NW I/O 디바이스 자원들(예컨대, 수신(Rx)하고 전송(Tx) 큐들)에 액세스할 수 있게 할 것이다. 그렇지만, 데이터 센터 네트워크들에서, "조석 효과(tidal effect)"라고 불리우는 널리 공지된 현상이 일어날 수 있다. 조석 효과는 기간들에 걸쳐 상이한 지리적 영역들에서 발생하는 네트워크 트래픽 패턴들의 상당한 변화들로 인한 것일 수 있다. 따라서 낮은 네트워크 트래픽을 처리하거나 네트워크 트래픽를 전혀 처리하지 않는 기간 동안, x86 처리 코어들 상에서 실행 중인 DPDK 기반 애플리케이션의 스레드("DPDK 폴링 스레드")는 여전히 바쁜 대기(busy waiting) 중일 수 있다(예컨대, 연속적으로 폴링하지만 네트워크 패킷들을 처리하지 않음). 네트워크 패킷들이 있는지 대기하는 것은 상당한 양의 전력은 물론 계산 자원들을 낭비할 수 있다.In some examples, implementation of the DPDK for high performance packet processing applications includes deploying poll mode drivers (PMDs) to configure and/or operate NW I/O devices, such as Intel 1G/10G/40G NICs. can do. For these examples, deploying the PMD allows DPDK-based network applications to receive, process and transmit packets in a high performance and low latency manner to receive, process and transmit NW I/NW I/C at the highest or maximum processor/core frequency without triggering interrupts. O device resources (eg, receive (Rx) and transmit (Tx) queues) will be accessible. However, in data center networks, a well-known phenomenon called the "tidal effect" may occur. The tidal effect may be due to significant changes in network traffic patterns occurring in different geographic areas over time periods. Thus, during periods of processing low network traffic or no network traffic at all, a thread of a DPDK-based application running on x86 processing cores ("DPDK polling thread") may still be busy waiting (e.g., continuously , but does not process network packets). Waiting for network packets can waste a significant amount of power as well as computational resources.

OS(operating system) 전력 관리 서브시스템들 또는 모듈들은 피크 또는 낮은 네트워크 트래픽의 기간들 동안 프로세서 전력을 조절하기 위해 다수의 기술들(주로 OS 커널 공간에서의 P-상태들, C-상태들 및 제어)을 제공할 수 있다. 표준의 OS들(예컨대, Linux 또는 Windows®)에서, OS 전력 관리 모듈들은, CPU 사용을 주기적으로 샘플링하는 것에 의해, 프로세서 또는 코어들이, 각각, 진입할 적절한 프로세서 전압 및/또는 주파수, 동작점(P-상태) 및 프로세서 유휴 상태(C-상태)를 결정할 수 있다. 그러나 이 접근법은, OS 전력 관리 모듈이 DPDK 폴링 스레드들이 실제로 패킷들을 처리하거나 바쁜 대기 중인지를 결정할 수 없는 것으로 인해, DPDK 폴링 스레드들을 가지는 PMD 기반 패킷 처리 애플리케이션들에 적당하지 않다. OS 전력 관리 모듈이 DPDK 폴링 스레드들의 동작 상태를 결정할 수 없는 것은 "조석 효과"에 의해 영향을 받는 데이터 센터 네트워크들에서 전력을 절감하기 위해 이 DPDK 폴링 스레드들을 지원하는 프로세서들 또는 코어들이 진입할 적절한 전력 상태들을 결정하는 데 문제가 될 수 있다. 이러한 과제들과 관련하여 본원에 기술되는 예들이 필요하다.Operating system (OS) power management subsystems or modules employ a number of techniques (mainly P-states, C-states and control in OS kernel space) to regulate processor power during periods of peak or low network traffic. ) can be provided. In standard OSs (eg, Linux or Windows®), OS power management modules, by periodically sampling CPU usage, allow the processor or cores to enter, respectively, the appropriate processor voltage and/or frequency, operating point ( P-state) and processor idle state (C-state). However, this approach is not suitable for PMD-based packet processing applications with DPDK polling threads, as the OS power management module cannot determine whether the DPDK polling threads are actually processing packets or waiting busy. The inability of the OS power management module to determine the operating state of the DPDK polling threads means that the processors or cores supporting these DPDK polling threads will enter the appropriate state to save power in data center networks affected by the "tidal effect". Determining power states can be problematic. The examples described herein in connection with these challenges are needed.

일부 제1 예들에 따르면, NW I/O 디바이스에서 수신된 패킷들을 처리하는 것과 연관된 전력 관리 기법들은 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자(packet descriptor)들을 모니터링하는 것을 포함할 수 있다. 이 제1 예들은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨(level of fullness)을 결정하는 것 그리고 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트(trend count)를 증분시키는 것을 포함할 수 있다. 이 제1 예들은 또한 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시(performance indication)를 OS 전력 관리 모듈로 송신하는 것을 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.According to some first examples, power management techniques associated with processing packets received at the NW I/O device are receive maintained in a receive queue for the NW I/O device over multiple polling iterations for the DPDK polling thread. This may include monitoring old and available packet descriptors. These first examples also include determining a level of fullness for a receive queue based on available packet descriptors maintained in the receive queue after each polling iteration and determining the level of fullness for the receive queue. incrementing a trend count based on it. These first examples may also include sending a performance indication to the OS power management module based on whether the trend count exceeds a trend count threshold. The performance indication may cause the OS power management module to increase the performance state of the processing element executing the DPDK polling thread.

일부 제2 예들에 따르면, NW 디바이스에서 수신된 패킷들을 처리하는 것과 연관된 전력 관리 기법들은 또한 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 것을 포함할 수 있다. 이 제2 예들은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하는 것 그리고 연속적 문턱값(consecutive threshold)을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트(idle count)를 1의 카운트만큼 증분시키는 것을 포함할 수 있다. 이 제2 예들은 또한 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드가 슬립(sleep)하게 하는 것을 포함할 수 있다. 제2 기간은 제1 기간보다 더 길 수 있다.According to some second examples, power management techniques associated with processing received packets at the NW device are also maintained in a receive queue for the NW I/O device over multiple polling iterations for the DPDK polling thread. It may include monitoring available packet descriptors. These second examples also include determining the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after each polling iteration, and a consecutive threshold ), incrementing an idle count by a count of 1 if the number of packets received for a number of consecutive polling iterations greater than . These second examples may also include causing the DPDK polling thread to sleep during one of a first period or a second period based on whether the idle count is above or below the first idle count threshold. . The second period of time may be longer than the first period.

도 1은 예시적인 시스템(100)을 나타내고 있다. 도 1에 도시된 바와 같이, 일부 예들에서, 시스템(100)은 NW 트래픽(105)에 포함되는 패킷들을 수신 또는 전송하도록 구성된 NW I/O 디바이스(110)를 포함한다. 프리플로우 로드 밸런서(pre-flow load balancer)(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)는 NW 트래픽(105)으로 수신되는 패킷들을 수신, 처리 또는 전송하기 위해, 인터럽트들 없이, 폴링 동작 모드에서 Rx 큐들(130-1 내지 130-n)의 액세스를 가능하게 하기 위해 각자의 폴 모드 드라이버(poll mode driver)들(142-1 내지 142-n)을 포함할 수 있다.1 illustrates an exemplary system 100 . 1 , in some examples, system 100 includes a NW I/O device 110 configured to receive or transmit packets included in NW traffic 105 . A pre-flow load balancer 120 may distribute packets to receive (Rx) queues 130-1 through 130-n, where “n” is any amount greater than one. is an integer For these examples, Rx queues 130-1 through 130-n may be configured to at least temporarily hold received packets for processing by respective DPDK polling threads 140-1 through 140-n. . Each DPDK polling thread 140-1 through 140-n may execute at least portions of a network packet processing application, including but not limited to firewall, VPN, NAT, DPI or load balancer applications. Each DPDK polling thread 140-1 to 140-n has Rx queues 130-1 to 130- in the polling mode of operation, without interrupts, to receive, process or transmit packets received with the NW traffic 105 . n) may include respective poll mode drivers 142-1 to 142-n to enable access.

일부 예들에 따르면, 도 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)에 대한 슬립 또는 유휴 시간들을 모니터링할 수 있다.1 , system 100 also includes DPDK power management components 150 configured to operate in user space 101 and an OS power management module configured to operate in kernel space 102 , according to some examples. (160). As described in more detail below, DPDK power management components 150 are maintained in Rx queues 130-1 through 130-n for processing by DPDK polling threads 140-1 through 140-n. It may include logic and/or features capable of monitoring received and available packet descriptors. Logic and/or features in DPDK power management components 150 may also monitor sleep or idle times for DPDK polling threads 140-1 through 140-n.

일부 예들에서, DPDK 전력 관리 컴포넌트들(150)의 상태 알고리즘들(154)은 DPDK 폴링 스레드들(140-1 내지 140-n)이 일시적 슬립 상태들에 있게 하기 위해 모니터링된 정보를 이용하거나, (원샷 Rx 인터럽트 온 힌트(one-shot Rx interrupt on hint)(180)를 통해) 인터럽트 턴 온 힌트 또는 메시지를 NW I/O 디바이스(110)로 송신하여 폴링 모드로부터 인터럽트 동작 모드로의 변화를 야기하거나, 라이브러리(152)가 C-상태(슬립) 또는 P-상태(성능) 힌트들 또는 표시들을 송신할 수 있게 할 수 있다. 이러한 예들에 대해, 도 1에 도시된 바와 같이, C-상태 또는 P-상태 힌트들이 OS 전력 관리 모듈(160)에 있는 PE(processor element) 유휴(162) 또는 PE 주파수(164)로 송신될 수 있다. OS 전력 관리 모듈(160)의 요소들은 이어서 수신된 C-상태 또는 P-상태 힌트들에 기초하여 하나 이상의 프로세서(들)(170)에 포함된 하나 이상의 PE들(172-1 내지 172-n)의 C-상태(들) 또는 P-상태(들) 중 어느 하나로의 변경들을 야기할 수 있다. C-상태들 또는 P-상태들은, UEFI 포럼(Unified Extensible Firmware Interface Forum)에 의해 2014년 7월에 발표된, ACPI(Advanced Configuration and Power Interface Specification), 개정판 5.1("ACPI 규격")과 같은, 하나 이상의 프로세서 전력 관리 표준들 또는 규격들에 따라 변경 또는 제어될 수 있다.In some examples, state algorithms 154 of DPDK power management components 150 use the monitored information to put DPDK polling threads 140-1 through 140-n into temporary sleep states ( Sending an interrupt turn on hint or message to the NW I/O device 110 (via one-shot Rx interrupt on hint 180 ) to cause a change from polling mode to interrupt operating mode or , may enable library 152 to send C-state (sleep) or P-state (performance) hints or indications. For these examples, as shown in FIG. 1 , C-state or P-state hints may be transmitted on a processor element (PE) idle 162 or PE frequency 164 in the OS power management module 160 . there is. Elements of OS power management module 160 are then configured to one or more PEs 172-1 through 172-n included in one or more processor(s) 170 based on the received C-state or P-state hints. may cause changes to either the C-state(s) or P-state(s) of C-states or P-states, such as Advanced Configuration and Power Interface Specification (ACPI), Revision 5.1 (“ACPI Specification”), published July 2014 by the Unified Extensible Firmware Interface Forum (UEFI), It may be modified or controlled according to one or more processor power management standards or specifications.

일부 예들에 따르면, 프로세서(들)(170)는 멀티코어 프로세서를 포함할 수 있고, PE들(172-1 내지 172-n) 각각은 멀티코어 프로세서의 코어일 수 있고 그리고/또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신(VM)일 수 있다. 또한, 이 예들에 대해, DPDK 폴링 스레드들(140-1 내지 140-n)은 PE들(172-1 내지 172-n)에 의해 실행될 수 있을 것이다. 프로세서(들)(170)는, AMD® Athlon®, Duron®, Phenom®, 및 Opteron® 프로세서들; Intel Atom®, Celeron®, Core (2) Duo®, Core i3, Core i5, Core i7, Pentium®, Xeon 또는 Xeon Phi® 프로세서들 - 이들로 제한되지 않음 - 을 비롯한, 다양한 유형들의 상업적으로 이용가능한 x86 프로세서들을 포함할 수 있다.According to some examples, processor(s) 170 may include a multicore processor, and each of PEs 172-1 through 172-n may be a core of a multicore processor and/or may be of a multicore processor. It may be a virtual machine (VM) supported by one or more cores. Also, for these examples, DPDK polling threads 140-1 through 140-n may be executed by PEs 172-1 through 172-n. Processor(s) 170 include: AMD® Athlon®, Duron®, Phenom®, and Opteron® processors; Various types of commercially available processors including, but not limited to, Intel Atom®, Celeron®, Core (2) Duo®, Core i3, Core i5, Core i7, Pentium®, Xeon or Xeon Phi® processors. It may include x86 processors.

일부 예들에 따르면, NAPI(new API)는 DPDK 폴링 스레드들(140-1 내지 140-n)에 의한 패킷 처리를 지원하기 위해 커널 공간(102)에서 사용하기 위한(예컨대, Linux 커널을 위한) 인터럽트 완화(interrupt mitigation) 기법일 수 있다. NAPI는 전형적으로 OS 및 NIC 또는 NW I/O 드라이버들에 대한 폴링 모드 능력(polling mode capability)을 도입하는 것에 의해 고속 네트워킹의 성능을 개선시키도록 설계되어 있다. NAPI에 의해, NW I/O 드라이버는 기본값으로(by default) 인터럽트 기반 모드(interrupt-driven mode)에서 동작하고, 착신 패킷들의 흐름이 특정 문턱값을 초과할 때에만, 폴링 모드로 전환할 수 있다. NAPI는 빈번한 모드 전환을 가능하게 하고, 이는 네트워크 단말 종단점들(예컨대, 서버 또는 개인용 컴퓨터)에 대해 널리 수용될 수 있는데, 그 이유는 이 단말 종단점들이 엄격한 저 지연시간 및 지터 요구사항들을 갖지 않을 수 있기 때문이다. 그러나 특정 유형들의 네트워크 디바이스들(예컨대, 스위치, 라우터 그리고 L4 내지 L7 네트워크 기기들)은 엄격한 지연시간, 지터 및 패킷 손실 요구사항들 내에서 동작할 수 있다. 이 유형들의 네트워크 디바이스들에 대해, 빈번한 모드 전환, 서비싱 인터럽트(servicing interrupt) 그리고 보류된, 일시중지된 또는 슬립중인 스레드를 웨이크업하는 것은 프로세서 자원 및 지연시간 적중의 면에서 비용이 많이 들 수 있다. 이 프로세서 자원 및 지연시간 적중은 데이터 센터 네트워크에서와 같은 배치들에서의 네트워크 디바이스들에 대해 용납가능하지 않을 수 있다.According to some examples, a new API (NAPI) interrupt for use in kernel space 102 (eg, for a Linux kernel) to support packet processing by DPDK polling threads 140-1 through 140-n. It may be an interrupt mitigation technique. NAPI is typically designed to improve the performance of high-speed networking by introducing a polling mode capability to the OS and NIC or NW I/O drivers. With NAPI, the NW I/O driver operates in interrupt-driven mode by default, and can switch to polling mode only when the flow of incoming packets exceeds a certain threshold. . NAPI enables frequent mode switching, which can be widely accepted for network endpoints (e.g., servers or personal computers) because these endpoints may not have stringent low latency and jitter requirements. because there is However, certain types of network devices (eg switches, routers and L4 to L7 network appliances) may operate within stringent latency, jitter and packet loss requirements. For these types of network devices, frequent mode switches, servicing interrupts, and waking up suspended, suspended or sleeping threads can be costly in terms of processor resources and latency hits. there is. This processor resource and latency hit may be unacceptable for network devices in deployments such as in a data center network.

일부 예들에 따르면, DPDK 폴링 스레드들(140-1 내지 140-n)의 폴 모드 드라이버(142-1 내지 142-n)는 기본값으로 폴링 모드에서 동작하도록 설계 또는 구성될 수 있다. 이하에서 더 기술되는 바와 같이, DPDK 전력 관리 컴포넌트들(150)이 점점 더 낮아지는 경향을 보이고 있는 네트워크 트래픽을 검출할 때, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140-1 내지 140-n)로 하여금 하나 이상의 기간들 동안 슬립하게 할 수 있고, 또한 힌트들을 OS 전력 관리 모듈(160)로 송신할 수 있다. 힌트들에 기초하여, OS 전력 관리 모듈(160)은 전력을 절감하기 위해 PE들(172-1 내지 172-n)로 하여금 프로세서 주파수들을 저하시키게 하거나 유휴 또는 슬립 상태로 천이하게 할 수 있다. 또한, DPDK 전력 관리 컴포넌트들(150)이 특정 지속시간 문턱값 동안 어떤 트래픽도 검출하지 않을 때, 폴 모드 드라이버들(142-1 내지 142-n)은 기본값 폴링 모드로부터 인터럽트 모드로 전환할 수 있다. 이러한 방식으로, DPDK 폴링 스레드들(140-1)은 패킷들을 처리할 때 성능 요구사항들을 더 잘 충족시키기 위해 주로 폴링 모드 환경에서 동작하고 따라서 빈번한 모드 전환들을 회피할 수 있다.According to some examples, the poll mode drivers 142-1 to 142-n of the DPDK polling threads 140-1 to 140-n may be designed or configured to operate in polling mode by default. As will be described further below, when DPDK power management components 150 detect a network traffic that is trending lower and lower, DPDK power management components 150 send DPDK polling threads 140-1 through 140 - n ) to sleep for one or more periods, and may also send hints to OS power management module 160 . Based on the hints, OS power management module 160 may cause PEs 172-1 through 172-n to lower processor frequencies or transition to an idle or sleep state to save power. Also, when the DPDK power management components 150 do not detect any traffic for a certain duration threshold, the poll mode drivers 142-1 through 142-n may switch from a default polling mode to an interrupt mode. . In this way, the DPDK polling threads 140-1 can mainly operate in a polling mode environment to better meet performance requirements when processing packets and thus avoid frequent mode switches.

도 2는 예시적인 제1 논리 흐름을 나타내고 있다. 도 2에 도시된 바와 같이, 예시적인 제1 논리 흐름은 논리 흐름(200)을 포함한다. 일부 예들에 따르면, 논리 흐름(200)은 (예컨대, 데이터 센터에 위치된) NW 디바이스에 대한 수신된 패킷들을 처리하는 것과 연관된 전력 관리에 대한 것일 수 있다. 이러한 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 논리 흐름(200)의 부분들을 구현할 수 있을 것이다. 그렇지만, 예시적인 논리 흐름(200)은 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 것으로 제한되지 않는다.2 shows an exemplary first logic flow. As shown in FIG. 2 , a first exemplary logic flow includes logic flow 200 . According to some examples, logic flow 200 may be for power management associated with processing received packets for a NW device (eg, located in a data center). For such examples, at least some components of system 100 shown in FIG. 1 may implement portions of logic flow 200 . However, the example logic flow 200 is not limited to using the components of the system 100 shown or described in FIG. 1 .

일부 예들에서, 도 2에 도시된 바와 같이, DPDK 전력 관리 컴포넌트들이 초기화될 수 있다(202). 이 예들에 대해, DPDK 폴링 스레드(예컨대, DPDK 폴링 스레드(140-1))는 NW I/O 디바이스에 대한 Rx 큐들(예컨대, Rx 큐(130-1))로부터의 폴링 패킷들의 연속적인 루프를 시작할 수 있다. 이하에서 더 기술되는 바와 같이, 슬립에 있지 않거나 인터럽트가 발행되지 않은 한, 루프는 연속적일 수 있다. 각각의 폴링 반복에 대해(예컨대, 매 1 내지 2 마이크로초(μs) 동안), Rx 큐에 유지되는 사용된 그리고 프리 패킷 기술자들의 개수가 DPDK 전력 관리 컴포넌트들에 의해 획득될 수 있다(204). 주어진 폴링 반복에 대해 0개의 패킷이 수신되면(206), 0개의 패킷이 수신된 반복들의 개수가 연속적 개수 문턱값(예컨대, 5개의 반복들)과 비교될 수 있다(208). 일부 예들에서, 연속적 개수 문턱값이 초과되지 않은 경우, 논리 흐름은 다시 204로 이동한다.In some examples, as shown in FIG. 2 , the DPDK power management components may be initialized ( 202 ). For these examples, the DPDK polling thread (eg, DPDK polling thread 140-1) runs a continuous loop of polling packets from Rx queues (eg, Rx queue 130-1) for the NW I/O device. can start As further described below, the loop may be continuous as long as it is not in sleep or an interrupt has not been issued. For each polling iteration (eg, for every 1-2 microseconds (μs)), the number of used and free packet descriptors maintained in the Rx queue may be obtained 204 by the DPDK power management components. If zero packets are received for a given polling iteration ( 206 ), the number of iterations for which zero packets have been received may be compared to a consecutive number threshold (eg, 5 iterations) ( 208 ). In some examples, if the consecutive count threshold is not exceeded, the logic flow moves back to 204 .

일부 예들에 따르면, 0개의 패킷이 수신된 반복들의 개수에 기초하여, 210에서 '유휴' 카운트가 1만큼 증분될 수 있다. 212에서 '유휴' 카운트가 THRESHOLD_1 미만이거나 그보다 작은지의 결정이 행해진다. 214에서, '유휴' 카운트가 THRESHOLD_1 미만이면, DPDK 폴링 스레드는 DPDK 전력 관리 컴포넌트들에 의해 짧은 기간(예컨대, 몇 μs) 동안 슬립에 있을 수 있다. 216에서, '유휴' 카운트가 THRESHOLD_2 미만이면, DPDK 폴링 스레드는 비교적 긴 기간(예컨대, 수십 μs) 동안 슬립에 있을 수 있다.According to some examples, the 'idle' count may be incremented by one at 210 based on the number of iterations for which zero packet was received. At 212 a determination is made whether the 'idle' count is less than or less than THRESHOLD_1. At 214 , if the 'idle' count is less than THRESHOLD_1, the DPDK polling thread may be put to sleep by the DPDK power management components for a short period of time (eg, several μs). At 216 , if the 'idle' count is less than THRESHOLD_2, the DPDK polling thread may sleep for a relatively long period (eg, tens of μs).

일부 예들에서, 짧은 슬립 기간은 연속적 스핀 루프(continuous spin loop)와 비교하여 전력 소비를 감소시키기 위해 짧은, 몇 μs 슬립 기간일 수 있다. 이와 같이, DPDK 폴링 스레드가 아직 식별가능하지 않은 트래픽 트렌드의 시간들 동안 비용이 많이 드는 컨텍스트 전환을 피하게 한다. 비교적 긴 슬립 기간은 보다 낮은 트래픽 트렌드가 식별되도록 되어 있을 수 있다. 이 경우에, DPDK 전력 관리 컴포넌트들은 DPDK 폴링 스레드를 보다 긴 기간 동안 슬립시킬 수 있고, 또한 긴 슬립 표시 또는 C-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. OS 전력 관리 모듈은 이어서 DPDK 폴링 스레드를 지원하는 PE로 하여금 ACPI C1 전력 상태에 진입하게 할 수 있다. 이 C1 전력 상태는 여전히 PE가, 새로운 NW 트래픽이 도착하면, 신속하게 전력을 공급받아 C0 전력 상태로 될 수 있게 할 것이다. 또한, 새로운 NW 트래픽이 도착하면, '유휴' 카운트가 0의 카운트로 리셋된다.In some examples, the short sleep period may be a short, several μs sleep period to reduce power consumption as compared to a continuous spin loop. As such, the DPDK polling thread avoids costly context switching during times of traffic trends that are not yet discernible. Relatively long sleep periods may allow lower traffic trends to be identified. In this case, the DPDK power management components may sleep the DPDK polling thread for a longer period, and may also send a long sleep indication or C-state hint to the OS power management module. The OS power management module may then cause the PE supporting the DPDK polling thread to enter the ACPI C1 power state. This C1 power state will still allow the PE to quickly power up and enter the C0 power state when new NW traffic arrives. Also, when new NW traffic arrives, the 'idle' count is reset to a count of zero.

일부 예들에 따르면, THRESHOLD_1은, 0개의 패킷이 Rx 큐에 있는 비교적 짧은 기간들 이후에 DPDK 폴링 스레드를 슬립시키기 위해, THRESHOLD_2와 비교하여 몇 배 더 낮을 수 있다. 그렇지만, '유휴' 카운트가 THRESHOLD_2를 초과하면, 원샷 Rx 인터럽트가 인에이블될 수 있다(220). NW I/O에 의해 수신되는 착신 패킷이 있으면, 일시중지된 DPDK 폴링 스레드가 인터럽트 모드로부터 폴링 모드로 다시 전환하게 할 수 있는 원샷 Rx 인터럽트가 트리거된다(222). THRESHOLD_2를 초과하는 유휴 카운트는 저속 네트워크 트래픽 또는 네트워크 트래픽 없음 기간을 나타낼 수 있다. 또한, DPDK 폴링 스레드를 일시중지시키는 것은 OS 전력 관리 모듈이 DPDK 폴링 스레드를 실행하는 PE를 C1 상태보다 더 낮은 전력 사용의 보다 깊은 C-상태(deeper C-state)들에 있게 할 수 있을 것이다. 사실상, DPDK 폴링 스레드는 이제 인터럽트 모드에서 동작할 수 있고, 네트워크 트래픽을 또다시 수신한 것에 응답하여 폴링 모드로 다시 전환한다.According to some examples, THRESHOLD_1 may be several times lower compared to THRESHOLD_2 to sleep the DPDK polling thread after relatively short periods of time when 0 packets are in the Rx queue. However, if the 'idle' count exceeds THRESHOLD_2, a one-shot Rx interrupt may be enabled (220). If there is an incoming packet being received by the NW I/O, a one-shot Rx interrupt is triggered which may cause the paused DPDK polling thread to switch back from interrupt mode back to polling mode (222). An idle count exceeding THRESHOLD_2 may indicate a period of slow network traffic or no network traffic. Also, suspending the DPDK polling thread may allow the OS power management module to put the PE executing the DPDK polling thread in deeper C-states of lower power usage than the C1 state. In effect, the DPDK polling thread can now operate in interrupt mode and switch back to polling mode in response to receiving network traffic again.

일부 예들에서, 패킷들이 Rx 큐에 수신되면 Rx 큐의 충만도 레벨들이 결정될 수 있다. 예를 들어, Rx 큐가 거의 비어 있으면(예컨대, 25% 내지 50% 채워짐)(224), '트렌드' 카운트가 작은 수만큼 증분될 수 있다(226). RX 큐가 절반쯤 채워져 있으면(예컨대, 51% 내지 75%)(234), '트렌드' 카운트가 큰 수만큼 증분될 수 있다(236). 또한, 228에서 '트렌드' 카운트가 트렌드 카운트 문턱값을 초과하면, DPDK 전력 관리 컴포넌트들은 성능 표시 또는 P-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 동작 주파수들을 증가시키게 하거나(230) DPDP 폴링 스레드를 실행하는 PE에 대한 ACPI P-상태를 상승시키게 할 수 있다. '트렌드' 카운트는 네트워크 트래픽의 점진적인 증가들이 검출될 수 있도록 그리고, 수신된 패킷들을 처리하는 동안(232) 전력 절감을 성능과 균형을 이루게 하기 위해, PE들에 대한 P-상태들이 점진적으로 증가될 수 있도록 설정될 수 있다.In some examples, once packets are received in the Rx queue, the fullness levels of the Rx queue may be determined. For example, if the Rx queue is nearly empty (eg, 25% to 50% full) 224 , the 'trend' count may be incremented 226 by a small number. If the RX queue is half full (eg, 51% to 75%) 234 , the 'trend' count may be incremented 236 by a large number. Also, at 228 if the 'trend' count exceeds the trend count threshold, the DPDK power management components may send a performance indication or P-status hint to the OS power management module. The performance indication may cause the OS power management module to increase operating frequencies (230) or elevate the ACPI P-state for the PE executing the DPDP polling thread. The 'trend' count indicates that the P-states for the PEs will be incrementally increased so that incremental increases in network traffic can be detected, and to balance power savings with performance while processing (232) received packets. can be set to be

일부 예들에 따르면, Rx 큐가 거의 채워져 있으면(예컨대, 76% 초과 채워짐)(238), 240에서 Rx 큐가 거의 채워져 있는 연속적 폴링 반복들의 개수가 연속적 문턱값(예컨대, 5개의 폴링 반복들)과 비교될 수 있다. 이 예들에 대해, 연속적 문턱값이 초과되면, DPDK 전력 관리 컴포넌트들은 높은 성능 표시 또는 높은 P-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. 높은 성능 표시는 OS 전력 관리 모듈로 하여금 동작 주파수들을 최고 주파수로 상승시키게 하거나(242) DPDK 폴링 스레드를 실행하는 PE에 대한 ACPI P-상태를 최고 성능 P-상태로 상승시키게 할 수 있다. 최고 성능 P-상태로 상승시키는 것은 OS 전력 관리 모듈이 높은 네트워크 트래픽 부하들에 대해 신속하게 반응하고 따라서, 수신된 패킷들을 처리하는 동안(232), DPDK 폴링 스레드를 실행하는 PE를 전력 절감과 성능의 균형으로부터 순수 성능 기반 동작 상태로 전환시킬 수 있게 할 것이다.According to some examples, if the Rx queue is near full (eg, over 76% full) 238 , then at 240 the number of consecutive polling iterations at which the Rx queue is nearly full is equal to a consecutive threshold (eg, 5 polling iterations) and can be compared. For these examples, if the continuity threshold is exceeded, the DPDK power management components may send a high performance indication or high P-state hint to the OS power management module. The high performance indication may cause the OS power management module to raise the operating frequencies to the highest frequency ( 242 ) or to raise the ACPI P-state for the PE executing the DPDK polling thread to the highest performing P-state. Raising to the highest performance P-state allows the PE running the DPDK polling thread to save power and performance while the OS power management module responds quickly to high network traffic loads and thus processes received packets (232). It will allow us to transition from the balance of

일부 예들에서, DPDK 전력 관리 컴포넌트들은 DPDK 폴링 스레드가 슬립하고 있는 시간량을 주기적으로 모니터링한다. 이 예들에 대해, DPDK 전력 관리 컴포넌트들은 244에서, DPDK 폴링 스레드에 대한 슬립의 모니터링이 행해질 수 있는 타이머 간격(timer interval)을 시작할 수 있는, 주기적 타이머를 초기화할 수 있다. 246에서의 타이머의 만료 이후에, DPDK 전력 관리 컴포넌트들은 DPDK 폴링 스레드가 폴링 반복들의 25% 초과 동안 슬립에 있는지를 결정할 수 있다. 이전에 언급된 바와 같이, DPDK 폴링 스레드는 '유휴' 카운트가 THRESHOLD_1 또는 THRESHOLD_2 미만인지 여부에 기초하여 다양한 시간들 동안 슬립에 있을 수 있다. DPDK 폴링이 25% 초과 동안 슬립에 있는 것으로 밝혀지면, 252에서 DPDK 전력 관리 컴포넌트들은 성능 표시 또는 P-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시의 결과, OS 전력 관리 모듈은 DPDK 폴링 스레드를 실행하는 PE로 하여금 저하된 또는 감소된 동작 주파수를 가지게 할 수 있다. 환언하면, PE에 대한 ACPI P-상태가 하위 성능 P-상태로 저하될 수 있다.In some examples, the DPDK power management components periodically monitor the amount of time the DPDK polling thread has been sleeping. For these examples, the DPDK power management components may initialize, at 244 , a periodic timer, which may start a timer interval during which monitoring of sleep for the DPDK polling thread may take place. After expiration of the timer at 246 , the DPDK power management components may determine whether the DPDK polling thread is sleeping for more than 25% of polling iterations. As previously mentioned, the DPDK polling thread may sleep for various times based on whether the 'idle' count is less than THRESHOLD_1 or THRESHOLD_2. If the DPDK poll is found to be sleeping for more than 25%, then at 252 the DPDK power management components may send a performance indication or P-status hint to the OS power management module. As a result of the performance indication, the OS power management module may cause the PE executing the DPDK polling thread to have a degraded or reduced operating frequency. In other words, the ACPI P-state for the PE may be degraded to a lower performance P-state.

일부 예들에 따르면, DPDK 폴링 스레드가 폴링 반복들의 25% 초과 동안 슬립에 있지 않으면, 250에서 DPDK 전력 관리 컴포넌트들은 시간 간격 동안 수신된 패킷들에 대한 반복당 평균 패킷이 반복당 예상 평균 패킷의 문턱값 미만인지 여부를 결정할 수 있다. 문턱값 미만이면, 252에서 DPDK 전력 관리 컴포넌트들은 성능 표시 또는 P-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. PE로 하여금 25% 초과 슬립 또는 예상된 것보다 더 적은 패킷들이 수신된 것에 응답하여 그의 P-상태를 저하시키게 하는 것은 네트워크 트래픽을 나타내는 모니터링된 정보 또는 적어도 네트워크 트래픽으로부터의 패킷들의 처리가 감소하고 있는 것에 기초하여 전력을 절감하기 위해 성능 상태들을 저하시키는 방법일 수 있다.According to some examples, if the DPDK polling thread is not sleeping for more than 25% of the polling iterations, then at 250 the DPDK power management components determine that the average packet per iteration for packets received during the time interval is a threshold of expected average packet per iteration. It can be determined whether or not If below the threshold, at 252 the DPDK power management components may send a performance indication or P-state hint to the OS power management module. Causes a PE to degrade its P-state in response to more than 25% sleep or fewer than expected packets being received, indicating that monitored information indicative of network traffic or at least processing of packets from network traffic is decreasing. may be a way to degrade performance states to save power based on

도 3은 예시적인 제1 프로세스(300)를 나타내고 있다. 도 3에 도시된 바와 같이, 제1 프로세스는 프로세스(300)를 포함한다. 일부 예들에 따르면, 프로세스(300)는 시스템(100)의 상이한 요소들이 도 2에 대해 앞서 기술된 논리 흐름(200)의 부분들을 어떻게 구현할 수 있는지를 나타낼 수 있다. 상세하게는, 그 부분들은 DPDK 전력 관리 컴포넌트들(PMC들)에 의해 취해지는 슬립, 유휴 또는 인터럽트 동작들에 관련되어 있다. 이 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 프로세스(300)에 관련되어 있을 수 있다. 그렇지만, 예시적인 프로세스(300)는 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 구현들로 제한되지 않는다.3 shows an exemplary first process 300 . As shown in FIG. 3 , the first process includes a process 300 . According to some examples, process 300 may represent how different elements of system 100 may implement portions of logic flow 200 described above with respect to FIG. 2 . Specifically, the parts relate to sleep, idle or interrupt operations taken by the DPDK power management components (PMCs). For these examples, at least some components of the system 100 shown in FIG. 1 may be involved in the process 300 . However, the example process 300 is not limited to implementations using the components of the system 100 shown or described in FIG. 1 .

프로세스 3.1(패킷들을 수신함)에서 시작하여, 패킷들이 NW I/O 디바이스(110)에 의해 수신되고 Rx 큐들(130)에 적어도 일시적으로 위치될 수 있다.Starting at process 3.1 (receiving packets), packets may be received by NW I/O device 110 and placed at least temporarily in Rx queues 130 .

프로세스 3.2(폴링하고 처리함)로 이동하여, DPDK 폴링 스레드들(140)은 Rx 큐들(130)을 폴링하고, 패킷들이 Rx 큐들(130)에 수신될 때, 패킷들을 처리할 수 있을 것이다.Moving on to process 3.2 (Polling and Processing), the DPDK polling threads 140 may poll the Rx queues 130 and process the packets as they are received in the Rx queues 130 .

프로세스 3.3(수신된 그리고 이용가능한 패킷 기술자들을 모니터링함)으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)에 대한 다수의 폴링 반복들에 걸쳐 Rx 큐들(130)에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to process 3.3 (monitoring received and available packet descriptors), DPDK power management components 150 maintain in Rx queues 130 over multiple polling iterations for DPDK polling threads 140 . logic and/or features to monitor received and available packet descriptors.

프로세스 3.4(연속적 문턱값 초과 동안 0개의 패킷)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 연속적 문턱값(예컨대, 5개의 폴링 반복들)을 초과하는 개수의 연속적 폴링 반복들에 대해 0개의 패킷이 수신되었는지를 결정하는 로직 및/또는 특징부들을 포함할 수 있다.Proceeding to process 3.4 (0 packets for successive threshold exceeded), DPDK power management components 150 return 0 for a number of successive polling iterations exceeding a successive threshold (eg, 5 polling iterations). It may include logic and/or features that determine whether a packet has been received.

프로세스 3.5(유휴 카운트를 증분시킴)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 연속적 문턱값이 초과되면 유휴 카운트를 1의 카운트만큼 증분시키는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to process 3.5 (incrementing the idle count), the DPDK power management components 150 may include logic and/or features to increment the idle count by a count of one when a successive threshold is exceeded.

프로세스 3.6A(짧은 기간 슬립)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, 증분 유휴 카운트가 제1 유휴 카운트 문턱값(예컨대, THRESHOLD_1) 미만인 것으로 밝혀지면, DPDK 폴링 스레드들(140)을 짧은 기간(예컨대, 2 μs) 동안 슬립에 두는 로직 및/또는 특징부들을 포함할 수 있다. 프로세스는 이어서 종료할 수 있다.Moving to process 3.6A (short duration sleep), the DPDK power management components 150 send the DPDK polling threads 140 if the incremental idle count is found to be less than a first idle count threshold (eg, THRESHOLD_1). may include logic and/or features that put them to sleep for short periods of time (eg, 2 μs). The process can then be terminated.

프로세스 3.6B(긴 기간 슬립)에서의 제1 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, 증분 유휴 카운트가 제1 유휴 카운트 문턱값 초과이지만 제2 유휴 카운트 문턱값(예컨대, THRESHOLD_2) 미만인 것으로 밝혀지면, DPDK 폴링 스레드들(140)을 비교적 긴 슬립 기간(예컨대, 수십 μs) 동안 슬립에 두는 로직 및/또는 특징부들을 포함할 수 있다.Moving to the first alternative in process 3.6B (long duration sleep), the DPDK power management components 150 are configured such that the incremental idle count is greater than the first idle count threshold but a second idle count threshold (eg, THRESHOLD_2) If found to be less than, it may include logic and/or features that put the DPDK polling threads 140 to sleep for a relatively long sleep period (eg, tens of μs).

프로세스 3.7B(긴 슬립 표시)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, DPDK 폴링 스레드들(140)이 긴 슬립 기간 동안 슬립에 있었다는 것을 나타내기 위해, 긴 슬립 표시를 OS 전력 관리 모듈(PMM)(160)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.Moving to process 3.7B (long sleep indication), the DPDK power management components 150 display a long sleep indication to the OS power management module to indicate that the DPDK polling threads 140 have been in sleep for the long sleep period. It may include logic and/or features that transmit to (PMM) 160 .

프로세스 3.8B(긴 기간 동안 슬립 모드)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)로 하여금 최대 긴 슬립 기간 동안 슬립 모드에 있게 할 수 있다. 일부 예들에서, 슬립 모드는 ACPI C1 전력 상태를 포함할 수 있다. 프로세스는 이어서 이 제1 대안에 대해 종료할 수 있다.Moving to process 3.8B (sleep mode for long duration), OS power management module 160 may cause PE(s) 172 to be in sleep mode for maximum long sleep duration. In some examples, the sleep mode may include an ACPI C1 power state. The process may then end for this first alternative.

프로세스 3.6C(원샷 Rx 인터럽트를 턴 온시킴)에서의 제2 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, 유휴 카운트가 제2 유휴 카운트 문턱값(예컨대, THRESHOLD_2)을 초과한 것에 기초하여, 인터럽트 턴 온 힌트 또는 메시지를 NW I/O 디바이스(110)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to the second alternative in process 3.6C (turning on the one-shot Rx interrupt), the DPDK power management components 150 based on the idle count exceeding a second idle count threshold (eg, THRESHOLD_2). Thus, it may include logic and/or features to transmit an interrupt turn on hint or message to the NW I/O device 110 .

프로세스 3.7C(인터럽트 모드로 전환함)로 이동하여, 폴 모드 드라이버(142)는 폴 모드에서 NW I/O 디바이스(110)와 함께 동작하는 것으로부터 인터럽트 모드로 전환할 수 있다. 이 모드 전환은 또한 DPDK 폴링 스레드들(140)을 일시중지시킬 수 있다.Moving to process 3.7C (switching to interrupt mode), poll mode driver 142 may switch from operating with NW I/O device 110 in poll mode to interrupt mode. This mode switch may also pause the DPDK polling threads 140 .

프로세스 3.8C(패킷들을 수신함)로 이동하여, 네트워크 트래픽(105)은 이제 DPDK 스레드들(140)에 의한 처리를 위한 패킷들을 포함할 수 있다.Moving on to process 3.8C (receiving packets), network traffic 105 may now include packets for processing by DPDK threads 140 .

프로세스 3.9C(폴 모드로 전환함)로 이동하여, 폴 모드 드라이버(142)는 폴 모드에서 NW I/O 디바이스(110)와 함께 동작하는 것으로 다시 전환할 수 있고, 프로세스는 이어서 이 제2 대안에 대해 종료할 수 있다.Moving on to process 3.9C (switching to poll mode), the poll mode driver 142 can switch back from the poll mode to operating with the NW I/O device 110 , the process then proceeding to this second alternative can be terminated for

도 4는 예시적인 제2 프로세스(400)를 나타내고 있다. 도 4에 도시된 바와 같이, 제2 프로세스는 프로세스(400)를 포함한다. 프로세스(300)와 유사하게, 프로세스(400)는 시스템(100)의 상이한 요소들이 도 2에 대해 앞서 기술된 논리 흐름(200)의 부분들을 어떻게 구현할 수 있는지를 나타낼 수 있다. 상세하게는, 그 부분들은 PE(들)(172)에 대한 성능 상태를 저하시킬지를 결정하기 위해 DPDK 폴링 스레드들에 대한 슬립 퍼센트들 또는 반복당 평균 패킷을 모니터링하는 것에 관련되어 있다. 이 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 프로세스(400)에 관련되어 있을 수 있다. 그렇지만, 예시적인 프로세스(400)는 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 구현들로 제한되지 않는다.4 illustrates an exemplary second process 400 . As shown in FIG. 4 , the second process includes process 400 . Similar to process 300 , process 400 may represent how different elements of system 100 may implement portions of logic flow 200 described above with respect to FIG. 2 . Specifically, the portions relate to monitoring the sleep percentages or average packet per iteration for the DPDK polling threads to determine if it will degrade the performance state for the PE(s) 172 . For these examples, at least some components of system 100 shown in FIG. 1 may be involved in process 400 . However, the example process 400 is not limited to implementations using the components of the system 100 shown or described in FIG. 1 .

프로세스 4.1(타이머를 초기화함)에서 시작하여, DPDK 전력 관리 컴포넌트들(150)은 타이머 간격을 가지는 타이머를 초기화하거나 개시하는 로직 및/또는 특징부들을 포함할 수 있다. 일부 예들에서, 타이머 간격은 대략 100 밀리초(ms)일 수 있다.Beginning at process 4.1 (Initializing Timer), DPDK power management components 150 may include logic and/or features to initialize or initiate a timer having a timer interval. In some examples, the timer interval may be approximately 100 milliseconds (ms).

프로세스 4.2(슬립 %를 결정하기 위해 활동을 모니터링함)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)이 얼마나 자주 슬립에 있는지를 모니터링하는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to process 4.2 (monitoring activity to determine sleep %), DPDK power management components 150 implement logic and/or features to monitor how often DPDK polling threads 140 are in sleep. may include

프로세스 4.3(타이머가 만료함)으로 이동하여, 타이머 간격 이후에 타이머가 만료한다.Go to process 4.3 (Timer expires), the timer expires after the timer interval.

프로세스 4.4A(성능 표시(슬립 %))로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)이 타이머 간격 동안 퍼센트 문턱값 초과의 시간의 퍼센트 동안 슬립하고 있는지를 결정하는 로직 및/또는 특징부들을 포함할 수 있다. 일부 예들에서, DPDK 폴링 스레드들(140)에 대한 슬립 퍼센트가 퍼센트 문턱값(예컨대, 25% 초과)을 넘거나 초과한 경우, DPDK 전력 관리 컴포넌트들(150)은 성능 표시를 OS 전력 관리 모듈(160)로 송신할 수 있다.Moving on to process 4.4A (Performance Indication (Sleep %)), the DPDK power management components 150 determine if the DPDK polling threads 140 are sleeping for a percentage of the time above the percent threshold during the timer interval. logic and/or features. In some examples, when the sleep percentage for DPDK polling threads 140 exceeds or exceeds a percentage threshold (eg, greater than 25%), DPDK power management components 150 send a performance indication to the OS power management module ( 160) can be sent.

프로세스 4.5A(성능 상태를 저하시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)로 하여금 그의 성능 상태 또는 P-상태를 저하시키게 할 수 있다. 프로세스는 이어서 종료할 수 있다.Moving to process 4.5A (degrading performance state), OS power management module 160 may cause PE(s) 172 to degrade its performance state or P-state. The process can then be terminated.

프로세스 4.4B(성능 표시(패킷 평균))에서의 제1 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 반복당 평균 패킷이 패킷 평균 문턱값 초과인지 미만인지를 결정하는 로직 및/또는 특징부들을 포함할 수 있다. 일부 예들에서, 반복당 평균 패킷이 패킷 평균 문턱값 미만인 경우, DPDK 전력 관리 컴포넌트들(150)은 성능 표시를 OS 전력 관리 모듈(160)로 송신할 수 있다.Moving on to the first alternative in process 4.4B (Performance Indication (Packet Average)), the DPDK power management components 150 provide logic and/or a feature for determining whether an average packet per iteration is above or below a packet average threshold. may include parts. In some examples, if the average packet per iteration is below a packet average threshold, the DPDK power management components 150 can send a performance indication to the OS power management module 160 .

프로세스 4.5B(성능 상태를 저하시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)로 하여금 그의 성능 상태 또는 P-상태를 저하시키게 할 수 있다. 프로세스는 이어서 이 제1 대안에 대해 종료할 수 있다.Moving to process 4.5B (degrading performance state), OS power management module 160 may cause PE(s) 172 to degrade its performance state or P-state. The process may then end for this first alternative.

도 5는 예시적인 제3 프로세스(500)를 나타내고 있다. 도 5에 도시된 바와 같이, 제3 프로세스는 프로세스(500)를 포함한다. 일부 예들에 따르면, 프로세스(500)는 시스템(100)의 상이한 요소들이 도 2에 대해 앞서 기술된 논리 흐름(200)의 부분들을 어떻게 구현할 수 있는지를 나타낼 수 있다. 상세하게는, 그 부분들은 PE(들)에 대한 성능을 상승시켜야 하는지 또는 그렇게 해야 할 때를 결정하기 위해 Rx 큐 충만도를 모니터링하는 것에 관련되어 있다. 이 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 프로세스(500)에 관련되어 있을 수 있다. 그렇지만, 예시적인 프로세스(500)는 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 구현들로 제한되지 않는다.5 illustrates an exemplary third process 500 . As shown in FIG. 5 , the third process includes process 500 . According to some examples, process 500 may represent how different elements of system 100 may implement portions of logic flow 200 described above with respect to FIG. 2 . Specifically, those parts relate to monitoring Rx queue fullness to determine if or when to boost performance for the PE(s). For these examples, at least some components of the system 100 shown in FIG. 1 may be involved in the process 500 . However, the example process 500 is not limited to implementations using the components of the system 100 shown or described in FIG. 1 .

프로세스 5.1(패킷들을 수신함)에서 시작하여, 패킷들이 NW I/O 디바이스(110)에 의해 수신되고 Rx 큐들(130)에 적어도 일시적으로 위치될 수 있다.Starting at process 5.1 (receiving packets), packets may be received by NW I/O device 110 and placed at least temporarily in Rx queues 130 .

프로세스 5.2(폴링하고 처리함)로 이동하여, DPDK 폴링 스레드들(140)은 Rx 큐들(130)을 폴링하고, 패킷들이 Rx 큐들(130)에 수신될 때, 패킷들을 처리할 수 있을 것이다.Moving on to process 5.2 (Polling and Processing), the DPDK polling threads 140 may poll the Rx queues 130 and process the packets as they are received in the Rx queues 130 .

프로세스 5.3(수신된 그리고 이용가능한 패킷 기술자들을 모니터링함)으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)에 대한 다수의 폴링 반복들에 걸쳐 Rx 큐들(130)에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to process 5.3 (monitoring received and available packet descriptors), DPDK power management components 150 maintain in Rx queues 130 over multiple polling iterations for DPDK polling threads 140 . logic and/or features to monitor received and available packet descriptors.

프로세스 5.4(Rx 큐 충만도를 결정함)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 각각의 폴링 반복 이후에 Rx 큐들(130)에 유지되는 이용가능한 패킷 기술자들에 기초하여 Rx 큐들(130)의 충만도를 결정하는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to process 5.4 (determining Rx queue fullness), DPDK power management components 150 determine Rx queues 130 based on available packet descriptors maintained in Rx queues 130 after each polling iteration. ) and/or features that determine the fullness of

프로세스 5.5(트렌드 카운트를 증분시킴)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 도 2에 도시된 논리 흐름(200)에 대해 앞서 기술된 바와 같이 Rx 큐들(130)의 결정된 충만도 레벨에 기초하여 단일의 카운트 또는 큰 카운트만큼 트렌드 카운트를 증분시키는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to process 5.5 (incrementing the trend count), the DPDK power management components 150 reach the determined fullness level of the Rx queues 130 as described above with respect to the logic flow 200 shown in FIG. 2 . may include logic and/or features to increment the trend count by a single count or a large count based on it.

프로세스 5.6A(성능 표시)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 증분된 트렌드 카운트가 트렌드 카운트 문턱값을 초과한 것에 기초하여 성능 표시를 OS 전력 관리 모듈(160)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.Moving to process 5.6A (performance indication), the DPDK power management components 150 include logic to send a performance indication to the OS power management module 160 based on the incremented trend count exceeding a trend count threshold and / or features.

프로세스 5.7A(동작 주파수를 한 단계 위로 증가시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)의 성능 상태 또는 P-상태를 증가시킬 수 있다. 일부 예들에서, PE(들)(172)에 대한 성능 상태가 한 단계 위로 또는 단일의 P-상태로 상승될 수 있고, 이는 DPDK 폴링 스레드들(140)을 실행할 때 PE(들)(172)의 동작 주파수가 증가되게 할 수 있다. 프로세스는 이어서 종료할 수 있다.Moving to process 5.7A (increasing the operating frequency one step up), the OS power management module 160 may increase the performance state or P-state of the PE(s) 172 . In some examples, the performance state for the PE(s) 172 may be raised one level up or to a single P-state, which is the level of the PE(s) 172 when executing the DPDK polling threads 140 . The operating frequency can be increased. The process can then be terminated.

프로세스 5.6B(높은 성능 표시)에서의 제1 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 Rx 큐들(130)이 거의 채워져 있는(예컨대, 75% 초과) 것으로 결정된 연속적 폴링 반복들의 개수에 응답하여 높은 성능 표시를 OS 전력 관리 모듈(160)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.Moving on to the first alternative in process 5.6B (high performance indication), the DPDK power management components 150 determine that the Rx queues 130 are near full (eg, greater than 75%) at the number of consecutive polling iterations. logic and/or features to responsively transmit a high performance indication to the OS power management module 160 .

프로세스 5.7B(동작 주파수를 최대로 증가시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)의 성능 상태 또는 P-상태를 최고 또는 최대 P-상태로 증가시킬 수 있다. 일부 예들에서, PE(들)(172)을 최고 또는 최대 P-상태로 상승시킨 결과, DPDK 폴링 스레드들(140)을 실행할 때 PE(들)(172)이 그의 최고 또는 최대 동작 주파수로 상승된다. 프로세스는 이어서 이 제1 대안에 대해 종료할 수 있다.Moving to process 5.7B (maximum increase in operating frequency), OS power management module 160 may increase the performance state or P-state of PE(s) 172 to the highest or maximum P-state. . In some examples, as a result of raising the PE(s) 172 to the highest or maximum P-state, the PE(s) 172 are raised to their highest or maximum operating frequency when executing the DPDK polling threads 140 . . The process may then end for this first alternative.

도 6은 장치(600)에 대한 예시적인 블록도를 나타내고 있다. 도 6에 도시된 장치(600)가 특정의 토폴로지에서 제한된 개수의 요소들을 갖지만, 장치(600)가 주어진 구현에 대해 원하는 바에 따라 대안의 토폴로지들에서 보다 많은 또는 보다 적은 요소들을 포함할 수 있다는 것을 잘 알 수 있다.6 shows an exemplary block diagram of an apparatus 600 . It should be noted that while the apparatus 600 shown in FIG. 6 has a limited number of elements in a particular topology, the apparatus 600 may include more or fewer elements in alternative topologies as desired for a given implementation. well know

일부 예들에 따르면, 장치(600)는 데이터 센터에 배치될 수 있는 컴퓨팅 플랫폼 또는 네트워크 디바이스에 유지되는 회로부(620)에 의해 지원될 수 있다. 회로부(620)는 하나 이상의 소프트웨어 또는 펌웨어 구현 모듈들 또는 컴포넌트들(622-a)을 실행하도록 구성될 수 있다. 주목할 만한 점은, "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 circuitry 620 maintained on a computing platform or network device that may be deployed in a data center. Circuitry 620 may be configured to execute one or more software or firmware implemented modules or components 622-a. Notably, "a" and "b" and "c" and similar directives, as used herein, are intended to be variables representing any positive integer. As such, for example, if one implementation sets the value for a to 6, then the entire set of software or firmware for components 622-a is 3, 622-4, 622-5 or 622-6). The examples presented are not limiting in this regard, and different variables used throughout may represent the same or different integer values. Also, these “components” may be software/firmware stored on a computer readable medium, and although components are shown as separate boxes in FIG. 6 , this may separate these components into different computer readable media components (eg, separate It is not limited to storage in memory, 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(application specific integrated circuit)을 포함할 수 있고, 적어도 일부 컴포넌트들(622-a)은 ASIC의 하드웨어 요소들로서 구현될 수 있다.According to some examples, circuitry 620 may include a processor, processor circuitry, or processor circuitry. Circuitry 620 includes AMD® Athlon®, Duron®, Phenom®, and Opteron® processors; Various commercially available processors including, but not limited to, Intel Atom®, Celeron®, Core (2) Duo®, Core i3, Core i5, Core i7, Pentium®, Xeon or Xeon Phi® processors may be any of According to some examples, circuitry 620 may also include an application specific integrated circuit (ASIC), and at least some components 622-a may be implemented as hardware elements of the ASIC.

일부 예들에서, 장치(600)는 큐 컴포넌트(622-1)를 포함할 수 있다. 큐 컴포넌트(622-1)는 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하기 위해 회로부(620)에 의해 실행될 수 있다. 수신된 그리고 이용가능한 패킷 기술자들은 수신된 그리고 이용가능한 패킷 기술자들(610)에 포함될 수 있고, 큐 컴포넌트(622-1)에 의해 Rx 큐 정보(623-a)에(예컨대, 룩업 테이블(LUT)과 같은 데이터 구조에) 유지될 수 있다. 큐 모듈(622-1)은 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정할 수 있을 것이다. 충만도 레벨은 또한 Rx 큐 정보(623-a)에 유지될 수 있다.In some examples, device 600 may include a queue component 622-1. Queue component 622-1 is to be executed by circuitry 620 to monitor received and available packet descriptors maintained in a receive queue for the NW I/O device over a number of polling iterations for the DPDK polling thread. can Received and available packet descriptors may be included in received and available packet descriptors 610 , in Rx queue information 623-a (eg, lookup table (LUT)) by queue component 622-1. may be maintained in a data structure such as The queue module 622-1 may determine a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration. A fullness level may also be maintained in the Rx queue information 623-a.

일부 예들에서, 큐 컴포넌트(622-1)는 또한 Rx 큐 정보(623-a)에 포함된 정보에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정할 수 있다.In some examples, queue component 622-1 may also determine the number of packets received in the receive queue for each polling iteration based on information included in Rx queue information 623-a.

일부 예들에 따르면, 장치(600)는 증분 컴포넌트(622-2)를 포함할 수 있다. 증분 컴포넌트(622-2)는 각각의 폴링 반복 이후에 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시키기 위해 회로부(620)에 의해 실행될 수 있다. 이 예들에 대해, 트렌드 카운트는 증분 컴포넌트(622-2)에 의해 트렌드 카운트(624-b)에(예컨대, LUT에) 유지될 수 있다. 증분 컴포넌트(622-2)는 또한, 큐 모듈(622-1)이 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 0개의 패킷이 수신되었다고 결정한 경우, 유휴 카운트를 적어도 1의 카운트만큼 증분시킬 수 있다. 유휴 카운트는 증분 컴포넌트(622-2)에 의해 유휴 카운트(625-c)에(예컨대, LUT에) 유지될 수 있다.According to some examples, apparatus 600 may include an increment component 622 - 2 . Increment component 622 - 2 may be executed by circuitry 620 to increment the trend count based on the fullness level for the receive queue after each polling iteration. For these examples, the trend count may be maintained in the trend count 624 - b (eg, in the LUT) by the increment component 622 - 2 . Increment component 622-2 also increments the idle count by a count of at least one when the queue module 622-1 determines that zero packets have been received for a number of successive polling iterations exceeding a successive threshold. can do it The idle count may be maintained in the idle count 625 - c (eg, in the LUT) by the increment component 622 - 2 .

일부 예들에서, 장치(600)는 또한 성능 컴포넌트(622-3)를 포함할 수 있다. 성능 컴포넌트(622-3)는 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시(640)를 OS 전력 관리 모듈로 송신하기 위해 회로부(620)에 의해 실행될 수 있다. 성능 표시(640)는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다. 이 예들에 대해, 트렌드 카운트 문턱값은 성능 컴포넌트(622-3)에 의해 트렌드 카운트 문턱값(626-d)에(예컨대, LUT에) 유지될 수 있다.In some examples, apparatus 600 may also include a performance component 622 - 3 . Performance component 622 - 3 may be executed by circuitry 620 to send a performance indication 640 to the OS power management module based on whether the trend count exceeds a trend count threshold. The performance indication 640 may cause the OS power management module to increase the performance state of the processing element executing the DPDK polling thread. For these examples, the trend count threshold may be maintained by the performance component 622-3 at the trend count threshold 626-d (eg, in the LUT).

일부 예들에 따르면, 성능 컴포넌트(622-3)는, 수신 큐가 거의 채워져 있는 것으로 큐 컴포넌트(622-1)에 의해 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시(645)를 OS 전력 관리 모듈로 송신할 수 있다. 높은 성능 표시(645)는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수가 최고 동작 주파수로 증가되게 하는 것에 의해, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다. 이 예들에 대해, 연속적 문턱값은 성능 컴포넌트(622-3)에 의해 연속적 문턱값(627-e)에(예컨대, LUT에) 유지될 수 있다.According to some examples, the performance component 622-3 responds to a number of successive polling iterations determined by the queue component 622-1 as being nearly full of the receive queue exceeds a successive threshold, An indication 645 may be sent to the OS power management module. The high performance indication 645 may cause 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 be increased to the highest operating frequency. For these examples, the continuous threshold may be maintained by the performance component 622-3 at the continuous threshold 627 - e (eg, in the LUT).

일부 예들에서, 장치(600)는 또한 슬립 컴포넌트(622-4)를 포함할 수 있다. 슬립 컴포넌트(622-4)는, 증분 컴포넌트에 의해 증분되고 유휴 카운트(625-c)에 유지되는 유휴 카운트가 슬립 컴포넌트(622-4)에 의해 유휴 카운트 문턱값들(630-h)에(예컨대, LUT에) 유지되는 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, DPDK 폴링 스레드를 제1 기간 또는 제2 기간 중 하나 동안 슬립시키기 위해 회로부(620)에 의해 실행될 수 있다. 이 예들에 대해, 제2 기간은 제1 기간보다 더 길 수 있다. 슬립(615)은 DPDK 폴링 스레드를 슬립시키는 표시들 또는 명령들을 포함할 수 있다.In some examples, device 600 may also include a sleep component 622 - 4 . Sleep component 622-4 determines that an idle count incremented by the incrementing component and maintained at idle count 625-c is passed by sleep component 622-4 to idle count thresholds 630-h (e.g., , LUT) may be executed by circuitry 620 to sleep the DPDK polling thread for one of a first period or a second period based on whether it exceeds or is below a first idle count threshold maintained. For these examples, the second period of time may be longer than the first period of time. Sleep 615 may include indications or instructions to sleep the DPDK polling thread.

일부 예들에 따르면, 슬립 컴포넌트(622-4)는, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있고, 긴 슬립 표시(650)를 OS 전력 관리 모듈로 송신할 수 있다. 긴 슬립 표시(650)는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.According to some examples, the sleep component 622 - 4 may sleep the DPDK polling thread for a second period based on the idle count exceeding the first idle count threshold and display a long sleep indication 650 , according to some examples. It can be sent to the OS power management module. The long sleep indication 650 may cause the OS power management module to cause the processing element executing the DPDK polling thread to be in a sleep mode for up to a second period of time.

일부 예들에 따르면, 장치(600)는 또한 인터럽트 제어 컴포넌트(622-5)를 포함할 수 있다. 인터럽트 제어 컴포넌트(622-4)는, 증분 컴포넌트(622-2)에 의해 증분되는 유휴 카운트가 슬립 컴포넌트(622-5)에 의해 유휴 카운트 문턱값들(630-h)에 유지되는 제2 유휴 카운트 문턱값을 초과하는지에 기초하여, 원샷 Rx 인터럽트를 인에이블시키는 메시지를 NW I/O 디바이스로 송신하기 위해 회로부(620)에 의해 실행될 수 있다. 이 예들에 대해, 메시지는 원샷 Rx 인터럽트(635)에 포함될 수 있다.According to some examples, apparatus 600 may also include an interrupt control component 622 - 5 . Interrupt control component 622 - 4 is configured to configure a second idle count at which the idle count incremented by increment component 622 - 2 is maintained at idle count thresholds 630 - h by sleep component 622 - 5 . Based on whether the threshold is exceeded, it may be executed by circuitry 620 to transmit a message to the NW I/O device to enable the one-shot Rx interrupt. For these examples, the message may be included in the one-shot Rx interrupt 635 .

일부 예들에 따르면, 장치(600)는 또한 타이머 컴포넌트(622-6)를 포함할 수 있다. 타이머 컴포넌트(622-6)는 타이머 컴포넌트(622-6)에 의해 타이머 간격(632-j)에(예컨대, LUT에) 유지되는 타이머 간격을 가지는 타이머를 개시하기 위해 회로부(620)에 의해 실행될 수 있다.According to some examples, apparatus 600 may also include a timer component 622 - 6 . Timer component 622-6 may be executed by circuitry 620 to start a timer having a timer interval maintained by timer component 622-6 at timer interval 632-j (eg, in a LUT). there is.

일부 예들에서, 슬립 컴포넌트(622-4)는, 타이머 컴포넌트(622-6)에 의해 개시된 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPKK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정할 수 있다. 퍼센트는 슬립 컴포넌트(622-4)에 의해 슬립 정보(631-i)에 유지될 수 있다. 이 예들에 대해, 성능 컴포넌트(622-3)는, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시(640)를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시(640)는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다. 이 결정을 위해 사용되는 퍼센트 문턱값은 성능 컴포넌트(622-3)에 의해 퍼센트 문턱값(628-f)에(예컨대, LUT에) 유지될 수 있다.In some examples, sleep component 622 - 4 can determine the percentage of repetitions in which the DPKK polling thread was sleeping during the timer interval in response to the timer initiated by timer component 622 - 6 having expired. The percentage may be maintained in the sleep information 631 - i by the sleep component 622 - 4 . For these examples, the performance component 622 - 3 can send the performance indication 640 to the OS power management module based on whether the percentage is above a percentage threshold. The performance indication 640 may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency or reducing the operating voltage of the processing element. The percentage threshold used for this determination may be maintained by the performance component 622 - 3 at the percentage threshold 628 - f (eg, in the LUT).

일부 예들에 따르면, 큐 컴포넌트(622-1)는, 타이머 컴포넌트(622-6)에 의해 개시된 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정할 수 있다. 큐 컴포넌트(622-1)에 의해 결정된 반복당 평균 패킷은 Rx 큐 정보(623-a)에 유지될 수 있다. 이 예들에 대해, 성능 컴포넌트(622-3)는, 반복당 평균 패킷이 패킷 평균 문턱값 초과인지에 기초하여, 성능 표시(640)를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시(640)는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다. 패킷 평균 문턱값은 성능 컴포넌트(622-3)에 의해 평균 문턱값(629-g)에(예컨대, LUT에) 유지될 수 있다.According to some examples, the queue component 622-1 determines, in response to the timer initiated by the timer component 622-6 expiring, an average packet per iteration for packets received in the receive queue during the timer interval. can The average packet per iteration determined by the queue component 622-1 may be maintained in the Rx queue information 623-a. For these examples, the performance component 622 - 3 can send the performance indication 640 to the OS power management module based on whether the average packets per iteration is above a packet average threshold. The performance indication 640 may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency of the processing element. The packet average threshold may be maintained by the performance component 622 - 3 at the average threshold 629 - g (eg, in the LUT).

장치(600)의 다양한 컴포넌트들 그리고 장치(600)를 구현하는 디바이스, 노드 또는 논리적 서버는 동작들을 조율하기 위해 다양한 유형들의 통신 매체에 의해 서로 통신가능하게 결합될 수 있다. 조율은 단방향 또는 양방향 정보 교환을 수반할 수 있다. 예를 들면, 컴포넌트들은 통신 매체를 통해 전달되는 신호들의 형태로 정보를 전달할 수 있다. 정보는 다양한 신호 라인들에 할당되는 신호들로서 구현될 수 있다. 이러한 할당들에서, 각각의 메시지가 신호이다. 그렇지만, 추가의 실시예들은 대안적으로 데이터 메시지들을 이용할 수 있다. 이러한 데이터 메시지들은 다양한 연결들을 거쳐 송신될 수 있다. 예시적인 연결들은 병렬 인터페이스들, 직렬 인터페이스들, 및 버스 인터페이스들을 포함한다.The various components of apparatus 600 and a device, node, or logical server implementing apparatus 600 may be communicatively coupled to one another by various types of communication media to coordinate operations. Coordination may involve one-way or two-way information exchange. For example, components may communicate information in the form of signals carried over a communication medium. The information may be implemented as signals assigned to various signal lines. In these assignments, each message is a signal. However, further embodiments may alternatively use data messages. These data messages may be transmitted over various connections. Exemplary connections include parallel interfaces, serial interfaces, and bus interfaces.

개시된 아키텍처의 신규의 양태들을 수행하는 예시적인 방법들을 나타내는 한 세트의 논리 흐름들이 본원에 포함되어 있다. 설명의 간략함을 위해, 본원에서 보여지는 하나 이상의 방법들이 일련의 동작들로서 도시되고 기술되어 있지만, 본 기술분야의 통상의 기술자라면 방법들이 동작들의 순서에 의해 제한되지 않는다는 것을 이해하고 잘 알 것이다. 일부 동작들은, 그에 따라, 본원에 도시되고 기술된 것과 상이한 순서로 그리고/또는 다른 동작들과 동시에 행해질 수 있다. 예를 들어, 본 기술분야의 통상의 기술자라면 방법이 대안적으로, 상태도에서와 같이, 일련의 상호 관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 이해하고 잘 알 것이다. 더욱이, 신규의 구현을 위해 방법에 예시된 동작들 모두가 필요한 것은 아닐 수 있다.Included herein is a set of logic flows that represent example methods of performing novel aspects of the disclosed architecture. For simplicity of description, one or more methods shown herein are shown and described as a series of acts; however, those skilled in the art will understand and appreciate that the methods are not limited by the order of the acts. Some operations may, therefore, be performed in an order different from that shown and described herein and/or concurrently with other operations. For example, those skilled in the art will understand and appreciate that a method may alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all of the acts illustrated in a method may be required for a novel implementation.

논리 흐름이 소프트웨어, 펌웨어, 및/또는 하드웨어로 구현될 수 있다. 소프트웨어 및 펌웨어 실시예들에서, 논리 흐름은, 광학, 자기 또는 반도체 저장소와 같은, 적어도 하나의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체에 저장되는 컴퓨터 실행가능 명령어들에 의해 구현될 수 있다. 실시예들이 이와 관련하여 제한되지 않는다.The logic flow may be implemented in software, firmware, and/or hardware. In software and firmware embodiments, the logic flow may be implemented by computer-executable instructions stored in at least one non-transitory computer-readable medium or machine-readable medium, such as optical, magnetic or semiconductor storage. The embodiments are not limited in this regard.

도 7은 예시적인 제2 논리 흐름을 나타내고 있다. 도 7에 도시된 바와 같이, 예시적인 제2 논리 흐름은 논리 흐름(700)을 포함한다. 논리 흐름(700)은, 장치(600)와 같은, 본원에 기술되는 하나 이상의 로직, 특징부들, 또는 디바이스들에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다. 보다 상세하게는, 논리 흐름(700)은 적어도 큐 컴포넌트(622-1), 증분 컴포넌트(622-2) 또는 성능 컴포넌트(622-3)에 의해 구현될 수 있다.7 illustrates an exemplary second logic flow. As shown in FIG. 7 , an exemplary second logic flow includes a 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 particularly, logic flow 700 may be implemented by at least a queue component 622-1, an increment component 622-2, or a performance component 622-3.

일부 예들에 따르면, 논리 흐름(700)은, 블록(702)에서, DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 수신 큐를 모니터링할 수 있다.According to some examples, logic flow 700 , at block 702 , retrieves received and available packet descriptors maintained in a receive queue for the NW I/O device across multiple polling iterations for the DPDK polling thread. can be monitored. For these examples, queue component 622-1 may monitor the receive queue.

일부 예들에서, 논리 흐름(700)은, 블록(704)에서, 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 충만도 레벨을 결정할 수 있다. In some examples, logic flow 700 may determine, at block 704 , a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration. For these examples, the queue component 622-1 may determine the fullness level.

일부 예들에 따르면, 논리 흐름(700)은, 블록(706)에서, 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시킬 수 있다. 이 예들에 대해, 증분 컴포넌트(622-2)가 트렌드 카운트를 증분시킬 수 있다.According to some examples, logic flow 700 may, at block 706 , increment a trend count based on a fullness level for the receive queue. For these examples, increment component 622 - 2 can increment the trend count.

일부 예들에서, 논리 흐름(700)은, 블록(708)에서, 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시를 OS 전력 관리 모듈로 송신할 수 있고, 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있다. 이 예들에 대해, 성능 컴포넌트(622-3)가 성능 표시를 송신할 수 있다.In some examples, logic flow 700 can send, at block 708 , a performance indication to the OS power management module based on whether the trend count exceeds a trend count threshold, wherein the performance indication is sent to the OS power management module. to increase the performance state of the processing element executing the DPDK polling thread. For these examples, performance component 622 - 3 may transmit a performance indication.

도 8은 예시적인 제3 논리 흐름을 나타내고 있다. 도 8에 도시된 바와 같이, 예시적인 제3 논리 흐름은 논리 흐름(800)을 포함한다. 논리 흐름(800)은, 장치(600)와 같은, 본원에 기술되는 하나 이상의 로직, 특징부들, 또는 디바이스들에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다. 보다 상세하게는, 논리 흐름(800)은 적어도 큐 컴포넌트(622-1), 증분 컴포넌트(622-2) 또는 슬립 컴포넌트(622-4)에 의해 구현될 수 있다.8 shows an exemplary third logic flow. As shown in FIG. 8 , an exemplary 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 a queue component 622-1, an increment component 622-2, or a sleep component 622-4.

일부 예들에 따르면, 논리 흐름(800)은, 블록(802)에서, DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 수신 큐를 모니터링할 수 있다.According to some examples, logic flow 800 , at block 802 , lists the received and available packet descriptors maintained in a receive queue for the NW I/O device across multiple polling iterations for the DPDK polling thread. can be monitored. For these examples, queue component 622-1 may monitor the receive queue.

일부 예들에서, 논리 흐름(800)은, 블록(804)에서, 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 수신 큐에 수신되는 패킷들의 개수를 결정할 수 있다.In some examples, logic flow 800 determines, at block 804 , the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after each polling iteration. can be decided For these examples, the queue component 622-1 may determine the number of packets received in the receive queue.

일부 예들에 따르면, 논리 흐름(800)은, 블록(806)에서, 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시킬 수 있다. 이 예들에 대해, 증분 컴포넌트(622-2)가 트렌드 카운트를 증분시킬 수 있다.According to some examples, logic flow 800 may increment the idle count by a count of one if the number of packets received for a number of successive polling iterations exceeding a successive threshold is zero, at block 806 , according to some examples. there is. For these examples, increment component 622 - 2 can increment the trend count.

일부 예들에서, 논리 흐름(800)은, 블록(808)에서, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시킬 수 있고, 제2 기간은 제1 기간보다 더 길다. 이 예들에 대해, 슬립 컴포넌트(622-4)가 DPDK 폴링 스레드를 슬립시킬 수 있다.In some examples, logic flow 800 , at block 808 , polls the DPDK polling thread for one of a first period or a second period based on whether the idle count is above or below the first idle count threshold. and the second period of time is longer than the first period of time. For these examples, sleep component 622-4 may sleep the DPDK polling thread.

도 9는 예시적인 저장 매체(900)를 나타내고 있다. 도 9에 도시된 바와 같이, 제1 저장 매체는 저장 매체(900)를 포함한다. 저장 매체(900)는 제조 물품을 포함할 수 있다. 일부 예들에서, 저장 매체(900)는 광학, 자기 또는 반도체 저장소와 같은 임의의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체를 포함할 수 있다. 저장 매체(900)는, 논리 흐름(700) 또는 논리 흐름(800)을 구현하는 명령어들과 같은, 다양한 유형들의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 컴퓨터 판독가능 또는 머신 판독가능 매체의 예들은, 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 소거가능 또는 비소거가능 메모리, 기입가능 또는 재기입가능 메모리 등을 비롯한, 전자 데이터를 저장할 수 있는 임의의 유형적(tangible) 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은, 소스 코드, 컴파일된 코드, 인터프리트된 코드, 실행가능 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 등과 같은, 임의의 적당한 유형의 코드를 포함할 수 있다. 예들이 이와 관련하여 제한되지 않는다.9 illustrates an exemplary storage medium 900 . As shown in FIG. 9 , the first storage medium includes a storage medium 900 . The storage medium 900 may include an article of manufacture. In some examples, storage medium 900 may include any non-transitory computer-readable medium or machine-readable medium, such as optical, magnetic, or semiconductor storage. Storage medium 900 may store various types of computer-executable instructions, such as instructions that implement logic flow 700 or logic flow 800 . Examples of computer-readable or machine-readable media are capable of storing electronic data, including volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, and the like. It may include any tangible medium. Examples of computer-executable instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, object-oriented code, visual code, and the like. . Examples are not limited in this regard.

도 10은 예시적인 컴퓨팅 플랫폼(1000)을 나타내고 있다. 일부 예들에서, 도 10에 도시된 바와 같이, 컴퓨팅 플랫폼(1000)은 처리 컴포넌트(1040), 다른 플랫폼 컴포넌트들(1050) 또는 통신 인터페이스(1060)를 포함할 수 있다. 일부 예들에 따르면, 컴퓨팅 플랫폼(1000)은 도 1의 시스템(100)과 같은 DPDK 폴링 스레드들을 가지는 시스템에 대한 전력/성능 관리 기능을 제공하는 전력 및/또는 성능 관리 요소들(예컨대, DPDK 전력 관리 컴포넌트들 및 OS 전력 관리 모듈)을 호스팅할 수 있다. 컴퓨팅 플랫폼(1000)은 단일의 물리적 네트워크 디바이스일 수 있거나, 데이터 센터에 배치된 구성가능 컴퓨팅 자원들의 공유 풀로부터 구성되는 분해된 물리적 컴포넌트들 또는 요소들의 조합들을 포함하는 구성된 논리적 네트워크 디바이스일 수 있다.10 illustrates an example 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 include power and/or performance management elements (eg, DPDK power management) that provide power/performance management functionality for a system having DPDK polling threads, such as system 100 of FIG. 1 . components and OS power management module). The computing platform 1000 may be a single physical network device, or it may be a configured logical network device comprising disaggregated physical components or combinations of elements constructed from a shared pool of configurable computing resources located in a data center.

일부 예들에 따르면, 처리 컴포넌트(1040)는 장치(600) 및/또는 저장 매체(900)에 대한 처리 동작들 또는 논리를 실행할 수 있다. 처리 컴포넌트(1040)는 다양한 하드웨어 요소들, 소프트웨어 요소들, 또는 이 둘의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은 디바이스, 논리 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 프로세서 회로, 회로 요소(예컨대, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuit), PLD(programmable logic device), DSP(digital signal processor), FPGA(field programmable gate array), 메모리 유닛, 논리 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 소프트웨어 요소들의 예들은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 디바이스 드라이버, 시스템 프로그램, 소프트웨어 개발 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, API(application program interface), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 일 예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은, 주어진 예에 대해 원하는 바에 따라, 원하는 계산 속도, 전력 레벨, 열 허용오차, 처리 사이클 버짓(processing cycle budget), 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약조건들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.According to some examples, processing component 1040 may execute 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 are devices, logic devices, components, processors, microprocessors, circuits, processor circuits, circuit elements (eg, transistors, resistors, capacitors, inductors, etc.), integrated circuits, application specific integrated circuits (ASICs), PLDs (PLDs). It may include a programmable logic device), a digital signal processor (DSP), a field programmable gate array (FPGA), a memory unit, a logic gate, a register, a semiconductor device, a chip, a microchip, a chipset, and the like. Examples of software elements are software components, programs, applications, computer programs, application programs, device drivers, system programs, software development programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods , procedure, software interface, application program interface (API), instruction set, computing code, computer code, code segment, computer code segment, word, value, symbol, or any combination thereof. Determining whether an example is implemented using hardware elements and/or software elements determines a desired computational speed, power level, thermal tolerance, processing cycle budget, and input data, as desired for a given example. may depend on any number of factors, such as rate, output data rate, memory resources, data bus speed, and other design or performance constraints.

일부 예들에서, 다른 플랫폼 컴포넌트들(1050)은, 하나 이상의 프로세서들, 멀티 코어 프로세서들, 코프로세서들, 메모리 유닛들, 칩셋들, 제어기들, 주변기기들, 인터페이스들, 발진기들, 타이밍 디바이스들, 비디오 카드들, 오디오 카드들, 멀티미디어 I/O(input/output) 컴포넌트들(예컨대, 디지털 디스플레이들), 전원들 등과 같은, 통상의 컴퓨팅 요소들을 포함한다. 메모리 유닛들의 예들은, ROM(read-only memory), RAM(random-access memory), DRAM(dynamic RAM), DDRAM(Double-Data-Rate DRAM), SDRAM(synchronous DRAM), SRAM(static RAM), PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리, 강유전체 중합체 메모리와 같은 중합체 메모리, 오보닉 메모리(ovonic memory), 상변화 또는 강유전체 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 자기 또는 광학 카드, RAID(Redundant Array of Independent Disks) 드라이브와 같은 디바이스들의 어레이, 솔리드 스테이트 메모리(solid state memory) 디바이스(예컨대, USB 메모리), SSD(solid state drives), 그리고 정보를 저장하기에 적당한 임의의 다른 유형의 저장 매체와 같은, 하나 이상의 고속 메모리 유닛들의 형태의 다양한 유형들의 컴퓨터 판독가능 및 머신 판독가능 저장 매체 - 이들로 제한되지 않음 - 를 포함할 수 있다.In some examples, other platform components 1050 may include one or more processors, multi-core processors, coprocessors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, common computing elements, such as video cards, audio cards, multimedia input/output (I/O) components (eg, digital displays), power supplies, and the like. Examples of memory units include read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), double-data-rate DRAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), Polymer memory such as programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon- Arrays of devices such as oxide-nitride-oxide-silicon memory, magnetic or optical cards, RAID (Redundant Array of Independent Disks) drives, solid state memory devices (eg USB memory), solid state (SSD) drives), and various types of computer-readable and machine-readable storage media in the form of one or more high-speed memory units, such as any other tangible storage medium suitable for storing information. can

일부 예들에서, 통신 인터페이스(1060)는 통신 인터페이스를 지원하는 로직 및/또는 특징부들을 포함할 수 있다. 이 예들에 대해, 통신 인터페이스(1060)는 직접 또는 네트워크 통신 링크들을 통해 통신하기 위해 다양한 통신 프로토콜들 또는 표준들에 따라 동작하는 하나 이상의 통신 인터페이스들을 포함할 수 있다. 직접 통신은, PCIe 규격과 연관된 것들과 같은, 하나 이상의 산업 표준들(후손들 및 변형들을 포함함)에 기술되는 통신 프로토콜들 또는 표준들을 사용하여 행해질 수 있다. 네트워크 통신은, IEEE에 의해 공포된 하나 이상의 이더넷 표준들에 기술된 것들과 같은, 통신 프로토콜들 또는 표준들을 사용하여 행해질 수 있다. 예를 들어, 하나의 이러한 이더넷 표준은 IEEE 802.3을 포함할 수 있다. 네트워크 통신은 또한, 오픈플로 하드웨어 추상화 API 규격(OpenFlow Hardware Abstraction API Specification)과 같은, 하나 이상의 오픈플로(OpenFlow) 규격들에 따라 행해질 수 있다. 네트워크 통신은 또한 인피니밴드 아키텍처 규격(Infiniband Architecture specification) 또는 TCP/IP 프로토콜에 따라 행해질 수 있다.In some examples, communication interface 1060 may include logic and/or features to support the communication interface. For these examples, communication interface 1060 may include one or more communication interfaces that operate according to various communication protocols or standards to communicate either directly or over network communication links. Direct communication may be done using communication protocols or standards described in one or more industry standards (including descendants and variants), such as those associated with the PCIe specification. Network communication may be done using communication protocols or standards, such as those described in one or more Ethernet standards promulgated by the IEEE. For example, one such Ethernet standard may include IEEE 802.3. Network communication may also be done according to one or more OpenFlow specifications, such as the OpenFlow Hardware Abstraction API Specification. Network communication may also be done according to Infiniband Architecture specification or TCP/IP protocol.

앞서 언급된 바와 같이, 컴퓨팅 플랫폼(1000)은 단일의 네트워크 디바이스 또는 구성가능 컴퓨팅 자원들의 공유 풀로부터 구성되는 분해된 물리적 컴포넌트들 또는 요소들로 이루어진 논리적 네트워크 디바이스에 구현될 수 있다. 그에 따라, 본원에 기술되는 컴퓨팅 플랫폼(1000)의 기능들 및/또는 특정 구성들이, 물리적 또는 논리적 네트워크 디바이스에 대해 적당히 원하는 바에 따라, 컴퓨팅 플랫폼(1000)의 다양한 실시예들에 포함되거나 생략될 수 있다.As noted above, computing platform 1000 may be implemented in a single network device or a logical network device made up of disaggregated physical components or elements that are constructed from a shared pool of configurable computing resources. Accordingly, functions and/or specific configurations of computing platform 1000 described herein may be included or omitted in various embodiments of computing platform 1000 as suitably desired for a physical or logical network device. there is.

컴퓨팅 플랫폼(1000)의 컴포넌트들 및 특징부들은 개별 회로부, ASIC(application specific integrated circuit), 논리 게이트 및/또는 단일 칩 아키텍처의 임의의 조합을 사용하여 구현될 수 있다. 게다가, 컴퓨팅 플랫폼(1000)의 특징부들이, 적당히 적절한 경우, 마이크로컨트롤러, 프로그램가능 논리 어레이 및/또는 마이크로프로세서 또는 전술한 것들의 임의의 조합을 사용하여 구현될 수 있다. 유의할 점은, 하드웨어, 펌웨어 및/또는 소프트웨어 요소들이 전체적으로 또는 개별적으로 본원에서 "로직" 또는 "회로"라고 지칭될 수 있다는 것이다. The components and features of computing platform 1000 may be implemented using any combination of discrete circuitry, application specific integrated circuits (ASICs), logic gates, and/or single chip architectures. Moreover, features of the computing platform 1000 may be implemented using a microcontroller, programmable logic array and/or microprocessor, or any combination of the foregoing, where appropriate and appropriate. It should be noted that hardware, firmware and/or software elements may be referred to herein as “logic” or “circuitry”, either individually or in whole.

도 10의 블록도에 도시된 예시적인 컴퓨팅 플랫폼(1000)이 많은 잠재적인 구현들의 하나의 기능 설명 예를 나타낼 수 있다는 것을 잘 알 것이다. 그에 따라, 첨부 도면들에 도시된 블록 기능들의 분할, 생략 또는 포함은 이 기능들을 구현하기 위한 하드웨어 컴포넌트들, 회로들, 소프트웨어 및/또는 요소들이 실시예들에서 꼭 분할, 생략 또는 포함된다는 것을 암시하지는 않는다.It will be appreciated that the example computing platform 1000 shown in the block diagram of FIG. 10 may represent one functionally descriptive example of many potential implementations. Accordingly, division, omission or inclusion of block functions shown in the accompanying drawings implies that hardware components, circuits, software and/or elements for implementing these functions are necessarily divided, omitted or included in the embodiments. don't

적어도 하나의 예의 하나 이상의 양태들은, 머신, 컴퓨팅 디바이스 또는 시스템에 의해 판독될 때, 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금 본원에 기술되는 기법들을 수행하는 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 표현하는 적어도 하나의 머신 판독가능 매체 상에 저장된 대표적인 명령어들로 구현될 수 있다. "IP 코어"라고 알려진 이러한 표현들은 유형적(tangible) 머신 판독가능 매체 상에 저장되고, 로직 또는 프로세서를 실제로 제조하는 제조 머신에 로딩하기 위해, 다양한 고객들 또는 제조 시설들에 공급될 수 있다.One or more aspects of at least one example represent various logic within a processor that, when read by a machine, computing device, or system, causes the machine, computing device, or system to manufacture logic that performs the techniques described herein. It may be implemented in representative instructions stored on at least one machine readable medium. These representations, known as “IP cores,” may be stored on a tangible machine-readable medium and supplied to various customers or manufacturing facilities for loading into a manufacturing machine that actually manufactures the logic or processor.

다양한 예들이 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 사용하여 구현될 수 있다. 일부 예들에서, 하드웨어 요소들은 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 회로 요소(예컨대, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuit), PLD(programmable logic device), DSP(digital signal processor), FPGA(field programmable gate array), 메모리 유닛, 논리 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 일부 예들에서, 소프트웨어 요소들은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, API(application program interface), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 일 예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은, 주어진 구현에 대해 원하는 바에 따라, 원하는 계산 속도, 전력 레벨, 열 허용오차, 처리 사이클 버짓, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약조건들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.Various examples may be implemented using hardware elements, software elements, or a combination of the two. In some examples, hardware elements are devices, components, processors, microprocessors, circuits, circuit elements (eg, transistors, resistors, capacitors, inductors, etc.), integrated circuits, application specific integrated circuits (ASICs), programmable logic devices (PLDs). , a digital signal processor (DSP), a field programmable gate array (FPGA), a memory unit, a logic gate, a register, a semiconductor device, a chip, a microchip, a chipset, and the like. In some examples, software elements are software component, program, application, computer program, application program, system program, machine program, operating system software, middleware, firmware, software module, routine, subroutine, function, method, procedure, software may comprise an interface, application program interface (API), instruction set, computing code, computer code, code segment, computer code segment, word, value, symbol, or any combination thereof. Determining whether an example is implemented using hardware elements and/or software elements determines a desired computational speed, power level, thermal tolerance, processing cycle budget, input data rate, output data rate, as desired for a given implementation. , memory resources, data bus speed, and other design or performance constraints.

일부 예들은 제조 물품 또는 적어도 하나의 컴퓨터 판독가능 매체를 포함할 수 있다. 컴퓨터 판독가능 매체는 로직을 저장하는 비일시적 저장 매체를 포함할 수 있다. 일부 예들에서, 비일시적 저장 매체는 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 소거가능 또는 비소거가능 메모리, 기입가능 또는 재기입가능 메모리 등을 비롯한, 전자 데이터를 저장할 수 있는 하나 이상의 유형들의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 일부 예들에서, 로직은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, API, 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합과 같은, 다양한 소프트웨어 요소들을 포함할 수 있다.Some examples may include an article of manufacture or at least one computer-readable medium. Computer-readable media can include non-transitory storage media that store logic. In some examples, the non-transitory storage medium is one or more tangible types of storage media capable of storing electronic data, including volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writable or rewritable memory, and the like. computer-readable storage media of In some examples, logic is a software component, program, application, computer program, application program, system program, machine program, operating system software, middleware, firmware, software module, routine, subroutine, function, method, procedure, software interface , API, instruction set, computing code, computer code, code segment, computer code segment, word, value, symbol, or any combination thereof.

일부 예들에 따르면, 컴퓨터 판독가능 매체는, 머신, 컴퓨팅 디바이스 또는 시스템에 의해 실행될 때, 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금 기술된 예들에 따른 방법들 및/또는 동작들을 수행하게 하는 명령어들을 저장하거나 유지하는 비일시적 저장 매체를 포함할 수 있다. 명령어들은, 소스 코드, 컴파일된 코드, 인터프리트된 코드, 실행가능 코드, 정적 코드, 동적 코드 등과 같은, 임의의 적당한 유형의 코드를 포함할 수 있다. 명령어들은 특정의 기능을 수행하라고 머신, 컴퓨팅 디바이스 또는 시스템에 지시하는 미리 정의된 컴퓨터 언어, 방식 또는 구문에 따라 구현될 수 있다. 명령어들은 임의의 적당한 상위 레벨, 하위 레벨, 객체 지향, 비주얼, 컴파일된 및/또는 인터프리트된 프로그래밍 언어를 사용하여 구현될 수 있다.According to some examples, a computer readable medium stores or maintains instructions that, when executed by a machine, computing device or system, cause the machine, computing device or system to perform methods and/or operations according to the described examples. It may include a non-transitory storage medium. 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 instructions may be implemented according to a predefined computer language, manner, or syntax that instructs a machine, computing device, or system to perform a particular function. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled, and/or interpreted programming language.

일부 예들은 표현 "일 예에서" 또는 "예"를 그의 파생어들과 함께 사용하여 기술될 수 있다. 이 용어들은 그 예와 관련하여 기술된 특정의 특징, 구조 또는 특성이 적어도 하나의 예에 포함되어 있다는 것을 의미한다. 명세서의 여러 곳에서 나오는 문구 "일 예에서"는 모두가 꼭 동일한 예를 지칭하는 것은 아니다.Some examples may be described using the expression “in an example” or “an example” along with its derivatives. These terms mean that a particular feature, structure, or characteristic described in connection with the example is included in at least one example. The phrases "in one example" in various places in the specification are not necessarily all referring to the same example.

일부 예들이 표현 "결합된" 및 "연결된"을 그의 파생어들과 함께 사용하여 기술될 수 있다. 이 용어들이 서로에 대해 꼭 동의어로서 의도되어 있지는 않다. 예를 들어, 용어 "연결된" 및/또는 "결합된"을 사용하여 기술한 것들은 2개 이상의 요소들이 서로 물리적으로 또는 전기적으로 직접 접촉하고 있다는 것을 나타낼 수 있다. 그렇지만, 용어 "결합된"은 또한 2개 이상의 요소들이 서로 직접 접촉하고 있지는 않지만 여전히 서로 협력하거나 상호작용하는 것을 의미할 수 있다.Some examples may be described using the expressions “coupled” and “connected” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, those described using the terms “connected” and/or “coupled” may indicate that two or more elements are in direct physical or electrical contact with each other. However, the term “coupled” can also mean that two or more elements are not in direct contact with each other but still cooperate or interact with each other.

이하의 예들은 본원에 개시되는 기술들의 부가 예들에 관한 것이다.The following examples relate to additional examples of the techniques disclosed herein.

예 1. 예시적인 장치는 호스트 컴퓨팅 플랫폼에 있는 회로부 및 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자(packet descriptor)들을 모니터링하기 위해 회로부에 의해 실행하기 위한 큐 컴포넌트를 포함할 수 있다. 큐 모듈은 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨(level of fullness)을 결정할 수 있다. 장치는 또한, 각각의 폴링 반복 이후에 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트(trend count)를 증분시킬 수 있는, 회로부에 의해 실행하기 위한 증분 컴포넌트를 포함할 수 있다. 장치는 또한 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시(performance indication)를 OS 전력 관리 모듈로 송신하기 위해 회로부에 의해 실행하기 위한 성능 컴포넌트를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.Example 1. An example apparatus maintains received and available packet descriptors in a receive queue for a NW I/O device across multiple polling iterations for a DPDK polling thread and circuitry in a host computing platform. It may include a queue component for execution by circuitry to monitor. The queue module may determine a level of fullness for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration. The apparatus may also include an increment component for execution by the circuitry that may increment a trend count based on a fullness level for the receive queue after each polling iteration. The apparatus may also include a performance component for execution by the circuitry to transmit a performance indication to the OS power management module based on whether the trend count exceeds a trend count threshold. The performance indication may cause 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. The apparatus of example 1, wherein the OS power management module capable of increasing a performance state of the processing element includes an OS power management module capable of causing an operating frequency of the processing element to be increased.

예 3. 예 1의 장치이고, 큐 컴포넌트에 의해 결정되는 충만도 레벨은 거의 비어 있음, 절반쯤 채워져 있음 또는 거의 채워져 있음 중 하나를 포함할 수 있다.Example 3. The apparatus of example 1, wherein the fullness level determined by the queue component may include one of nearly empty, half full, or near full.

예 4. 예 3의 장치이고, 증분 컴포넌트는 충만도 레벨이 거의 비어 있음인 것으로 큐 컴포넌트에 의해 결정되는 경우 작은 수만큼 또는 충만도 레벨이 절반쯤 채워져 있음인 것으로 큐 컴포넌트에 의해 결정되는 경우 큰 수만큼 - 큰 수는 작은 수의 대략 100배임 - 트렌드 카운트를 증분시킬 수 있다.Example 4. The apparatus of example 3, wherein the increment component is a small number if the fullness level is determined by the queue component to be nearly empty or large if the fullness level is determined by the queue component to be half full By a number - a large number is approximately 100 times the small number - the trend count can be incremented.

예 5. 예 3의 장치는 또한, 수신 큐가 거의 채워져 있는 것으로 큐 컴포넌트에 의해 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시를 OS 전력 관리 모듈로 송신하는 성능 컴포넌트를 포함할 수 있다. 높은 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수가 최고 동작 주파수로 증가되게 하는 것에 의해, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다.Example 5. The apparatus of example 3 is further configured to send a high performance indication to the OS power management module in response to a number of successive polling repetitions determined by the queue component as being near full to the receive queue exceeds a successive threshold. It may include performance components. The high performance indication may cause 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 be increased to the highest operating frequency.

예 5-1. 예 3의 장치이고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것일 수 있고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것일 수 있으며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것일 수 있다.Example 5-1. The device of Example 3, near empty may be 25% to 50% full, half full may be 51% to 75% full, and near full may be greater than 75% full.

예 6. 예 1의 장치이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소의 성능 상태를 증가시킬 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은 처리 요소의 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있을 것이고, 여기서 "n"은 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타낸다.Example 6. The device of example 1, wherein the OS power management module may be capable of increasing the performance state of the processing element in accordance with one or more industry standards, including the ACPI specification, revision 5.0. For these examples, the OS power management module may increase the performance state of the processing element to enter a Pn-1 performance state, where "n" represents the lowest performance state that results in the lowest operating frequency of the processing element.

예 7. 예 1의 장치는 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하는 큐 컴포넌트를 포함할 수 있다. 증분 컴포넌트는 연속적 문턱값(consecutive threshold)을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트(idle count)를 1의 카운트만큼 증분시킬 수 있다. 장치는 또한 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시키기 위해 회로부에 의해 실행하기 위한 슬립 컴포넌트를 포함할 수 있다. 이 예들에 대해, 제2 기간은 제1 기간보다 더 길 수 있다.Example 7. The apparatus of example 1 may also include a queue component that determines a number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after each polling iteration. can The increment component may increment an idle count by a count of one if the number of packets received for a number of consecutive polling iterations exceeding a consecutive threshold is zero. The apparatus may also include a sleep component for execution by the circuitry to sleep the DPDK polling thread for one of a first period or a second period based on whether the idle count exceeds or is below the first idle count threshold. can For these examples, the second period of time may be longer than the first period of time.

예 8. 예 7의 장치는 또한 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는지에 기초하여 원샷 Rx 인터럽트(one-shot Rx interrupt)를 인에이블시킬 수 있는 인터럽트 턴 온 메시지(interrupt turn on message)를 NW I/O 디바이스로 송신하기 위해 회로부에 의해 실행하기 위한 인터럽트 제어 컴포넌트를 포함할 수 있다.Example 8. The apparatus of example 7 may also include an interrupt turn on message capable of enabling a one-shot Rx interrupt based on whether the idle count exceeds a second idle count threshold. may include an interrupt control component for execution by the circuitry to transmit to the NW I/O device.

예 9. 예 7의 장치이고, 슬립 컴포넌트는, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있고, 긴 슬립 표시를 OS 전력 관리 모듈로 송신할 수 있다. 긴 슬립 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.Example 9. The apparatus of example 7, wherein the sleep component is further configured to: based on the idle count exceeding the first idle count threshold, sleep the DPDK polling thread for a second period of time, and provide a long sleep indication to the OS power management module can be sent to The long sleep indication may cause the OS power management module to cause the processing element executing the DPDK polling thread to be in the sleep mode for up to a second period of time.

예 10. 예 9의 장치는 또한 타이머 간격을 가지는 타이머를 개시하기 위해 회로부에 의해 실행하기 위한 타이머 컴포넌트를 포함할 수 있다. 슬립 컴포넌트는, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPDK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정할 수 있다. 성능 컴포넌트는, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.Example 10. The apparatus of example 9 may also include a timer component for execution by circuitry to initiate a timer having a timer interval. The sleep component may, in response to the timer expire, determine the percentage of iterations in which the DPDK polling thread was sleeping during the timer interval. The performance component may send a performance indication to the OS power management module based on whether the percentage is above a percentage threshold. The performance indication may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency or reducing the operating voltage of the processing element.

예 11. 예 9의 장치는 또한 타이머 간격을 가지는 타이머를 개시하기 위해 회로부에 의해 실행하기 위한 타이머 컴포넌트를 포함할 수 있다. 큐 컴포넌트는, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정할 수 있다. 성능 컴포넌트는, 반복당 평균 패킷이 패킷 평균 문턱값 미만인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.Example 11. The apparatus of example 9 may also include a timer component for execution by the circuitry to initiate a timer having a timer interval. The queue component may, in response to the timer expire, determine an average packet per repetition for packets received in the receive queue during the timer interval. The performance component may send a performance indication to the OS power management module based on whether the average packets per iteration is below a packet average threshold. The performance indication may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency of the processing element.

예 12. 예 9의 장치이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소를 슬립 모드에 둘 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은, 슬립 표시에 응답하여 처리 요소를 슬립 모드에 두기 위해, 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 할 수 있다.Example 12. The apparatus of example 9, wherein the OS power management module may be capable of placing the processing element in a sleep mode in accordance with one or more industry standards, including the ACPI specification, revision 5.0. For these examples, the OS power management module may cause the processing element to enter at least a C1 processor power state to put the processing element in a sleep mode in response to the sleep indication.

예 13. 예 7의 장치이고, 연속적 문턱값은 5개의 반복들일 수 있고, 각각의 폴링 반복은 대략 1 마이크로초마다 행해질 수 있다.Example 13 The apparatus of example 7, wherein the successive threshold may be 5 iterations, and each polling iteration may be approximately every 1 microsecond.

예 14. 예 13의 장치이고, 유휴 카운트가 제1 유휴 카운트 문턱값 미만이라는 것을 나타내는 슬립 표시는 DPDK 폴링 스레드를 제1 기간 동안 슬립시킬 수 있다. 이 예들에 대해, 제1 기간은 대략 5개의 폴링 반복들만큼 지속될 수 있다.Example 14. The apparatus of example 13, wherein the sleep indication indicating that the idle count is less than the first idle count threshold may sleep the DPDK polling thread for a first period of time. For these examples, the first period may last approximately 5 polling iterations.

예 15. 예 13의 장치이고, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한다는 것을 나타내는 슬립 표시는 DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있다. 이 예들에 대해, 제2 기간은 대략 50개의 폴링 반복들만큼 지속될 수 있다.Example 15. The apparatus of example 13, wherein the sleep indication indicating that the idle count exceeds the first idle count threshold may sleep the DPDK polling thread for a second period of time. For these examples, the second period may last approximately 50 polling iterations.

예 16. 예 1의 장치이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.Example 16 The apparatus of example 1, wherein the processing element can include one of a core of a multicore processor or a virtual machine supported by one or more cores of the multicore processor.

예 17. 예 1의 장치이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서(load balancer) 애플리케이션 중 하나를 포함할 수 있다.Example 17 The apparatus of example 1, wherein the DPDK polling thread may execute a network packet processing application to process packets received by the NW I/O device. The network packet processing application may include one of a firewall application, a VPN application, a NAT application, a DPI application, or a load balancer application.

예 18. 예 1의 장치는 또한 사용자 인터페이스 뷰(user interface view)를 제시하기 위해 회로부에 결합된 디지털 디스플레이를 포함할 수 있다.Example 18. The apparatus of example 1 may also include a digital display coupled to the circuitry to present a user interface view.

예 19. 예시적인 방법은 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 단계를 포함할 수 있다. 방법은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정하는 단계를 포함할 수 있다. 방법은 또한 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시키는 단계를 포함할 수 있다. 방법은 또한 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.Example 19. An example method may include monitoring received and available packet descriptors maintained in a receive queue for a NW I/O device across multiple polling iterations for a DPDK polling thread. The method may also include determining a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration. The method may also include incrementing the trend count based on the fullness level for the receive queue. The method may also include sending a performance indication to the OS power management module based on whether the trend count exceeds a trend count threshold. The performance indication may cause 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 The method of example 19, wherein the OS power management module to increase a performance state of the processing element includes an OS power management module capable of causing an operating frequency of the processing element to be increased.

예 21. 예 19의 방법이고, 충만도 레벨은 거의 비어 있음, 절반쯤 채워져 있음 또는 거의 채워져 있음 중 하나를 포함할 수 있다.Example 21. The method of example 19, wherein the fullness level can include one of nearly empty, half full, or nearly full.

예 22. 예 21의 방법이고, 충만도 레벨이 거의 비어 있음인 경우 작은 수만큼 또는 충만도 레벨이 절반쯤 채워져 있음인 경우 큰 수만큼 트렌드 카운트를 증분시키는 단계를 포함한다. 이 예들에 대해, 큰 수는 작은 수의 대략 100배일 수 있다.Example 22 The method of example 21, comprising incrementing the trend count by a small number if the fullness level is nearly empty or by a large number if the fullness level is half full. For these examples, the large number may be approximately 100 times the small number.

예 23. 예 21의 방법은 또한, 수신 큐가 거의 채워져 있는 것으로 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 높은 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 최고 동작 주파수로 증가시키는 것을 비롯하여, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다.Example 23. The method of example 21 also includes sending a high performance indication to the OS power management module in response to a number of consecutive polling iterations in which it is determined that the receive queue is near full exceeds a consecutive threshold. can The high performance indication may cause the OS power management module to increase the performance state of the processing element to the highest performance state, including increasing the operating frequency of the processing element to the highest operating frequency.

예 24. 예 21의 방법이고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것일 수 있고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것일 수 있으며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것일 수 있다.Example 24. The method of example 21, wherein nearly empty may be 25% to 50% full, half full may be 51% to 75% full, and near full may be greater than 75% full can

예 25. 예 19의 방법이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소의 성능 상태를 증가시킬 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은 처리 요소의 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있을 것이고, 여기서 "n"은 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타낸다.Example 25 The method of example 19, wherein the OS power management module may increase the performance state of the processing element according to one or more industry standards, including the ACPI specification, revision 5.0. For these examples, the OS power management module may increase the performance state of the processing element to enter a Pn-1 performance state, where "n" represents the lowest performance state that results in the lowest operating frequency of the processing element.

예 26. 예 17의 방법이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.Example 26 The method of example 17, wherein the processing element can include one of a core of a multicore processor or a virtual machine supported by one or more cores of the multicore processor.

예 27. 예 19의 방법이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.Example 27 The method of example 19, wherein the DPDK polling thread may execute a network packet processing application to process packets received by the NW I/O device. The network packet processing application may include one of a firewall application, a VPN application, a NAT application, a DPI application, or a load balancer application.

예 28. 예시적인 적어도 하나의 머신 판독가능 매체는, 시스템에 의해 실행되는 것에 응답하여, 시스템으로 하여금 예 19 내지 예 27 중 어느 한 예에 따른 방법을 수행하게 할 수 있는 복수의 명령어들을 포함할 수 있다.Example 28. The exemplary at least one machine readable medium may include a plurality of instructions that, in response to being executed by the system, may cause the system to perform a method according to any of examples 19-27. can

예 29. 장치는 예 19 내지 예 27 중 어느 한 예의 방법을 수행하는 수단을 포함할 수 있다.Example 29. An apparatus may include means for performing the method of any of examples 19-27.

예 30. 예시적인 적어도 하나의 머신 판독가능 매체는, 호스트 컴퓨팅 플랫폼에 있는 시스템 상에서 실행되는 것에 응답하여, 시스템으로 하여금 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하게 하는 복수의 명령어들을 포함할 수 있다. 명령어들은 또한 시스템으로 하여금 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시키고 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.Example 30. The example at least one machine readable medium, in response to being executed on a system at a host computing platform, causes the system to receive for a NW I/O device over multiple polling iterations for a DPDK polling thread. It may include a plurality of instructions to monitor received and available packet descriptors maintained in a queue. The instructions may also cause the system to determine a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration. The instructions may also cause the system to increment the trend count based on the fullness level for the receive queue and send a performance indication to the OS power management module based on whether the trend count exceeds a trend count threshold. The performance indication may cause the OS power management module to increase the performance state of the processing element executing the DPDK polling thread.

예 31. 예 30의 적어도 하나의 머신 판독가능 매체이고, 처리 요소의 성능 상태를 증가시키는 OS 전력 관리 모듈은 처리 요소의 동작 주파수가 증가되게 할 수 있는 OS 전력 관리 모듈을 포함할 수 있다.Example 31. The at least one machine readable medium of example 30, wherein the OS power management module for increasing a performance state of a processing element may include an OS power management module capable of causing an operating frequency of the processing element to be increased.

예 32. 예 30의 적어도 하나의 머신 판독가능 매체이고, 충만도 레벨은 거의 비어 있음, 절반쯤 채워져 있음 또는 거의 채워져 있음 중 하나를 포함할 수 있다.Example 32. The at least one machine readable medium of example 30, wherein the fullness level can include one of nearly empty, half full, or near full.

예 33. 예 32의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 시스템으로 하여금 충만도 레벨이 거의 비어 있음인 경우 작은 수만큼 또는 충만도 레벨이 절반쯤 채워져 있음인 경우 큰 수만큼 트렌드 카운트를 증분시키게 할 수 있다. 이 예들에 대해, 큰 수는 작은 수의 대략 100배일 수 있다.Example 33. The at least one machine readable medium of example 32, the instructions to cause the system to increment the trend count by a small number if the fullness level is nearly empty or by a large number if the fullness level is half full. can make it For these examples, the large number may be approximately 100 times the small number.

예 34. 예 32의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금, 수신 큐가 거의 채워져 있는 것으로 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 이 예들에 대해, 높은 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 최고 동작 주파수로 증가시키는 것을 비롯하여, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다.Example 34. The at least one machine readable medium of example 32, the instructions further causing the system to further cause the system to: in response to a number of consecutive polling iterations in which it is determined that the receive queue is near full exceeds a consecutive threshold, the high performance An indication may be sent to the OS power management module. For these examples, the high performance indication may cause the OS power management module to increase the performance state of the processing element to the highest performance state, including increasing the operating frequency of the processing element to the highest operating frequency.

예 35. 예 32의 적어도 하나의 머신 판독가능 매체이고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것일 수 있고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것일 수 있으며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것일 수 있다.Example 35. The at least one machine readable medium of example 32, wherein substantially empty may be 25% to 50% full, half full may be 51% to 75% full, and wherein It may be more than 75% full.

예 36. 예 30의 적어도 하나의 머신 판독가능 매체이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소의 성능 상태를 증가시킬 수 있을 것이다. OS 전력 관리 모듈은 처리 요소의 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있을 것이고, 여기서 "n"은 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타낸다.Example 36 The at least one machine readable medium of example 30, wherein the OS power management module may be capable of increasing the performance state of the processing element according to one or more industry standards, including the ACPI specification, revision 5.0. The OS power management module may increase the performance state of the processing element to enter a Pn-1 performance state, where "n" represents the lowest performance state that results in the lowest operating frequency of the processing element.

예 37. 예 30의 적어도 하나의 머신 판독가능 매체이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.Example 37 The at least one machine readable medium of example 30, wherein the processing element can include one of a core of a multicore processor or a virtual machine supported by one or more cores of a multicore processor.

예 38. 예 30의 적어도 하나의 머신 판독가능 매체이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.Example 38. The at least one machine readable medium of example 30, wherein the DPDK polling thread is capable of executing a network packet processing application to process packets received by the NW I/O device. The network packet processing application may include one of a firewall application, a VPN application, a NAT application, a DPI application, or a load balancer application.

예 39. 예시적인 방법은 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 단계를 포함할 수 있다. 방법은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하는 단계를 포함할 수 있다. 방법은 또한 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시키는 단계를 포함할 수 있다. 방법은 또한 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시키는 단계를 포함할 수 있다. 제2 기간은 제1 기간보다 더 길 수 있다.Example 39. An example method may include monitoring received and available packet descriptors maintained in a receive queue for a NW I/O device across multiple polling iterations for a DPDK polling thread. The method may also include determining a number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after each polling iteration. The method may also include incrementing the idle count by a count of one if the number of packets received for a number of successive polling iterations exceeding the successive threshold is zero. The method may also include sleeping the DPDK polling thread for one of the first period or the second period based on whether the idle count is above or below the first idle count threshold. The second period of time may be longer than the first period.

예 40. 예 39의 방법은 또한, 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는 것에 기초하여, 인터럽트 턴 온 힌트를 NW I/O 디바이스로 송신하고 DPDK 폴링 스레드를 일시중지시키는 단계를 포함할 수 있다.Example 40. The method of example 39 further includes sending an interrupt turn on hint to the NW I/O device and suspending the DPDK polling thread based on the idle count exceeding a second idle count threshold. can

예 41. 예 39의 방법은 또한, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는 것에 기초하여, DPDK 폴링 스레드가 제2 기간 동안 슬립한다. 방법은 또한 긴 슬립 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 긴 슬립 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.Example 41. The method of example 39 further, based on the idle count exceeding the first idle count threshold, the DPDK polling thread sleeps for a second period of time. The method may also include sending a long sleep indication to the OS power management module. The long sleep indication may cause the OS power management module to cause the processing element executing the DPDK polling thread to be in the sleep mode for up to a second period of time.

예 42. 예 41의 방법은 또한 타이머 간격을 가지는 타이머를 개시하는 단계를 포함할 수 있다. 방법은 또한, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPDK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정하는 단계를 포함할 수 있다. 방법은 또한, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.Example 42. The method of example 41 can also include starting a timer having a timer interval. The method may also include, in response to the timer expiring, determining a percentage of iterations in which the DPDK polling thread was sleeping during the timer interval. The method may also include sending a performance indication to the OS power management module based on whether the percentage is above a percentage threshold. The performance indication may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency or reducing the operating voltage of the processing element.

예 43. 예 41의 방법은 또한, 타이머 간격을 가지는 타이머를 개시하는 단계를 포함할 수 있다. 방법은 또한, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정하는 단계를 포함할 수 있다. 방법은 또한, 반복당 평균 패킷이 패킷 평균 문턱값 미만인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있다.Example 43. The method of example 41 can also include starting a timer having a timer interval. The method may also include determining, in response to the timer expiring, an average packet per repetition for packets received in the receive queue during the timer interval. The method may also include sending a performance indication to the OS power management module based on whether the average packets per iteration is below a packet average threshold. The performance indication may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency of the processing element.

예 44. 예 41의 방법이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소를 슬립 모드에 둘 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은, 슬립 표시에 응답하여 처리 요소를 슬립 모드에 두기 위해, 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 할 수 있다.Example 44 The method of example 41, wherein the OS power management module may be capable of placing the processing element in a sleep mode in accordance with one or more industry standards, including the ACPI specification, revision 5.0. For these examples, the OS power management module may cause the processing element to enter at least a C1 processor power state to put the processing element in a sleep mode in response to the sleep indication.

예 45. 예 41의 방법이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나일 수 있다.Example 45 The method of example 41, wherein the processing element can be one of a core of a multicore processor or a virtual machine supported by one or more cores of the multicore processor.

예 46. 예 39의 방법이고, 연속적 문턱값은 5개의 반복들일 수 있고, 각각의 폴링 반복은 대략 1 마이크로초마다 행해질 수 있다.Example 46 The method of example 39, wherein the successive threshold may be 5 iterations, and each polling iteration may be approximately every 1 microsecond.

예 47. 예 46의 방법이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값 미만이라는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제1 기간 동안 슬립시킬 수 있다. 제1 기간은 대략 5개의 폴링 반복들만큼 지속될 수 있다.Example 47 The method of example 46, wherein the sleep indication may indicate that the idle count is less than a first idle count threshold, and may sleep the DPDK polling thread for a first period of time. The first period may last approximately 5 polling iterations.

예 48. 예 46의 방법이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한다는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있다. 제2 기간은 대략 50개의 폴링 반복들만큼 지속될 수 있다.Example 48 The method of example 46, wherein the sleep indication may indicate that the idle count exceeds a first idle count threshold, and may sleep the DPDK polling thread for a second period of time. The second period may last approximately 50 polling iterations.

예 49. 예 39의 방법이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.Example 49 The method of example 39, wherein the DPDK polling thread may execute a network packet processing application to process packets received by the NW I/O device. The network packet processing application may include one of a firewall application, a VPN application, a NAT application, a DPI application, or a load balancer application.

예 50. 예시적인 적어도 하나의 머신 판독가능 매체는, 호스트 컴퓨팅 플랫폼에 있는 시스템에 의해 실행되는 것에 응답하여, 시스템으로 하여금 예 39 내지 예 49 중 어느 한 예에 따른 방법을 수행하게 할 수 있는 복수의 명령어들을 포함할 수 있다.Example 50. Illustrative at least one machine readable medium includes a plurality of, in response to being executed by a system at a host computing platform, capable of causing a system to perform a method according to any one of examples 39-49. may contain commands.

예 51. 예시적인 장치는 예 39 내지 예 49 중 어느 한 예의 방법을 수행하는 수단을 포함할 수 있다.Example 51. An exemplary apparatus can include means for performing the method of any one of examples 39-49.

예 52. 예시적인 적어도 하나의 머신 판독가능 매체는, 호스트 컴퓨팅 플랫폼에 있는 시스템 상에서 실행되는 것에 응답하여, 시스템으로 하여금 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하게 할 수 있는 복수의 명령어들을 포함할 수 있다. 명령어들은 또한 시스템으로 하여금 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시키게 할 수 있다. 명령어들은 또한, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시키게 할 수 있다. 제2 기간은 제1 기간보다 더 길 수 있다.Example 52. The example at least one machine-readable medium, in response to being executed on a system at a host computing platform, causes the system to receive for a NW I/O device over multiple polling iterations for a DPDK polling thread. It may include a plurality of instructions that may allow monitoring of received and available packet descriptors maintained in a queue. The instructions may also cause the system to determine the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after each polling iteration. The instructions may also cause the system to increment the idle count by a count of one if the number of packets received is zero for a number of successive polling iterations exceeding the successive threshold. The instructions may also cause the DPDK polling thread to sleep for one of the first period or the second period based on whether the idle count is above or below the first idle count threshold. The second period of time may be longer than the first period.

예 53. 예 52의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금, 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는 것에 기초하여, 인터럽트 턴 온 힌트를 NW I/O 디바이스로 송신하게 하고 DPDK 폴링 스레드를 일시중지시키게 할 수 있다.Example 53. The at least one machine readable medium of example 52, the instructions further causing the system to cause the system to send an interrupt turn on hint to the NW I/O device based on the idle count exceeding a second idle count threshold. Send and pause the DPDK polling thread.

예 54. 예 52의 적어도 하나의 머신 판독가능 매체이고, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는 것에 기초하여, DPDK 폴링 스레드가 제2 기간 동안 슬립한다. 명령어들은 추가로 시스템으로 하여금 긴 슬립 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 긴 슬립 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.Example 54. The at least one machine readable medium of example 52, wherein based on the idle count exceeding the first idle count threshold, the DPDK polling thread sleeps for a second period of time. The instructions may further cause the system to send a long sleep indication to the OS power management module. The long sleep indication may cause the OS power management module to cause the processing element executing the DPDK polling thread to be in the sleep mode for up to a second period of time.

예 55. 예 54의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금 타이머 간격을 가지는 타이머를 개시하게 하고, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPDK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.Example 55. The at least one machine readable medium of example 54, the instructions further to cause the system to start a timer having a timer interval, and in response to the timer expiring, the DPDK polling thread was sleeping during the timer interval. Lets you determine the percentage of iterations. The instructions may also cause the system to send a performance indication to the OS power management module based on whether the percentage is above a percentage threshold. The performance indication may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency or reducing the operating voltage of the processing element.

예 56. 예 54의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금 타이머 간격을 가지는 타이머를 개시하게 하고, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금, 반복당 평균 패킷이 패킷 평균 문턱값 미만인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있다.Example 56. The at least one machine readable medium of example 54, the instructions further to cause the system to start a timer having a timer interval, and in response to the timer expiring, packets received in the receive queue during the timer interval Determine the average packet per iteration for . The instructions may also cause the system to send a performance indication to the OS power management module based on whether the average packets per iteration is below a packet average threshold. The performance indication may cause the OS power management module to degrade the performance state of the processing element, including reducing the operating frequency of the processing element.

예 57. 예 54의 적어도 하나의 머신 판독가능 매체이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소를 슬립 모드에 둘 수 있을 것이다. OS 전력 관리 모듈은, 슬립 표시에 응답하여 처리 요소를 슬립 모드에 두기 위해, 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 할 수 있다.Example 57. The at least one machine readable medium of example 54, wherein the OS power management module is capable of putting the processing element in a sleep mode in accordance with one or more industry standards, including the ACPI specification, revision 5.0. The OS power management module may cause the processing element to enter at least a C1 processor power state to put the processing element in a sleep mode in response to the sleep indication.

예 58. 예 54의 적어도 하나의 머신 판독가능 매체이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.Example 58 The at least one machine readable medium of example 54, wherein the processing element can include one of a core of a multicore processor or a virtual machine supported by one or more cores of a multicore processor.

예 59. 예 51의 적어도 하나의 머신 판독가능 매체이고, 연속적 문턱값은 5개의 반복들을 포함할 수 있고, 각각의 폴링 반복은 대략 1 마이크로초마다 행해질 수 있다.Example 59. The at least one machine readable medium of example 51, wherein the successive threshold may include 5 iterations, and each polling iteration may be approximately every 1 microsecond.

예 60. 예 59의 적어도 하나의 머신 판독가능 매체이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값 미만이라는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제1 기간 동안 슬립시킬 수 있다. 제1 기간은 대략 5개의 폴링 반복들만큼 지속될 수 있다.Example 60 The at least one machine readable medium of example 59, wherein the sleep indication can indicate that the idle count is less than a first idle count threshold, and can sleep the DPDK polling thread for a first period of time. The first period may last approximately 5 polling iterations.

예 61. 예 59의 적어도 하나의 머신 판독가능 매체이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한다는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있다. 제2 기간은 대략 50개의 폴링 반복들만큼 지속될 수 있다.Example 61 The at least one machine readable medium of example 59, wherein the sleep indication can indicate that the idle count exceeds a first idle count threshold, and can put the DPDK polling thread to sleep for a second period of time. The second period may last approximately 50 polling iterations.

예 62. 예 52의 적어도 하나의 머신 판독가능 매체이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.Example 62. The at least one machine readable medium of example 52, wherein the DPDK polling thread is capable of executing a network packet processing application to process packets received by the NW I/O device. The network packet processing application may include one of a firewall application, a VPN application, a NAT application, a DPI application, or a load balancer application.

강조할 점은, 읽는 사람이 기술적 개시 내용의 요지를 빠르게 확인할 수 있게 할 요약서를 요구하는, 37 C.F.R. 섹션 1.72(b)에 부합하기 위해 본 개시내용의 요약서가 제공된다는 것이다. 요약서는 청구항들의 범주 또는 의미를 해석하거나 제한하는 데 사용되지 않는다는 이해 하에 제공된다. 그에 부가하여, 전술한 발명을 실시하기 위한 구체적인 내용에서, 본 개시내용을 간소화하기 위해 다양한 특징들이 단일의 실시예에 함께 그룹화되어 있다는 것을 알 수 있다. 이러한 개시 방법이 청구된 예들이 각각의 청구항에 명확하게 인용되어 있는 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 이하의 청구항들이 반영하는 바와 같이, 본 발명의 발명 요지는 단일의 개시된 예의 특징들 전부가 아닌 일부에 있다. 따라서, 이하의 청구항들은 이로써 발명을 실시하기 위한 구체적인 내용에 포함되며, 각각의 청구항은 그 자체로서 개별적인 예로서의 지위를 갖는다. 첨부된 청구항들에서, 용어들 "포함하는(including)" 그리고 "여기서(in which)"는 각자의 용어들 "포함하는(comprising)" 그리고 "여기서(wherein)"의 평이한 영어 동등어로서 사용된다. 더욱이, 용어들 "제1", "제2" 및 "제3" 등은 단순히 수식어로서 사용되고, 그의 대상물들에 대한 수치적 요구사항들을 부과하려는 것으로 의도되어 있지 않다.It should be emphasized that 37 C.F.R. that an abstract of the present disclosure is provided to comply with Section 1.72(b). The abstract is provided with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing detailed description, it can be seen that various features are grouped together in a single embodiment in order to streamline the present disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed examples require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in some, but not all, features of a single disclosed example. Accordingly, the following claims are hereby incorporated into the detailed description for carrying out the invention, with each claim standing on its own as a separate example. In the appended claims, the terms "including" and "in which" are used as plain English equivalents of the respective terms "comprising" and "wherein". . Moreover, the terms "first," "second," and "third," etc. are used merely as modifiers and are not intended to impose numerical requirements on their objects.

비록 발명 요지가 구조적 특징들 및/또는 방법 동작들과 관련하여 기술되어 있지만, 첨부된 청구항들에 한정된 발명 요지가 앞서 기술된 특정의 특징들 또는 동작들로 꼭 제한되는 것은 아님을 잘 알 것이다. 오히려, 앞서 기술된 특정의 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태들로서 개시되어 있다.Although the subject matter has been described in terms of structural features and/or method acts, it will be appreciated that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

Claims (30)

장치로서,
호스트 컴퓨팅 플랫폼에 있는 회로부;
DPDK(data plane development kit) 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O(network input/output) 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자(packet descriptor)들을 모니터링하기 위해 상기 회로부에 의해 실행하기 위한 큐 컴포넌트(queue component) - 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 상기 수신 큐에 대한 충만도 레벨(level of fullness)을 결정하고, 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여, 각각의 폴링 반복에 대해 상기 수신 큐에 수신되는 패킷들의 개수를 결정함 -;
각각의 폴링 반복 이후에 상기 수신 큐에 대한 상기 충만도 레벨에 기초하여 트렌드 카운트(trend count)를 증분시키기 위해 상기 회로부에 의해 실행하기 위한 증분 컴포넌트(increment component) - 상기 증분 컴포넌트는 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트(idle count)를 1의 카운트만큼 증분시킴 - ;
상기 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여, 성능 표시(performance indication)를 OS(operating system) 전력 관리 모듈로 송신하기 위해 상기 회로부에 의해 실행하기 위한 성능 컴포넌트(performance component) - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있음 - ;
상기 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 상기 DPDK 폴링 스레드를 슬립시키기 위해 상기 회로부에 의해 실행하기 위한 슬립 컴포넌트(sleep component) - 상기 제2 기간은 상기 제1 기간보다 더 김 - ; 및
상기 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는지에 기초하여, 원샷 수신(Rx) 인터럽트를 인에이블시킬 수 있는 인터럽트 턴 온 메시지(interrupt turn on message)를 상기 NW I/O 디바이스로 송신하기 위해 상기 회로부에 의해 실행하기 위한 인터럽트 제어 컴포넌트(interrupt control component)
를 포함하는, 장치.
As a device,
circuitry in the host computing platform;
Monitoring received and available packet descriptors maintained in a receive queue for a NW network input/output (NW I/O) device across multiple polling iterations for a data plane development kit (DPDK) polling thread. a queue component for execution by the circuitry to: the queue component provides a level of fullness for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration. fullness), and the queue component determines the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after each polling iteration; ;
an increment component for execution by the circuitry to increment a trend count based on the fullness level for the receive queue after each polling iteration, wherein the increment component sets a successive threshold increment the idle count by a count of 1 if the number of packets received for an exceeding number of consecutive polling iterations is 0;
a performance component for executing by the circuitry to transmit a performance indication to an operating system (OS) power management module based on whether the trend count exceeds a trend count threshold - the performance the indication may cause the OS power management module to increase the performance state of a processing element executing the DPDK polling thread;
a sleep component for execution by the circuitry to sleep the DPDK polling thread for one of a first period or a second period based on whether the idle count is above or below a first idle count threshold component), wherein the second period is longer than the first period; and
based on whether the idle count exceeds a second idle count threshold, to send an interrupt turn on message capable of enabling a one-shot receive (Rx) interrupt to the NW I/O device. an interrupt control component for execution by the circuitry;
A device comprising a.
제1항에 있어서, 상기 처리 요소의 상기 성능 상태를 증가시키는 상기 OS 전력 관리 모듈은 상기 처리 요소의 동작 주파수가 증가되게 할 수 있는 상기 OS 전력 관리 모듈을 포함하는, 장치.The apparatus of claim 1 , wherein the OS power management module for increasing the performance state of the processing element comprises the OS power management module capable of causing an operating frequency of the processing element to be increased. 제1항에 있어서, 상기 큐 컴포넌트에 의해 결정되는 상기 충만도 레벨은 거의 비어 있음(near empty), 절반쯤 채워져 있음(half full) 또는 거의 채워져 있음(near full) 중 하나를 포함하고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것이고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것이며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것인, 장치.2. The method of claim 1, wherein the fullness level determined by the queue component comprises one of near empty, half full, or near full; wherein is 25% to 50% full, half full is 51% to 75% full, and near full is more than 75% full. 제3항에 있어서, 상기 증분 컴포넌트는 상기 충만도 레벨이 거의 비어 있음인 것으로 상기 큐 컴포넌트에 의해 결정되는 경우 작은 수만큼 또는 상기 충만도 레벨이 절반쯤 채워져 있음인 것으로 상기 큐 컴포넌트에 의해 결정되는 경우 큰 수만큼 - 상기 큰 수는 상기 작은 수의 100배임 - 상기 트렌드 카운트를 증분시키는, 장치.4. The method of claim 3, wherein the increment component is determined by the queue component to be half full or by a small number if the fullness level is determined by the queue component to be nearly empty. increment the trend count by a larger number if the larger number is 100 times the smaller number. 제3항에 있어서,
상기 수신 큐가 거의 채워져 있는 것으로 상기 큐 컴포넌트에 의해 결정되는 연속적 폴링 반복들의 개수(consecutive number of polling interations)가 연속적 문턱값(consecutive threshold)을 초과한 것에 응답하여, 성능 표시를 상기 OS 전력 관리 모듈로 송신하는 상기 성능 컴포넌트 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금, 상기 처리 요소의 동작 주파수가 최고 동작 주파수로 증가되게 하는 것에 의해, 상기 처리 요소의 상기 성능 상태를 최고 성능 상태로 증가시키게 할 수 있음 - 를 포함하는, 장치.
4. The method of claim 3,
In response to a consecutive number of polling interations determined by the queue component as substantially full of the receive queue exceeding a consecutive threshold, a performance indication is displayed to the OS power management module the performance component transmitting to - the performance indication causes the OS power management module to increase the performance state of the processing element to a highest performance state by causing the operating frequency of the processing element to be increased to a highest operating frequency. may - a device comprising
삭제delete 제1항에 있어서, ACPI(Advanced Configuration and Power Interface) 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 상기 처리 요소의 상기 성능 상태를 증가시킬 수 있는 상기 OS 전력 관리 모듈 - 상기 OS 전력 관리 모듈은 상기 처리 요소의 상기 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있으며, "n"은 상기 처리 요소의 최저 동작 주파수를 가져오는(resulting in) 최저 성능 상태를 나타냄 - 을 포함하는, 장치.The OS power management module of claim 1 , wherein the OS power management module is capable of increasing the performance state of the processing element according to one or more industry standards, including an Advanced Configuration and Power Interface (ACPI) specification, revision 5.0. a module may increase the performance state of the processing element to enter a Pn-1 performance state, wherein "n" represents the lowest performance state that results in the lowest operating frequency of the processing element. , Device. 삭제delete 삭제delete 제1항에 있어서, 상기 유휴 카운트가 상기 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 상기 제2 기간 동안 슬립시키고, 긴 슬립 표시를 상기 OS 전력 관리 모듈로 송신하는 상기 슬립 컴포넌트 - 상기 긴 슬립 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 상기 처리 요소가 최대 상기 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있음 - 를 포함하는, 장치.The sleep of claim 1, wherein based on the idle count exceeding the first idle count threshold, to sleep a DPDK polling thread for the second period and to send a long sleep indication to the OS power management module a component, wherein the long sleep indication may cause the OS power management module to cause the processing element executing the DPDK polling thread to be in a sleep mode for up to the second period of time. 장치로서,
호스트 컴퓨팅 플랫폼에 있는 회로부;
DPDK(data plane development kit) 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O(network input/output) 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하기 위해 상기 회로부에 의해 실행하기 위한 큐 컴포넌트 - 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 상기 수신 큐에 대한 충만도 레벨을 결정하고, 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여, 각각의 폴링 반복에 대해 상기 수신 큐에 수신되는 패킷들의 개수를 결정함 -;
각각의 폴링 반복 이후에 상기 수신 큐에 대한 상기 충만도 레벨에 기초하여 트렌드 카운트를 증분시키기 위해 상기 회로부에 의해 실행하기 위한 증분 컴포넌트 - 상기 증분 컴포넌트는 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시킴 - ;
상기 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여, 성능 표시를 OS(operating system) 전력 관리 모듈로 송신하기 위해 상기 회로부에 의해 실행하기 위한 성능 컴포넌트 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있음 - ;
상기 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 상기 DPDK 폴링 스레드를 슬립시키기 위해 상기 회로부에 의해 실행하기 위한 슬립 컴포넌트 - 상기 제2 기간은 상기 제1 기간보다 더 길고, 상기 슬립 컴포넌트는 상기 유휴 카운트가 상기 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 상기 제2 기간 동안 슬립시키고, 긴 슬립 표시를 상기 OS 전력 관리 모듈로 송신하고, 상기 긴 슬립 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 상기 처리 요소가 최대 상기 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있음 - ;
타이머 간격을 가지는 타이머를 개시하기 위해 상기 회로부에 의해 실행하기 위한 타이머 컴포넌트
를 포함하고,
상기 슬립 컴포넌트는 상기 타이머가 만료한 것에 응답하여, 상기 타이머 간격 동안 상기 DPDK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정하고,
상기 성능 컴포넌트는 상기 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금, 상기 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 상기 처리 요소의 성능 상태를 저하시키게 할 수 있음 - 를 상기 OS 전력 관리 모듈로 송신하는, 장치.
As a device,
circuitry in the host computing platform;
circuitry to monitor received and available packet descriptors maintained in a receive queue for a NW network input/output (NW I/O) device over multiple polling iterations for a data plane development kit (DPDK) polling thread. a queue component for executing by - the queue component determines a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration, the queue component determining the fullness level for the receive queue after each polling iteration determining the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after iteration;
an incrementing component for execution by the circuitry to increment a trend count based on the fullness level for the receive queue after each polling iteration, wherein the incrementing component exceeds a successive threshold number of successive polling iterations increment the idle count by a count of 1 if the number of packets received for ;
a performance component for executing by the circuitry to transmit a performance indication to an operating system (OS) power management module based on whether the trend count exceeds a trend count threshold, the performance indication to the OS power management module increase the performance state of a processing element executing the DPDK polling thread;
a sleep component for execution by the circuitry to sleep the DPDK polling thread for one of a first period or a second period based on whether the idle count is above or below a first idle count threshold; a second period of time is longer than the first period of time, and the sleep component causes a DPDK polling thread to sleep for the second period based on the idle count exceeding the first idle count threshold, and to issue a long sleep indication. send to the OS power management module, wherein the long sleep indication may cause the OS power management module to cause the processing element executing the DPDK polling thread to be in a sleep mode for at most the second period;
A timer component for execution by the circuitry to initiate a timer having a timer interval.
including,
the sleep component determines, in response to the timer expiring, the percentage of iterations in which the DPDK polling thread was sleeping during the timer interval;
The performance component is configured to: based on whether the percentage is above a percentage threshold, a performance indication, wherein the performance indication causes the OS power management module to: reduce an operating frequency or reduce an operating voltage of the processing element; capable of degrading the performance state of the processing element to the OS power management module.
장치로서,
호스트 컴퓨팅 플랫폼에 있는 회로부;
DPDK(data plane development kit) 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O(network input/output) 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하기 위해 상기 회로부에 의해 실행하기 위한 큐 컴포넌트 - 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 상기 수신 큐에 대한 충만도 레벨을 결정하고, 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여, 각각의 폴링 반복에 대해 상기 수신 큐에 수신되는 패킷들의 개수를 결정함 -;
각각의 폴링 반복 이후에 상기 수신 큐에 대한 상기 충만도 레벨에 기초하여 트렌드 카운트를 증분시키기 위해 상기 회로부에 의해 실행하기 위한 증분 컴포넌트 - 상기 증분 컴포넌트는 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시킴 - ;
상기 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여, 성능 표시를 OS(operating system) 전력 관리 모듈로 송신하기 위해 상기 회로부에 의해 실행하기 위한 성능 컴포넌트 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있음 - ;
상기 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 상기 DPDK 폴링 스레드를 슬립시키기 위해 상기 회로부에 의해 실행하기 위한 슬립 컴포넌트 - 상기 제2 기간은 상기 제1 기간보다 더 길고, 상기 슬립 컴포넌트는 상기 유휴 카운트가 상기 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 상기 제2 기간 동안 슬립시키고, 긴 슬립 표시를 상기 OS 전력 관리 모듈로 송신하고, 상기 긴 슬립 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 상기 처리 요소가 최대 상기 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있음 - ;
타이머 간격을 가지는 타이머를 개시하기 위해 상기 회로부에 의해 실행하기 위한 타이머 컴포넌트
를 포함하고,
상기 큐 컴포넌트는 상기 타이머가 만료한 것에 응답하여, 상기 타이머 간격 동안 상기 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정하고,
상기 성능 컴포넌트는 상기 반복당 평균 패킷이 패킷 평균 문턱값 미만인지에 기초하여, 성능 표시 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금, 상기 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 상기 처리 요소의 성능 상태를 저하시키게 할 수 있음 - 를 상기 OS 전력 관리 모듈로 송신하는, 장치.
As a device,
circuitry in the host computing platform;
circuitry to monitor received and available packet descriptors maintained in a receive queue for a NW network input/output (NW I/O) device over multiple polling iterations for a data plane development kit (DPDK) polling thread. a queue component for executing by - the queue component determines a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration, the queue component determining the fullness level for the receive queue after each polling iteration determining the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after iteration;
an incrementing component for execution by the circuitry to increment a trend count based on the fullness level for the receive queue after each polling iteration, wherein the incrementing component exceeds a successive threshold number of successive polling iterations increment the idle count by a count of 1 if the number of packets received for ;
a performance component for executing by the circuitry to transmit a performance indication to an operating system (OS) power management module based on whether the trend count exceeds a trend count threshold, the performance indication to the OS power management module increase the performance state of a processing element executing the DPDK polling thread;
a sleep component for execution by the circuitry to sleep the DPDK polling thread for one of a first period or a second period based on whether the idle count is above or below a first idle count threshold; a second period of time is longer than the first period of time, and the sleep component causes a DPDK polling thread to sleep for the second period based on the idle count exceeding the first idle count threshold, and to issue a long sleep indication. send to the OS power management module, wherein the long sleep indication may cause the OS power management module to cause the processing element executing the DPDK polling thread to be in a sleep mode for at most the second period;
A timer component for execution by the circuitry to initiate a timer having a timer interval.
including,
the queue component determines, in response to the timer expiring, an average packet per iteration for packets received in the receive queue during the timer interval;
wherein the performance component is based on whether the average packets per iteration is less than a packet average threshold, wherein the performance indication causes the OS power management module to reduce an operating frequency of the processing element. to the OS power management module.
제10항에 있어서, ACPI(Advanced Configuration and Power Interface) 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 상기 처리 요소를 슬립 모드에 둘 수 있는 상기 OS 전력 관리 모듈 - 상기 OS 전력 관리 모듈은, 상기 슬립 표시에 응답하여 상기 처리 요소를 상기 슬립 모드에 두기 위해, 상기 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 함 - 을 포함하는, 장치.11. The OS power management module of claim 10, wherein the OS power management module is capable of placing the processing element in a sleep mode according to one or more industry standards, including Advanced Configuration and Power Interface (ACPI) specification, revision 5.0; , causing the processing element to enter at least a C1 processor power state to place the processing element in the sleep mode in response to the sleep indication. 제1항에 있어서, 상기 연속적 문턱값은 5개의 반복들을 포함하고, 각각의 폴링 반복은 1 마이크로초마다 행해지는, 장치.The apparatus of claim 1 , wherein the successive threshold comprises 5 iterations, each polling iteration being done every 1 microsecond. 장치로서,
호스트 컴퓨팅 플랫폼에 있는 회로부;
DPDK(data plane development kit) 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O(network input/output) 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하기 위해 상기 회로부에 의해 실행하기 위한 큐 컴포넌트 - 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 상기 수신 큐에 대한 충만도 레벨을 결정하고, 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여, 각각의 폴링 반복에 대해 상기 수신 큐에 수신되는 패킷들의 개수를 결정함 -;
각각의 폴링 반복 이후에 상기 수신 큐에 대한 상기 충만도 레벨에 기초하여 트렌드 카운트를 증분시키기 위해 상기 회로부에 의해 실행하기 위한 증분 컴포넌트 - 상기 증분 컴포넌트는 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시킴 - ;
상기 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여, 성능 표시를 OS(operating system) 전력 관리 모듈로 송신하기 위해 상기 회로부에 의해 실행하기 위한 성능 컴포넌트 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있음 - ;
상기 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 상기 DPDK 폴링 스레드를 슬립시키기 위해 상기 회로부에 의해 실행하기 위한 슬립 컴포넌트 - 상기 제2 기간은 상기 제1 기간보다 더 김 -
를 포함하고,
상기 연속적 문턱값은 5개의 반복들을 포함하고, 각각의 폴링 반복은 1 마이크로초마다 행해지고, 슬립 표시는 상기 유휴 카운트가 상기 제1 유휴 카운트 문턱값 미만이라는 것을 나타내고, 상기 DPDK 폴링 스레드를 상기 제1 기간 동안 슬립시키며, 상기 제1 기간은 5개의 폴링 반복들만큼 지속되는, 장치.
As a device,
circuitry in the host computing platform;
circuitry to monitor received and available packet descriptors maintained in a receive queue for a NW network input/output (NW I/O) device over multiple polling iterations for a data plane development kit (DPDK) polling thread. a queue component for executing by - the queue component determines a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration, the queue component determining the fullness level for the receive queue after each polling iteration determining the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after iteration;
an incrementing component for execution by the circuitry to increment a trend count based on the fullness level for the receive queue after each polling iteration, wherein the incrementing component exceeds a successive threshold number of successive polling iterations increment the idle count by a count of 1 if the number of packets received for ;
a performance component for executing by the circuitry to transmit a performance indication to an operating system (OS) power management module based on whether the trend count exceeds a trend count threshold, the performance indication to the OS power management module increase the performance state of a processing element executing the DPDK polling thread;
a sleep component for execution by the circuitry to sleep the DPDK polling thread for one of a first period or a second period based on whether the idle count is above or below a first idle count threshold; the second period is longer than the first period;
including,
the successive threshold includes 5 iterations, each polling iteration being done every 1 microsecond, a sleep indication indicating that the idle count is less than the first idle count threshold, and sending the DPDK polling thread to the first sleep for a period of time, wherein the first period lasts for 5 polling iterations.
장치로서,
호스트 컴퓨팅 플랫폼에 있는 회로부;
DPDK(data plane development kit) 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O(network input/output) 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하기 위해 상기 회로부에 의해 실행하기 위한 큐 컴포넌트 - 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 상기 수신 큐에 대한 충만도 레벨을 결정하고, 상기 큐 컴포넌트는 각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여, 각각의 폴링 반복에 대해 상기 수신 큐에 수신되는 패킷들의 개수를 결정함 -;
각각의 폴링 반복 이후에 상기 수신 큐에 대한 상기 충만도 레벨에 기초하여 트렌드 카운트를 증분시키기 위해 상기 회로부에 의해 실행하기 위한 증분 컴포넌트 - 상기 증분 컴포넌트는 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시킴 - ;
상기 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여, 성능 표시를 OS(operating system) 전력 관리 모듈로 송신하기 위해 상기 회로부에 의해 실행하기 위한 성능 컴포넌트 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있음 - ;
상기 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 상기 DPDK 폴링 스레드를 슬립시키기 위해 상기 회로부에 의해 실행하기 위한 슬립 컴포넌트 - 상기 제2 기간은 상기 제1 기간보다 더 김 -
를 포함하고,
상기 연속적 문턱값은 5개의 반복들을 포함하고, 각각의 폴링 반복은 1 마이크로초마다 행해지고, 슬립 표시는 상기 유휴 카운트가 상기 제1 유휴 카운트 문턱값을 초과한다는 것을 나타내고, 상기 DPDK 폴링 스레드를 상기 제2 기간 동안 슬립시키며, 상기 제2 기간은 50개의 폴링 반복들만큼 지속되는, 장치.
As a device,
circuitry in the host computing platform;
circuitry to monitor received and available packet descriptors maintained in a receive queue for a NW network input/output (NW I/O) device over multiple polling iterations for a data plane development kit (DPDK) polling thread. a queue component for executing by - the queue component determines a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration, the queue component determining the fullness level for the receive queue after each polling iteration determining the number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after iteration;
an incrementing component for execution by the circuitry to increment a trend count based on the fullness level for the receive queue after each polling iteration, wherein the incrementing component exceeds a successive threshold number of successive polling iterations increment the idle count by a count of 1 if the number of packets received for ;
a performance component for executing by the circuitry to transmit a performance indication to an operating system (OS) power management module based on whether the trend count exceeds a trend count threshold, the performance indication to the OS power management module increase the performance state of a processing element executing the DPDK polling thread;
a sleep component for execution by the circuitry to sleep the DPDK polling thread for one of a first period or a second period based on whether the idle count is above or below a first idle count threshold; the second period is longer than the first period;
including,
The successive threshold includes 5 iterations, each polling iteration being done every 1 microsecond, a sleep indication indicating that the idle count exceeds the first idle count threshold, and sending the DPDK polling thread to the second sleep for two periods, the second period lasting 50 polling iterations.
제1항에 있어서, 상기 처리 요소는 멀티코어 프로세서의 코어 또는 상기 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함하는, 장치.The apparatus of claim 1 , wherein the processing element comprises one of a core of a multicore processor or a virtual machine supported by one or more cores of the multicore processor. 제1항에 있어서, 상기 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있는 상기 DPDK 폴링 스레드 - 상기 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN(virtual private network) 애플리케이션, NAT(network address translation) 애플리케이션, DPI(deep packet inspection) 애플리케이션 또는 로드 밸런서(load balancer) 애플리케이션 중 하나를 포함함 - 를 포함하는, 장치.2. The DPDK polling thread capable of executing a network packet processing application to process packets received by the NW I/O device - the network packet processing application is a firewall application, a virtual private network (VPN) application , including one of a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application. 호스트 컴퓨팅 플랫폼에 있는 시스템 상에서 실행되는 것에 응답하여, 상기 시스템으로 하여금
DPDK(data plane development kit) 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O(network input/output) 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하게 하고;
각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 상기 수신 큐에 대한 충만도 레벨을 결정하게 하며;
상기 수신 큐에 대한 상기 충만도 레벨에 기초하여 트렌드 카운트를 증분시키게 하고;
각각의 폴링 반복 이후에 상기 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여, 각각의 폴링 반복에 대해 상기 수신 큐에 수신되는 패킷들의 개수를 결정하게 하고;
연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시키게 하고;
상기 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시를 OS(operating system) 전력 관리 모듈로 송신하게 하고 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있음 - ;
상기 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 상기 DPDK 폴링 스레드를 슬립시키게 하고 - 상기 제2 기간은 상기 제1 기간보다 더 김 - ;
상기 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는지에 기초하여, 원샷 수신(Rx) 인터럽트를 인에이블시킬 수 있는 인터럽트 턴 온 메시지를 상기 NW I/O 디바이스로 송신하게 하는
복수의 명령어들을 포함하는 적어도 하나의 머신 판독가능 매체.
In response to being executed on a system at a host computing platform, the system causes
monitor received and available packet descriptors maintained in a receive queue for a NW network input/output (NW I/O) device across multiple polling iterations for a data plane development kit (DPDK) polling thread;
determine a fullness level for the receive queue based on available packet descriptors maintained in the receive queue after each polling iteration;
increment a trend count based on the fullness level for the receive queue;
determine a number of packets received in the receive queue for each polling iteration based on available packet descriptors maintained in the receive queue after each polling iteration;
increment the idle count by a count of 1 if the number of packets received for the number of consecutive polling iterations exceeding the consecutive threshold is 0;
send a performance indication to an operating system (OS) power management module based on whether the trend count exceeds a trend count threshold, wherein the performance indication causes the OS power management module to execute the DPDK polling thread. - May increase the performance state of ;
make the DPDK polling thread sleep for one of a first period or a second period based on whether the idle count exceeds or falls below a first idle count threshold, wherein the second period is greater than the first period. More Kim - ;
send an interrupt turn on message capable of enabling a one-shot receive (Rx) interrupt to the NW I/O device based on whether the idle count exceeds a second idle count threshold;
At least one machine-readable medium comprising a plurality of instructions.
제19항에 있어서, 상기 충만도 레벨은 거의 비어 있음(near empty), 절반쯤 채워져 있음(half full) 또는 거의 채워져 있음(near full) 중 하나를 포함하고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것이고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것이며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것인, 적어도 하나의 머신 판독가능 매체.20. The method of claim 19, wherein the fullness level comprises one of near empty, half full or near full, wherein the near empty is 25% to 50%. at least one machine-readable medium, wherein said half-full is 51% to 75% full, and wherein said nearly full is more than 75% full. 제20항에 있어서, 상기 명령어들은 추가로 상기 시스템으로 하여금
상기 수신 큐가 거의 채워져 있는 것으로 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 성능 표시를 상기 OS 전력 관리 모듈로 송신하게 하는 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금, 상기 처리 요소의 동작 주파수를 최고 동작 주파수로 증가시키는 것을 비롯하여, 상기 처리 요소의 상기 성능 상태를 최고 성능 상태로 증가시키게 할 수 있음 -, 적어도 하나의 머신 판독가능 매체.
21. The method of claim 20, wherein the instructions further cause the system to:
transmit a performance indication to the OS power management module in response to a number of consecutive polling iterations in which the receive queue is determined to be near full exceeds a consecutive threshold, the performance indication causing the OS power management module to , capable of increasing the performance state of the processing element to the highest performance state, including increasing the operating frequency of the processing element to the highest operating frequency; at least one machine readable medium.
삭제delete 제19항에 있어서, 상기 OS 전력 관리 모듈은 ACPI(Advanced Configuration and Power Interface) 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 상기 처리 요소의 상기 성능 상태를 증가시킬 수 있고, 상기 OS 전력 관리 모듈은 상기 처리 요소의 상기 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있는 - "n"은 상기 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타냄 -, 적어도 하나의 머신 판독가능 매체.20. The system of claim 19, wherein the OS power management module is capable of increasing the performance state of the processing element according to one or more industry standards, including an Advanced Configuration and Power Interface (ACPI) specification, revision 5.0, and wherein the OS power the management module may increase the performance state of the processing element to enter a Pn-1 performance state, where "n" represents the lowest performance state that results in the lowest operating frequency of the processing element, at least one machine-readable possible medium. 제19항에 있어서, 상기 DPDK 폴링 스레드는 상기 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있고, 상기 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN(virtual private network) 애플리케이션, NAT(network address translation) 애플리케이션, DPI(deep packet inspection) 애플리케이션 또는 로드 밸런서(load balancer) 애플리케이션 중 하나를 포함하는, 적어도 하나의 머신 판독가능 매체.20. The method of claim 19, wherein the DPDK polling thread is capable of executing a network packet processing application to process packets received by the NW I/O device, the network packet processing application being a firewall application, virtual private network (VPN) At least one machine readable medium comprising one of an application, a network address translation (NAT) application, a deep packet inspection (DPI) application, or a load balancer application. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020177013532A 2014-12-22 2014-12-22 Techniques for power management associated with processing received packets at a network device KR102284467B1 (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
KR20170097615A KR20170097615A (en) 2017-08-28
KR102284467B1 true KR102284467B1 (en) 2021-08-03

Family

ID=56148844

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177013532A KR102284467B1 (en) 2014-12-22 2014-12-22 Techniques for power management associated with processing received packets at a network device

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 (19)

* 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
US20220075654A1 (en) * 2019-03-25 2022-03-10 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
WO2023002547A1 (en) * 2021-07-19 2023-01-26 日本電信電話株式会社 Server internal data transfer device, server internal data transfer method, and program
WO2023105692A1 (en) * 2021-12-08 2023-06-15 日本電信電話株式会社 Server internal data transfer device, server internal data transfer method, and program
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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711966B2 (en) * 2004-08-31 2010-05-04 Qualcomm Incorporated Dynamic clock frequency adjustment based on processor load
US20110022871A1 (en) * 2009-07-21 2011-01-27 Bouvier Daniel L System-On-Chip Queue Status Power Management
JP2014121036A (en) * 2012-12-19 2014-06-30 Alaxala Networks Corp Relay device
JP2014521131A (en) * 2011-06-29 2014-08-25 日本電気株式会社 Multiprocessor system and energy saving method thereof

Family Cites Families (8)

* 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
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
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
US9473455B2 (en) * 2011-06-29 2016-10-18 Verisign, Inc. Data plane packet processing tool chain

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711966B2 (en) * 2004-08-31 2010-05-04 Qualcomm Incorporated Dynamic clock frequency adjustment based on processor load
US20110022871A1 (en) * 2009-07-21 2011-01-27 Bouvier Daniel L System-On-Chip Queue Status Power Management
JP2014521131A (en) * 2011-06-29 2014-08-25 日本電気株式会社 Multiprocessor system and energy saving method thereof
JP2014121036A (en) * 2012-12-19 2014-06-30 Alaxala Networks Corp Relay device

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102284467B1 (en) Techniques for power management associated with processing received packets at a network device
TWI486023B (en) Method and system for improving pci-e l1 aspm exit latency
TWI526843B (en) Adaptive interrupt coalescing for energy efficient mobile platforms
US8347119B2 (en) System and method for processor utilization adjustment to improve deep C-state use
EP3428801B1 (en) Scheduling method and electronic device
US20190042331A1 (en) Power aware load balancing using a hardware queue manager
US20090077277A1 (en) Methods and apparatus for decreasing power consumption and bus activity
US9952911B2 (en) Dynamically optimized device driver protocol assist threads
Alian et al. Ncap: Network-driven, packet context-aware power management for client-server architecture
CN111475009A (en) Power consumption reduction circuit of GPU in server and server
WO2021078144A1 (en) Power management method and device
TW201314433A (en) Server system and power managing method data thereof
WO2022212368A1 (en) Systems and methods for coordinating persistent cache flushing
WO2014143674A1 (en) Controlling power supply unit power consumption during idle state
US11256321B2 (en) Network-driven, packet context-aware power management for client-server architecture
EP3640797A1 (en) Dynamic traffic-aware interface queue switching among processor cores
JP6189545B2 (en) Network application parallel scheduling to reduce power consumption
US9501128B2 (en) Cooperative reduced power mode suspension for high input/output (‘I/O’) workloads
Fujimoto et al. Energy-Efficient KBP: Kernel Enhancements for Low-Latency and Energy-Efficient Networking
US10225198B2 (en) Bandwidth control circuit, arithmetic processing apparatus, and bandwidth control method for apparatus
EP4314988A1 (en) Systems and methods for processing asynchronous reset events while maintaining persistent memory state
CN117441144A (en) System and method for handling asynchronous reset events while maintaining persistent memory state
CN117396828A (en) System support for persistent cache flushing
Niccolini et al. On the Energy Efficiency of Networked Systems.

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant