ZettaScale Knowledge Base ZettaScale Knowledge Base

  • Home
  • DDS Products
    • DDS Overview and Concepts
    • OpenSplice DDS
      • OpenSplice DDS
        • OpenSplice FAQ
        • Why OpenSplice DDS?
        • Installation
          • OpenSplice Licensing FAQ
        • Best Practice and Possible Errors
        • API and IDL
        • Configuration
        • Networking
          • DDSI
          • RT Networking
        • Durability Service
        • DDS Security
        • Logging
        • Databases and DBMS
        • Release Notes
      • OpenSplice Tools
        • Overview
        • OpenSplice Launcher
        • OpenSplice Tuner
        • OpenSplice Tester
        • Record and Replay Manager
        • MMStat
    • Cyclone DDS
  • Zenoh
  • Contact Support
Home / DDS, OpenSplice DDS, Configuration / Should I use use single process or shared memory?

Should I use use single process or shared memory?

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 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.

Related

OpenSpliceShared Memory DDSOpenSplice DDSConfiguration
twitter logo linkedin logo
News and Events
Copyright © 2022 ZettaScale Technology Ltd. All Rights Reserved