numam-dpdk/lib
Liang Ma 682a645438 power: add ethdev power management
Add a simple on/off switch that will enable saving power when no
packets are arriving. It is based on counting the number of empty
polls and, when the number reaches a certain threshold, entering an
architecture-defined optimized power state that will either wait
until a TSC timestamp expires, or when packets arrive.

This API mandates a core-to-single-queue mapping (that is, multiple
queued per device are supported, but they have to be polled on different
cores).

This design is using PMD RX callbacks.

1. UMWAIT/UMONITOR:

   When a certain threshold of empty polls is reached, the core will go
   into a power optimized sleep while waiting on an address of next RX
   descriptor to be written to.

2. TPAUSE/Pause instruction

   This method uses the pause (or TPAUSE, if available) instruction to
   avoid busy polling.

3. Frequency scaling
   Reuse existing DPDK power library to scale up/down core frequency
   depending on traffic volume.

Signed-off-by: Liang Ma <liang.j.ma@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
2021-01-29 15:29:48 +01:00
..
librte_acl build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_bbdev build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_bitratestats bitrate: fix missing header include 2021-01-21 10:27:44 +01:00
librte_bpf build: force pkg-config for dependency detection 2021-01-26 00:43:59 +01:00
librte_cfgfile build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_cmdline cmdline: avoid name clash with Windows system types 2020-11-05 17:49:00 +01:00
librte_compressdev build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_cryptodev cryptodev: add enqueue and dequeue callbacks 2021-01-19 18:05:44 +01:00
librte_distributor build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_eal eal: improve power monitor API comments 2021-01-29 15:29:48 +01:00
librte_efd efd: fix tailq entry leak in error path 2020-10-22 22:07:15 +02:00
librte_ethdev ethdev: fix missing header include 2021-01-21 10:21:40 +01:00
librte_eventdev eventdev: remove software Rx timestamp 2020-11-03 15:28:26 +01:00
librte_fib fib: fix missing header includes 2021-01-21 10:27:47 +01:00
librte_flow_classify build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_graph build: standardize component names and defines 2020-10-19 22:15:34 +02:00
librte_gro gro: fix packet type detection with IPv6 tunnel 2020-11-14 10:56:30 +01:00
librte_gso gso: support VXLAN UDP/IPv4 2021-01-15 11:31:28 +01:00
librte_hash hash: fix check of parameter 2020-10-29 16:45:17 +01:00
librte_ip_frag ip_frag: remove padding length of fragment 2021-01-15 11:31:28 +01:00
librte_ipsec ipsec: fix missing header include 2021-01-21 10:27:47 +01:00
librte_jobstats build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_kni build: align wording of non-support reasons 2020-11-20 16:05:35 +01:00
librte_kvargs build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_latencystats latency: switch Rx timestamp to dynamic mbuf field 2020-11-03 16:21:15 +01:00
librte_lpm lpm/arm: support SVE 2021-01-14 16:42:25 +01:00
librte_mbuf mbuf: fix missing header include 2021-01-21 10:21:40 +01:00
librte_member build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_mempool build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_meter build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_metrics build: force pkg-config for dependency detection 2021-01-26 00:43:59 +01:00
librte_net net: fix missing header include 2021-01-21 10:21:40 +01:00
librte_node node: fix missing header include 2021-01-21 10:27:47 +01:00
librte_pci build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_pdump pdump: cleanup logs and variables 2021-01-19 15:24:46 +01:00
librte_pipeline pipeline: fix missing header includes 2021-01-21 10:27:47 +01:00
librte_port build: replace use of old build macros 2020-10-19 22:15:44 +02:00
librte_power power: add ethdev power management 2021-01-29 15:29:48 +01:00
librte_rawdev build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_rcu rcu: use EAL memory barrier API 2021-01-11 15:34:21 +01:00
librte_regexdev regexdev: add resource limit reached flag 2021-01-12 23:31:39 +01:00
librte_reorder reorder: switch sequence number to dynamic mbuf field 2020-10-31 22:14:30 +01:00
librte_rib rib: fix missing header includes 2021-01-21 10:27:47 +01:00
librte_ring ring: refactor exported headers 2021-01-29 11:37:14 +01:00
librte_sched build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_security security: switch metadata to dynamic mbuf field 2020-10-31 16:13:11 +01:00
librte_stack build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_table table: fix missing header include 2021-01-21 10:27:47 +01:00
librte_telemetry telemetry: fix missing header include 2021-01-21 10:21:40 +01:00
librte_timer build: remove library name from version map file name 2020-10-19 22:13:59 +02:00
librte_vhost vhost: fix missing header includes 2021-01-21 10:27:47 +01:00
meson.build config: remove compatibility build defines 2021-01-20 01:43:25 +01:00