All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: "Kok, Auke" <auke-jan.h.kok@intel.com>
Cc: David Miller <davem@davemloft.net>,
	vgusev@openvz.org, e1000-devel@lists.sourceforge.net,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	rjw@sisk.pl, mcmanus@ducksong.com, ilpo.jarvinen@helsinki.fi,
	kuznet@ms2.inr.ac.ru, xemul@openvz.org,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [E1000-devel] [TCP]: TCP_DEFER_ACCEPT causes leak sockets
Date: Wed, 18 Jun 2008 23:32:30 +0200	[thread overview]
Message-ID: <20080618213230.GA17821@elte.hu> (raw)
In-Reply-To: <20080618200805.GA18756@elte.hu>


* Ingo Molnar <mingo@elte.hu> wrote:

> * Kok, Auke <auke-jan.h.kok@intel.com> wrote:
> 
> > > Any ideas about what i should try next?
> > 
> > have you tried e1000e?
> 
> will try it.

ok, i tried it now, and there's good news: the latency problem seems 
largely fixed by e1000e. (yay!)

with e1000 i got these anomalous latencies:

 64 bytes from europe (10.0.1.15): icmp_seq=10 ttl=64 time=1000 ms
 64 bytes from europe (10.0.1.15): icmp_seq=11 ttl=64 time=0.882 ms
 64 bytes from europe (10.0.1.15): icmp_seq=12 ttl=64 time=1007 ms
 64 bytes from europe (10.0.1.15): icmp_seq=13 ttl=64 time=0.522 ms
 64 bytes from europe (10.0.1.15): icmp_seq=14 ttl=64 time=1003 ms
 64 bytes from europe (10.0.1.15): icmp_seq=15 ttl=64 time=0.381 ms
 64 bytes from europe (10.0.1.15): icmp_seq=16 ttl=64 time=1010 ms

with e1000e i get:

 64 bytes from europe (10.0.1.15): icmp_seq=1 ttl=64 time=0.212 ms
 64 bytes from europe (10.0.1.15): icmp_seq=2 ttl=64 time=0.372 ms
 64 bytes from europe (10.0.1.15): icmp_seq=3 ttl=64 time=0.815 ms
 64 bytes from europe (10.0.1.15): icmp_seq=4 ttl=64 time=0.961 ms
 64 bytes from europe (10.0.1.15): icmp_seq=5 ttl=64 time=0.201 ms
 64 bytes from europe (10.0.1.15): icmp_seq=6 ttl=64 time=0.788 ms

TCP latencies are fine too - ssh feels snappy again.

it still does not have nearly as good latencies as say forcedeth though:

 64 bytes from mercury (10.0.1.13): icmp_seq=1 ttl=64 time=0.076 ms
 64 bytes from mercury (10.0.1.13): icmp_seq=2 ttl=64 time=0.085 ms
 64 bytes from mercury (10.0.1.13): icmp_seq=3 ttl=64 time=0.045 ms
 64 bytes from mercury (10.0.1.13): icmp_seq=4 ttl=64 time=0.053 ms

that's 10 times better packet latencies.

and even an ancient Realtek RTL-8139 over 10 megabit Ethernet (!) has 
better latencies than the e1000e over 1000 megabit:

 64 bytes from pluto (10.0.1.10): icmp_seq=2 ttl=64 time=0.309 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=3 ttl=64 time=0.333 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=4 ttl=64 time=0.329 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=5 ttl=64 time=0.311 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=6 ttl=64 time=0.302 ms

is it done intentionally perhaps? I dont think it makes much sense to 
delay rx/tx processing on a completely idle box for such a long time.

The options i used are:

 CONFIG_E1000=y
 CONFIG_E1000_NAPI=y
 # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
 CONFIG_E1000E=y
 CONFIG_E1000E_ENABLED=y

> But even it if solves the problem it's a nasty complication: given how 
> many times i have to bisect back into the times when there was only 
> e1000 around, how do i handle the transition? I have automated 
> bisection tools, etc. and i bisect very frequently.

