[zeromq-dev] Question about zero-copying, local and remote clients

Michel Pelletier pelletier.michel at gmail.com
Wed Sep 14 22:24:43 CEST 2016


Another good read on the topic:

https://web.archive.org/web/20120929202131/http://lwn.net/Articles/179492/

On Wed, Sep 14, 2016 at 1:22 PM, Michel Pelletier <
pelletier.michel at gmail.com> wrote:

>
>
> On Tue, Sep 13, 2016 at 12:37 PM, Mateusz Jemielity <
> m.jemielity at is-wireless.com> wrote:
>
>> Hi,
>>
>>
>>
>> I have a question about 0MQ’s internal use of zero-copy.
>>
>>
>>
>
>
>> Does 0MQ somehow know that server and client 1 are on the same machine?
>> If it knew, then it could, for example, use shared memory to transfer the
>> messages, without actually using tcp stack.
>>
>> I guess I could explicitly use ipc transport for processes on same host
>> and do another bind in the server, but can I do it in such kinda-generic,
>> single-bind way?
>>
>>
> Pipe level (IPC) use of zero copy features is OS specific and therefore
> not portable, there is a good thread here where Linus explains features and
> the issues:
>
> https://web.archive.org/web/20130521163124/http://kerneltrap.org/node/6505
>
> Quote:
>
> "There's a _huge_ downside to specialized interfaces. Admittedly, splice()
> is a lot less specialized (ie it works in a much wider variety of loads),
> but it's still very much a "corner-case" thing. You can always do the same
> thing splice() does with a read/write pair instead, and be portable."
>
> I don't know if 0MQ has flags to enable splice() level optimization or
> not, but it would be an interesting feature if it did, presumably improving
> throughput for IPC endpoints by removing the copy and vm bookkeeping
> requirements as all splice does is increment ref-counts for existing mapped
> pages.
>
> -Michel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20160914/8b6daf07/attachment.htm>


More information about the zeromq-dev mailing list