Intel-Wired-Lan Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Keller, Jacob E <jacob.e.keller@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [next-queue 13/17] fm10k: Update adaptive ITR algorithm
Date: Wed, 14 Oct 2015 20:12:18 +0000	[thread overview]
Message-ID: <1444853538.26286.42.camel@intel.com> (raw)
In-Reply-To: <561EA08C.8090705@gmail.com>

On Wed, 2015-10-14 at 11:35 -0700, Alexander Duyck wrote:
> On 10/13/2015 04:39 PM, Jacob Keller wrote:
> +	 */+#define FM10K_ITR_SCALE_SMALL	6
> > +#define FM10K_ITR_SCALE_MEDIUM	5
> > +#define FM10K_ITR_SCALE_LARGE	4
> > +
> > +	if (avg_wire_size < 300)
> > +		avg_wire_size *= FM10K_ITR_SCALE_SMALL;
> > +	else if ((avg_wire_size >= 300) && (avg_wire_size < 1200))
> > +		avg_wire_size *= FM10K_ITR_SCALE_MEDIUM;
> >   	else
> > -		avg_wire_size /= 2;
> > +		avg_wire_size *= FM10K_ITR_SCALE_LARGE;
> > +
> 
> Where is it these scaling values originated from?  Just looking
> through 
> the values I am not sure having this broken out like it is provides
> much 
> value.
> 

I am not really sure what exactly you mean here?

> What I am getting at is that the input is a packet size, and the
> output 
> is a value somewhere between 2 and 47.  (I think that 47 is still a
> bit 
> high by the way and probably should be something more like 25 which I
> believe you established as the minimum Tx interrupt rate in a later
> patch.)
> 

The input is two fold for calculation, packet size, and number of
packets.

> What you may want to do is look at pulling in the upper limit to 
> something more reasonable like 1536 for avg_wire_size, and then
> simplify 
> this logic a bit.  Specifically what is it you are trying to
> accomplish 
> by tweaking the scale factor like you are?  I assume you are wanting
> to 
> approximate a curve.  If so you might wan to look at possibly
> including 
> an offset value so that you can smooth out the points where your 
> intersections occur.
> 

I honestly don't know. I mostly took the original work from 6-7 months
ago, and added your suggestions from that series, but maybe that isn't
valid now?

> For example what you may want to consider doing would be to instead
> use 
> a multiplication factor for small, an addition value for medium, and
> for 
> large you simply cap it at a certain value.
> 

So, how would this look? The capping makes sense, we should probably
cap it at around 30 or something? I'm not sure that 25 is the limit,
since for some workloads I think we did calculate that we could use
that few interrupts.. maybe the CPU savings aren't worth it though if
it messes up too many other flows?

I could also try to take a completely different algorithm say from i40e
instead? This one really has limited testing.

> 
> > +	/* Round up average wire size, then perform bit shift, to
> > ensure that
> > +	 * the calculation will never get below 1. Account for
> > changes in ITR
> > +	 * value due to PCIe link speed.
> > +	 */
> > +	avg_wire_size += (1 << (ring_container->itr_scale + 8)) -
> > 1;
> > +	avg_wire_size >>= ring_container->itr_scale + 8;
> > 
> 
> You might want to store off the value for itr_scale + 8 somewhere. 
>  It 
> is likely you might save a cycle or two, especially if the compiler 
> thinks it has to read itr_scale twice.

Fair enough that seems reasonable change.

  reply	other threads:[~2015-10-14 20:12 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-13 23:38 [Intel-wired-lan] [next-queue 01/17] fm10k: conditionally compile DCB and DebugFS support Jacob Keller
2015-10-13 23:38 ` [Intel-wired-lan] [next-queue 02/17] fm10k: set netdev features in one location Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 03/17] fm10k: reinitialize queuing scheme after calling init_hw Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 04/17] fm10k: reset max_queues on init_hw_vf failure Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 05/17] fm10k: always check init_hw for errors Jacob Keller
2015-10-14  0:46   ` Allan, Bruce W
2015-10-14 15:57     ` Keller, Jacob E
2015-10-28  0:47   ` Singh, Krishneil K
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 06/17] fm10k: Correct typecast in fm10k_update_xc_addr_pf Jacob Keller
2015-10-14  0:46   ` Allan, Bruce W
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 07/17] fm10k: explicitly typecast vlan values to u16 Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 08/17] fm10k: add statistics for actual DWORD count of mbmem mailbox Jacob Keller
2015-10-14  0:47   ` Allan, Bruce W
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 09/17] fm10k: rename mbx_tx_oversized statistic to mbx_tx_dropped Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 10/17] fm10k: add TEB check to fm10k_gre_is_nvgre Jacob Keller
2015-10-14  0:47   ` Allan, Bruce W
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 11/17] fm10k: Add support for ITR scaling based on PCIe link speed Jacob Keller
2015-10-14  0:47   ` Allan, Bruce W
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 12/17] fm10k: introduce ITR_IS_ADAPTIVE macro Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 13/17] fm10k: Update adaptive ITR algorithm Jacob Keller
2015-10-14 18:35   ` Alexander Duyck
2015-10-14 20:12     ` Keller, Jacob E [this message]
2015-10-14 22:40       ` Alexander Duyck
2015-10-14 23:50         ` Keller, Jacob E
2015-10-15  2:17           ` Alexander Duyck
2015-10-15 16:32             ` Keller, Jacob E
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 14/17] fm10k: use macro for default Tx and Rx ITR values Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 15/17] fm10k: change default Tx ITR to 25usec Jacob Keller
2015-10-14 15:15   ` Alexander Duyck
2015-10-14 15:59     ` Keller, Jacob E
2015-10-14 16:23       ` Alexander Duyck
2015-10-14 16:31         ` Keller, Jacob E
2015-10-14 17:57         ` Keller, Jacob E
2015-10-14 23:27           ` Alexander Duyck
2015-10-14 23:44             ` Keller, Jacob E
2015-10-15  2:23               ` Alexander Duyck
2015-10-15 16:35                 ` Keller, Jacob E
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 16/17] fm10k: TRIVIAL fix typo of hardware Jacob Keller
2015-10-13 23:39 ` [Intel-wired-lan] [next-queue 17/17] fm10k: TRIVIAL cleanup order at top of fm10k_xmit_frame Jacob Keller
2015-10-14  0:46 ` [Intel-wired-lan] [next-queue 01/17] fm10k: conditionally compile DCB and DebugFS support Allan, Bruce W

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1444853538.26286.42.camel@intel.com \
    --to=jacob.e.keller@intel.com \
    --cc=intel-wired-lan@osuosl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox