Messaging performance

Matthew Dillon dillon at apollo.backplane.com
Wed Jan 19 11:37:39 PST 2005


:Hi,
:
:I currently have an application that uses SYSV Shared Memory to communicate 
:between processes (1 server, many clients). How would this compare to the 
:DragonflyBSD model of messaging I have been reading about on the website? 
:Are there specific scenarios that would favour one or the other?
:
:Jamie. 

    Well, what you are doing is communicating between two user processes.
    What DragonFly is doing is kernel-internal messaging.

    From a user process perspective, however, rolling your own (as you
    seem to have done) is almost guarenteed to be faster then using a
    kernel mechanism.  I just committed two new system calls to DragonFly
    to support user process blocking/wakeup operations, but I haven't 
    documented them yet.

    Shared memory is definitely the way to go for message passing.  Note
    that you do not have to use SYSV shared memory... you can use mmap()
    to share memory more easily.  You can use mmap() coupled with 
    madvise()'s MADV_NOSYNC to tell the system not to periodically flush 
    the data to its backing store and it will be just as fast as SYSV 
    shared memory, and a whole lot easier to manage.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>





More information about the Users mailing list