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>
18 lines
487 B
Meson
18 lines
487 B
Meson
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2017 Intel Corporation
|
|
|
|
if not is_linux
|
|
build = false
|
|
reason = 'only supported on Linux'
|
|
endif
|
|
sources = files('rte_power.c', 'power_acpi_cpufreq.c',
|
|
'power_kvm_vm.c', 'guest_channel.c',
|
|
'rte_power_empty_poll.c',
|
|
'power_pstate_cpufreq.c',
|
|
'rte_power_pmd_mgmt.c',
|
|
'power_common.c')
|
|
headers = files('rte_power.h','rte_power_empty_poll.h',
|
|
'rte_power_pmd_mgmt.h',
|
|
'rte_power_guest_channel.h')
|
|
deps += ['timer', 'ethdev']
|