Re: 2.1.111 VM and low memory machines

Andi Kleen (ak@muc.de)
28 Jul 1998 15:19:47 +0200


Chris Wedgwood <chris@cybernet.co.nz> writes:

> On Mon, Jul 27, 1998 at 03:35:56AM -0700, David S. Miller wrote:
>
> > If you want large windows talk to a host who speaks window scaling,
> > this is what it's there for.
>
> And how many internet hosts actually support wscale? I suggest
> somebody who can sniff a busy ethernet segment with lots of outbound
> connections do something like:
>
> tcpdump -n -s 128 'tcp[13] & 2 != 0 and not src net localnet and not dst net localnet'
>
> and see just how many hosts support wscale.
>
> In my tests, I find a little less than 7% of hosts support wscale.
>
> > Otherwise all bets are off for >32k windows. (I have real life
> > experience with the sign extension problems, I did try to enable
> > 64k windows without scaling by default once and I hit too many
> > machines which wouldn't talk to me properly)
>
> I don't doubt your experience, but I've yet to find a single host
> where this doesn't work! What stacks are broken in such a way?
>
> It might be my testing methods here are insufficient.
>
> > It's getting too close to the 2.2.x wire now for these sorts of itty
> > bitty things, let's work on the higher priority problems instead so we
> > can get a clean stable release out soon.
>
> Fair 'nuf.
>
> > (I'm soon going to be asking people to start reporting TCP performance
> > and behavior anomalies to me again, I just submitted a sync-up patch
> > to Linus with all my latest networking fixes etc. so when he releases
> > a kernel with that stuff in there, fire away)
>
> btw, I'm still seeing funnies with 2.1.112-pre2 and sucky
> performance.

If you see 2.1 TCP funnies, please add the appended patch, reproduce a few
funnies and then report the output of "cat /proc/net/netstat"

Index: linux//include/net/snmp.h
===================================================================
RCS file: /vger/u4/cvs/linux/include/net/snmp.h,v
retrieving revision 1.8
diff -u -r1.8 snmp.h
--- snmp.h 1998/04/16 16:19:28 1.8
+++ snmp.h 1998/07/28 12:19:51
@@ -131,6 +131,10 @@
unsigned long SyncookiesRecv;
unsigned long SyncookiesFailed;
unsigned long EmbryonicRsts;
+ unsigned long TapOutOfMem;
+ unsigned long PruneCalled;
+ unsigned long RcvPruned;
+ unsigned long OfoPruned;
};

#endif
Index: linux//net/ipv4/proc.c
===================================================================
RCS file: /vger/u4/cvs/linux/net/ipv4/proc.c,v
retrieving revision 1.30
diff -u -r1.30 proc.c
--- proc.c 1998/04/16 16:29:05 1.30
+++ proc.c 1998/07/28 12:19:55
@@ -357,12 +357,15 @@

len = sprintf(buffer,
"TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed"
- "EmbryonicRsts\n"
- "TcpExt: %lu %lu %lu %lu\n",
+ "EmbryonicRsts PruneCalled RcvPruned OfoPruned\n"
+ "TcpExt: %lu %lu %lu %lu\n",
net_statistics.SyncookiesSent,
net_statistics.SyncookiesRecv,
net_statistics.SyncookiesFailed,
- net_statistics.EmbryonicRsts);
+ net_statistics.EmbryonicRsts,
+ net_statistics.PruneCalled,
+ net_statistics.RcvPruned,
+ net_statistics.OfoPruned);

if (offset >= len)
{
Index: linux//net/ipv4/tcp_input.c
===================================================================
RCS file: /vger/u4/cvs/linux/net/ipv4/tcp_input.c,v
retrieving revision 1.121
diff -u -r1.121 tcp_input.c
--- tcp_input.c 1998/07/15 04:39:12 1.121
+++ tcp_input.c 1998/07/28 12:19:59
@@ -1595,11 +1595,14 @@

SOCK_DEBUG(sk, "prune_queue: c=%x\n", tp->copied_seq);

+ net_statistics.PruneCalled++;
+
/* First Clean the out_of_order queue. */
/* Start with the end because there are probably the least
* useful packets (crossing fingers).
*/
while ((skb = __skb_dequeue_tail(&tp->out_of_order_queue))) {
+ net_statistics.OfoPruned += skb->len;
kfree_skb(skb);
if (atomic_read(&sk->rmem_alloc) <= sk->rcvbuf)
return 0;
@@ -1620,6 +1623,9 @@
tp->last_ack_sent);
return -1;
}
+
+ net_statistics.RcvPruned += skb->len;
+
__skb_unlink(skb, skb->list);
tp->rcv_nxt = TCP_SKB_CB(skb)->seq;
SOCK_DEBUG(sk, "prune_queue: removing %x-%x (c=%x)\n",

Thanks,

-Andi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html