Re: [GIT PULL] kdbus for 4.1-rc1

Al Viro
2015-04-15T22:49:18Z

On Wed, Apr 15, 2015 at 03:28:58PM -0700, Andy Lutomirski wrote:
> On Wed, Apr 15, 2015 at 3:18 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> > On Wed, Apr 15, 2015 at 03:11:17PM -0700, Andy Lutomirski wrote:
> >
> >> This is functionally identical to passing AF_UNIX socket fds over
> >> SCM_RIGHTS, but I want something much lighter weight.
> >
> > Most of the weight in SCM_RIGHTS comes from the fact that you can
> > pass AF_UNIX sockets over it, which requires a garbage collector.
> > Exclude that and suddenly it becomes very cheap...
>
> I should have been more specific. I don't mean the performance of
> SCM_RIGHTS itself; I mean the memory overhead of keeping tons of fds
> around, each with their socket data structures and buffers.
>
> I think that dbus could be quite efficiently implemented with a
> userspace daemon that just introduces peers to each other, but the fd
> explosion could be rather bad for some use cases.
>
> I'll be the first to admit that I don't have a clean API in mind.
> There was a lightweight fd proposal way back when, but it never went
> anywhere, and it might not be suitable anyway.

Wait, are you talking about the overhead of descriptors used for capability
tokens (essentially zero - one system-wide struct file per capability +
one pointer in descriptor table of anyone who holds it + two bits in
bitmaps in the sam descriptor tables) or about the overhead of descriptors
used to send/receive those over? The latter don't have to be sockets
at all - they could bloody well be files on some ipcfs, or character device,
or FIFOs, etc.