Skip to content

peterlharding/PDQ-v5

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repo is very dated now - better to use:

  PDQ 7 from here   - https://github.com/DrQz/pdq-qnm-pkg
  PDQ 6.2 from here - http://www.perfdynamics.com/Tools/PDQcode.html#tth_sEc2

====================================================================
 PDQ (Pretty Damn Quick) Queueing Analyzer v5.0
====================================================================
PDQ is an analytic queueing-circuit analyzer made freely available under
MIT/X11 license from www.perfdynamics.com (See the COPYING file for the
legal gore).

Main new features of PDQ 5.0

 1. Multiserver queues with the API defined in section 6.6.2 of the Perl::PDQ 
    book (see below).

 2. R version of PDQ. Tested on Linux, OpenSolaris, and Mac OS X, but is
    not yet operational on Windows.

Deprecated features

 1. Pure Java implementation of PDQ v4.2 (by Peter Harding) has been retained.
    It will be replaced in the next release by a JNI-based Java implementation
    that adheres to the same APIs as the C, Perl, Python, and R implementations.

 2. PHP implementation of PDQ v4.2 (by Italian student Samuel Zallocco) has been
    retained. It will be dropped in the next release.

====================================================================
******************* DISCLAIMER OF WARRANTY ************************
====================================================================
Performance Dynamics Company(SM), Neil J. Gunther, and the developers 
of PDQ, make no warranty, express or implied, that the source code 
contained in the PDQ files or in any of the attendant books is free 
from error, or is consistent with any particular standard of
merchantability, or that it will meet your requirements for a
particular application. PDQ should not be relied upon for solving a
problem whose correct solution could result in injury to a person or
loss of property. The author disclaims all liability for direct or
consequential damages resulting from your use of this source code.
====================================================================

This software is intended to accompany the following books:

 "Guerrilla Capacity Planning" (GCAP)
 by Neil J. Gunther, 
 Springer-Verlag, 2007
 ISBN: 3540261389

 The accompanying PDQ models for the GCAP book are located in the directory
 ../examples/gcap_2007/

 
 "Analyzing Computer System Performance Using Perl::PDQ" (PPDQ)
 by Neil J. Gunther, 
 Springer-Verlag, 2005
 ISBN: 3540208658

 PDQ models for the PPDQ book are located in the directory
 ../examples/ppdq_2005/


 "The Practical Performance Analyst" (PPA)
 by Neil J. Gunther
 McGraw-Hill Companies (1998) ISBN: 0-079-12946-3 (First edition)
 iUniverse Press Inc., (2000) ISBN: 0-595-12674-X (Reprint edition)
 
 PDQ models (in C code) for the PPA book are located in
 ../examples/ppa-1998/


Various and sundry PDQ models can also be found in
../examples/misc/ 

A complete synopsis of the PDQ functions in Perl can be found in Chapter 6 
of the PPDQ book.


====================================================================

Top-level directories
---------------------

COPYRIGHT* 
Makefile* 
examples/ - PDQ models discussed in the books above 
perl5/ - Perl5 support 
tools/ - Miscellaneous translators
Getversion* - Script to report version of PDQ
README* - This file 
java/ - Stand alone PDQ v4.2 in Eclipse-based Java
php/ - Stand alone PDQ v4.2 in PHP (*untested and deprecated*) 
Makeall* - Used to install PDQ (see next section) 
bin/ - Java support
lib/ - PDQ library in C 
python/ - Python support 
R/ - R support
COPYING - the MIT/X11 license that PDQ is released under
pdq.i - configuration file for generating SWIG binding code

Examples directory
------------------

Makefile - Make all PDQ models in the sub-directories 
gcap_2007/ - Contains Perl script PDQ models for GCAP book (2007) 
misc/ - Odds and sods (see next section) 
ppa_1998/ - Contains C-code PDQ models for PPA book (1998/2000) 
 Also contains some Perl and Python versions of the same models, but not guaranteed to work
ppdq_2005/ - Contains Perl script PDQ models for PPDQ book (2005)
Big Book Store - PDQ circuit of a bookstore with separate browsing and buying facilities.
Linux magazine - PDQ models for Linux Magazine article "Streeeeeeetch!" (2007).
Multiserver - Test cases based on examples in Gross and Harris (Wiley 1998).
Passport - Uses NumPy import to PyDQ to solve traffic equations directly.


