From: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
To: Johann Baudy <johaahn@gmail.com>
Cc: David Miller <davem@davemloft.net>, netdev@vger.kernel.org
Subject: Re: Packet mmap: TX RING and zero copy
Date: Fri, 5 Sep 2008 11:17:54 +0400 [thread overview]
Message-ID: <20080905071754.GA25998@2ka.mipt.ru> (raw)
In-Reply-To: <7e0dd21a0809040744q3ee65695uc33f6cc26a1fe4dd@mail.gmail.com>
Hi Johann.
On Thu, Sep 04, 2008 at 04:44:15PM +0200, Johann Baudy (johaahn@gmail.com) wrote:
> I'm finally able to run a full zero copy mechanism with UDP socket as you said.
> Unfortunately, I need at least one vmsplice() system call per UDP
> packet (vmsplice call()).
> mere vmsplice(mem to pipe) cost much (80µs of CPU). And splice(pipe to
> socket) call is worst...
> 80us is approximately the duration of 12Kbytes sent at 1Gbps. As I
> need to send packet of 7200bytes (with no frag)...
> I can't use this mechanism unfortunaltely. I've only reached 20Mbytes/s.
vmsplice() can be slow, try to inject header via usual send() call, or
better do not use it at all for testing.
> You can find below a FTRACE of vmsplice(), if you find something
> abnormal ... :) :
> (80µs result is an average of vmsplice() duration thanks to
> gettimeofday(): WITHOUT FTRACE IN KERNEL CONFIG)
Amount of gettimofday() and friends is excessive, but it can be a trace
tool itself. kill_fasync() also took too much time (top CPU user
is at bottom I suppose?), do you use SIGIO? Also vma traveling and page
checking is not what will be done in network code and your project, so
it also adds an overhead. Please try without vmsplice() at all, usual
splice()/sendfile() _has_ to saturate the link, otherwise we have a
serious problem.
> So, I will return to work on my circular buffer.
> This way I can control (ethernet frame length)*(number of frame)/
> (number of system call) ratio.
Not to distract you from the project, but you still can do the same with
existing methods and smaller amount of work. But I should be last saying
that creating tricky hacks to implement the idea should be abandoned in
favour of the standards (even slow) methods :)
--
Evgeniy Polyakov
next prev parent reply other threads:[~2008-09-05 7:18 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-02 18:27 Packet mmap: TX RING and zero copy Johann Baudy
2008-09-02 19:46 ` Evgeniy Polyakov
2008-09-03 7:56 ` Johann Baudy
2008-09-03 10:38 ` Johann Baudy
2008-09-03 11:06 ` David Miller
2008-09-03 13:05 ` Johann Baudy
2008-09-03 13:27 ` Evgeniy Polyakov
2008-09-03 14:57 ` Christoph Lameter
2008-09-03 15:00 ` Johann Baudy
2008-09-03 15:13 ` Evgeniy Polyakov
2008-09-03 15:58 ` Johann Baudy
2008-09-03 16:43 ` Evgeniy Polyakov
2008-09-03 20:30 ` Johann Baudy
2008-09-03 22:03 ` Evgeniy Polyakov
2008-09-04 14:44 ` Johann Baudy
2008-09-05 7:17 ` Evgeniy Polyakov [this message]
[not found] ` <7e0dd21a0809050216r65b8f08fm1ad0630790a13a54@mail.gmail.com>
2008-09-05 9:17 ` Fwd: " Johann Baudy
2008-09-05 11:31 ` Evgeniy Polyakov
2008-09-05 12:44 ` Johann Baudy
2008-09-05 13:16 ` Evgeniy Polyakov
2008-09-05 13:29 ` Johann Baudy
2008-09-05 13:37 ` Evgeniy Polyakov
2008-09-05 13:55 ` Johann Baudy
2008-09-05 14:19 ` Evgeniy Polyakov
2008-09-05 14:45 ` Johann Baudy
2008-09-05 14:59 ` Evgeniy Polyakov
2008-09-05 15:30 ` Johann Baudy
2008-09-05 15:38 ` Evgeniy Polyakov
2008-09-05 16:01 ` Johann Baudy
2008-09-05 16:34 ` Evgeniy Polyakov
2008-09-08 10:21 ` Johann Baudy
2008-09-08 11:26 ` Evgeniy Polyakov
2008-09-08 13:01 ` Johann Baudy
2008-09-08 15:28 ` Evgeniy Polyakov
2008-09-08 15:38 ` Evgeniy Polyakov
2008-09-09 23:11 ` Johann Baudy
2008-09-10 6:09 ` Evgeniy Polyakov
2008-09-05 10:28 ` Robert Iakobashvili
2008-09-05 13:06 ` Johann Baudy
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=20080905071754.GA25998@2ka.mipt.ru \
--to=johnpol@2ka.mipt.ru \
--cc=davem@davemloft.net \
--cc=johaahn@gmail.com \
--cc=netdev@vger.kernel.org \
/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).