Re: noexec on /dev/shm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2010-12-20 at 13:07 -0800, Fernando Lopez-Lezcano wrote:

> I would like to bring to the attention of the list another current usage 
> of the tmpfs mounted on /dev/shm in Fedora packages:
> 
> Jack (the Jack Audio Connection Kit, jackaudio.org) has been using the 
> file api (apologies if my wording is not absolutely correct in unix 
> terms) on the tmpfs filesystem that is mounted on /dev/shm for a very 
> long time (10 years?). "/tmp" is not useful to Jack because Jack's 
> internal communication pipes can't be stored in any disk based journaled 
> filesystem as the latencies involved in accessing them cause glitches in 
> the audio streams handled by Jack.

This is right and wrong.

JACK uses /dev/shm for two purposes on Linux [1].  The first is as the
definition of what its configure script calls HOST_DEFAULT_TMP_DIR.
This path is only used as a name to which to attach the jack sockets.
The extent to which this will _ever_ touch the disk, even on a journaled
filesystem, is:

- eventually, the inode for that socket and the dnode for the containing
directory will have to be written to the disk, once.

- under memory pressure the vfs may decide to throw away the inode cache
for that socket, which would then have to be re-read from disk for
subsequent connecting JACK clients.

In other words, these are setup costs, not maintenance costs.  This may
cause glitches in a realtime scenario to the extent that clients are
created and destroyed, but in general I submit that the cost of exec()
of those new clients is going to dwarf the cost of the inode cache miss
for the JACK socket. [2]

The other usage of /dev/shm is for actual shared memory segments, but
the shm layer in jack uses shm_open() and friends, so the use
of /dev/shm is simply glibc's implementation detail.

[1] - I have read the JACK source literally once in my life (ie, just
now), and I do not claim to be an expert, but this is all I was able to
find.

[2] - Though, should someone feel especially enterprising, it would
probably be a worthwhile optimization to tweak the inode cache
replacement to prefer dropping regular files to sockets, on the grounds
that IPC should not be a disk operation.  If it doesn't already; I
haven't looked.

- ajax

-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux