On Fri, Jan 31, 2014 at 6:53 PM, James Bardin <
j.ba...@gmail.com> wrote:
>
> On Fri, Jan 31, 2014 at 12:06 AM, Dmitry Vyukov <
dvy...@google.com> wrote:
>>
>> It depends at least on what else the program is doing and what is the
>> size of the data. If you splice 10GB of data, then I think it must be
>> faster with splice; if you splice 100 bytes, then do it in user space.
>>
>
> Usually I'd only be aiming to splice 64k or so (larger pipes would be fine,
> but the architecture in go would make it hard to share them between a large
> number of transfers).
>
> What you do get (esp with kernels later than 3.5, and with nics that support
> offload) is a zero copy transfer between sockets. This usually doesn't buy
> you much until you're running at 10GE speeds, and can still be difficult to
> tune, but there is definitely performance gains to be had.
>
>
>>
>>
>> > If it is a problem, is there any way it could be written in a
>> > non-blocking
>> > manner in C and cooperate with the scheduler? (not that I've proven
>> > threads
>> > would actually be a problem yet)
>>
>> I do not understand what you want to do in C? And why?
>
>
>
> I was thinking that if the Syscall6 calls had significant overhead,
They do not. Non-blocking read/write syscalls must be handled very efficiently.