682a645438
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> |
||
---|---|---|
.. | ||
guest_channel.c | ||
guest_channel.h | ||
meson.build | ||
power_acpi_cpufreq.c | ||
power_acpi_cpufreq.h | ||
power_common.c | ||
power_common.h | ||
power_kvm_vm.c | ||
power_kvm_vm.h | ||
power_pstate_cpufreq.c | ||
power_pstate_cpufreq.h | ||
rte_power_empty_poll.c | ||
rte_power_empty_poll.h | ||
rte_power_guest_channel.h | ||
rte_power_pmd_mgmt.c | ||
rte_power_pmd_mgmt.h | ||
rte_power.c | ||
rte_power.h | ||
version.map |