how to do large-ish IPC transfers

Andrew Jeffery andrew at aj.id.au
Thu Sep 12 10:42:38 AEST 2019



On Thu, 12 Sep 2019, at 04:01, Vernon Mauery wrote:
> On 11-Sep-2019 01:49 PM, Brad Bishop wrote:
> > Hi everyone
> > 
> > I have an application or two that need to collect and save ~ 16KiB of
> > debugging data.  The applications have various triggers but they are very
> > infrequent when deployed (on the order of months/years).  In the lab it
> > would happen much more frequently.  It isn’t really debugging information
> > for the developer of the application but rather for customer service
> > personnel debugging broken components on a deployed server, after the event
> > (and state) that caused the data to be collected.
> > 
> > The applications generating this data will not be the same applications that
> > publish it (the webserver), so there is a need to transfer it using IPC.
> > 
> > 16KiB seemed a little big for a DBus interface, and we’d have to ascii
> > encode all that into a string.  Some other ideas were:
> > 
> > 1 - passing a file descriptor over dbus
> 
> This would probably be the best, given our architecture. It would allow, 
> at some point in the future, to have the sender have different 
> permissions on the file and allow access to a less-privileged process.
> 
> > 2 - passing a file name over dbus
> > 3 - shared memory
> 
> Two and three could be the same (if that file is in a tmpfs). System V 
> shared memory is a pain to use, so simply mmap'ing a file in tmpfs is 
> the easiest way to go. But both of these require permissions to align 
> between sender and receiver.
> 

I agree with Vernon here on all fronts.

Andrew


More information about the openbmc mailing list