numam-dpdk/lib/librte_power
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
..
guest_channel.c power: clean up includes 2021-01-29 11:25:40 +01:00
guest_channel.h power: clean up includes 2021-01-29 11:25:40 +01:00
meson.build power: add ethdev power management 2021-01-29 15:29:48 +01:00
power_acpi_cpufreq.c power: use C11 atomics for power state 2020-09-25 15:42:29 +02:00
power_acpi_cpufreq.h power: add environment capability probing 2020-07-11 13:31:16 +02:00
power_common.c power: fix environment detection 2020-07-22 01:35:39 +02:00
power_common.h power: add environment capability probing 2020-07-11 13:31:16 +02:00
power_kvm_vm.c power: clean up includes 2021-01-29 11:25:40 +01:00
power_kvm_vm.h power: add environment capability probing 2020-07-11 13:31:16 +02:00
power_pstate_cpufreq.c power: fix current frequency index 2020-10-07 14:51:52 +02:00
power_pstate_cpufreq.h power: add environment capability probing 2020-07-11 13:31:16 +02:00
rte_power_empty_poll.c eal: rename lcore master and slave 2020-10-20 13:17:08 +02:00
rte_power_empty_poll.h enforce experimental tag at beginning of declarations 2019-06-29 19:04:48 +02:00
rte_power_guest_channel.h power: clean up includes 2021-01-29 11:25:40 +01:00
rte_power_pmd_mgmt.c power: add ethdev power management 2021-01-29 15:29:48 +01:00
rte_power_pmd_mgmt.h power: add ethdev power management 2021-01-29 15:29:48 +01:00
rte_power.c power: add environment capability probing 2020-07-11 13:31:16 +02:00
rte_power.h power: clean up includes 2021-01-29 11:25:40 +01:00
version.map power: add ethdev power management 2021-01-29 15:29:48 +01:00