public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: Hiroaki SHIMODA <shimoda.hiroaki@gmail.com>
Cc: Denys Fedoryshchenko <denys@visp.net.lb>,
	e1000-devel@lists.sourceforge.net, netdev@vger.kernel.org,
	jesse.brandeburg@intel.com, davem@davemloft.net,
	Tom Herbert <therbert@google.com>
Subject: Re: Strange latency spikes/TX network stalls on Sun Fire X4150(x86) and e1000e
Date: Wed, 30 May 2012 16:49:02 +0200	[thread overview]
Message-ID: <1338389342.2760.195.camel@edumazet-glaptop> (raw)
In-Reply-To: <20120530202917.b2642929.shimoda.hiroaki@gmail.com>

On Wed, 2012-05-30 at 20:29 +0900, Hiroaki SHIMODA wrote:
> On Wed, 30 May 2012 13:08:27 +0200
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
> 
> > On Wed, 2012-05-30 at 19:43 +0900, Hiroaki SHIMODA wrote:
> > 
> > > While examining ping problem, below pattern is often observed.
> > > 
> > >                                                TIME
> > >        dql_queued()         dql_completed()     |
> > >       a) initial state                          |
> > >                                                 |
> > >       b) X bytes queued                         V
> > > 
> > >       c) Y bytes queued
> > >                            d) X bytes completed
> > >       e) Z bytes queued
> > >                            f) Y bytes completed
> > > 
> > > a) dql->limit has already some value and there is no in-flight packet.
> > > b) X bytes queued.
> > > c) Y bytes queued and excess limit.
> > > d) X bytes completed and dql->prev_ovlimit is set and also
> > >    dql->prev_num_queued is set Y.
> > > e) Z bytes queued.
> > > f) Y bytes completed. inprogress and prev_inprogress are true.
> > > 
> > > At f), if I read the comment correctly, all_prev_completed becomes
> > > true and limit should be increased. But POSDIFF() ignores
> > > (A == B) case, so limit is decreased.
> > 
> > Which POSDIFF(), because there are many ;)
> 
> I mean,
> 	all_prev_completed = POSDIFF(completed, dql->prev_num_queued);
> 
> > By the way, given complexity of this I suggest you split your ideas in
> > independent patches.
> 
> In this case, here is the patch what I thinking.
> 
> diff --git a/lib/dynamic_queue_limits.c b/lib/dynamic_queue_limits.c
> @@ -11,12 +11,14 @@
>  #include <linux/dynamic_queue_limits.h>
>  
>  #define POSDIFF(A, B) ((A) > (B) ? (A) - (B) : 0)
> +#define #define AFTER_EQ(A, B) ((int)((A) - (B)) >= 0)
>  
>  /* Records completed count and recalculates the queue limit */
>  void dql_completed(struct dql *dql, unsigned int count)
>  {
>  	unsigned int inprogress, prev_inprogress, limit;
> -	unsigned int ovlimit, all_prev_completed, completed;
> +	unsigned int ovlimit, completed;
> +	bool all_prev_completed;
>  
>  	/* Can't complete more than what's in queue */
>  	BUG_ON(count > dql->num_queued - dql->num_completed);
> @@ -26,7 +28,7 @@ void dql_completed(struct dql *dql, unsigned int count)
>  	ovlimit = POSDIFF(dql->num_queued - dql->num_completed, limit);
>  	inprogress = dql->num_queued - completed;
>  	prev_inprogress = dql->prev_num_queued - dql->num_completed;
> -	all_prev_completed = POSDIFF(completed, dql->prev_num_queued);
> +	all_prev_completed = AFTER_EQ(completed, dql->prev_num_queued);
>  
>  	if ((ovlimit && !inprogress) ||
>  	    (dql->prev_ovlimit && all_prev_completed)) {

I am fine with this one.

Can you send official patches please ?




------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit http://communities.intel.com/community/wired

  reply	other threads:[~2012-05-30 14:49 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-15 14:15 Strange latency spikes/TX network stalls on Sun Fire X4150(x86) and e1000e Denys Fedoryshchenko
2012-05-17 13:42 ` Denys Fedoryshchenko
2012-05-17 16:54   ` Denys Fedoryshchenko
2012-05-18 14:04     ` Denys Fedoryshchenko
2012-05-19  2:07       ` Tom Herbert
2012-05-19  2:29         ` Denys Fedoryshchenko
2012-05-19  2:40         ` Denys Fedoryshchenko
2012-05-20 17:40           ` Tom Herbert
2012-05-20 18:53             ` Denys Fedoryshchenko
2012-05-20 19:07               ` Eric Dumazet
2012-05-20 19:18                 ` Denys Fedoryshchenko
2012-05-21  3:56                   ` Eric Dumazet
2012-05-21  8:06                     ` Denys Fedoryshchenko
2012-05-21  8:30                       ` Eric Dumazet
2012-05-21  8:40                         ` Eric Dumazet
2012-05-21  9:22                           ` Denys Fedoryshchenko
2012-05-22 17:11                           ` Denys Fedoryshchenko
2012-05-22 17:24                             ` Eric Dumazet
2012-05-25  6:01                               ` Tom Herbert
2012-05-25  6:22                                 ` Eric Dumazet
2012-05-25 16:59                                   ` Tom Herbert
2012-05-25 17:18                                     ` Eric Dumazet
2012-05-29 14:25             ` Hiroaki SHIMODA
2012-05-29 14:54               ` Tom Herbert
2012-05-29 15:11                 ` Eric Dumazet
2012-05-29 19:52                 ` Denys Fedoryshchenko
2012-05-30  0:06                 ` Hiroaki SHIMODA
2012-05-30  8:40                   ` Eric Dumazet
2012-05-30 10:43                     ` Hiroaki SHIMODA
2012-05-30 11:08                       ` Eric Dumazet
2012-05-30 11:20                         ` Joe Perches
2012-05-30 11:59                           ` Eric Dumazet
2012-05-30 14:09                             ` Joe Perches
2012-05-30 14:42                               ` Eric Dumazet
2012-05-30 14:50                                 ` Joe Perches
2012-05-30 11:29                         ` Hiroaki SHIMODA
2012-05-30 14:49                           ` Eric Dumazet [this message]
2012-05-30 15:00                             ` dave taht
2012-05-30 22:19                             ` Hiroaki SHIMODA
2012-05-30 10:52                     ` David Laight
2012-05-30 11:04                       ` Eric Dumazet
2012-05-30 11:12                         ` Eric Dumazet
2012-06-06  5:10               ` Eric Dumazet
2012-06-06  8:43                 ` Hiroaki SHIMODA
2012-06-06 16:26                   ` Jesse Brandeburg
2012-06-06 17:05                     ` Eric Dumazet
2012-06-06 17:26                       ` David Miller
2012-06-06 17:19                     ` Hiroaki SHIMODA
2012-06-06 18:21                       ` Tom Herbert
2012-06-06 18:23                         ` David Miller
2012-06-06 18:46                           ` Stephen Hemminger
2012-05-20 18:13       ` Eric Dumazet

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=1338389342.2760.195.camel@edumazet-glaptop \
    --to=eric.dumazet@gmail.com \
    --cc=davem@davemloft.net \
    --cc=denys@visp.net.lb \
    --cc=e1000-devel@lists.sourceforge.net \
    --cc=jesse.brandeburg@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=shimoda.hiroaki@gmail.com \
    --cc=therbert@google.com \
    /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