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.

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

# Processors declaration, with multiplicity 
P 0
p ClientP f m 10 
p ServerP f m 2

# 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

# 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

# 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 reading


  • Tabea Waizmann, email: tabea.waizmann@imtlucca.it
  • Mirco Tribastone, email: mirco.tribastone@imtlucca.it