This page contains information about "ipclib". ipclib is a library for working with PEPA models and stochastic probes. Probes allow the modeller to specify a passage of interest through the behaviour of the model and, in tandem with ipc/Hydra, computing cumulative distribution functions across this passage. A small paper relating to ipclib is available here.
A manual for the pepaprobe utility is available here
Automatically haddock generated documentation is available here .
--probe
option. The arguments to the
--probe
option will in general need to be surrounded by quotes.
pepaprobe --probe probe1 --probe probe2 --probe probe3 model.pepa
"ClientIdle request:clientReq, response:clientResp"
"ServerIdle break:serverBreak, repair:serverRepair"
"(serverBreak, clientReq:start)/serverRepair, clientResp:stop"
The first of these probes attaches itself to a ClientIdle
process.
Notice that the only such processes are within a process array hence
pepaprobe
will split up the array so that a single
ClientIdle
process can be monitored. The probe waits for a
request
action and sends a clientReq
communication signal
upon observing one. Once this has happened the probe will wait for a
response
action and send a clientResp
signal.
If the probe observes one action while waiting for the other no communication signal
is sent.
The second probe is very similar except that it is attached to a
ServerIdle
process.
The actions it is concerned with are the break
and
repair
actions.
Finally a master probe is defined which is not localised to any process but is
combined with the entire model, including those probes added before it. The master
probe simply waits for the communication signals to be sent from the localised probes.
The probe waits for a serverBreak
signal followed by a
clientReq
signal. In between these two signals if the probe observes a
serverRepair
signal then the probe is reset into its original state.
In this way the probe only ever sends a start
signal if a client makes
a request while (at least) one of the servers is broken. After sending a
start
signal the probe waits for a clientResp
signal and
when recieved sends a stop
signal.
In this way the master probe will send start and stop signals to indicate the passage from a client's request to that request being serviced, but only if the request was made when at least one of the servers was broken.
Some probes can become quite complicated and it comes helpful to store them in files. Thepepaprobe
utility therefore accepts an argument
--argfile file
which specifies a file in which command line arguments
can be kept. Hence the above
clientServer.pepa
file can be used with the
clientServer.args
file with the command-line:pepaprobe --argfile clientServer.args
darcs get --partial http://homepages.inf.ed.ac.uk/s9810217/software/ipclib/
hatexlib
and ipclib
corresponding to the uncompressed source
directories, the code for ipclib can be compiled with the following commands:
cd hatexlib
runhaskell Setup.hs configure --user --prefix=dirname
runhaskell Setup.hs build
runhaskell Setup.hs install
cd ../ipclib
runhaskell Setup.hs configure --user --prefix=dirname
runhaskell Setup.hs build
runhaskell Setup.hs install
The name dirname
should be set to some suitable location within your path.
Both options to the configure commands may be omitted if installing as root.