On Tue, Feb 6, 2018 at 12:03 AM, Sagi Grimberg <[email protected]> wrote:
> irq-am library helps I/O devices implement interrupt moderation in
> an adaptive fashion, based on online stats.
>
> The consumer can initialize an irq-am context with a callback that
> performs the device specific moderation programming and also the number
> of am (adaptive moderation) levels which are also, abstracted and allows
> for device specific tuning.
>
> The irq-am code will sample once every nr_events and will check for 
> significant
> change in workload characteristics (completions per second, events per second)
> and if it detects one, will perform an am level update(called a step).
>
> The irq-am code  assumes that the am levels are sorted in an increasing order 
> when
> the lowest level corresponds to the optimum latency tuning (short time and low
> completion-count) and gradually increasing towards the throughput optimum 
> tuning
> (longer time and higher completion-count). So there is a trend and tuning 
> direction
> tracked by the moderator. When the moderator collects sufficient statistics 
> (also
> controlled by the consumer defining nr_events), it compares the current stats 
> with the
> previous stats and if a significant changed was observed in the load, the 
> moderator
> attempts to increment/decrement its current level (step) and schedules a 
> program
> dispatch work.
>
> Signed-off-by: Sagi Grimberg <[email protected]>
> ---
>  include/linux/irq-am.h | 116 +++++++++++++++++++++++++++++++

Talking to Tal, it seems that this is what landed in upstream as
include/linux/net_dim.h
and can have few adjustments for you, I suggest you take a look

Reply via email to