From: Rick Jones <rick.jones2@hp.com>
To: netdev@oss.sgi.com
Subject: Re: design for TSO performance fix
Date: Thu, 27 Jan 2005 16:51:31 -0800 [thread overview]
Message-ID: <41F98C93.9040005@hp.com> (raw)
In-Reply-To: <20050127163146.33b01e95.davem@davemloft.net>
David S. Miller wrote:
> Ok, here is the best idea I've been able to come up with
> so far.
>
> The basic idea is that we stop trying to build TSO frames
> in the actual transmit queue. Instead, TSO packets are
> built impromptu when we actually output packets on the
> transmit queue.
>
> Advantages:
>
> 1) No knowledge of TSO frames need exist anywhere besides
> tcp_write_xmit(), tcp_transmit_skb(), and
> tcp_xmit_retransmit_queue()
>
> 2) As a result of #1, all the pcount crap goes away.
> The need for two MSS state variables (mss_cache,
> and mss_cache_std) and assosciated complexity is
> eliminated as well.
>
> 3) Keeping TSO enabled after packet loss "just works".
Doubleplusgood.
>
> 4) CWND sampled at the correct moment when deciding
> the TSO packet arity.
>
> The one disadvantage is that it might be a tiny bit more
> expensive to build TSO frames. But I am sure we can find
> ways to optimize that quite well.
>
> The main element of the TSO output logic is a function
> that is schemed as follows:
>
> ...
>
> If tcp_tso_build() fails, the caller just falls back to the
> normal path of sending the frames non-TSO one-by-one.
>
> The logic is simple because if TSO is being done we know
> that all of the SKB data is paged (since SG+CSUM is a
> requirement for TSO). The one case where that
> invariant might fail is due to a routing change (previous
> device cannot do SG+CSUM, new device has full TSO capability)
> and that is handled via the tcp_skb_data_all_paged() checks.
>
> My thinking is that whatever added expensive this new scheme
> has, is offset by the simplifications the rest of the TCP
> stack will have since it will no longer need to know anything
> about multiple MSS values and packet counts.
>
> Comments?
Does anything (need to) change wrt getting the size of the TSO's to increase as
cwnd increases?
rick jones
next prev parent reply other threads:[~2005-01-28 0:51 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-28 0:31 design for TSO performance fix David S. Miller
2005-01-28 0:51 ` Rick Jones [this message]
2005-01-28 0:58 ` David S. Miller
2005-01-28 1:31 ` Herbert Xu
2005-01-28 5:19 ` David S. Miller
2005-01-28 5:44 ` Herbert Xu
2005-01-28 19:28 ` David S. Miller
2005-01-29 10:12 ` Herbert Xu
2005-01-28 1:57 ` Thomas Graf
2005-02-01 23:04 ` David S. Miller
2005-01-28 6:25 ` Andi Kleen
2005-01-28 6:44 ` Nivedita Singhvi
2005-01-28 19:30 ` David S. 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=41F98C93.9040005@hp.com \
--to=rick.jones2@hp.com \
--cc=netdev@oss.sgi.com \
/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).