netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Willy Tarreau <w@1wt.eu>
To: David Miller <davem@davemloft.net>
Cc: herbert@gondor.apana.org.au, jarkao2@gmail.com, zbr@ioremap.net,
	dada1@cosmosbay.com, ben@zeus.com, mingo@elte.hu,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	jens.axboe@oracle.com
Subject: Re: [PATCH] tcp: splice as many packets as possible at once
Date: Sun, 25 Jan 2009 22:03:25 +0100	[thread overview]
Message-ID: <20090125210325.GA31227@1wt.eu> (raw)
In-Reply-To: <20090119.125941.240930524.davem@davemloft.net>

Hi David,

On Mon, Jan 19, 2009 at 12:59:41PM -0800, David Miller wrote:
> From: Herbert Xu <herbert@gondor.apana.org.au>
> Date: Mon, 19 Jan 2009 21:19:24 +1100
> 
> > On Sun, Jan 18, 2009 at 10:19:08PM -0800, David Miller wrote:
> > > 
> > > Actually, I see, the myri10ge driver does put up to
> > > 64 bytes of the initial packet into the linear area.
> > > If the IPV4 + TCP headers are less than this, you will
> > > hit the corruption case even with the myri10ge driver.
> > 
> > I thought splice only mapped the payload areas, no?
> 
> And the difference between 64 and IPV4+TCP header len becomes the
> payload, don't you see? :-)
> 
> myri10ge just pulls min(64, skb->len) bytes from the SKB frags into
> the linear area, unconditionally.  So a small number of payload bytes
> can in fact end up there.
> 
> Otherwise Willy could never have triggered this bug.

Just FWIW, I've updated my tools in order to perform content checks more
easily. I cannot reproduce the issue at all with the myri10ge NICs, neither
with large frames nor with tiny ones (8 bytes).

However, I have noticed that the load is now sensible to the number of
concurrent sessions. I'm using 2.6.29-rc2 with the perfcounters patches,
and I'm not sure whether the difference in behaviour came with the data
corruption fixes or with the new kernel (which has some profiling options
turned on). Basically, below 800-1000 concurrent sessions, I have no
problem reaching 10 Gbps with LRO and MTU=1500, with about 60% CPU. Above
this number of session, the CPU suddenly jumps to 100% and the data rate
drops to about 6.7 Gbps.

I spent a long time trying to figure what it was, but I think that I
have found. Kerneltop reports different figures above and below the
limit.

1) below the limit :

            1429.00 - 00000000784a7840 : tcp_sendpage
             561.00 - 00000000784a6580 : tcp_read_sock
             485.00 - 00000000f87e13c0 : myri10ge_xmit  [myri10ge]
             433.00 - 00000000781a40c0 : sys_splice
             411.00 - 00000000784a6eb0 : tcp_poll
             344.00 - 000000007847bcf0 : dev_queue_xmit
             342.00 - 0000000078470be0 : __skb_splice_bits
             319.00 - 0000000078472950 : __alloc_skb
             310.00 - 0000000078185870 : kmem_cache_alloc
             285.00 - 00000000784b2260 : tcp_transmit_skb
             285.00 - 000000007850cac0 : _spin_lock
             250.00 - 00000000781afda0 : sys_epoll_ctl
             238.00 - 000000007810334c : system_call
             232.00 - 000000007850ac20 : schedule
             230.00 - 000000007850cc10 : _spin_lock_bh
             222.00 - 00000000784705f0 : __skb_clone
             220.00 - 000000007850cbc0 : _spin_lock_irqsave
             213.00 - 00000000784a08f0 : ip_queue_xmit
             211.00 - 0000000078185ea0 : __kmalloc_track_caller

2) above the limit :

            1778.00 - 00000000784a7840 : tcp_sendpage
            1281.00 - 0000000078472950 : __alloc_skb
             639.00 - 00000000784a6780 : sk_stream_alloc_skb
             507.00 - 0000000078185ea0 : __kmalloc_track_caller
             484.00 - 0000000078185870 : kmem_cache_alloc
             476.00 - 00000000784a6580 : tcp_read_sock
             451.00 - 00000000784a08f0 : ip_queue_xmit
             421.00 - 00000000f87e13c0 : myri10ge_xmit  [myri10ge]
             374.00 - 00000000781852e0 : __slab_alloc
             361.00 - 00000000781a40c0 : sys_splice
             273.00 - 0000000078470be0 : __skb_splice_bits
             231.00 - 000000007850cac0 : _spin_lock
             206.00 - 0000000078168b30 : get_pageblock_flags_group
             165.00 - 00000000784a0260 : ip_finish_output
             165.00 - 00000000784b2260 : tcp_transmit_skb
             161.00 - 0000000078470460 : __copy_skb_header
             153.00 - 000000007816d6d0 : put_page
             144.00 - 000000007850cbc0 : _spin_lock_irqsave
             137.00 - 0000000078189be0 : fget_light

