OpenSplice DDS V6 offers the choice of two memory modes, Shared Memory and Single Process, which should I use?
OpenSplice DDS is highly configurable and when you are deploying your application you can choose to use either a shared memory architecture or a single process architecture. Both deployment modes support a configurable set of services. The choice of mode will depend on your exact requirements and the deployment scenario.
Single Process Mode
This is the default mode within OpenSplice V6 and above. Using single process mode allows the DDS applications and the OpenSplice administration to be contained together within one single operating system process. Each DDS application will starts it’s own services and you do not need to manually start OpenSplice.
This standalone single process deployment option is most useful in environments where shared memory is unavailable or undesirable. It uses dynamic heap memory and there is no need to pre-configure a shared memory segment. This can be seen as an advantage.
If you have multiple DDS application running on a single node then this mode is not a good choice. Each DDS application will have its own services running. This results in extra resource usage and network overhead. As OpenSplice is started with your application, the life-cycle of the services are directly related to your application. With each restart of your application a entirely new instance of OpenSplice starts. Inter-node communications are done via the loop-back interface, so other than the added overheads within the services, there would be no added application traffic.
The single process mode uses the default ospl.xml configuration file which is in the OpenSplice installation/etc/config directory. See Vortex OpenSplice DDS configuration for more information on these files.
Shared Memory Mode
In shared memory mode data is physically present only once on any machine. Smart administration is used to provide each subscriber with its own private view of this data. The OpenSplice daemon creates the shared memory on start up and both the DDS applications and OpenSplice administration interface directly with it.
Shared Memory mode requires you to start OpenSplice manually before you start your application. This mode is perfect for running more than one DDS application as they would all share the same services. As OpenSplice was started manually, the life-cycle of the services are not dependent on the life-cycle of your DDS application. Inter-node communications are done via the shared memory segment created when the services were initialized.
Read more about configuring shared memory in OpenSplice.
You can find more information in the OpenSplice Deployment Guide.