The Ersatz package allows simulating a distributed, networked application (like DUNE’s DAQ) in terms of its throughput, latency and bottlenecks. It should be easy to explore a “configuration space” which spans the overall organization of the distributed application as well as detailed assumptions about the performance of individual elements.
The application is modeled as an acyclic directed graph. Each node is specified by:
- input and output bandwidth
- input and output buffer depths
- processing time
- data compression/inflation factor
- output routing
The “data” passed through the application not detailed and consists mostly of:
- a size (in Bytes)
- an identifier
These messages are produced and consumed between two nodes. Routing of messages is subject to logical connections and constrained by a model of transport mechanism (eg a shared bandwidth, preemptive network switch).
Erastz is a Python 3 application and installs in the “normal Python way”. It is recommended to install inside a virtual environment
$ virtualenv -p python3 ersatz-venv $ source ersatz-venv/bin/activate $ git clone https://github.com/brettviren/ersatz.git $ cd ersatz/ $ python setup.py install # or $ python setup.py develop
Right now, there is no command line interface, just a bunch of unit tests. Some of which actually run.
$ python tests/test_shared_bandwidth_switch.py ... a bunch of text that is probably meaningless at first glance ...