# 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: analysing very large Markov models 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 Sys 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 Immediate Actions Rate parameter overriding Full probe specification using a regular-expression-like syntax Local probe placement Probe communication Functional Rates Static analysis of pepa models 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 UKPEW'2003 Extracting Passage Times from PEPA models with the HYDRA Tool: a Case Study Jeremy T. Bradley, Nicholas J. Dingle, Stephen T. Gilmore, William J. Knottenbelt NSMC'2003 Hypergraph-based Parallel Computation of Passage Time Densities in Large Semi-Markov Models Jeremy T. Bradley, Nicholas J. Dingle, William J. Knottenbelt, Helen J. Wilson PNPM'2003 Performance Queries on Semi-Markov Stochastic Petri Nets with an Extended Continuous Stochastic Logic Jeremy T. Bradley, Nicholas J. Dingle, Peter G. Harrison, William J. Knottenbelt PMEO'2003 Distributed Computation of Passage Time Quantiles and Transient State Distributions in Large Semi-Markov Models 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.
Feature | ipc 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
DNAmaca/HYDRA (quiet version)
[ghc compiler | hugs interpreter]
Related Links
Example PEPA models
PEPA workbench
UML to PEPA tool
MTBDD-based PRISM tool
Credits
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