PDQ (Pretty Damn Quick)
is an open source software package that supports the constuction of queueing models
for calculating performance metrics associated with the management of data centers,
packet networks (e.g., Internet traffic), cloud applications, manufacturing supply-chains, and so on.
PDQ works because, from the perspective of performance,
all such systems can be regarded as a network of buffers where requests can wait
for service when the shared resources are not immediately available.
Since a buffer is just a storage area for multiple requests, when they are maintained in a certain order,
they form a queue. The most common queue ordering is First-Come-First-Served (aka FIFO: First-In-First-Out).
Since a buffer is just a type of queue,
all of the above-mentioned systems can be represented as an interconnected network of queues.
A PDQ model calculates all the performance metrics associated with such a network.
This means PDQ can be used to:
confirm that monitored performance data is working correctly
predict performance for circumstances that lie beyond monitored data
A very pertinent example of applying PDQ to assess the most cost-effective Auto Scaling policies
on AWS cloud was presented at the recent
CMG cloudXchange event
and those PDQ models will be discussed at length in this workshop.
If you would like to preview PDQ without going through the
2019 Guerrilla grad,
has implemented an
interactive version online
that facilitates writing
PDQ models in any of Perl, Python or R with immediate feedback.
Just edit the Input pane and the results appear automatically in the Output pane. No muss, no fuss.
The purpose of this workshop is to learn how to apply PDQ to your particular
performance analysis and capacity planning projects.
classes provide the general framework for collecting a variety of
performance metrics and understanding the relationships between those metrics.
Underpinning the Guerrilla approach is queueing theory and statistical analysis.
This workshop focuses on applying that general framework to
constructing a PDQ model (or models) to meet your particular needs.
Classes typically begin at 9am and the instructor is generally available until 9pm each day.
Many class discussions have been known to continue over dinner.
A morning break of half an hour is serviced around 10:30am
Lunch is provided from Noon until 1pm.
An afternoon break of half an hour occurs around 3:00pm
Exposure to a wide variety of computer systems capacity planning concepts, methods, and
tools that can be adapted opportunistically to support the needs of
enterprise-level platform-independent performance management.
Since this is a hands-on workshop, the structure and content are largely driven by you.
This works best if you can bring to the workshop some kind of architectural diagram and, where possible,
some relevant performance data. If you're not sure how to go about that, we can help you identify those
things before you come to the workshop.
The key to constructing a successful PDQ model is identifying the appropriate
INPUT metrics (e.g., arrival rate, service times) as well as the
expected OUTPUT metrics (e.g., queue length or buffer size, response time).
In addition, a number of case studies will be presented to exhibit a variety of approaches to developing
PDQ models. The good news, and a key feature of PDQ, is that even the most complex architectures end up
having a shockingly simple representation in PDQ. Part of the reason for this result is that a model of
performance is not the same thing as a model of function (which is what developers are required to focus on).
Therefore, a lot of operational details, that one would normally expect to be important, don't matter.
PDQ is available in several commonly-used
programming languages and,
for the PDQW workshop, you are free to use whichever language you prefer. However, the instruction will
otherwise be delivered using the R version of PDQ in RStudio.
The integration of PDQ with R is very powerful because R does not have a general-purpose
qeueing network solver. Moreover, R has the following powerful capabilities for
wrangling raw performance data:
import data using R commands
manipulate those data using R statistical packages
extract PDQ input parameters, such as, arrival rates, service times
set up a PDQ model as an R script
solve your PDQ model and plot results
compare those PDQ results with additional R data
rinse and repeat
Clearly, this combination R and PDQ is particularly powerful for doing computer performance
analysis and capacity planning.
This workshop is intended to be self-contained.
No prior knowledge of PDQ or queueing models is assumed. Even if you've taken the
where simple queueing theory was introduced, that topic will be reviewed again at the beginning of the workshop.
You can never have too much queueing theory.