Talk:Usingzero-copy data transfer in ROS 2

@mkillat @russkel @mvollrath

I do not know the implementation but since under the hood intra-process communication can be as simple as exchanging a pointer I think it would be faster than communication via iceoryx.

besides performance, I think the followings are benefits for intra-process communication.

  • saving TLB entries.
  • less system calls including pagefault. (because using the same virtual address, no need to map/unmap)

Are you 100% sure regarding this? I have mounted /dev/shm on different containers before.

Same, taking care to setup the container with ipc sharing, which is similar to network sharing. The tl;dr is set ipc=host and everything uses the same /dev/shm.

i was going to ask the same question, i think this can be done with following.

  • bind /dev/shm to container
  • bind /dev/mqueue to container

those are just namespces, set ipc=host does all the tricks. see Docker run reference | Docker Docs

I’ve yet to find a boundary worth crossing from a container that couldn’t be crossed…

I would not do just give out the access to IPC from container, since there are other system applications relying on it. but if we can specify the filesystem with access permission to enable shared memory transport, that would be useful.

I just explain what we can, probably not what we want to do :grinning_face_with_smiling_eyes:

thanks

1 Like