* Ingo Molnar <mingo@elte.hu> wrote: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 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 --
| Greg KH | Re: Announce: Linux-next (Or Andrew's dream :-)) |
| Greg KH | [patch 26/73] NET: Correct two mistaken skb_reset_mac_header() conversions. |
| Greg Kroah-Hartman | [PATCH 007/196] Chinese: add translation of stable_kernel_rules.txt |
| Alan Cox | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Alexey Dobriyan | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Andrew Morton | Re: [BUG] New Kernel Bugs |