one possibility would be to change 'make oldconfig' to keep old options 
around - as long as they look "unknown" to a particular kernel. It would 
list them in some special "unknown options" section near the end of the 
.config or so. That way the E1000E=y setting could survive a bisection 
run which dives down into older kernel versions. (obviously old kernels 
wont grow this capability magically, so if we do such a change we'll 
have to wait years for it all to trickle through.)

and eventually E1000E could become the default.

	Ingo

WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo@elte.hu>
To: "Kok, Auke" <auke-jan.h.kok@intel.com>
Cc: vgusev@openvz.org, e1000-devel@lists.sourceforge.net,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	rjw@sisk.pl, mcmanus@ducksong.com, ilpo.jarvinen@helsinki.fi,
	kuznet@ms2.inr.ac.ru,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Miller <davem@davemloft.net>,
	xemul@openvz.org
Subject: Re: [TCP]: TCP_DEFER_ACCEPT causes leak sockets
Date: Wed, 18 Jun 2008 23:32:30 +0200	[thread overview]
Message-ID: <20080618213230.GA17821@elte.hu> (raw)
In-Reply-To: <20080618200805.GA18756@elte.hu>


* Ingo Molnar <mingo@elte.hu> wrote:

> * Kok, Auke <auke-jan.h.kok@intel.com> wrote:
> 
> > > Any ideas about what i should try next?
> > 
> > have you tried e1000e?
> 
> will try it.

ok, i tried it now, and there's good news: the latency problem seems 
largely fixed by e1000e. (yay!)

with e1000 i got these anomalous latencies:

 64 bytes from europe (10.0.1.15): icmp_seq=10 ttl=64 time=1000 ms
 64 bytes from europe (10.0.1.15): icmp_seq=11 ttl=64 time=0.882 ms
 64 bytes from europe (10.0.1.15): icmp_seq=12 ttl=64 time=1007 ms
 64 bytes from europe (10.0.1.15): icmp_seq=13 ttl=64 time=0.522 ms
 64 bytes from europe (10.0.1.15): icmp_seq=14 ttl=64 time=1003 ms
 64 bytes from europe (10.0.1.15): icmp_seq=15 ttl=64 time=0.381 ms
 64 bytes from europe (10.0.1.15): icmp_seq=16 ttl=64 time=1010 ms

with e1000e i get:

 64 bytes from europe (10.0.1.15): icmp_seq=1 ttl=64 time=0.212 ms
 64 bytes from europe (10.0.1.15): icmp_seq=2 ttl=64 time=0.372 ms
 64 bytes from europe (10.0.1.15): icmp_seq=3 ttl=64 time=0.815 ms
 64 bytes from europe (10.0.1.15): icmp_seq=4 ttl=64 time=0.961 ms
 64 bytes from europe (10.0.1.15): icmp_seq=5 ttl=64 time=0.201 ms
 64 bytes from europe (10.0.1.15): icmp_seq=6 ttl=64 time=0.788 ms

TCP latencies are fine too - ssh feels snappy again.

it still does not have nearly as good latencies as say forcedeth though:

 64 bytes from mercury (10.0.1.13): icmp_seq=1 ttl=64 time=0.076 ms
 64 bytes from mercury (10.0.1.13): icmp_seq=2 ttl=64 time=0.085 ms
 64 bytes from mercury (10.0.1.13): icmp_seq=3 ttl=64 time=0.045 ms
 64 bytes from mercury (10.0.1.13): icmp_seq=4 ttl=64 time=0.053 ms

that's 10 times better packet latencies.

and even an ancient Realtek RTL-8139 over 10 megabit Ethernet (!) has 
better latencies than the e1000e over 1000 megabit:

 64 bytes from pluto (10.0.1.10): icmp_seq=2 ttl=64 time=0.309 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=3 ttl=64 time=0.333 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=4 ttl=64 time=0.329 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=5 ttl=64 time=0.311 ms
 64 bytes from pluto (10.0.1.10): icmp_seq=6 ttl=64 time=0.302 ms