Misc directory
--------------

These PDQ models were developed independently of the books mentioned above.

diskoptim.pl* - Optimize response time for I/Os going to a fast & slow disk 
jackpdq.py* - Jackson network problem in PDQ
jacksim.py* - Corresponding Jackson network in SimPy simulator code
threadapp.pl* - Threaded application model
floggit.py* - M/M/1 queue model in PyDQ
spamcan.pl* - Model of email spam-filters running on a 4-way SMP

====================================================================

Installing the Perl PDQ Module
--------------------------------
The Perl interpreter, needed to run PDQ, is intrinsic to a wide 
variety of platforms. In general, it is already installed on UNIX or Linux 
platforms, so the following sequence of commands can be used to install the 
PDQ perl module:

The PERL module is built and installed by the Makeall command which will
be run by doing a 'make' in the top level directory.

It may be built manually by as follows:

 Change to the pdq subdirectory: cd pdq and locate the directory perl5/
 Change to that directory: cd perl5
 Run the setup script: ./setup.sh
 Go back up to the pdq directory: cd ..
 You should be able to run the code examples provided.

More explicit instructions can be found at the web site www.perfdynamics.com.
You should also check that web site for any changes regarding future releases 
of PDQ. You are now ready to execute any of the Perl scripts listed in
in the tables at the back of the book. A similar procedure can
be applied to the installation of almost any Perl module, including those
from CPAN (www.cpan.org).

For other Perl environments, such as MacPerl (MacOS), ModPerl (Apache),
Active Perl (Microsoft Windows), you should consult the appropriate
documentation for the correct installation procedure.
Installation notes for ActiveState Perl have been provided by Tom Becker 
and can be read from the PDQ download page:
http://www.perfdynamics.com/Tools/PDQcode.html

A brief tutorial on performance modeling can be found at
http://www.perfdynamics.com/Tools/PDQ.html

Visit the blog http://perfdynamics.blogspot.com/ for additional
information on the book and other performance-related resources.


=======================================================================

Installation Gotchas
--------------------

The following items are typical of the installation problems that can prevent
Perl PDQ models from executing.

- Line termination in ASCII files. 
 Check CR/LF conventions in your environment.

- Permissions problems
 If you don't have root privileges, you will need to install the
 PERL module to a lib/ directory that is local to you.

- Pathing problems
 The Perl interpreter has to be able to find the pdq.pm module.
 The typical error message for this begins 
 "Can't locate pdq.pm in @INC (@INC contains: ...."
 
 To facilitate finding it on my MacOS X G4, for example, I had to export the
 UNIX environment variable PERL5LIB using the shell command:
 setenv PERL5LIB /Users/njg///lib/perl5/site_perl/5.8.6/darwin-.../
 You should then include this env var in your .cshrc or whatever login profile
 you use.
 
 Check this variable using the command:
 echo $PERL5LIB

*** See the README file in the Perl5/ directory for more details ***


Installing Python PDQ
---------------------

a) Run Makeall at the top-level directory (standard build).

 $ make

 or

 $ Makeall

b) Build manually as follows:

 $ cd python
 $ make
 $ ./test.py # to test


NOTES:
1) If using standard system installs of Perl and Python on UNIX
 and Linux systems, you will need superuser (root) privileges
 to install the Perl and Python modules into the system
 default locations.

2) See README in perl5 directory for what to do if you do
 not have root access and cannot install PERL and Python
 into normal system wide locations.

3) See README in perl5 directory if installing in Cygwin on
 Windows Vista
 
 
====================================================================

Problems compiling on Solaris and other UNIX flavors

PDQ has been compiled without problems on many UNIX and UNIX-like platforms
with GNU development tools: Linux, MacOSX, OpenSolaris, and Cygwin. Some
Solaris users have reported difficulty compiling. There is a
Makefile.solaris file that you could try using should you be unable to
compile with the regular Makefile. Try the following steps:
lib: make -f Makefile.solaris
perl5: setup.sh
python: make
R:  R CMD INSTALL pdq

About

Pretty Damn Quick Queuing Analysis Tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published