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>
44 lines
912 B
Plaintext
44 lines
912 B
Plaintext
DPDK_21 {
|
|
global:
|
|
|
|
rte_power_exit;
|
|
rte_power_freq_disable_turbo;
|
|
rte_power_freq_down;
|
|
rte_power_freq_enable_turbo;
|
|
rte_power_freq_max;
|
|
rte_power_freq_min;
|
|
rte_power_freq_up;
|
|
rte_power_freqs;
|
|
rte_power_get_capabilities;
|
|
rte_power_get_env;
|
|
rte_power_get_freq;
|
|
rte_power_guest_channel_send_msg;
|
|
rte_power_init;
|
|
rte_power_set_env;
|
|
rte_power_set_freq;
|
|
rte_power_turbo_status;
|
|
rte_power_unset_env;
|
|
|
|
local: *;
|
|
};
|
|
|
|
EXPERIMENTAL {
|
|
global:
|
|
|
|
rte_empty_poll_detection;
|
|
rte_power_check_env_supported;
|
|
rte_power_empty_poll_stat_fetch;
|
|
rte_power_empty_poll_stat_free;
|
|
rte_power_empty_poll_stat_init;
|
|
rte_power_empty_poll_stat_update;
|
|
rte_power_guest_channel_receive_msg;
|
|
rte_power_poll_stat_fetch;
|
|
rte_power_poll_stat_update;
|
|
|
|
# added in 21.02
|
|
rte_power_ethdev_pmgmt_queue_disable;
|
|
rte_power_ethdev_pmgmt_queue_enable;
|
|
rte_power_guest_channel_receive_msg;
|
|
rte_power_guest_channel_send_msg;
|
|
};
|