numam-dpdk/lib/power
Anatoly Burakov 5dff9a72b0 power: support callbacks for multiple Rx queues
Currently, there is a hard limitation on the PMD power management
support that only allows it to support a single queue per lcore. This is
not ideal as most DPDK use cases will poll multiple queues per core.

The PMD power management mechanism relies on ethdev Rx callbacks, so it
is very difficult to implement such support because callbacks are
effectively stateless and have no visibility into what the other ethdev
devices are doing. This places limitations on what we can do within the
framework of Rx callbacks, but the basics of this implementation are as
follows:

- Replace per-queue structures with per-lcore ones, so that any device
  polled from the same lcore can share data
- Any queue that is going to be polled from a specific lcore has to be
  added to the list of queues to poll, so that the callback is aware of
  other queues being polled by the same lcore
- Both the empty poll counter and the actual power saving mechanism is
  shared between all queues polled on a particular lcore, and is only
  activated when all queues in the list were polled and were determined
  to have no traffic.
- The limitation on UMWAIT-based polling is not removed because UMWAIT
  is incapable of monitoring more than one address.

Also, while we're at it, update and improve the docs.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: David Hunt <david.hunt@intel.com>
2021-07-09 21:13:13 +02:00
..
guest_channel.c power: fix sanity checks for guest channel read 2021-05-12 17:18:38 +02:00
guest_channel.h lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
meson.build power: make ethdev power management thread unsafe 2021-07-09 21:13:13 +02:00
power_acpi_cpufreq.c power: refactor ACPI and intel_pstate support 2021-07-08 22:32:13 +02:00
power_acpi_cpufreq.h lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
power_common.c power: refactor ACPI and intel_pstate support 2021-07-08 22:32:13 +02:00
power_common.h power: refactor ACPI and intel_pstate support 2021-07-08 22:32:13 +02:00
power_cppc_cpufreq.c power: support cppc_cpufreq driver 2021-07-09 16:04:46 +02:00
power_cppc_cpufreq.h power: support cppc_cpufreq driver 2021-07-09 16:04:46 +02:00
power_kvm_vm.c lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
power_kvm_vm.h lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
power_pstate_cpufreq.c power: refactor ACPI and intel_pstate support 2021-07-08 22:32:13 +02:00
power_pstate_cpufreq.h lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
rte_power_empty_poll.c lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
rte_power_empty_poll.h lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
rte_power_guest_channel.h lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
rte_power_pmd_mgmt.c power: support callbacks for multiple Rx queues 2021-07-09 21:13:13 +02:00
rte_power_pmd_mgmt.h power: make ethdev power management thread unsafe 2021-07-09 21:13:13 +02:00
rte_power.c power: support cppc_cpufreq driver 2021-07-09 16:04:46 +02:00
rte_power.h power: support cppc_cpufreq driver 2021-07-09 16:04:46 +02:00
version.map lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00