DiffLQN: Analysis of Layered Queueing Networks using ordinary differential equations

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.

Download

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.

Minimal Example

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

Further readings

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

Tool paper:

T. Waizmann and M. Tribastone. “DiffLQN: Differential Equation Analysis of Layered Queuing Networks”, WOSP-C 2016.