Performance: Memory and CPU

Memory requirements measured in the KiloBytes.

CoreDX DDS is the leading small footprint Publish-Subscribe middleware. Packed with features and network performance you can rely on, CoreDX DDS uses a minimal and deterministic set of memory during execution. Our focus on optimizing processor, network, and memory resources makes CoreDX DDS the smallest footprint DDS implementation available. The memory utilization metrics show that CoreDX DDS achieves ultimate performance without the memory bloat exhibited by other messaging infrastructures.

Overview

CoreDX DDS provides a perfect balance of performance and resource conservation that is well-suited to projects that rely on distributed software to deliver high-performance systems. And you don’t need enterprise class hardware to host CoreDX DDS. Our software can be employed on the widest range of hardware platforms - from deeply embedded systems to consumer-grade computers to enterprise servers.

Our focus on optimizing processor, network, and memory resources makes CoreDX DDS the smallest footprint DDS implementation available. The memory utilization metrics show that CoreDX DDS achieves ultimate performance without the memory bloat exhibited by other messaging infrastructures.

Memory Footprint

CoreDX DDS exhibits stable memory utilization at run-time. This critical aspect of middleware components is often overlooked when examining performance. A middleware that consumes extreme amounts of memory during execution is not suitable for deterministic or resource constrained systems: these bloated products must be hosted on enterprise class hardware, and this leads to increased costs.

Your computing resources (run-time and static memory, CPU processing cycles, disk space), whether they are limited or abundant, should be available to your applications for use, not devoted to your middleware. CoreDX DDS is optimized at every step of the development process to use minimal amounts of memory.

An example CoreDX DDS application with:

  • 1 Domain Participant,
  • 6 Topics,
  • 6 DataWriters, and
  • 4 DataReaders

will require < 100 KB of heap memory.

Our 'C' shapes demonstration, TOC Shapes, used during all interoperability testing and demonstrations, uses < 300 KB of heap memory (this measurement includes the graphics libraries). This particular memory utilization number was obtained from a running TOC Shapes demonstration with 1 Writer on the Square Topic. If we delve into the architecture of the TOC Shapes demo (source code for the TOC Shapes Demo is freely available here), we find that this running demonstration had:

  • 1 DomainParticipant,
  • 3 Topics,
  • 1 DataWriter,
  • 0 DataReaders

The following table details the amount of memory required for each CoreDX DDS Entity created. This information can be used to roughly estimate the amount of memory CoreDX DDS will consume in your application.



CoreDX DDS Entity Local Entity Size (Bytes) Discovered (Remote) Entity Size (Bytes)
DomainParticipant * 12000 2100
DataReader 3200 2500
DataWriter 3200 2400
Topic 750 0

* DomainParticipant size includes all built-in Topics, DataWriters, and DataReaders

The following graphs show that CoreDX DDS can maintain a small and consistent memory footprint during execution of latency or throughput heavy applications. The memory graph includes all memory assigned to the program, including: text (code), static and local variables, stack memory, and heap allocated memory.

CoreDX DDS Memory

CPU Utilization

The CPU Utilization graph shows a long running throughput test, transmitting 1024 byte messages, with a total throughput of over 700 Megabits/sec. The CPU utilization of a single core doesn’t exceed 30%. On a machine with 4 cores, this equates to less than 10% of the total available CPU resource.

CoreDX DDS CPU Utilization

From this analysis, it is apparent that CoreDX DDS with its small memory footprint and high-performance provides a well-balanced communications middleware that supports a wide range of platform deployments.