[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-kernel
Subject:    Use zero-copy (aka pipe/splice) for skbuff to enhance socketpair performance?
From:       Fabian Franz <FabianFranz () gmx ! de>
Date:       2006-09-24 17:38:31
Message-ID: 200609241938.38378.FabianFranz () gmx ! de
[Download RAW message or body]

Hi,

as far as I know pipe() is now much faster than socketpair(), because pipe() 
uses the zero-copy mechanism.

However there are numerous applications using socketpair() instead of two 
pipe()s, because they need exactly _one_ fd for read/write instead of 2.

Over 180 open unix domain sockets are on my system right now.

Many of this applications could gain a speedup if only they could change to a 
different system call like epipe().

epipe() would behave like socketpair(), but internally use two pipes (one for 
each direction).

It seems so easy to do, so I'm really wondering, why it hasn't been done, yet?

However new system calls always have the problem of portability. Though in 
this case an epipe -> socketpair fallback would work.

So perhaps a better idea would be to enhance skbuff to use the new zero-copy 
mechanism ... ?

The reason why I had the idea is that I had huge socketpair performance 
problems, but with an old 2.4.27 kernel and a custom kernel module:

Almost 1 sec of latency!

Changing the fds provided from userspace to pipe()s did result in good 
performance.

Might be a bug in my module though ...

cu

Fabian

PS: Please CC me as I'm not subscribed.

-- 
      *** Consulting - Training - Workshops - Troubleshooting ***
   @@@ LiveCDs (Knoppix), Debian, Remote Desktop Access (FreeNX) @@@

--- Fabian Franz --- www.fabian-franz.de --- consulting@fabian-franz.de

[Attachment #3 (application/pgp-signature)]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic