- 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
- 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
- CDx v. 1.0 (.zip, 2.5MB)
- Implementation Language: RTSJ, vanilla Java
- Related Publications: JTRES'09, RTSS'09, and older.
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 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.
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)
The original version of CDx.
- readme file (see also the readme files distributed with each version for more updated info.)
- see also Publications
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 |
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
To facilitate building and running of the benchmark we provide an ANT build.xml file.
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.
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.javac=/opt/sunrts/bin/javac
rcd.compilerarg=
rcd.fork=true
rcd.rtsj=true
rcd.compiler=javac1.4
1) Create the personality file
2) Execute:
where "personality_file_name" is the name of to the personality file of the VM that you want to use