DiffLQN is a tool for the analysis of Layered Queueing Networks (LQNs) using ordinary differential equations. The main benefits are:
The analysis is independent of the concurrency levels in the model, for example number of cores in a processor or multiplicities of a server task.
The estimates are asymptotically exact for large enough concurrency levels.
DiffLQN accepts models using a syntax compatible with LQNS, the reference LQN solver from Carleton University and produces estimates of steady-state throughputs, utilizations, and response times of the network. In addition to differential equations, the network can also be solved using stochastic simulation.
DiffLQN is available as a single-jar command-line Java executable, available here. The archive also contains the documentation and sample LQN models. DiffLQN is distributed under the Eclipse Public License v 1.0.
The file simple-qn.lqn (available in the tool distribution) is a minimal example of an LQN model of a simple client/server systems.
# This block is supported for backward compatibility # but it is not used by DiffLQN G "simple-qn.lqn" 0.0001 500 1 0.5 -1 # Processors declaration, with multiplicity P 0 p ClientP f m 10 p ServerP f m 2 -1 # Tasks declaration T 0 t ClientT r think -1 ClientP m 10 # 10 client tasks running on client processors t ServerT n serve -1 ServerP m 2 # 2 server tasks running on server processors -1 # Entries declaration E 0 s think 0.01 -1 # entry think has time demand 0.01 time units y think serve 1.0 -1 # entry think makes a synchronous call to serve s serve 0.02 -1 # entry serve has time demand 0.02 time units -1 # DiffLQN solver settings, starting with #! # These will be ignored by LQNS #! v 1.0e5 # fast rate to approximate instantaneous events #! solver ode # ODE analysis - solver sim will run simulation #! stoptime 50.0 # integration time horizon # Output performance indices #! throughput: think serve #! utilization: ServerP #! response time: serve -1 # Exports output to csv file #! export csv
It runs from the command line with
java -jar DiffLQN.jar simple-qn.lqn
The output on screen will be the comma separated list of selected performance indices:
throughput, entry, think, 99.85022466301304 throughput, entry, serve, 99.85022466300549 utilization, proc, ServerP, 1.9970044932601099 response time, entry, serve, 0.020020000000000003
Reference paper on LQNs:
G. Franks, T. Omari, M. Woodside, O. Das, Olivia and S. Derisavi. (2009). “Enhanced Modeling and Solution of Layered Queueing Networks,” IEEE Trans. Soft. Eng., 35 (2): 148 - 161
Differential equation analysis of LQNs:
M. Tribastone. (2013). “A Fluid Model for Layered Queueing Networks”, IEEE Trans. Soft. Eng., 39 (6): 744 - 756
T. Waizmann and M. Tribastone. “DiffLQN: Differential Equation Analysis of Layered Queuing Networks”, WOSP-C 2016.