KR102284467B1 - 네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법 - Google Patents

네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법 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
English (en)
Other versions
KR20170097615A (ko
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/ko
Application granted granted Critical
Publication of KR102284467B1 publication Critical patent/KR102284467B1/ko

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

Abstract

예들은 NW 디바이스에서 수신된 패킷을 처리하는 것과 연관된 전력 관리 기법들을 포함할 수 있다. DPDK(data plane development kit) 폴링 스레드들의 활동 레벨들을 결정하기 위해 NW I/O(network input/output) 디바이스들 또는 NIC(network interface card)들에 대한 수신 큐들이 모니터링될 수 있다. 수신 큐들을 모니터링하는 것으로부터 획득되는 정보에 기초하여 다양한 전력 또는 성능 관리 동작들이 취해질 수 있다.

Description

네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법{TECHNIQUES FOR POWER MANAGEMENT ASSOCIATED WITH PROCESSING RECEIVED PACKETS AT A NETWORK DEVICE}
본원에 기술되는 예들은 일반적으로 네트워크 패킷 처리에 관련되어 있다.
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를 사용하는 것은 네트워크 디바이스의 적어도 일부 고가이고 덜 유연한 물리적 컴포넌트들을 대체할 수 있다.
도 1은 예시적인 시스템을 나타내는 도면.
도 2는 예시적인 제1 논리 흐름을 나타낸 도면.
도 3은 예시적인 제1 프로세스를 나타낸 도면.
도 4는 예시적인 제2 프로세스를 나타낸 도면.
도 5는 예시적인 제3 프로세스를 나타낸 도면.
도 6은 장치에 대한 예시적인 블록도.
도 7은 예시적인 제2 논리 흐름을 나타낸 도면.
도 8은 예시적인 제3 논리 흐름을 나타낸 도면.
도 9는 저장 매체의 일 예를 나타낸 도면.
도 10은 예시적인 컴퓨팅 플랫폼을 나타낸 도면.
일부 예들에서, 고성능 패킷 처리 애플리케이션들에 대한 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) 중일 수 있다(예컨대, 연속적으로 폴링하지만 네트워크 패킷들을 처리하지 않음). 네트워크 패킷들이 있는지 대기하는 것은 상당한 양의 전력은 물론 계산 자원들을 낭비할 수 있다.
OS(operating system) 전력 관리 서브시스템들 또는 모듈들은 피크 또는 낮은 네트워크 트래픽의 기간들 동안 프로세서 전력을 조절하기 위해 다수의 기술들(주로 OS 커널 공간에서의 P-상태들, C-상태들 및 제어)을 제공할 수 있다. 표준의 OS들(예컨대, Linux 또는 Windows®)에서, OS 전력 관리 모듈들은, CPU 사용을 주기적으로 샘플링하는 것에 의해, 프로세서 또는 코어들이, 각각, 진입할 적절한 프로세서 전압 및/또는 주파수, 동작점(P-상태) 및 프로세서 유휴 상태(C-상태)를 결정할 수 있다. 그러나 이 접근법은, OS 전력 관리 모듈이 DPDK 폴링 스레드들이 실제로 패킷들을 처리하거나 바쁜 대기 중인지를 결정할 수 없는 것으로 인해, DPDK 폴링 스레드들을 가지는 PMD 기반 패킷 처리 애플리케이션들에 적당하지 않다. OS 전력 관리 모듈이 DPDK 폴링 스레드들의 동작 상태를 결정할 수 없는 것은 "조석 효과"에 의해 영향을 받는 데이터 센터 네트워크들에서 전력을 절감하기 위해 이 DPDK 폴링 스레드들을 지원하는 프로세서들 또는 코어들이 진입할 적절한 전력 상태들을 결정하는 데 문제가 될 수 있다. 이러한 과제들과 관련하여 본원에 기술되는 예들이 필요하다.
일부 제1 예들에 따르면, NW I/O 디바이스에서 수신된 패킷들을 처리하는 것과 연관된 전력 관리 기법들은 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자(packet descriptor)들을 모니터링하는 것을 포함할 수 있다. 이 제1 예들은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨(level of fullness)을 결정하는 것 그리고 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트(trend count)를 증분시키는 것을 포함할 수 있다. 이 제1 예들은 또한 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시(performance indication)를 OS 전력 관리 모듈로 송신하는 것을 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.
일부 제2 예들에 따르면, NW 디바이스에서 수신된 패킷들을 처리하는 것과 연관된 전력 관리 기법들은 또한 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 것을 포함할 수 있다. 이 제2 예들은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하는 것 그리고 연속적 문턱값(consecutive threshold)을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트(idle count)를 1의 카운트만큼 증분시키는 것을 포함할 수 있다. 이 제2 예들은 또한 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드가 슬립(sleep)하게 하는 것을 포함할 수 있다. 제2 기간은 제1 기간보다 더 길 수 있다.
도 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에 도시된 바와 같이, 시스템(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)에 대한 슬립 또는 유휴 시간들을 모니터링할 수 있다.
일부 예들에서, 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 규격")과 같은, 하나 이상의 프로세서 전력 관리 표준들 또는 규격들에 따라 변경 또는 제어될 수 있다.
일부 예들에 따르면, 프로세서(들)(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 프로세서들을 포함할 수 있다.
일부 예들에 따르면, 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) 그리고 보류된, 일시중지된 또는 슬립중인 스레드를 웨이크업하는 것은 프로세서 자원 및 지연시간 적중의 면에서 비용이 많이 들 수 있다. 이 프로세서 자원 및 지연시간 적중은 데이터 센터 네트워크에서와 같은 배치들에서의 네트워크 디바이스들에 대해 용납가능하지 않을 수 있다.
일부 예들에 따르면, 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)은 패킷들을 처리할 때 성능 요구사항들을 더 잘 충족시키기 위해 주로 폴링 모드 환경에서 동작하고 따라서 빈번한 모드 전환들을 회피할 수 있다.
도 2는 예시적인 제1 논리 흐름을 나타내고 있다. 도 2에 도시된 바와 같이, 예시적인 제1 논리 흐름은 논리 흐름(200)을 포함한다. 일부 예들에 따르면, 논리 흐름(200)은 (예컨대, 데이터 센터에 위치된) NW 디바이스에 대한 수신된 패킷들을 처리하는 것과 연관된 전력 관리에 대한 것일 수 있다. 이러한 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 논리 흐름(200)의 부분들을 구현할 수 있을 것이다. 그렇지만, 예시적인 논리 흐름(200)은 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 것으로 제한되지 않는다.
일부 예들에서, 도 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로 이동한다.
일부 예들에 따르면, 0개의 패킷이 수신된 반복들의 개수에 기초하여, 210에서 '유휴' 카운트가 1만큼 증분될 수 있다. 212에서 '유휴' 카운트가 THRESHOLD_1 미만이거나 그보다 작은지의 결정이 행해진다. 214에서, '유휴' 카운트가 THRESHOLD_1 미만이면, DPDK 폴링 스레드는 DPDK 전력 관리 컴포넌트들에 의해 짧은 기간(예컨대, 몇 μs) 동안 슬립에 있을 수 있다. 216에서, '유휴' 카운트가 THRESHOLD_2 미만이면, DPDK 폴링 스레드는 비교적 긴 기간(예컨대, 수십 μs) 동안 슬립에 있을 수 있다.
일부 예들에서, 짧은 슬립 기간은 연속적 스핀 루프(continuous spin loop)와 비교하여 전력 소비를 감소시키기 위해 짧은, 몇 μs 슬립 기간일 수 있다. 이와 같이, DPDK 폴링 스레드가 아직 식별가능하지 않은 트래픽 트렌드의 시간들 동안 비용이 많이 드는 컨텍스트 전환을 피하게 한다. 비교적 긴 슬립 기간은 보다 낮은 트래픽 트렌드가 식별되도록 되어 있을 수 있다. 이 경우에, DPDK 전력 관리 컴포넌트들은 DPDK 폴링 스레드를 보다 긴 기간 동안 슬립시킬 수 있고, 또한 긴 슬립 표시 또는 C-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. OS 전력 관리 모듈은 이어서 DPDK 폴링 스레드를 지원하는 PE로 하여금 ACPI C1 전력 상태에 진입하게 할 수 있다. 이 C1 전력 상태는 여전히 PE가, 새로운 NW 트래픽이 도착하면, 신속하게 전력을 공급받아 C0 전력 상태로 될 수 있게 할 것이다. 또한, 새로운 NW 트래픽이 도착하면, '유휴' 카운트가 0의 카운트로 리셋된다.
일부 예들에 따르면, 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 폴링 스레드는 이제 인터럽트 모드에서 동작할 수 있고, 네트워크 트래픽을 또다시 수신한 것에 응답하여 폴링 모드로 다시 전환한다.
일부 예들에서, 패킷들이 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-상태들이 점진적으로 증가될 수 있도록 설정될 수 있다.
일부 예들에 따르면, Rx 큐가 거의 채워져 있으면(예컨대, 76% 초과 채워짐)(238), 240에서 Rx 큐가 거의 채워져 있는 연속적 폴링 반복들의 개수가 연속적 문턱값(예컨대, 5개의 폴링 반복들)과 비교될 수 있다. 이 예들에 대해, 연속적 문턱값이 초과되면, DPDK 전력 관리 컴포넌트들은 높은 성능 표시 또는 높은 P-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. 높은 성능 표시는 OS 전력 관리 모듈로 하여금 동작 주파수들을 최고 주파수로 상승시키게 하거나(242) DPDK 폴링 스레드를 실행하는 PE에 대한 ACPI P-상태를 최고 성능 P-상태로 상승시키게 할 수 있다. 최고 성능 P-상태로 상승시키는 것은 OS 전력 관리 모듈이 높은 네트워크 트래픽 부하들에 대해 신속하게 반응하고 따라서, 수신된 패킷들을 처리하는 동안(232), DPDK 폴링 스레드를 실행하는 PE를 전력 절감과 성능의 균형으로부터 순수 성능 기반 동작 상태로 전환시킬 수 있게 할 것이다.
일부 예들에서, 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-상태로 저하될 수 있다.
일부 예들에 따르면, DPDK 폴링 스레드가 폴링 반복들의 25% 초과 동안 슬립에 있지 않으면, 250에서 DPDK 전력 관리 컴포넌트들은 시간 간격 동안 수신된 패킷들에 대한 반복당 평균 패킷이 반복당 예상 평균 패킷의 문턱값 미만인지 여부를 결정할 수 있다. 문턱값 미만이면, 252에서 DPDK 전력 관리 컴포넌트들은 성능 표시 또는 P-상태 힌트를 OS 전력 관리 모듈로 송신할 수 있다. PE로 하여금 25% 초과 슬립 또는 예상된 것보다 더 적은 패킷들이 수신된 것에 응답하여 그의 P-상태를 저하시키게 하는 것은 네트워크 트래픽을 나타내는 모니터링된 정보 또는 적어도 네트워크 트래픽으로부터의 패킷들의 처리가 감소하고 있는 것에 기초하여 전력을 절감하기 위해 성능 상태들을 저하시키는 방법일 수 있다.
도 3은 예시적인 제1 프로세스(300)를 나타내고 있다. 도 3에 도시된 바와 같이, 제1 프로세스는 프로세스(300)를 포함한다. 일부 예들에 따르면, 프로세스(300)는 시스템(100)의 상이한 요소들이 도 2에 대해 앞서 기술된 논리 흐름(200)의 부분들을 어떻게 구현할 수 있는지를 나타낼 수 있다. 상세하게는, 그 부분들은 DPDK 전력 관리 컴포넌트들(PMC들)에 의해 취해지는 슬립, 유휴 또는 인터럽트 동작들에 관련되어 있다. 이 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 프로세스(300)에 관련되어 있을 수 있다. 그렇지만, 예시적인 프로세스(300)는 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 구현들로 제한되지 않는다.
프로세스 3.1(패킷들을 수신함)에서 시작하여, 패킷들이 NW I/O 디바이스(110)에 의해 수신되고 Rx 큐들(130)에 적어도 일시적으로 위치될 수 있다.
프로세스 3.2(폴링하고 처리함)로 이동하여, DPDK 폴링 스레드들(140)은 Rx 큐들(130)을 폴링하고, 패킷들이 Rx 큐들(130)에 수신될 때, 패킷들을 처리할 수 있을 것이다.
프로세스 3.3(수신된 그리고 이용가능한 패킷 기술자들을 모니터링함)으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)에 대한 다수의 폴링 반복들에 걸쳐 Rx 큐들(130)에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 3.4(연속적 문턱값 초과 동안 0개의 패킷)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 연속적 문턱값(예컨대, 5개의 폴링 반복들)을 초과하는 개수의 연속적 폴링 반복들에 대해 0개의 패킷이 수신되었는지를 결정하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 3.5(유휴 카운트를 증분시킴)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 연속적 문턱값이 초과되면 유휴 카운트를 1의 카운트만큼 증분시키는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 3.6A(짧은 기간 슬립)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, 증분 유휴 카운트가 제1 유휴 카운트 문턱값(예컨대, THRESHOLD_1) 미만인 것으로 밝혀지면, DPDK 폴링 스레드들(140)을 짧은 기간(예컨대, 2 μs) 동안 슬립에 두는 로직 및/또는 특징부들을 포함할 수 있다. 프로세스는 이어서 종료할 수 있다.
프로세스 3.6B(긴 기간 슬립)에서의 제1 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, 증분 유휴 카운트가 제1 유휴 카운트 문턱값 초과이지만 제2 유휴 카운트 문턱값(예컨대, THRESHOLD_2) 미만인 것으로 밝혀지면, DPDK 폴링 스레드들(140)을 비교적 긴 슬립 기간(예컨대, 수십 μs) 동안 슬립에 두는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 3.7B(긴 슬립 표시)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, DPDK 폴링 스레드들(140)이 긴 슬립 기간 동안 슬립에 있었다는 것을 나타내기 위해, 긴 슬립 표시를 OS 전력 관리 모듈(PMM)(160)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 3.8B(긴 기간 동안 슬립 모드)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)로 하여금 최대 긴 슬립 기간 동안 슬립 모드에 있게 할 수 있다. 일부 예들에서, 슬립 모드는 ACPI C1 전력 상태를 포함할 수 있다. 프로세스는 이어서 이 제1 대안에 대해 종료할 수 있다.
프로세스 3.6C(원샷 Rx 인터럽트를 턴 온시킴)에서의 제2 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은, 유휴 카운트가 제2 유휴 카운트 문턱값(예컨대, THRESHOLD_2)을 초과한 것에 기초하여, 인터럽트 턴 온 힌트 또는 메시지를 NW I/O 디바이스(110)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 3.7C(인터럽트 모드로 전환함)로 이동하여, 폴 모드 드라이버(142)는 폴 모드에서 NW I/O 디바이스(110)와 함께 동작하는 것으로부터 인터럽트 모드로 전환할 수 있다. 이 모드 전환은 또한 DPDK 폴링 스레드들(140)을 일시중지시킬 수 있다.
프로세스 3.8C(패킷들을 수신함)로 이동하여, 네트워크 트래픽(105)은 이제 DPDK 스레드들(140)에 의한 처리를 위한 패킷들을 포함할 수 있다.
프로세스 3.9C(폴 모드로 전환함)로 이동하여, 폴 모드 드라이버(142)는 폴 모드에서 NW I/O 디바이스(110)와 함께 동작하는 것으로 다시 전환할 수 있고, 프로세스는 이어서 이 제2 대안에 대해 종료할 수 있다.
도 4는 예시적인 제2 프로세스(400)를 나타내고 있다. 도 4에 도시된 바와 같이, 제2 프로세스는 프로세스(400)를 포함한다. 프로세스(300)와 유사하게, 프로세스(400)는 시스템(100)의 상이한 요소들이 도 2에 대해 앞서 기술된 논리 흐름(200)의 부분들을 어떻게 구현할 수 있는지를 나타낼 수 있다. 상세하게는, 그 부분들은 PE(들)(172)에 대한 성능 상태를 저하시킬지를 결정하기 위해 DPDK 폴링 스레드들에 대한 슬립 퍼센트들 또는 반복당 평균 패킷을 모니터링하는 것에 관련되어 있다. 이 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 프로세스(400)에 관련되어 있을 수 있다. 그렇지만, 예시적인 프로세스(400)는 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 구현들로 제한되지 않는다.
프로세스 4.1(타이머를 초기화함)에서 시작하여, DPDK 전력 관리 컴포넌트들(150)은 타이머 간격을 가지는 타이머를 초기화하거나 개시하는 로직 및/또는 특징부들을 포함할 수 있다. 일부 예들에서, 타이머 간격은 대략 100 밀리초(ms)일 수 있다.
프로세스 4.2(슬립 %를 결정하기 위해 활동을 모니터링함)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)이 얼마나 자주 슬립에 있는지를 모니터링하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 4.3(타이머가 만료함)으로 이동하여, 타이머 간격 이후에 타이머가 만료한다.
프로세스 4.4A(성능 표시(슬립 %))로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)이 타이머 간격 동안 퍼센트 문턱값 초과의 시간의 퍼센트 동안 슬립하고 있는지를 결정하는 로직 및/또는 특징부들을 포함할 수 있다. 일부 예들에서, DPDK 폴링 스레드들(140)에 대한 슬립 퍼센트가 퍼센트 문턱값(예컨대, 25% 초과)을 넘거나 초과한 경우, DPDK 전력 관리 컴포넌트들(150)은 성능 표시를 OS 전력 관리 모듈(160)로 송신할 수 있다.
프로세스 4.5A(성능 상태를 저하시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)로 하여금 그의 성능 상태 또는 P-상태를 저하시키게 할 수 있다. 프로세스는 이어서 종료할 수 있다.
프로세스 4.4B(성능 표시(패킷 평균))에서의 제1 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 반복당 평균 패킷이 패킷 평균 문턱값 초과인지 미만인지를 결정하는 로직 및/또는 특징부들을 포함할 수 있다. 일부 예들에서, 반복당 평균 패킷이 패킷 평균 문턱값 미만인 경우, DPDK 전력 관리 컴포넌트들(150)은 성능 표시를 OS 전력 관리 모듈(160)로 송신할 수 있다.
프로세스 4.5B(성능 상태를 저하시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)로 하여금 그의 성능 상태 또는 P-상태를 저하시키게 할 수 있다. 프로세스는 이어서 이 제1 대안에 대해 종료할 수 있다.
도 5는 예시적인 제3 프로세스(500)를 나타내고 있다. 도 5에 도시된 바와 같이, 제3 프로세스는 프로세스(500)를 포함한다. 일부 예들에 따르면, 프로세스(500)는 시스템(100)의 상이한 요소들이 도 2에 대해 앞서 기술된 논리 흐름(200)의 부분들을 어떻게 구현할 수 있는지를 나타낼 수 있다. 상세하게는, 그 부분들은 PE(들)에 대한 성능을 상승시켜야 하는지 또는 그렇게 해야 할 때를 결정하기 위해 Rx 큐 충만도를 모니터링하는 것에 관련되어 있다. 이 예들에 대해, 도 1에 도시된 시스템(100)의 적어도 일부 컴포넌트들은 프로세스(500)에 관련되어 있을 수 있다. 그렇지만, 예시적인 프로세스(500)는 도 1에 도시되거나 기술된 시스템(100)의 컴포넌트들을 사용하는 구현들로 제한되지 않는다.
프로세스 5.1(패킷들을 수신함)에서 시작하여, 패킷들이 NW I/O 디바이스(110)에 의해 수신되고 Rx 큐들(130)에 적어도 일시적으로 위치될 수 있다.
프로세스 5.2(폴링하고 처리함)로 이동하여, DPDK 폴링 스레드들(140)은 Rx 큐들(130)을 폴링하고, 패킷들이 Rx 큐들(130)에 수신될 때, 패킷들을 처리할 수 있을 것이다.
프로세스 5.3(수신된 그리고 이용가능한 패킷 기술자들을 모니터링함)으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 DPDK 폴링 스레드들(140)에 대한 다수의 폴링 반복들에 걸쳐 Rx 큐들(130)에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 5.4(Rx 큐 충만도를 결정함)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 각각의 폴링 반복 이후에 Rx 큐들(130)에 유지되는 이용가능한 패킷 기술자들에 기초하여 Rx 큐들(130)의 충만도를 결정하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 5.5(트렌드 카운트를 증분시킴)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 도 2에 도시된 논리 흐름(200)에 대해 앞서 기술된 바와 같이 Rx 큐들(130)의 결정된 충만도 레벨에 기초하여 단일의 카운트 또는 큰 카운트만큼 트렌드 카운트를 증분시키는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 5.6A(성능 표시)로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 증분된 트렌드 카운트가 트렌드 카운트 문턱값을 초과한 것에 기초하여 성능 표시를 OS 전력 관리 모듈(160)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 5.7A(동작 주파수를 한 단계 위로 증가시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)의 성능 상태 또는 P-상태를 증가시킬 수 있다. 일부 예들에서, PE(들)(172)에 대한 성능 상태가 한 단계 위로 또는 단일의 P-상태로 상승될 수 있고, 이는 DPDK 폴링 스레드들(140)을 실행할 때 PE(들)(172)의 동작 주파수가 증가되게 할 수 있다. 프로세스는 이어서 종료할 수 있다.
프로세스 5.6B(높은 성능 표시)에서의 제1 대안으로 이동하여, DPDK 전력 관리 컴포넌트들(150)은 Rx 큐들(130)이 거의 채워져 있는(예컨대, 75% 초과) 것으로 결정된 연속적 폴링 반복들의 개수에 응답하여 높은 성능 표시를 OS 전력 관리 모듈(160)로 송신하는 로직 및/또는 특징부들을 포함할 수 있다.
프로세스 5.7B(동작 주파수를 최대로 증가시킴)로 이동하여, OS 전력 관리 모듈(160)은 PE(들)(172)의 성능 상태 또는 P-상태를 최고 또는 최대 P-상태로 증가시킬 수 있다. 일부 예들에서, PE(들)(172)을 최고 또는 최대 P-상태로 상승시킨 결과, DPDK 폴링 스레드들(140)을 실행할 때 PE(들)(172)이 그의 최고 또는 최대 동작 주파수로 상승된다. 프로세스는 이어서 이 제1 대안에 대해 종료할 수 있다.
도 6은 장치(600)에 대한 예시적인 블록도를 나타내고 있다. 도 6에 도시된 장치(600)가 특정의 토폴로지에서 제한된 개수의 요소들을 갖지만, 장치(600)가 주어진 구현에 대해 원하는 바에 따라 대안의 토폴로지들에서 보다 많은 또는 보다 적은 요소들을 포함할 수 있다는 것을 잘 알 수 있다.
일부 예들에 따르면, 장치(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에서 개별 상자들로서 도시되어 있지만, 이것이 이 컴포넌트들을 상이한 컴퓨터 판독가능 매체 컴포넌트들(예컨대, 개별 메모리 등)에의 저장으로 제한하지 않는다.
일부 예들에 따르면, 회로부(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의 하드웨어 요소들로서 구현될 수 있다.
일부 예들에서, 장치(600)는 큐 컴포넌트(622-1)를 포함할 수 있다. 큐 컴포넌트(622-1)는 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하기 위해 회로부(620)에 의해 실행될 수 있다. 수신된 그리고 이용가능한 패킷 기술자들은 수신된 그리고 이용가능한 패킷 기술자들(610)에 포함될 수 있고, 큐 컴포넌트(622-1)에 의해 Rx 큐 정보(623-a)에(예컨대, 룩업 테이블(LUT)과 같은 데이터 구조에) 유지될 수 있다. 큐 모듈(622-1)은 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정할 수 있을 것이다. 충만도 레벨은 또한 Rx 큐 정보(623-a)에 유지될 수 있다.
일부 예들에서, 큐 컴포넌트(622-1)는 또한 Rx 큐 정보(623-a)에 포함된 정보에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정할 수 있다.
일부 예들에 따르면, 장치(600)는 증분 컴포넌트(622-2)를 포함할 수 있다. 증분 컴포넌트(622-2)는 각각의 폴링 반복 이후에 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시키기 위해 회로부(620)에 의해 실행될 수 있다. 이 예들에 대해, 트렌드 카운트는 증분 컴포넌트(622-2)에 의해 트렌드 카운트(624-b)에(예컨대, LUT에) 유지될 수 있다. 증분 컴포넌트(622-2)는 또한, 큐 모듈(622-1)이 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 0개의 패킷이 수신되었다고 결정한 경우, 유휴 카운트를 적어도 1의 카운트만큼 증분시킬 수 있다. 유휴 카운트는 증분 컴포넌트(622-2)에 의해 유휴 카운트(625-c)에(예컨대, LUT에) 유지될 수 있다.
일부 예들에서, 장치(600)는 또한 성능 컴포넌트(622-3)를 포함할 수 있다. 성능 컴포넌트(622-3)는 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시(640)를 OS 전력 관리 모듈로 송신하기 위해 회로부(620)에 의해 실행될 수 있다. 성능 표시(640)는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다. 이 예들에 대해, 트렌드 카운트 문턱값은 성능 컴포넌트(622-3)에 의해 트렌드 카운트 문턱값(626-d)에(예컨대, LUT에) 유지될 수 있다.
일부 예들에 따르면, 성능 컴포넌트(622-3)는, 수신 큐가 거의 채워져 있는 것으로 큐 컴포넌트(622-1)에 의해 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시(645)를 OS 전력 관리 모듈로 송신할 수 있다. 높은 성능 표시(645)는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수가 최고 동작 주파수로 증가되게 하는 것에 의해, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다. 이 예들에 대해, 연속적 문턱값은 성능 컴포넌트(622-3)에 의해 연속적 문턱값(627-e)에(예컨대, LUT에) 유지될 수 있다.
일부 예들에서, 장치(600)는 또한 슬립 컴포넌트(622-4)를 포함할 수 있다. 슬립 컴포넌트(622-4)는, 증분 컴포넌트에 의해 증분되고 유휴 카운트(625-c)에 유지되는 유휴 카운트가 슬립 컴포넌트(622-4)에 의해 유휴 카운트 문턱값들(630-h)에(예컨대, LUT에) 유지되는 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, DPDK 폴링 스레드를 제1 기간 또는 제2 기간 중 하나 동안 슬립시키기 위해 회로부(620)에 의해 실행될 수 있다. 이 예들에 대해, 제2 기간은 제1 기간보다 더 길 수 있다. 슬립(615)은 DPDK 폴링 스레드를 슬립시키는 표시들 또는 명령들을 포함할 수 있다.
일부 예들에 따르면, 슬립 컴포넌트(622-4)는, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있고, 긴 슬립 표시(650)를 OS 전력 관리 모듈로 송신할 수 있다. 긴 슬립 표시(650)는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.
일부 예들에 따르면, 장치(600)는 또한 인터럽트 제어 컴포넌트(622-5)를 포함할 수 있다. 인터럽트 제어 컴포넌트(622-4)는, 증분 컴포넌트(622-2)에 의해 증분되는 유휴 카운트가 슬립 컴포넌트(622-5)에 의해 유휴 카운트 문턱값들(630-h)에 유지되는 제2 유휴 카운트 문턱값을 초과하는지에 기초하여, 원샷 Rx 인터럽트를 인에이블시키는 메시지를 NW I/O 디바이스로 송신하기 위해 회로부(620)에 의해 실행될 수 있다. 이 예들에 대해, 메시지는 원샷 Rx 인터럽트(635)에 포함될 수 있다.
일부 예들에 따르면, 장치(600)는 또한 타이머 컴포넌트(622-6)를 포함할 수 있다. 타이머 컴포넌트(622-6)는 타이머 컴포넌트(622-6)에 의해 타이머 간격(632-j)에(예컨대, LUT에) 유지되는 타이머 간격을 가지는 타이머를 개시하기 위해 회로부(620)에 의해 실행될 수 있다.
일부 예들에서, 슬립 컴포넌트(622-4)는, 타이머 컴포넌트(622-6)에 의해 개시된 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPKK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정할 수 있다. 퍼센트는 슬립 컴포넌트(622-4)에 의해 슬립 정보(631-i)에 유지될 수 있다. 이 예들에 대해, 성능 컴포넌트(622-3)는, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시(640)를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시(640)는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다. 이 결정을 위해 사용되는 퍼센트 문턱값은 성능 컴포넌트(622-3)에 의해 퍼센트 문턱값(628-f)에(예컨대, LUT에) 유지될 수 있다.
일부 예들에 따르면, 큐 컴포넌트(622-1)는, 타이머 컴포넌트(622-6)에 의해 개시된 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정할 수 있다. 큐 컴포넌트(622-1)에 의해 결정된 반복당 평균 패킷은 Rx 큐 정보(623-a)에 유지될 수 있다. 이 예들에 대해, 성능 컴포넌트(622-3)는, 반복당 평균 패킷이 패킷 평균 문턱값 초과인지에 기초하여, 성능 표시(640)를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시(640)는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다. 패킷 평균 문턱값은 성능 컴포넌트(622-3)에 의해 평균 문턱값(629-g)에(예컨대, LUT에) 유지될 수 있다.
장치(600)의 다양한 컴포넌트들 그리고 장치(600)를 구현하는 디바이스, 노드 또는 논리적 서버는 동작들을 조율하기 위해 다양한 유형들의 통신 매체에 의해 서로 통신가능하게 결합될 수 있다. 조율은 단방향 또는 양방향 정보 교환을 수반할 수 있다. 예를 들면, 컴포넌트들은 통신 매체를 통해 전달되는 신호들의 형태로 정보를 전달할 수 있다. 정보는 다양한 신호 라인들에 할당되는 신호들로서 구현될 수 있다. 이러한 할당들에서, 각각의 메시지가 신호이다. 그렇지만, 추가의 실시예들은 대안적으로 데이터 메시지들을 이용할 수 있다. 이러한 데이터 메시지들은 다양한 연결들을 거쳐 송신될 수 있다. 예시적인 연결들은 병렬 인터페이스들, 직렬 인터페이스들, 및 버스 인터페이스들을 포함한다.
개시된 아키텍처의 신규의 양태들을 수행하는 예시적인 방법들을 나타내는 한 세트의 논리 흐름들이 본원에 포함되어 있다. 설명의 간략함을 위해, 본원에서 보여지는 하나 이상의 방법들이 일련의 동작들로서 도시되고 기술되어 있지만, 본 기술분야의 통상의 기술자라면 방법들이 동작들의 순서에 의해 제한되지 않는다는 것을 이해하고 잘 알 것이다. 일부 동작들은, 그에 따라, 본원에 도시되고 기술된 것과 상이한 순서로 그리고/또는 다른 동작들과 동시에 행해질 수 있다. 예를 들어, 본 기술분야의 통상의 기술자라면 방법이 대안적으로, 상태도에서와 같이, 일련의 상호 관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 이해하고 잘 알 것이다. 더욱이, 신규의 구현을 위해 방법에 예시된 동작들 모두가 필요한 것은 아닐 수 있다.
논리 흐름이 소프트웨어, 펌웨어, 및/또는 하드웨어로 구현될 수 있다. 소프트웨어 및 펌웨어 실시예들에서, 논리 흐름은, 광학, 자기 또는 반도체 저장소와 같은, 적어도 하나의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체에 저장되는 컴퓨터 실행가능 명령어들에 의해 구현될 수 있다. 실시예들이 이와 관련하여 제한되지 않는다.
도 7은 예시적인 제2 논리 흐름을 나타내고 있다. 도 7에 도시된 바와 같이, 예시적인 제2 논리 흐름은 논리 흐름(700)을 포함한다. 논리 흐름(700)은, 장치(600)와 같은, 본원에 기술되는 하나 이상의 로직, 특징부들, 또는 디바이스들에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다. 보다 상세하게는, 논리 흐름(700)은 적어도 큐 컴포넌트(622-1), 증분 컴포넌트(622-2) 또는 성능 컴포넌트(622-3)에 의해 구현될 수 있다.
일부 예들에 따르면, 논리 흐름(700)은, 블록(702)에서, DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 수신 큐를 모니터링할 수 있다.
일부 예들에서, 논리 흐름(700)은, 블록(704)에서, 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 충만도 레벨을 결정할 수 있다.
일부 예들에 따르면, 논리 흐름(700)은, 블록(706)에서, 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시킬 수 있다. 이 예들에 대해, 증분 컴포넌트(622-2)가 트렌드 카운트를 증분시킬 수 있다.
일부 예들에서, 논리 흐름(700)은, 블록(708)에서, 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시를 OS 전력 관리 모듈로 송신할 수 있고, 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있다. 이 예들에 대해, 성능 컴포넌트(622-3)가 성능 표시를 송신할 수 있다.
도 8은 예시적인 제3 논리 흐름을 나타내고 있다. 도 8에 도시된 바와 같이, 예시적인 제3 논리 흐름은 논리 흐름(800)을 포함한다. 논리 흐름(800)은, 장치(600)와 같은, 본원에 기술되는 하나 이상의 로직, 특징부들, 또는 디바이스들에 의해 실행되는 동작들 중 일부 또는 전부를 나타낼 수 있다. 보다 상세하게는, 논리 흐름(800)은 적어도 큐 컴포넌트(622-1), 증분 컴포넌트(622-2) 또는 슬립 컴포넌트(622-4)에 의해 구현될 수 있다.
일부 예들에 따르면, 논리 흐름(800)은, 블록(802)에서, DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 수신 큐를 모니터링할 수 있다.
일부 예들에서, 논리 흐름(800)은, 블록(804)에서, 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정할 수 있다. 이 예들에 대해, 큐 컴포넌트(622-1)가 수신 큐에 수신되는 패킷들의 개수를 결정할 수 있다.
일부 예들에 따르면, 논리 흐름(800)은, 블록(806)에서, 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시킬 수 있다. 이 예들에 대해, 증분 컴포넌트(622-2)가 트렌드 카운트를 증분시킬 수 있다.
일부 예들에서, 논리 흐름(800)은, 블록(808)에서, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시킬 수 있고, 제2 기간은 제1 기간보다 더 길다. 이 예들에 대해, 슬립 컴포넌트(622-4)가 DPDK 폴링 스레드를 슬립시킬 수 있다.
도 9는 예시적인 저장 매체(900)를 나타내고 있다. 도 9에 도시된 바와 같이, 제1 저장 매체는 저장 매체(900)를 포함한다. 저장 매체(900)는 제조 물품을 포함할 수 있다. 일부 예들에서, 저장 매체(900)는 광학, 자기 또는 반도체 저장소와 같은 임의의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체를 포함할 수 있다. 저장 매체(900)는, 논리 흐름(700) 또는 논리 흐름(800)을 구현하는 명령어들과 같은, 다양한 유형들의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 컴퓨터 판독가능 또는 머신 판독가능 매체의 예들은, 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 소거가능 또는 비소거가능 메모리, 기입가능 또는 재기입가능 메모리 등을 비롯한, 전자 데이터를 저장할 수 있는 임의의 유형적(tangible) 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은, 소스 코드, 컴파일된 코드, 인터프리트된 코드, 실행가능 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 등과 같은, 임의의 적당한 유형의 코드를 포함할 수 있다. 예들이 이와 관련하여 제한되지 않는다.
도 10은 예시적인 컴퓨팅 플랫폼(1000)을 나타내고 있다. 일부 예들에서, 도 10에 도시된 바와 같이, 컴퓨팅 플랫폼(1000)은 처리 컴포넌트(1040), 다른 플랫폼 컴포넌트들(1050) 또는 통신 인터페이스(1060)를 포함할 수 있다. 일부 예들에 따르면, 컴퓨팅 플랫폼(1000)은 도 1의 시스템(100)과 같은 DPDK 폴링 스레드들을 가지는 시스템에 대한 전력/성능 관리 기능을 제공하는 전력 및/또는 성능 관리 요소들(예컨대, DPDK 전력 관리 컴포넌트들 및 OS 전력 관리 모듈)을 호스팅할 수 있다. 컴퓨팅 플랫폼(1000)은 단일의 물리적 네트워크 디바이스일 수 있거나, 데이터 센터에 배치된 구성가능 컴퓨팅 자원들의 공유 풀로부터 구성되는 분해된 물리적 컴포넌트들 또는 요소들의 조합들을 포함하는 구성된 논리적 네트워크 디바이스일 수 있다.
일부 예들에 따르면, 처리 컴포넌트(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), 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약조건들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.
일부 예들에서, 다른 플랫폼 컴포넌트들(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), 그리고 정보를 저장하기에 적당한 임의의 다른 유형의 저장 매체와 같은, 하나 이상의 고속 메모리 유닛들의 형태의 다양한 유형들의 컴퓨터 판독가능 및 머신 판독가능 저장 매체 - 이들로 제한되지 않음 - 를 포함할 수 있다.
일부 예들에서, 통신 인터페이스(1060)는 통신 인터페이스를 지원하는 로직 및/또는 특징부들을 포함할 수 있다. 이 예들에 대해, 통신 인터페이스(1060)는 직접 또는 네트워크 통신 링크들을 통해 통신하기 위해 다양한 통신 프로토콜들 또는 표준들에 따라 동작하는 하나 이상의 통신 인터페이스들을 포함할 수 있다. 직접 통신은, PCIe 규격과 연관된 것들과 같은, 하나 이상의 산업 표준들(후손들 및 변형들을 포함함)에 기술되는 통신 프로토콜들 또는 표준들을 사용하여 행해질 수 있다. 네트워크 통신은, IEEE에 의해 공포된 하나 이상의 이더넷 표준들에 기술된 것들과 같은, 통신 프로토콜들 또는 표준들을 사용하여 행해질 수 있다. 예를 들어, 하나의 이러한 이더넷 표준은 IEEE 802.3을 포함할 수 있다. 네트워크 통신은 또한, 오픈플로 하드웨어 추상화 API 규격(OpenFlow Hardware Abstraction API Specification)과 같은, 하나 이상의 오픈플로(OpenFlow) 규격들에 따라 행해질 수 있다. 네트워크 통신은 또한 인피니밴드 아키텍처 규격(Infiniband Architecture specification) 또는 TCP/IP 프로토콜에 따라 행해질 수 있다.
앞서 언급된 바와 같이, 컴퓨팅 플랫폼(1000)은 단일의 네트워크 디바이스 또는 구성가능 컴퓨팅 자원들의 공유 풀로부터 구성되는 분해된 물리적 컴포넌트들 또는 요소들로 이루어진 논리적 네트워크 디바이스에 구현될 수 있다. 그에 따라, 본원에 기술되는 컴퓨팅 플랫폼(1000)의 기능들 및/또는 특정 구성들이, 물리적 또는 논리적 네트워크 디바이스에 대해 적당히 원하는 바에 따라, 컴퓨팅 플랫폼(1000)의 다양한 실시예들에 포함되거나 생략될 수 있다.
컴퓨팅 플랫폼(1000)의 컴포넌트들 및 특징부들은 개별 회로부, ASIC(application specific integrated circuit), 논리 게이트 및/또는 단일 칩 아키텍처의 임의의 조합을 사용하여 구현될 수 있다. 게다가, 컴퓨팅 플랫폼(1000)의 특징부들이, 적당히 적절한 경우, 마이크로컨트롤러, 프로그램가능 논리 어레이 및/또는 마이크로프로세서 또는 전술한 것들의 임의의 조합을 사용하여 구현될 수 있다. 유의할 점은, 하드웨어, 펌웨어 및/또는 소프트웨어 요소들이 전체적으로 또는 개별적으로 본원에서 "로직" 또는 "회로"라고 지칭될 수 있다는 것이다.
도 10의 블록도에 도시된 예시적인 컴퓨팅 플랫폼(1000)이 많은 잠재적인 구현들의 하나의 기능 설명 예를 나타낼 수 있다는 것을 잘 알 것이다. 그에 따라, 첨부 도면들에 도시된 블록 기능들의 분할, 생략 또는 포함은 이 기능들을 구현하기 위한 하드웨어 컴포넌트들, 회로들, 소프트웨어 및/또는 요소들이 실시예들에서 꼭 분할, 생략 또는 포함된다는 것을 암시하지는 않는다.
적어도 하나의 예의 하나 이상의 양태들은, 머신, 컴퓨팅 디바이스 또는 시스템에 의해 판독될 때, 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금 본원에 기술되는 기법들을 수행하는 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 표현하는 적어도 하나의 머신 판독가능 매체 상에 저장된 대표적인 명령어들로 구현될 수 있다. "IP 코어"라고 알려진 이러한 표현들은 유형적(tangible) 머신 판독가능 매체 상에 저장되고, 로직 또는 프로세서를 실제로 제조하는 제조 머신에 로딩하기 위해, 다양한 고객들 또는 제조 시설들에 공급될 수 있다.
다양한 예들이 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 사용하여 구현될 수 있다. 일부 예들에서, 하드웨어 요소들은 디바이스, 컴포넌트, 프로세서, 마이크로프로세서, 회로, 회로 요소(예컨대, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuit), PLD(programmable logic device), DSP(digital signal processor), FPGA(field programmable gate array), 메모리 유닛, 논리 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등을 포함할 수 있다. 일부 예들에서, 소프트웨어 요소들은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, API(application program interface), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 일 예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은, 주어진 구현에 대해 원하는 바에 따라, 원하는 계산 속도, 전력 레벨, 열 허용오차, 처리 사이클 버짓, 입력 데이터 레이트, 출력 데이터 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약조건들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.
일부 예들은 제조 물품 또는 적어도 하나의 컴퓨터 판독가능 매체를 포함할 수 있다. 컴퓨터 판독가능 매체는 로직을 저장하는 비일시적 저장 매체를 포함할 수 있다. 일부 예들에서, 비일시적 저장 매체는 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 소거가능 또는 비소거가능 메모리, 기입가능 또는 재기입가능 메모리 등을 비롯한, 전자 데이터를 저장할 수 있는 하나 이상의 유형들의 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 일부 예들에서, 로직은 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메소드, 프로시저, 소프트웨어 인터페이스, API, 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합과 같은, 다양한 소프트웨어 요소들을 포함할 수 있다.
일부 예들에 따르면, 컴퓨터 판독가능 매체는, 머신, 컴퓨팅 디바이스 또는 시스템에 의해 실행될 때, 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금 기술된 예들에 따른 방법들 및/또는 동작들을 수행하게 하는 명령어들을 저장하거나 유지하는 비일시적 저장 매체를 포함할 수 있다. 명령어들은, 소스 코드, 컴파일된 코드, 인터프리트된 코드, 실행가능 코드, 정적 코드, 동적 코드 등과 같은, 임의의 적당한 유형의 코드를 포함할 수 있다. 명령어들은 특정의 기능을 수행하라고 머신, 컴퓨팅 디바이스 또는 시스템에 지시하는 미리 정의된 컴퓨터 언어, 방식 또는 구문에 따라 구현될 수 있다. 명령어들은 임의의 적당한 상위 레벨, 하위 레벨, 객체 지향, 비주얼, 컴파일된 및/또는 인터프리트된 프로그래밍 언어를 사용하여 구현될 수 있다.
일부 예들은 표현 "일 예에서" 또는 "예"를 그의 파생어들과 함께 사용하여 기술될 수 있다. 이 용어들은 그 예와 관련하여 기술된 특정의 특징, 구조 또는 특성이 적어도 하나의 예에 포함되어 있다는 것을 의미한다. 명세서의 여러 곳에서 나오는 문구 "일 예에서"는 모두가 꼭 동일한 예를 지칭하는 것은 아니다.
일부 예들이 표현 "결합된" 및 "연결된"을 그의 파생어들과 함께 사용하여 기술될 수 있다. 이 용어들이 서로에 대해 꼭 동의어로서 의도되어 있지는 않다. 예를 들어, 용어 "연결된" 및/또는 "결합된"을 사용하여 기술한 것들은 2개 이상의 요소들이 서로 물리적으로 또는 전기적으로 직접 접촉하고 있다는 것을 나타낼 수 있다. 그렇지만, 용어 "결합된"은 또한 2개 이상의 요소들이 서로 직접 접촉하고 있지는 않지만 여전히 서로 협력하거나 상호작용하는 것을 의미할 수 있다.
이하의 예들은 본원에 개시되는 기술들의 부가 예들에 관한 것이다.
예 1. 예시적인 장치는 호스트 컴퓨팅 플랫폼에 있는 회로부 및 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자(packet descriptor)들을 모니터링하기 위해 회로부에 의해 실행하기 위한 큐 컴포넌트를 포함할 수 있다. 큐 모듈은 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨(level of fullness)을 결정할 수 있다. 장치는 또한, 각각의 폴링 반복 이후에 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트(trend count)를 증분시킬 수 있는, 회로부에 의해 실행하기 위한 증분 컴포넌트를 포함할 수 있다. 장치는 또한 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시(performance indication)를 OS 전력 관리 모듈로 송신하기 위해 회로부에 의해 실행하기 위한 성능 컴포넌트를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.
예 2. 예 1의 장치이고, 처리 요소의 성능 상태를 증가시킬 수 있는 OS 전력 관리 모듈은 처리 요소의 동작 주파수가 증가되게 할 수 있는 OS 전력 관리 모듈을 포함한다.
예 3. 예 1의 장치이고, 큐 컴포넌트에 의해 결정되는 충만도 레벨은 거의 비어 있음, 절반쯤 채워져 있음 또는 거의 채워져 있음 중 하나를 포함할 수 있다.
예 4. 예 3의 장치이고, 증분 컴포넌트는 충만도 레벨이 거의 비어 있음인 것으로 큐 컴포넌트에 의해 결정되는 경우 작은 수만큼 또는 충만도 레벨이 절반쯤 채워져 있음인 것으로 큐 컴포넌트에 의해 결정되는 경우 큰 수만큼 - 큰 수는 작은 수의 대략 100배임 - 트렌드 카운트를 증분시킬 수 있다.
예 5. 예 3의 장치는 또한, 수신 큐가 거의 채워져 있는 것으로 큐 컴포넌트에 의해 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시를 OS 전력 관리 모듈로 송신하는 성능 컴포넌트를 포함할 수 있다. 높은 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수가 최고 동작 주파수로 증가되게 하는 것에 의해, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다.
예 5-1. 예 3의 장치이고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것일 수 있고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것일 수 있으며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것일 수 있다.
예 6. 예 1의 장치이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소의 성능 상태를 증가시킬 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은 처리 요소의 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있을 것이고, 여기서 "n"은 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타낸다.
예 7. 예 1의 장치는 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하는 큐 컴포넌트를 포함할 수 있다. 증분 컴포넌트는 연속적 문턱값(consecutive threshold)을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트(idle count)를 1의 카운트만큼 증분시킬 수 있다. 장치는 또한 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시키기 위해 회로부에 의해 실행하기 위한 슬립 컴포넌트를 포함할 수 있다. 이 예들에 대해, 제2 기간은 제1 기간보다 더 길 수 있다.
예 8. 예 7의 장치는 또한 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는지에 기초하여 원샷 Rx 인터럽트(one-shot Rx interrupt)를 인에이블시킬 수 있는 인터럽트 턴 온 메시지(interrupt turn on message)를 NW I/O 디바이스로 송신하기 위해 회로부에 의해 실행하기 위한 인터럽트 제어 컴포넌트를 포함할 수 있다.
예 9. 예 7의 장치이고, 슬립 컴포넌트는, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있고, 긴 슬립 표시를 OS 전력 관리 모듈로 송신할 수 있다. 긴 슬립 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.
예 10. 예 9의 장치는 또한 타이머 간격을 가지는 타이머를 개시하기 위해 회로부에 의해 실행하기 위한 타이머 컴포넌트를 포함할 수 있다. 슬립 컴포넌트는, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPDK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정할 수 있다. 성능 컴포넌트는, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.
예 11. 예 9의 장치는 또한 타이머 간격을 가지는 타이머를 개시하기 위해 회로부에 의해 실행하기 위한 타이머 컴포넌트를 포함할 수 있다. 큐 컴포넌트는, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정할 수 있다. 성능 컴포넌트는, 반복당 평균 패킷이 패킷 평균 문턱값 미만인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.
예 12. 예 9의 장치이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소를 슬립 모드에 둘 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은, 슬립 표시에 응답하여 처리 요소를 슬립 모드에 두기 위해, 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 할 수 있다.
예 13. 예 7의 장치이고, 연속적 문턱값은 5개의 반복들일 수 있고, 각각의 폴링 반복은 대략 1 마이크로초마다 행해질 수 있다.
예 14. 예 13의 장치이고, 유휴 카운트가 제1 유휴 카운트 문턱값 미만이라는 것을 나타내는 슬립 표시는 DPDK 폴링 스레드를 제1 기간 동안 슬립시킬 수 있다. 이 예들에 대해, 제1 기간은 대략 5개의 폴링 반복들만큼 지속될 수 있다.
예 15. 예 13의 장치이고, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한다는 것을 나타내는 슬립 표시는 DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있다. 이 예들에 대해, 제2 기간은 대략 50개의 폴링 반복들만큼 지속될 수 있다.
예 16. 예 1의 장치이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.
예 17. 예 1의 장치이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서(load balancer) 애플리케이션 중 하나를 포함할 수 있다.
예 18. 예 1의 장치는 또한 사용자 인터페이스 뷰(user interface view)를 제시하기 위해 회로부에 결합된 디지털 디스플레이를 포함할 수 있다.
예 19. 예시적인 방법은 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 단계를 포함할 수 있다. 방법은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정하는 단계를 포함할 수 있다. 방법은 또한 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시키는 단계를 포함할 수 있다. 방법은 또한 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.
예 20. 예 19의 방법이고, 처리 요소의 성능 상태를 증가시키는 OS 전력 관리 모듈은 처리 요소의 동작 주파수가 증가되게 할 수 있는 OS 전력 관리 모듈을 포함한다.
예 21. 예 19의 방법이고, 충만도 레벨은 거의 비어 있음, 절반쯤 채워져 있음 또는 거의 채워져 있음 중 하나를 포함할 수 있다.
예 22. 예 21의 방법이고, 충만도 레벨이 거의 비어 있음인 경우 작은 수만큼 또는 충만도 레벨이 절반쯤 채워져 있음인 경우 큰 수만큼 트렌드 카운트를 증분시키는 단계를 포함한다. 이 예들에 대해, 큰 수는 작은 수의 대략 100배일 수 있다.
예 23. 예 21의 방법은 또한, 수신 큐가 거의 채워져 있는 것으로 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 높은 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 최고 동작 주파수로 증가시키는 것을 비롯하여, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다.
예 24. 예 21의 방법이고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것일 수 있고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것일 수 있으며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것일 수 있다.
예 25. 예 19의 방법이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소의 성능 상태를 증가시킬 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은 처리 요소의 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있을 것이고, 여기서 "n"은 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타낸다.
예 26. 예 17의 방법이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.
예 27. 예 19의 방법이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.
예 28. 예시적인 적어도 하나의 머신 판독가능 매체는, 시스템에 의해 실행되는 것에 응답하여, 시스템으로 하여금 예 19 내지 예 27 중 어느 한 예에 따른 방법을 수행하게 할 수 있는 복수의 명령어들을 포함할 수 있다.
예 29. 장치는 예 19 내지 예 27 중 어느 한 예의 방법을 수행하는 수단을 포함할 수 있다.
예 30. 예시적인 적어도 하나의 머신 판독가능 매체는, 호스트 컴퓨팅 플랫폼에 있는 시스템 상에서 실행되는 것에 응답하여, 시스템으로 하여금 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하게 하는 복수의 명령어들을 포함할 수 있다. 명령어들은 또한 시스템으로 하여금 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 수신 큐에 대한 충만도 레벨을 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금 수신 큐에 대한 충만도 레벨에 기초하여 트렌드 카운트를 증분시키고 트렌드 카운트가 트렌드 카운트 문턱값을 초과하는지에 기초하여 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소의 성능 상태를 증가시키게 할 수 있을 것이다.
예 31. 예 30의 적어도 하나의 머신 판독가능 매체이고, 처리 요소의 성능 상태를 증가시키는 OS 전력 관리 모듈은 처리 요소의 동작 주파수가 증가되게 할 수 있는 OS 전력 관리 모듈을 포함할 수 있다.
예 32. 예 30의 적어도 하나의 머신 판독가능 매체이고, 충만도 레벨은 거의 비어 있음, 절반쯤 채워져 있음 또는 거의 채워져 있음 중 하나를 포함할 수 있다.
예 33. 예 32의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 시스템으로 하여금 충만도 레벨이 거의 비어 있음인 경우 작은 수만큼 또는 충만도 레벨이 절반쯤 채워져 있음인 경우 큰 수만큼 트렌드 카운트를 증분시키게 할 수 있다. 이 예들에 대해, 큰 수는 작은 수의 대략 100배일 수 있다.
예 34. 예 32의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금, 수신 큐가 거의 채워져 있는 것으로 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 높은 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 이 예들에 대해, 높은 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 최고 동작 주파수로 증가시키는 것을 비롯하여, 처리 요소의 성능 상태를 최고 성능 상태로 증가시키게 할 수 있을 것이다.
예 35. 예 32의 적어도 하나의 머신 판독가능 매체이고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것일 수 있고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것일 수 있으며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것일 수 있다.
예 36. 예 30의 적어도 하나의 머신 판독가능 매체이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소의 성능 상태를 증가시킬 수 있을 것이다. OS 전력 관리 모듈은 처리 요소의 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있을 것이고, 여기서 "n"은 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타낸다.
예 37. 예 30의 적어도 하나의 머신 판독가능 매체이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.
예 38. 예 30의 적어도 하나의 머신 판독가능 매체이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.
예 39. 예시적인 방법은 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하는 단계를 포함할 수 있다. 방법은 또한 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하는 단계를 포함할 수 있다. 방법은 또한 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시키는 단계를 포함할 수 있다. 방법은 또한 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시키는 단계를 포함할 수 있다. 제2 기간은 제1 기간보다 더 길 수 있다.
예 40. 예 39의 방법은 또한, 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는 것에 기초하여, 인터럽트 턴 온 힌트를 NW I/O 디바이스로 송신하고 DPDK 폴링 스레드를 일시중지시키는 단계를 포함할 수 있다.
예 41. 예 39의 방법은 또한, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는 것에 기초하여, DPDK 폴링 스레드가 제2 기간 동안 슬립한다. 방법은 또한 긴 슬립 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 긴 슬립 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.
예 42. 예 41의 방법은 또한 타이머 간격을 가지는 타이머를 개시하는 단계를 포함할 수 있다. 방법은 또한, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPDK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정하는 단계를 포함할 수 있다. 방법은 또한, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.
예 43. 예 41의 방법은 또한, 타이머 간격을 가지는 타이머를 개시하는 단계를 포함할 수 있다. 방법은 또한, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정하는 단계를 포함할 수 있다. 방법은 또한, 반복당 평균 패킷이 패킷 평균 문턱값 미만인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하는 단계를 포함할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있다.
예 44. 예 41의 방법이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소를 슬립 모드에 둘 수 있을 것이다. 이 예들에 대해, OS 전력 관리 모듈은, 슬립 표시에 응답하여 처리 요소를 슬립 모드에 두기 위해, 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 할 수 있다.
예 45. 예 41의 방법이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나일 수 있다.
예 46. 예 39의 방법이고, 연속적 문턱값은 5개의 반복들일 수 있고, 각각의 폴링 반복은 대략 1 마이크로초마다 행해질 수 있다.
예 47. 예 46의 방법이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값 미만이라는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제1 기간 동안 슬립시킬 수 있다. 제1 기간은 대략 5개의 폴링 반복들만큼 지속될 수 있다.
예 48. 예 46의 방법이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한다는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있다. 제2 기간은 대략 50개의 폴링 반복들만큼 지속될 수 있다.
예 49. 예 39의 방법이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.
예 50. 예시적인 적어도 하나의 머신 판독가능 매체는, 호스트 컴퓨팅 플랫폼에 있는 시스템에 의해 실행되는 것에 응답하여, 시스템으로 하여금 예 39 내지 예 49 중 어느 한 예에 따른 방법을 수행하게 할 수 있는 복수의 명령어들을 포함할 수 있다.
예 51. 예시적인 장치는 예 39 내지 예 49 중 어느 한 예의 방법을 수행하는 수단을 포함할 수 있다.
예 52. 예시적인 적어도 하나의 머신 판독가능 매체는, 호스트 컴퓨팅 플랫폼에 있는 시스템 상에서 실행되는 것에 응답하여, 시스템으로 하여금 DPDK 폴링 스레드에 대한 다수의 폴링 반복들에 걸쳐 NW I/O 디바이스에 대한 수신 큐에 유지되는 수신된 그리고 이용가능한 패킷 기술자들을 모니터링하게 할 수 있는 복수의 명령어들을 포함할 수 있다. 명령어들은 또한 시스템으로 하여금 각각의 폴링 반복 이후에 수신 큐에 유지되는 이용가능한 패킷 기술자들에 기초하여 각각의 폴링 반복에 대해 수신 큐에 수신되는 패킷들의 개수를 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금 연속적 문턱값을 초과하는 개수의 연속적 폴링 반복들에 대해 수신되는 패킷들의 개수가 0이면 유휴 카운트를 1의 카운트만큼 증분시키게 할 수 있다. 명령어들은 또한, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는지 또는 그 미만인지에 기초하여, 제1 기간 또는 제2 기간 중 하나 동안 DPDK 폴링 스레드를 슬립시키게 할 수 있다. 제2 기간은 제1 기간보다 더 길 수 있다.
예 53. 예 52의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금, 유휴 카운트가 제2 유휴 카운트 문턱값을 초과하는 것에 기초하여, 인터럽트 턴 온 힌트를 NW I/O 디바이스로 송신하게 하고 DPDK 폴링 스레드를 일시중지시키게 할 수 있다.
예 54. 예 52의 적어도 하나의 머신 판독가능 매체이고, 유휴 카운트가 제1 유휴 카운트 문턱값을 초과하는 것에 기초하여, DPDK 폴링 스레드가 제2 기간 동안 슬립한다. 명령어들은 추가로 시스템으로 하여금 긴 슬립 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 긴 슬립 표시는 OS 전력 관리 모듈로 하여금 DPDK 폴링 스레드를 실행하는 처리 요소가 최대 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있을 것이다.
예 55. 예 54의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금 타이머 간격을 가지는 타이머를 개시하게 하고, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 DPDK 폴링 스레드가 슬립하고 있었던 반복들의 퍼센트를 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금, 퍼센트가 퍼센트 문턱값 초과인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것 또는 동작 전압을 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있을 것이다.
예 56. 예 54의 적어도 하나의 머신 판독가능 매체이고, 명령어들은 추가로 시스템으로 하여금 타이머 간격을 가지는 타이머를 개시하게 하고, 타이머가 만료한 것에 응답하여, 타이머 간격 동안 수신 큐에 수신되는 패킷들에 대한 반복당 평균 패킷을 결정하게 할 수 있다. 명령어들은 또한 시스템으로 하여금, 반복당 평균 패킷이 패킷 평균 문턱값 미만인지에 기초하여, 성능 표시를 OS 전력 관리 모듈로 송신하게 할 수 있다. 성능 표시는 OS 전력 관리 모듈로 하여금, 처리 요소의 동작 주파수를 감소시키는 것을 비롯하여, 처리 요소의 성능 상태를 저하시키게 할 수 있다.
예 57. 예 54의 적어도 하나의 머신 판독가능 매체이고, OS 전력 관리 모듈은, ACPI 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 처리 요소를 슬립 모드에 둘 수 있을 것이다. OS 전력 관리 모듈은, 슬립 표시에 응답하여 처리 요소를 슬립 모드에 두기 위해, 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 할 수 있다.
예 58. 예 54의 적어도 하나의 머신 판독가능 매체이고, 처리 요소는 멀티코어 프로세서의 코어 또는 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함할 수 있다.
예 59. 예 51의 적어도 하나의 머신 판독가능 매체이고, 연속적 문턱값은 5개의 반복들을 포함할 수 있고, 각각의 폴링 반복은 대략 1 마이크로초마다 행해질 수 있다.
예 60. 예 59의 적어도 하나의 머신 판독가능 매체이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값 미만이라는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제1 기간 동안 슬립시킬 수 있다. 제1 기간은 대략 5개의 폴링 반복들만큼 지속될 수 있다.
예 61. 예 59의 적어도 하나의 머신 판독가능 매체이고, 슬립 표시는 유휴 카운트가 제1 유휴 카운트 문턱값을 초과한다는 것을 나타낼 수 있고, DPDK 폴링 스레드를 제2 기간 동안 슬립시킬 수 있다. 제2 기간은 대략 50개의 폴링 반복들만큼 지속될 수 있다.
예 62. 예 52의 적어도 하나의 머신 판독가능 매체이고, DPDK 폴링 스레드는 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있을 것이다. 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN 애플리케이션, NAT 애플리케이션, DPI 애플리케이션 또는 로드 밸런서 애플리케이션 중 하나를 포함할 수 있다.
강조할 점은, 읽는 사람이 기술적 개시 내용의 요지를 빠르게 확인할 수 있게 할 요약서를 요구하는, 37 C.F.R. 섹션 1.72(b)에 부합하기 위해 본 개시내용의 요약서가 제공된다는 것이다. 요약서는 청구항들의 범주 또는 의미를 해석하거나 제한하는 데 사용되지 않는다는 이해 하에 제공된다. 그에 부가하여, 전술한 발명을 실시하기 위한 구체적인 내용에서, 본 개시내용을 간소화하기 위해 다양한 특징들이 단일의 실시예에 함께 그룹화되어 있다는 것을 알 수 있다. 이러한 개시 방법이 청구된 예들이 각각의 청구항에 명확하게 인용되어 있는 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안된다. 오히려, 이하의 청구항들이 반영하는 바와 같이, 본 발명의 발명 요지는 단일의 개시된 예의 특징들 전부가 아닌 일부에 있다. 따라서, 이하의 청구항들은 이로써 발명을 실시하기 위한 구체적인 내용에 포함되며, 각각의 청구항은 그 자체로서 개별적인 예로서의 지위를 갖는다. 첨부된 청구항들에서, 용어들 "포함하는(including)" 그리고 "여기서(in which)"는 각자의 용어들 "포함하는(comprising)" 그리고 "여기서(wherein)"의 평이한 영어 동등어로서 사용된다. 더욱이, 용어들 "제1", "제2" 및 "제3" 등은 단순히 수식어로서 사용되고, 그의 대상물들에 대한 수치적 요구사항들을 부과하려는 것으로 의도되어 있지 않다.
비록 발명 요지가 구조적 특징들 및/또는 방법 동작들과 관련하여 기술되어 있지만, 첨부된 청구항들에 한정된 발명 요지가 앞서 기술된 특정의 특징들 또는 동작들로 꼭 제한되는 것은 아님을 잘 알 것이다. 오히려, 앞서 기술된 특정의 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태들로서 개시되어 있다.

Claims (30)

  1. 장치로서,
    호스트 컴퓨팅 플랫폼에 있는 회로부;
    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)
    를 포함하는, 장치.
  2. 제1항에 있어서, 상기 처리 요소의 상기 성능 상태를 증가시키는 상기 OS 전력 관리 모듈은 상기 처리 요소의 동작 주파수가 증가되게 할 수 있는 상기 OS 전력 관리 모듈을 포함하는, 장치.
  3. 제1항에 있어서, 상기 큐 컴포넌트에 의해 결정되는 상기 충만도 레벨은 거의 비어 있음(near empty), 절반쯤 채워져 있음(half full) 또는 거의 채워져 있음(near full) 중 하나를 포함하고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것이고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것이며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것인, 장치.
  4. 제3항에 있어서, 상기 증분 컴포넌트는 상기 충만도 레벨이 거의 비어 있음인 것으로 상기 큐 컴포넌트에 의해 결정되는 경우 작은 수만큼 또는 상기 충만도 레벨이 절반쯤 채워져 있음인 것으로 상기 큐 컴포넌트에 의해 결정되는 경우 큰 수만큼 - 상기 큰 수는 상기 작은 수의 100배임 - 상기 트렌드 카운트를 증분시키는, 장치.
  5. 제3항에 있어서,
    상기 수신 큐가 거의 채워져 있는 것으로 상기 큐 컴포넌트에 의해 결정되는 연속적 폴링 반복들의 개수(consecutive number of polling interations)가 연속적 문턱값(consecutive threshold)을 초과한 것에 응답하여, 성능 표시를 상기 OS 전력 관리 모듈로 송신하는 상기 성능 컴포넌트 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금, 상기 처리 요소의 동작 주파수가 최고 동작 주파수로 증가되게 하는 것에 의해, 상기 처리 요소의 상기 성능 상태를 최고 성능 상태로 증가시키게 할 수 있음 - 를 포함하는, 장치.
  6. 삭제
  7. 제1항에 있어서, ACPI(Advanced Configuration and Power Interface) 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 상기 처리 요소의 상기 성능 상태를 증가시킬 수 있는 상기 OS 전력 관리 모듈 - 상기 OS 전력 관리 모듈은 상기 처리 요소의 상기 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있으며, "n"은 상기 처리 요소의 최저 동작 주파수를 가져오는(resulting in) 최저 성능 상태를 나타냄 - 을 포함하는, 장치.
  8. 삭제
  9. 삭제
  10. 제1항에 있어서, 상기 유휴 카운트가 상기 제1 유휴 카운트 문턱값을 초과한 것에 기초하여, DPDK 폴링 스레드를 상기 제2 기간 동안 슬립시키고, 긴 슬립 표시를 상기 OS 전력 관리 모듈로 송신하는 상기 슬립 컴포넌트 - 상기 긴 슬립 표시는 상기 OS 전력 관리 모듈로 하여금 상기 DPDK 폴링 스레드를 실행하는 상기 처리 요소가 최대 상기 제2 기간 동안 슬립 모드에 있게 하도록 할 수 있음 - 를 포함하는, 장치.
  11. 장치로서,
    호스트 컴퓨팅 플랫폼에 있는 회로부;
    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 전력 관리 모듈로 송신하는, 장치.
  12. 장치로서,
    호스트 컴퓨팅 플랫폼에 있는 회로부;
    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 전력 관리 모듈로 송신하는, 장치.
  13. 제10항에 있어서, ACPI(Advanced Configuration and Power Interface) 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 상기 처리 요소를 슬립 모드에 둘 수 있는 상기 OS 전력 관리 모듈 - 상기 OS 전력 관리 모듈은, 상기 슬립 표시에 응답하여 상기 처리 요소를 상기 슬립 모드에 두기 위해, 상기 처리 요소로 하여금 적어도 C1 프로세서 전력 상태에 진입하게 함 - 을 포함하는, 장치.
  14. 제1항에 있어서, 상기 연속적 문턱값은 5개의 반복들을 포함하고, 각각의 폴링 반복은 1 마이크로초마다 행해지는, 장치.
  15. 장치로서,
    호스트 컴퓨팅 플랫폼에 있는 회로부;
    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개의 폴링 반복들만큼 지속되는, 장치.
  16. 장치로서,
    호스트 컴퓨팅 플랫폼에 있는 회로부;
    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개의 폴링 반복들만큼 지속되는, 장치.
  17. 제1항에 있어서, 상기 처리 요소는 멀티코어 프로세서의 코어 또는 상기 멀티코어 프로세서의 하나 이상의 코어들에 의해 지원되는 가상 머신 중 하나를 포함하는, 장치.
  18. 제1항에 있어서, 상기 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있는 상기 DPDK 폴링 스레드 - 상기 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN(virtual private network) 애플리케이션, NAT(network address translation) 애플리케이션, DPI(deep packet inspection) 애플리케이션 또는 로드 밸런서(load balancer) 애플리케이션 중 하나를 포함함 - 를 포함하는, 장치.
  19. 호스트 컴퓨팅 플랫폼에 있는 시스템 상에서 실행되는 것에 응답하여, 상기 시스템으로 하여금
    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 디바이스로 송신하게 하는
    복수의 명령어들을 포함하는 적어도 하나의 머신 판독가능 매체.
  20. 제19항에 있어서, 상기 충만도 레벨은 거의 비어 있음(near empty), 절반쯤 채워져 있음(half full) 또는 거의 채워져 있음(near full) 중 하나를 포함하고, 거의 비어 있는 것은 25% 내지 50% 채워져 있는 것이고, 절반쯤 채워져 있는 것은 51% 내지 75% 채워져 있는 것이며, 거의 채워져 있는 것은 75% 초과 채워져 있는 것인, 적어도 하나의 머신 판독가능 매체.
  21. 제20항에 있어서, 상기 명령어들은 추가로 상기 시스템으로 하여금
    상기 수신 큐가 거의 채워져 있는 것으로 결정되는 연속적 폴링 반복들의 개수가 연속적 문턱값을 초과한 것에 응답하여, 성능 표시를 상기 OS 전력 관리 모듈로 송신하게 하는 - 상기 성능 표시는 상기 OS 전력 관리 모듈로 하여금, 상기 처리 요소의 동작 주파수를 최고 동작 주파수로 증가시키는 것을 비롯하여, 상기 처리 요소의 상기 성능 상태를 최고 성능 상태로 증가시키게 할 수 있음 -, 적어도 하나의 머신 판독가능 매체.
  22. 삭제
  23. 제19항에 있어서, 상기 OS 전력 관리 모듈은 ACPI(Advanced Configuration and Power Interface) 규격, 개정판 5.0을 비롯한, 하나 이상의 산업 표준들에 따라 상기 처리 요소의 상기 성능 상태를 증가시킬 수 있고, 상기 OS 전력 관리 모듈은 상기 처리 요소의 상기 성능 상태를 Pn-1 성능 상태에 진입하도록 증가시킬 수 있는 - "n"은 상기 처리 요소의 최저 동작 주파수를 가져오는 최저 성능 상태를 나타냄 -, 적어도 하나의 머신 판독가능 매체.
  24. 제19항에 있어서, 상기 DPDK 폴링 스레드는 상기 NW I/O 디바이스에 의해 수신되는 패킷들을 처리하기 위해 네트워크 패킷 처리 애플리케이션을 실행할 수 있고, 상기 네트워크 패킷 처리 애플리케이션은 방화벽 애플리케이션, VPN(virtual private network) 애플리케이션, NAT(network address translation) 애플리케이션, DPI(deep packet inspection) 애플리케이션 또는 로드 밸런서(load balancer) 애플리케이션 중 하나를 포함하는, 적어도 하나의 머신 판독가능 매체.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020177013532A 2014-12-22 2014-12-22 네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법 KR102284467B1 (ko)

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 (ko) 2017-08-28
KR102284467B1 true KR102284467B1 (ko) 2021-08-03

Family

ID=56148844

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177013532A KR102284467B1 (ko) 2014-12-22 2014-12-22 네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법

Country Status (5)

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

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786674B (zh) * 2016-03-24 2018-11-16 华为技术有限公司 一种调度方法及电子设备
CN108628684B (zh) * 2017-03-20 2021-01-05 华为技术有限公司 一种基于dpdk的报文处理方法及计算机设备
EP3646138A1 (en) 2017-06-27 2020-05-06 Telefonaktiebolaget LM Ericsson (PUBL) Power management of an event-based processing system
CN108062269B (zh) * 2017-12-05 2020-12-11 上海交通大学 一种基于dpdk的计算资源弹性伸缩方法及系统
CN108632110B (zh) * 2018-03-23 2020-06-19 北京网测科技有限公司 设备性能测试方法、系统、计算机设备和存储介质
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
CN110968402A (zh) * 2018-09-28 2020-04-07 深信服科技股份有限公司 一种cpu工作控制方法、装置、设备及存储介质
CN110968403A (zh) * 2018-09-28 2020-04-07 深信服科技股份有限公司 一种cpu工作控制方法、装置、设备及存储介质
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 (zh) * 2019-11-15 2023-12-29 深信服科技股份有限公司 一种数据通信方法、装置、设备及存储介质
KR102437625B1 (ko) * 2020-06-19 2022-08-29 재단법인대구경북과학기술원 전자 장치 및 전자 장치의 전력 관리 방법
JPWO2023002547A1 (ko) * 2021-07-19 2023-01-26
WO2023105692A1 (ja) * 2021-12-08 2023-06-15 日本電信電話株式会社 サーバ内データ転送装置、サーバ内データ転送方法およびプログラム
WO2023144958A1 (ja) * 2022-01-27 2023-08-03 日本電信電話株式会社 サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
WO2023199519A1 (ja) * 2022-04-15 2023-10-19 日本電信電話株式会社 サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム
CN115756143B (zh) * 2022-11-30 2024-03-12 深圳市领创星通科技有限公司 数据包处理的节能方法、装置、计算机设备和存储介质
CN116055230B (zh) * 2023-03-28 2023-06-09 北京博上网络科技有限公司 一种dpdk睡眠时间控制方法及系统

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 (ja) * 2012-12-19 2014-06-30 Alaxala Networks Corp 中継装置
JP2014521131A (ja) * 2011-06-29 2014-08-25 日本電気株式会社 マルチプロセッサシステム、および、その省エネルギー化方法

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 (de) * 2005-05-04 2010-02-04 Telecom Italia Spa Verfahren und system zum verarbeiten von paketflüssen und computerprogrammprodukt dafür
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 (zh) * 2009-11-26 2011-06-01 上海大学 基于改进型零拷贝技术的高性能内核的网络数据处理系统
JP2012168757A (ja) * 2011-02-15 2012-09-06 Nec Casio Mobile Communications Ltd パフォーマンス制御システム、及びアプリケーションプロセッサ
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 (ja) * 2011-06-29 2014-08-25 日本電気株式会社 マルチプロセッサシステム、および、その省エネルギー化方法
JP2014121036A (ja) * 2012-12-19 2014-06-30 Alaxala Networks Corp 中継装置

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102284467B1 (ko) 네트워크 디바이스에서의 수신된 패킷의 처리와 연관된 전력 관리 기법
TWI486023B (zh) 在活動狀態功率管理過程中改善延時的方法和系統
TWI526843B (zh) 用於節能行動平台之適應性中斷合倂技術
US10929179B2 (en) Scheduling method and electronic device
CN111475009B (zh) 一种服务器内gpu的降功耗电路及服务器
US20190042331A1 (en) Power aware load balancing using a hardware queue manager
US20090077277A1 (en) Methods and apparatus for decreasing power consumption and bus activity
EP2270625A1 (en) System and method for processor utilization adjustment to improve deep c-state use
US9952911B2 (en) Dynamically optimized device driver protocol assist threads
WO2021078144A1 (zh) 能耗管理的方法和设备
TW201314433A (zh) 伺服器系統及其電源管理方法
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 (ja) 電力消費の低減のためのネットワークアプリケーション並行スケジューリング
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
US10656701B2 (en) Managing processor frequencies
EP4314988A1 (en) Systems and methods for processing asynchronous reset events while maintaining persistent memory state
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