lkml.org 
[lkml]   [1998]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: 2.1.111 VM and low memory machines
    From
    Date
    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

    \
     
     \ /
      Last update: 2005-03-22 13:43    [W:0.024 / U:3.128 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site