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:
Example Passage-time Specification
How to run ipc
From an example file, test.pepa:
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:
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:
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).
ipc test.pepa -s "a,c" -t "b"
We also now supportExample PEPA files
Some example PEPA models are available for trialling ipc on.
ipc Related Publications
Performance Queries on Semi-Markov Stochastic Petri Nets with an Extended Continuous Stochastic Logic
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.
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.
John Daly release[0.99] Source code: [ghc version]
James Clerk Maxwell release[0.93a] Source code: [ghc version | hugs version]
Documentation (for ipclib)