Distribution

    Over the time, the CDx benchmark evolved. Besides the original RTSJ implementation of the CDx benchmark, we now provide several other implementations of CDx in different programming languages (C, SCJ) while implementing the same algorithm.

    Version 1.2

      Version 1.2 is unifying the CDx implementation across all the platforms and implementations languages.
      We now provide a the same CDx algorithm implemented in regular Java, RTSJ, Safety-Critical Java, specific-FijiVM-implementation, and in C.

      Update: A new version v1.2 released on 5/13/2010.

    • CDc-C v.1.2 (.zip, 2.5MB)
      • Several bug fixes.
      • Implementation Language: C
      • Related Publications: Eurosys'10, PLDI'10

    • CDj-RTJS v.1.2 (.zip, 2.5MB)
      • RTSJ implementation of CDx. A wrapper is used so that this version can run both with RTSJ or with a regular Java distribution.
      • Implementation Language: RTSJ, vanilla Java
      • Related Publications: EuroSys'10, PLDI'10, JTRES'09 and older

    • CDj-SCJ v.1.2 (miniCDj) (.zip, 2.5MB)
      • miniCDj is implementation of the CDx benchmark in Safety-Critical Specification for Java (SCJ).
      • Implementation Language: Safety-Critical Java
      • Related Publications: see oSCJ project

    • CDj-Fiji v. 1.2 (.zip, 2.5MB)
      • A regular Java implementation using some selected services provided by FijiVM.
      • Implementation Language: vanilla Java
      • Related Publications: Eurosys'10, PLDI'10
    Version 1.1

      A simplified version that uses a new algorithm for generating the frames on the fly. No Simulator is used, see the FrameBuffer for more details. Several bug fixes.

      The version v1.1.1 released on 4/13/2010 (bug fixes in miniCDj and CDj)

    • miniCDj v. 1.1.1 (.tar.gz, 2.5MB)
      • miniCDj is implementation of the CDx benchmark in Safety-Critical Specification for Java (SCJ).
      • Implementation Language: Safety-Critical Java
      • Related Publications: see oSCJ project

    • CDc v. 1.1.1 (.tar.gz, 2.5MB)
      • A simplified version that uses a new algorithm for generating the frames on the fly. No Simulator is used, see the FrameBuffer for more details.
      • Several bug fixes.
      • Implementation Language: C
      • Related Publications: Eurosys'10, PLDI'10

    • CDj v. 1.1.1 (.tar.gz, 2.5MB)
      • A simplified version that uses a new algorithm for generating the frames on the fly. No Simulator is used, see the FrameBuffer for more details.
      • Several bug fixes.
      • Implementation Language: RTSJ, vanilla Java (some minor modifications may be necessary)
      • Related Publications: Eurosys'10, PLDI'10
    Version 1.0

      The original version of CDx.

    • CDx v. 1.0 (.zip, 2.5MB)
      • Implementation Language: RTSJ, vanilla Java
      • Related Publications: JTRES'09, RTSS'09, and older.

Documentation
  • readme file (see also the readme files distributed with each version for more updated info.)
  • see also Publications
Content of the Distribution Directory

build/
Build files
documentation/
Contains documentation
input/
Contains defined workloads
properties/
Constains the personality files for each installed VM
src/
The source code of CDx
build.xml
ANT file containing targets for running tests, builds, ...
*.sh
Predefined launching scripts for CDx, see Running
trace.r
A script for ploting results
Readme
Readme file
Todo
Todo list
Installation
Requirements

CDx can be run with any regular or real-time VM. However, to do so, the CDx must be build using the VM that is going to be benchmarked. The requirements for running CDx can be summarized as follows:

  • Java[tm] 1.4 or above
  • ANT
Building CDx

To facilitate building and running of the benchmark we provide an ANT build.xml file.

Supported Compilers

CDx supports the following compilers (-Drt=compiler):

default
build non-RTSJ code using default Java compiler
srt
build non-RTSJ code using external Java compiler
rts
build RTSJ and non-RTSJ code using Sun RTS
wrt
build RTSJ and non-RTSJ code using IBM WebSphere RT, with "-Xrealtime" argument

Paths to compilers are in compiler.properties files, for each compiler. However, a new compilers can be easily added by defining a personality file for each compiler, see the following section.

VM Personalities / Properties

To perform the benchmark, the task of the ant file must be performed using the RT VM that we want to benchmark. Therefore, for each VM that we want to use to perform the benchmark we have to specify its personality file - a configuration file containing all the characteristics of the specific VM.

The personality files specifying all the properties of VMs are stored in the properties/ directory. Example of the personality file:

rcd.name=Sun Java Real-Time System
rcd.javac=/opt/sunrts/bin/javac
rcd.compilerarg=
rcd.fork=true
rcd.rtsj=true
rcd.compiler=javac1.4

Build Sequence

1) Create the personality file
2) Execute:

ant -Drt=personality_file_name dist

where "personality_file_name" is the name of to the personality file of the VM that you want to use