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.
next prev parent 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