is it done intentionally perhaps? I dont think it makes much sense to 
delay rx/tx processing on a completely idle box for such a long time.

The options i used are:

 CONFIG_E1000=y
 CONFIG_E1000_NAPI=y
 # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
 CONFIG_E1000E=y
 CONFIG_E1000E_ENABLED=y

> But even it if solves the problem it's a nasty complication: given how 
> many times i have to bisect back into the times when there was only 
> e1000 around, how do i handle the transition? I have automated 
> bisection tools, etc. and i bisect very frequently.

one possibility would be to change 'make oldconfig' to keep old options 
around - as long as they look "unknown" to a particular kernel. It would 
list them in some special "unknown options" section near the end of the 
.config or so. That way the E1000E=y setting could survive a bisection 
run which dives down into older kernel versions. (obviously old kernels 
wont grow this capability magically, so if we do such a change we'll 
have to wait years for it all to trickle through.)

and eventually E1000E could become the default.

	Ingo

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php

  parent reply	other threads:[~2008-06-18 21:33 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-11 12:58 [TCP]: TCP_DEFER_ACCEPT causes leak sockets Vitaliy Gusev
2008-06-11 13:57 ` Alexey Kuznetsov
2008-06-11 23:52   ` David Miller
2008-06-12 23:32     ` David Miller
2008-06-13  6:30       ` Ingo Molnar
2008-06-13  9:32         ` David Miller
2008-06-13 11:09           ` Ingo Molnar
2008-06-13 11:47             ` Ingo Molnar
2008-06-13 21:10               ` Ingo Molnar
2008-06-16 23:59               ` David Miller
2008-06-17  7:26                 ` Ingo Molnar
2008-06-17  7:38                   ` David Miller
2008-06-17  8:09                     ` Ingo Molnar
2008-06-17  8:09                       ` Ingo Molnar
2008-06-17  8:32                       ` Ingo Molnar
2008-06-17  8:32                         ` Ingo Molnar
2008-06-17  9:08                         ` David Miller
2008-06-17  9:27                           ` Ingo Molnar
2008-06-17  9:27                             ` Ingo Molnar
2008-06-17  9:29                             ` David Miller
2008-06-17  9:39                               ` Ingo Molnar
2008-06-17  9:39                                 ` Ingo Molnar
2008-06-18 18:50                                 ` [E1000-devel] " Kok, Auke
2008-06-18 20:08                                   ` Ingo Molnar
2008-06-18 20:08                                     ` Ingo Molnar
2008-06-18 21:25                                     ` [E1000-devel] " Kok, Auke
2008-06-18 22:12                                       ` David Miller
2008-06-18 22:12                                         ` David Miller
2008-06-19  7:06                                         ` Jarek Poplawski
2008-06-19  7:06                                           ` Jarek Poplawski
2008-06-18 21:32                                     ` Ingo Molnar [this message]
2008-06-18 21:32                                       ` Ingo Molnar
2008-06-18 21:41                                       ` [E1000-devel] " Denys Fedoryshchenko
2008-06-18 21:41                                         ` Denys Fedoryshchenko
2008-06-18 22:05                                         ` [E1000-devel] " Ingo Molnar
2008-06-18 22:05                                           ` Ingo Molnar
2008-06-18 22:44                                           ` [E1000-devel] " Denys Fedoryshchenko
2008-06-18 22:44                                             ` Denys Fedoryshchenko
2008-06-18 23:14                                   ` [E1000-devel] " Ingo Molnar
2008-06-18 23:14                                     ` Ingo Molnar
2008-06-17  8:43                       ` Vitaliy Gusev

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=20080618213230.GA17821@elte.hu \
    --to=mingo@elte.hu \
    --cc=auke-jan.h.kok@intel.com \
    --cc=davem@davemloft.net \
    --cc=e1000-devel@lists.sourceforge.net \
    --cc=ilpo.jarvinen@helsinki.fi \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcmanus@ducksong.com \
    --cc=netdev@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=torvalds@linux-foundation.org \
    --cc=vgusev@openvz.org \
    --cc=xemul@openvz.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.