From: Andrew Morton <andrewm@uow.edu.au>
To: kuznet@ms2.inr.ac.ru
Cc: netdev@oss.sgi.com, lkml <linux-kernel@vger.kernel.org>
Subject: Re: sendfile+zerocopy: fairly sexy (nothing to do with ECN)
Date: Sun, 28 Jan 2001 16:34:51 +1100 [thread overview]
Message-ID: <3A73AF7B.6610B559@uow.edu.au> (raw)
In-Reply-To: <3A726087.764CC02E@uow.edu.au> from "Andrew Morton" at Jan 27, 1 08:45:00 am <200101271854.VAA02845@ms2.inr.ac.ru>
kuznet@ms2.inr.ac.ru wrote:
>
> Hello!
>
> > 2.4.1-pre10+zercopy, using read()/write(): 38.1% CPU
>
> write() on zc card is worse than normal write() by definition.
> It generates split buffers.
yes. The figures below show this. Disabling SG+checksums speeds
up write() and send().
> Split buffers are more expensive and we have to pay for this.
> You have paid too much for slow card though. 8)
>
> Do you measure load correctly?
Yes. Quite confident about this. Here's the algorithm:
1: Run a cycle-soaker on each CPU on an otherwise unloaded
system. See how much "work" they all do per second.
2: Run the cycle-soakers again, but with network traffic happening.
See how much their "work" is reduced. Deduce networking CPU load
from this difference.
The networking code all runs SCHED_FIFO or in interrupt context,
so the cycle-soakers have no effect upon the network code's access
to the CPU.
The "cycle-soakers" just sit there spinning and dirtying 10,000
cachelines per second.
> > 2.4.1-pre10+zercopy, using read()/write(): 39.2% CPU * hardware tx checksums disabled
>
> This is illegal combination of parameters. You force two memory accesses,
> doing this. The fact that it does not add to load is dubious. 8)8)
mm.. Perhaps with read()/write() the data is already in cache?
Anyway, I've tweaked up the tool again so it can do send() or
write() (then I looked at the implementation and wondered why
I'd bothered). It also does TCP_CORK now.
I ran another set of tests. The zerocopy patch improves sendfile()
hugely but slows down send()/write() significantly, with a 3c905C:
http://www.uow.edu.au/~andrewm/linux/#zc
The kernels which were tested were 2.4.1-pre10 with and without the
zerocopy patch. We only look at client load (the TCP sender).
In all tests the link throughput was 11.5 mbytes/sec at all times
(saturated 100baseT) unless otherwise noted.
The client (the thing which sends data) is a dual 500MHz PII with a
3c905C.
For the write() and send() tests, the chunk size was 64 kbytes.
The workload was 63 files with an average length of 350 kbytes.
CPU
2.4.1-pre10+zerocopy, using sendfile(): 9.6%
2.4.1-pre10+zerocopy, using send(): 24.1%
2.4.1-pre10+zerocopy, using write(): 24.2%
2.4.1-pre10+zerocopy, using sendfile(): 16.2% * checksums and SG disabled
2.4.1-pre10+zerocopy, using send(): 21.5% * checksums and SG disabled
2.4.1-pre10+zerocopy, using write(): 21.5% * checksums and SG disabled
2.4.1-pre10-vanilla, using sendfile(): 17.1%
2.4.1-pre10-vanilla, using send(): 21.1%
2.4.1-pre10-vanilla, using write(): 21.1%
Bearing in mind that a large amount of the load is in the device
driver, the zerocopy patch makes a large improvement in sendfile
efficiency. But read() and send() performance is decreased by 10% -
more than this if you factor out the constant device driver overhead.
TCP_CORK makes no difference. The files being sent are much larger
than a single frame.
Conclusions:
For a NIC which cannot do scatter/gather/checksums, the zerocopy
patch makes no change in throughput in all case.
For a NIC which can do scatter/gather/checksums, sendfile()
efficiency is improved by 40% and send() efficiency is decreased by
10%. The increase and decrease caused by the zerocopy patch will in
fact be significantly larger than these two figures, because the
measurements here include a constant base load caused by the device
driver.
-
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2001-01-28 5:27 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-01-27 5:45 sendfile+zerocopy: fairly sexy (nothing to do with ECN) Andrew Morton
2001-01-27 6:20 ` Aaron Lehmann
2001-01-27 8:19 ` Andrew Morton
2001-01-27 10:09 ` Ion Badulescu
2001-01-27 10:45 ` Andrew Morton
2001-01-30 6:00 ` David S. Miller
2001-01-30 12:44 ` Andrew Morton
2001-01-30 12:52 ` David S. Miller
2001-01-30 14:58 ` Andrew Morton
2001-01-30 17:49 ` Chris Wedgwood
2001-01-30 22:17 ` David S. Miller
2001-01-31 0:31 ` Chris Wedgwood
2001-01-31 0:45 ` David S. Miller
2001-01-30 22:28 ` David S. Miller
2001-01-30 23:34 ` Andrew Morton
2001-02-02 10:12 ` Andrew Morton
2001-02-02 12:14 ` Trond Myklebust
2001-02-02 17:51 ` David Lang
2001-02-02 22:46 ` David S. Miller
2001-02-02 22:57 ` David Lang
2001-02-02 23:09 ` David S. Miller
2001-02-02 23:13 ` David Lang
2001-02-02 23:28 ` Jeff Barrow
2001-02-02 23:31 ` David S. Miller
2001-02-03 2:27 ` James Sutherland
2001-01-27 10:05 ` Ion Badulescu
2001-01-27 10:39 ` Andrew Morton
2001-01-27 12:49 ` jamal
2001-01-30 1:06 ` Ion Badulescu
2001-01-30 2:48 ` jamal
2001-01-30 3:26 ` Ion Badulescu
2001-01-31 0:53 ` Still not sexy! (Re: " jamal
2001-01-31 0:59 ` Ingo Molnar
2001-01-31 1:04 ` jamal
2001-01-31 1:14 ` Ingo Molnar
2001-01-31 1:39 ` jamal
2001-01-31 11:21 ` Malcolm Beattie
2001-01-31 11:24 ` Ingo Molnar
2001-01-31 1:10 ` Still not sexy! (Re: sendfile+zerocopy: fairly sexy (nothing to dowith ECN) Rick Jones
2001-01-31 1:45 ` jamal
2001-01-31 2:25 ` Still not sexy! (Re: sendfile+zerocopy: fairly sexy (nothing todowith ECN) Rick Jones
2001-02-04 19:48 ` jamal
2001-02-05 5:13 ` David S. Miller
2001-02-05 18:51 ` Rick Jones
2001-01-27 12:43 ` sendfile+zerocopy: fairly sexy (nothing to do with ECN) jamal
2001-01-27 13:29 ` Andrew Morton
2001-01-27 14:15 ` jamal
2001-01-28 16:05 ` Andrew Morton
2001-01-29 18:50 ` Rick Jones
[not found] ` <200101271854.VAA02845@ms2.inr.ac.ru>
2001-01-28 5:34 ` Andrew Morton [this message]
2001-01-28 13:37 ` Felix von Leitner
2001-01-28 14:11 ` Dan Hollis
2001-01-28 14:27 ` Andi Kleen
2001-01-29 21:50 ` Pavel Machek
2001-01-28 19:43 ` Gregory Maxwell
2001-01-28 19:48 ` Choosing Linux NICs (was: Re: sendfile+zerocopy: fairly sexy (nothing to do with ECN)) Felix von Leitner
-- strict thread matches above, loose matches on Subject: below --
2001-01-29 16:16 sendfile+zerocopy: fairly sexy (nothing to do with ECN) Jonathan Earle
2001-01-29 16:34 ` Antonin Kral
2001-01-31 1:49 Bernd Eckenfels
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=3A73AF7B.6610B559@uow.edu.au \
--to=andrewm@uow.edu.au \
--cc=kuznet@ms2.inr.ac.ru \
--cc=linux-kernel@vger.kernel.org \
--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