APPENDIX B
QNAP2 : Q UEUEING N ETWORKS A NALYSIS P ACKAGE 2
B . 1 . I N T R O D U C T I O N
QNAP2 [14, 15, 119, 120, 121] is a package for describing, handling and solving large and complex discrete event flow systems such as data communication networks and computer systems. QNAP2 is based on the queueing network paradigm. It comprises an object oriented specification language, based on PASCAL and SIMULA, which is used for the description of the models under study and the control of their resolution. It comprises also a collection of efficient resolution algorithms, including discrete event simulation, exact and approximate mathematical methods. It is a very powerful and easy to use tool, and has been coded in FORTRAN77 for portability.
This appendix is organized as follows. In section B.2, the modeling framework used by QNAP2 is presented. Section B.3 introduces the modeling language. The modeling mechanisms supported by QNAP2 are summarized in section B.4.
Finally, section B.5 is devoted to QNAP2 solvers.
B . 2 . M O D E L I N G F R A M E W O R K
The modeling framework supported by QNAP2 is the representation of a system as a network of stations through which circulate customers. A station is composed of a single queue and one or several server(s). When entering a service station, a customer competes with the other customers for the allocation of a server, according to the station scheduling policy. When a server is allocated, it processes the service description of the station. The service description of a station may involve any statement of the algorithmic language, including: work demand procedures, object manipulation operations, dynamic transition procedures and synchronization procedures.
The modeling framework of QNAP2 makes possible to support a large set of analytical techniques developed for standard or generalized queueing network models. Presently, QNAP2 provides the user with : analytical solvers (convolution algorithms, mean value analysis and approximate methods for product-form networks and extensions), Markovian solver for the exact analysis of limited size models, and a discrete event simulation. Within the set of analytical solvers of QNAP2 (exact and approximate) a dispatching algorithm selects the most appropriate solver in term of efficiency and numerical accuracy, according to the modeling features used in the model.
B . 3 . Q N A P 2 L A N G U A G E
QNAP2 is a high level, object oriented language. It includes two levels of specifications :
1. A command language consisting of a limited set of parametrized commands.
These commands correspond to the main functionalities of QNAP2, as declaration of objects and variables, structure of the service stations, and model control.
2. An algorithmic language, derived from PASCAL and SIMULA. It allows the specification of services involving complex mechanisms and the activation of the solvers.
The main features of the two language levels of QNAP2 are presented in the next
sub-sections.
B . 3 . 1 . C o m m a n d L a n g u a g e
A QNAP2 program consists of a sequence of commands. Each of these commands corresponds to a specific function :
• Creation of variables or structured objects : command /DECLARE/.
• Description of stations : command /STATION/. It is used to define the attributes of stations (type, scheduling, transition rules, etc.).
• Analysis control : command /CONTROL/. The parameters of this command include aspects such as : input/output control, and simulation control (for instance, run control length control options).
• Execution of a sequence of algorithmic statements : command /EXEC/. This command can be used for : acquisition and processing of input data, activation of a solver, and handling of results for final edition.
B . 3 . 2 . A l g o r i t h m i c L a n g u a g e
The algorithmic language is close to PASCAL as far as expressions and statements are concerned. In addition, specific features have been introduced for handling lists of objects : selection of items which meet a given criterion, repetition of items, list of all objects of a given type, etc.
The algorithmic language includes a large set of system functions and procedures. These procedures may be used either in a service description to specify modeling mechanisms, or in an /EXEC/ command to specify input/output operations or solvers activation.
B . 4 . M O D E L I N G M E C H A N I S M S
As indicated previously, the modeling framework of QNAP2 is based on the
concepts of stations and customers. A station belongs to one of the following
types : a service station (simple, multiple or infinite servers), passive station
(semaphore or resource), or source station.
Resource and semaphore are queues associated with one or several tokens. They contain only passive customers 1 representing the request for tokens made by active customers in the service stations. Source stations work as infinite source of customers.
The modeling mechanisms of QNAP2 are specified at the two language levels.
The command language provides the most usual modeling features. Besides, the algorithmic language provides access to a set of statements, procedures and functions for specifying any non standard behavior.
QNAP2 provides pre-defined scheduling policies at the command language (parameter SCHED of /STATION/ command), such as FIFO, LIFO, preemption, priorities, etc. Other server allocation policy can be described using the algorithmic language by direct manipulation of customers.
When a customer completes its service at a service station, it can be routed to another station or destroyed. The routing mechanism can also be specified at the command language level or at the algorithm language level.
B . 5 . Q N A P 2 S O L V E R S
In QNAP2, solving a model consists in computing or estimating the performance criteria which characterize the steady state of the model. Numerical solvers and an event driven simulator are available for this purpose.
The numerical solvers of QNAP2 include several analytical solvers (exact and approximate) and an exact Markovian solver.
The solvers are activated by procedure calls (SOLVE, MARKOV, SIMUL) in the algorithmic sequence associated with an /EXEC/ command.
1