On Fri, 4 Sep 2020 11:18:57 +0100 Liang Ma <liang.j...@intel.com> wrote:
> 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 is limited to 1 core 1 port 1 queue use case as there is > no coordination between queues/cores in ethdev. 1 port map to multiple > core will be supported in next version. The common way to express is this is: This API is not thread-safe and not preempt-safe. There is also no mechanism for a single thread to wait on multiple queues. > > This design leverage RX Callback mechnaism which allow three > different power management methodology co exist. nit coexist is one word > > 1. umwait/umonitor: > > The TSC timestamp is automatically calculated using current > link speed and RX descriptor ring size, such that the sleep > time is not longer than it would take for a NIC to fill its > entire RX descriptor ring. > > 2. Pause instruction > > Instead of move the core into deeper C state, this lightweight > method use Pause instruction to releaf the processor from > busy polling. Wording here is a problem, and "releaf" should be "relief"? Rewording into active voice grammar would be easier. Use Pause instruction to allow processor to go into deeper C state when busy polling. > > 3. Frequency Scaling > Reuse exist rte power library to scale up/down core frequency > depend on traffic volume.