ipc: Imperial PEPA Compiler

What is ipc?

Over the last 10 years, the PEPA paradigm has become a popular choice among performance engineers for analysing quantities such as utilisation and throughput in their software and hardware designs.

ipc is a tool that aims to extend PEPA's modelling capability by allowing engineers to extract a larger number of performability measures (i.e. performance and reliability metrics) from their PEPA models.

ipc compiles PEPA models (in the form of .pepa) files to Will Knottenbelt's DNAmaca format (in the form of .mod) files. DNAmaca is well suited to this as it specialises disk-based (out-of-core) storage and analysis of very large systems. In particular, DNAmaca is adept at:

  1. analysing very large Markov models
  2. producing passage-time distributions and reliability quantiles or bounds

Example Passage-time Specification
How to run ipc

From an example file, test.pepa:

%% test.pepa
r1 = 1.0;
r2 = 1.0;
r3 = 1.0;
s1 = 1.0;
s2 = 1.0;
A = (a,r1).A' + (b,r2).A'';
A' = (a,r3).A;
A'' = (b,r1).A';
B = (a,s1).B + (c,s2).B;
Sys = A <a> B;
%% System component

The following command will generate a .mod file that can be run in DNAmaca. In turn DNAmaca will return the passage-time density function, representing the time between an 'a' action first occurring and a subsequent 'b' action:

ipc test.pepa -s "a" -t "b"

What does this do?

In fact, ipc is adding a stochastic probe to the model, equivalent to the following PEPA code:

%% test.pepa
Probe = (a,infty).Probe_running + (b,infty).Probe;
Probe_running = (a,infty).Probe_running + (b,infty).Probe;
%% System component
Sys <a,b> Probe

In the resulting output .mod file, DNAmaca is configured to look for the change in state over the system between 'Probe' and 'Probe_running'. The moment that 'Probe_running' is entered, the passage-time measurement starts: i.e. an 'a' action has been observed. When a further 'b' action is then seen the clock is stopped (the system goes back to state 'Probe' in fact) and DNAmaca outputs the appropriate distribution (in the form of a data file that can be piped into a graphing tool such as gnuplot).

Using many start or end actions to define the passage

Multiple start and end actions can be specified in creating the PEPA probe using a comma-separated list, for example:

ipc test.pepa -s "a,c" -t "b"
This means the passage-time clock will be started if the model performs EITHER an 'a' or a 'c' action (and stops on seeing a 'b' action).

Other Features
We also now support
  1. Immediate Actions
  2. Rate parameter overriding
  3. Full probe specification using a regular-expression-like syntax
  4. Local probe placement
  5. Probe communication
  6. Functional Rates
  7. Static analysis of pepa models
  8. Support for other analyses, Transient, Steady-state and Count Measures
In addition the core of the functionality of ipc is now offered as a Haskell library to aid the creation of further pepa software tools.

Example PEPA files

Some example PEPA models are available for trialling ipc on.

ipc Related Publications
Jeremy T. Bradley, Nicholas J. Dingle, Stephen T. Gilmore, William J. Knottenbelt
Jeremy T. Bradley, Nicholas J. Dingle, William J. Knottenbelt, Helen J. Wilson
Jeremy T. Bradley, Nicholas J. Dingle, Peter G. Harrison, William J. Knottenbelt
Jeremy T. Bradley, Nicholas J. Dingle, Peter G. Harrison, William J. Knottenbelt
ipc: Features and Future development
James Clerk Maxwell release

The full JCM release will support specification of the following features. The version number from which a feature was incorporated is shown.

Featureipc Version
passage-time distribution from PEPA actions[0.9a]
steady-state quantities from PEPA actions-
transient distributions from PEPA actions-
alternative specification of above from PMLmu formulae-

2G release

The 2G release of ipc will support analysis of a semi-Markov version of PEPA (i.e. allow analysis of models with more general distributions). Preliminary support for PEPAnets, an extension of PEPA for modelling mobile and distributed systems, is also planned.

Download ipc
John Daly release
[0.99] Source code: [ghc version]
James Clerk Maxwell release
[0.93a] Source code: [ghc version | hugs version]
Documentation (for ipclib)
  • A manual for ipc pdf
  • A developer manual for ipc pdf
  • An incomplete tutorial for ipc pdf
  • A manual for the pepa probe utility pdf
  • Haddock generated documentation for the ipclib API
  • A small paper relating to ipclib
Required Tools
Related Links
Enormous thanks for help, advice, code and bug finding go to:
Ashok Argent-Katwala
Neil Davies
Jeremy Bradley
Allan Clark
Nick Dingle
Tony Field
Stephen Gilmore
Peter Harrison
Jane Hillston
Will Knottenbelt

Last updated by Allan Clark:Tuesday 16th October 2007