The memory allocation clearly is the culprit here. I'll try Jarek's
patch which reduces memory allocation to see if that changes something,
as I'm sure we can do fairly better, given how it behaves with limited
sessions.

Regards,
Willy

PS: this thread is long, if some of the people in CC want to get off
    the thread, please complain.

  parent reply	other threads:[~2009-01-25 21:03 UTC|newest]

Thread overview: 191+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-08 17:30 [PATCH] tcp: splice as many packets as possible at once Willy Tarreau
2009-01-08 19:44 ` Jens Axboe
2009-01-08 22:03   ` Willy Tarreau
2009-01-08 20:16 ` Willy Tarreau
2009-01-08 21:50 ` Ben Mansell
2009-01-08 21:55   ` David Miller
2009-01-08 22:20     ` Willy Tarreau
2009-01-13 23:08       ` David Miller
2009-01-09  6:47     ` Eric Dumazet
2009-01-09  7:04       ` Willy Tarreau
2009-01-09  7:28         ` Eric Dumazet
2009-01-09  7:42           ` Willy Tarreau
2009-01-13 23:27           ` David Miller
2009-01-13 23:35             ` Eric Dumazet
2009-01-09 15:42       ` Eric Dumazet
2009-01-09 17:57         ` Eric Dumazet
2009-01-09 18:54         ` Willy Tarreau
2009-01-09 20:51           ` Eric Dumazet
2009-01-09 21:24             ` Willy Tarreau
2009-01-09 22:02               ` Eric Dumazet
2009-01-09 22:09                 ` Willy Tarreau
2009-01-09 22:07               ` Willy Tarreau
2009-01-09 22:12                 ` Eric Dumazet
2009-01-09 22:17                   ` Willy Tarreau
2009-01-09 22:42                     ` Evgeniy Polyakov
2009-01-09 22:50                       ` Willy Tarreau
2009-01-09 23:01                         ` Evgeniy Polyakov
2009-01-09 23:06                           ` Willy Tarreau
2009-01-10  7:40                       ` Eric Dumazet
2009-01-11 12:58                         ` Evgeniy Polyakov
2009-01-11 13:14                           ` Eric Dumazet
2009-01-11 13:35                             ` Evgeniy Polyakov
2009-01-11 16:00                               ` Eric Dumazet
2009-01-11 16:05                                 ` Evgeniy Polyakov
2009-01-14  0:07                                   ` David Miller
2009-01-14  0:13                                     ` Evgeniy Polyakov
2009-01-14  0:16                                       ` David Miller
2009-01-14  0:22                                         ` Evgeniy Polyakov
2009-01-14  0:37                                           ` David Miller
2009-01-14  3:51                                             ` Herbert Xu
2009-01-14  4:25                                               ` David Miller
2009-01-14  7:27                                               ` David Miller
2009-01-14  8:26                                                 ` Herbert Xu
2009-01-14  8:53                                                   ` Jarek Poplawski
2009-01-14  9:29                                                     ` David Miller
2009-01-14  9:42                                                       ` Jarek Poplawski
2009-01-14 10:06                                                         ` David Miller
2009-01-14 10:47                                                           ` Jarek Poplawski
2009-01-14 11:29                                                             ` Herbert Xu
2009-01-14 11:40                                                               ` Jarek Poplawski
2009-01-14 11:45                                                                 ` Jarek Poplawski
2009-01-14  9:54                                                       ` Jarek Poplawski
2009-01-14 10:01                                                         ` Willy Tarreau
2009-01-14 12:06                                                         ` Jarek Poplawski
2009-01-14 12:15                                                         ` Jarek Poplawski
2009-01-14 11:28                                                       ` Herbert Xu
2009-01-15 23:03                                                       ` Willy Tarreau
2009-01-15 23:19                                                         ` David Miller
2009-01-15 23:19                                                         ` Herbert Xu
2009-01-15 23:26                                                           ` David Miller
2009-01-15 23:32                                                             ` Herbert Xu
2009-01-15 23:34                                                               ` David Miller
2009-01-15 23:42                                                                 ` Willy Tarreau
2009-01-15 23:44                                                                   ` Willy Tarreau
2009-01-15 23:54                                                                     ` David Miller
2009-01-19  0:42                                                                       ` Willy Tarreau
2009-01-19  3:08                                                                         ` Herbert Xu
2009-01-19  3:27                                                                           ` David Miller
2009-01-19  6:14                                                                             ` Willy Tarreau
2009-01-19  6:19                                                                               ` David Miller
2009-01-19  6:45                                                                                 ` Willy Tarreau
2009-01-19 10:19                                                                                 ` Herbert Xu
2009-01-19 20:59                                                                                   ` David Miller
2009-01-19 21:24                                                                                     ` Herbert Xu
2009-01-25 21:03                                                                                     ` Willy Tarreau [this message]
2009-01-26  7:59                                                                                       ` Jarek Poplawski
2009-01-26  8:12                                                                                         ` Willy Tarreau
2009-01-19  8:40                                                                               ` Jarek Poplawski
2009-01-19  3:28                                                                         ` David Miller
2009-01-19  6:11                                                                           ` Willy Tarreau
2009-01-24 21:23                                                                           ` Willy Tarreau
2009-01-20 12:01                                                                         ` Ben Mansell
2009-01-20 12:11                                                                           ` Evgeniy Polyakov
2009-01-20 13:43                                                                             ` Ben Mansell
2009-01-20 14:06                                                                               ` Jarek Poplawski
2009-01-16  6:51                                                                     ` Jarek Poplawski
2009-01-19  6:08                                                                       ` David Miller
2009-01-19  6:16                                                                 ` David Miller
2009-01-19 10:20                                                                   ` Herbert Xu
2009-01-20  8:37                                                             ` Jarek Poplawski
2009-01-20  9:33                                                               ` [PATCH v2] " Jarek Poplawski
2009-01-20 10:00                                                                 ` Evgeniy Polyakov
2009-01-20 10:20                                                                   ` Jarek Poplawski
2009-01-20 10:31                                                                     ` Evgeniy Polyakov
2009-01-20 11:01                                                                       ` Jarek Poplawski
2009-01-20 17:16                                                                         ` David Miller
2009-01-21  9:54                                                                           ` Jarek Poplawski
2009-01-22  9:04                                                                           ` [PATCH v3] " Jarek Poplawski
2009-01-26  5:22                                                                             ` David Miller
2009-01-27  7:11                                                                               ` Herbert Xu
2009-01-27  7:54                                                                                 ` Jarek Poplawski
2009-01-27 10:09                                                                                   ` Herbert Xu
2009-01-27 10:35                                                                                     ` Jarek Poplawski
2009-01-27 10:57                                                                                       ` Jarek Poplawski
2009-01-27 11:48                                                                                       ` Herbert Xu
2009-01-27 12:16                                                                                         ` Jarek Poplawski
2009-01-27 12:31                                                                                           ` Jarek Poplawski
2009-01-27 17:06                                                                                             ` David Miller
2009-01-28  8:10                                                                                               ` Jarek Poplawski
2009-02-01  8:41                                                                                 ` David Miller
2009-01-26  8:20                                                                       ` [PATCH v2] " Jarek Poplawski
2009-01-26 21:21                                                                         ` Evgeniy Polyakov
2009-01-27  6:10                                                                           ` David Miller
2009-01-27  7:40                                                                             ` Jarek Poplawski
2009-01-30 21:42                                                                               ` David Miller
2009-01-30 21:59                                                                                 ` Willy Tarreau
2009-01-30 22:03                                                                                   ` David Miller
2009-01-30 22:13                                                                                     ` Willy Tarreau
2009-01-30 22:15                                                                                       ` David Miller
2009-01-30 22:16                                                                                 ` Herbert Xu
2009-02-02  8:08                                                                                   ` Jarek Poplawski
2009-02-02  8:18                                                                                     ` David Miller
2009-02-02  8:43                                                                                       ` Jarek Poplawski
2009-02-03  7:50                                                                                         ` David Miller
2009-02-03  9:41                                                                                           ` Jarek Poplawski
2009-02-03 11:10                                                                                             ` Evgeniy Polyakov
2009-02-03 11:24                                                                                               ` Herbert Xu
2009-02-03 11:49                                                                                                 ` Evgeniy Polyakov
2009-02-03 11:53                                                                                                   ` Herbert Xu
2009-02-03 12:07                                                                                                     ` Evgeniy Polyakov
2009-02-03 12:12                                                                                                       ` Herbert Xu
2009-02-03 12:18                                                                                                         ` Evgeniy Polyakov
2009-02-03 12:25                                                                                                           ` Willy Tarreau
2009-02-03 12:28                                                                                                             ` Herbert Xu
2009-02-04  0:47                                                                                                             ` David Miller
2009-02-04  6:19                                                                                                               ` Willy Tarreau
2009-02-04  8:12                                                                                                                 ` Evgeniy Polyakov
2009-02-04  8:54                                                                                                                   ` Willy Tarreau
2009-02-04  8:59                                                                                                                     ` Herbert Xu
2009-02-04  9:01                                                                                                                       ` David Miller
2009-02-04  9:12                                                                                                                         ` Willy Tarreau
2009-02-04  9:15                                                                                                                           ` David Miller
2009-02-04 19:19                                                                                                                           ` Roland Dreier
2009-02-04 19:28                                                                                                                             ` Willy Tarreau
2009-02-04 19:48                                                                                                                               ` Jarek Poplawski
2009-02-05  8:32                                                                                                                           ` Bill Fink
2009-02-04  9:12                                                                                                                 ` David Miller
2009-02-03 12:27                                                                                                           ` Herbert Xu
2009-02-03 13:05                                                                                                   ` david
2009-02-03 12:12                                                                                                     ` Evgeniy Polyakov
2009-02-03 12:18                                                                                                       ` Herbert Xu
2009-02-03 12:30                                                                                                         ` Evgeniy Polyakov
2009-02-03 12:33                                                                                                           ` Herbert Xu
2009-02-03 12:33                                                                                                         ` Nick Piggin
2009-02-04  0:46                                                                                                 ` David Miller
2009-02-04  9:41                                                                                                   ` Benny Amorsen
2009-02-04 12:01                                                                                                     ` Herbert Xu
2009-02-03 12:36                                                                                               ` Jarek Poplawski
2009-02-03 13:06                                                                                                 ` Evgeniy Polyakov
2009-02-03 13:25                                                                                                   ` Jarek Poplawski
2009-02-03 14:20                                                                                                     ` Evgeniy Polyakov
2009-02-04  0:46                                                                                               ` David Miller
2009-02-04  8:08                                                                                                 ` Evgeniy Polyakov
2009-02-04  9:23                                                                                                   ` Nick Piggin
2009-02-04  7:56                                                                                             ` Jarek Poplawski
2009-02-06  7:52                                                                                             ` David Miller
2009-02-06  8:09                                                                                               ` Herbert Xu
2009-02-06  9:10                                                                                               ` Jarek Poplawski
2009-02-06  9:17                                                                                                 ` David Miller
2009-02-06  9:42                                                                                                   ` Jarek Poplawski
2009-02-06  9:49                                                                                                     ` David Miller
2009-02-06  9:23                                                                                                 ` Herbert Xu
2009-02-06  9:51                                                                                                   ` Jarek Poplawski
2009-02-06 10:28                                                                                                     ` Herbert Xu
2009-02-06 10:58                                                                                                       ` Jarek Poplawski
2009-02-06 11:10                                                                                                         ` Willy Tarreau
2009-02-06 11:47                                                                                                           ` Jarek Poplawski
2009-02-06 18:59                                                                                               ` Jarek Poplawski
2009-02-03 11:38                                                                                 ` Nick Piggin
2009-01-27 18:42                                                                             ` David Miller
2009-01-15 23:32                                                           ` [PATCH] " Willy Tarreau
2009-01-15 23:35                                                             ` David Miller
2009-01-14  0:51                                         ` Herbert Xu
2009-01-14  1:24                                           ` David Miller
2009-01-09 22:45                     ` Eric Dumazet
2009-01-09 22:53                       ` Willy Tarreau
2009-01-09 23:34                         ` Eric Dumazet
2009-01-13  5:45                           ` David Miller
2009-01-14  0:05                           ` David Miller
2009-01-13 23:31         ` David Miller
2009-01-13 23:26       ` David Miller

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=20090125210325.GA31227@1wt.eu \
    --to=w@1wt.eu \
    --cc=ben@zeus.com \
    --cc=dada1@cosmosbay.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=jarkao2@gmail.com \
    --cc=jens.axboe@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=zbr@ioremap.net \
    /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;
as well as URLs for NNTP newsgroup(s).