Friday, May 9, 2008

Performance Simulation using Ptolemy Framework made easy by PEA

The moment we start talking about Performance testing, popular market tools, type of tests, bottlenecks and the isolation techniques ,etc comes to our mind. But am sure you would be definetly surpraised to see a group who always talks about simulation , performance modeling , prediction, etc. Yes, they are none other than my favourite reference site of PEA.

Checkout this new tool available in PEA site http://www.pea-online.com/resources.htm. But be prepared for getting lost into the world of new terminolgies and jargons which might scare you little. But try understanding at a high level what is the tool all about and it be a good start to learn more about it.
Even i am very new to simulation and am a begineer to this new world of simulation. But its really interesting and and with lot of excitement am writting this note. Let me give a quick intro of all i understand.

Ptolemy is a open source project developed by group of researchers at U.C. Berkeley. It is a framework for assembling software components, a modeling and simulation tool, a block-diagram editor, a system-level rapid prototyping application, a toolkit supporting research in component-based design, a toolkit for building Java applications,etc. You can correlate it to Rational Rose (or any other modeling tool) used to create UML diagrams which consits of actors and the necessary association and aggregations. In case of Ptolemy, the models are stored in a format called MoML (Modelling Markup Language) which is created by using Vergil, Ptolemy's editor. The MoML is a modelling markup schema in XML. It is the primary mechanism for constructing models using Ptolemy framework.

In Ptolemy,it is easy to create simulation model by dragging and dropping the available actors. It provides set of actors libraries where each actor is a pre-built java class written in the ptolemy framework. You can image an actor as a web server, another actor as a DB server and interconnect them.But there will be lot of input and output parameters which needs to be defined by the user to create a successful model and it is stored as an xml file internally.

Now, it becomes too complex to drag and drop all the required components to simulate the IT system infrastrucutre. PEA has come up with composite actors which are built by using a set of available actors provided by Ptolemy. So that, we can input the required details of the server infrastructure (like, how many servers, tiers, arrival rate and service demand of various service centers,etc) through a web UI and a xml schema can be created from their tool. This will be help the user not to spend time in learning how to use Ptolemy and how to manualy feed the input to each of the actors in the model using Vergil editor. The xml file generated from the PEA tool can be fed into the Ptolemy editor Vergil to generate the text output of the simulation model. The output will be the response time predicted on the simulated server infrastructure.

In nutshell, this PEA tool takes as input deployment configuration, hardware details, workload details, etc, and generates an XML file. This XML file when run using Ptolemy (Open source, Free for use, Berkeley Lab’s Simulation Framework) can be used for simulating the performance of an IT environment. Advantage I see is the it is not required to know about simulation or its in-build actors/features to use it.

Also checkout other free tools available in PEA site. Though those analytical tools are really valuable ones, the real challenge lies in understanding how to use those tool for our system under test practically and interpret the results. Ofcourse, thats their business and formally we might need to approach them and get trained in them to use them for projects effectively.

Happy Learning!!!

2 comments:

Unknown said...

Thanx for this. I never knew this framework. I think it'll be interesting. I have a working experience of creating a base simulator based using desmoJ opensource framework. Itz pretty simple and takes service demand, think time and concurrent users as the input. I'll validate these 2 frameworks for accuracy. Earlier we were able to acheive upto 90% accuracy using desmoJ. If you are not aware of it. Have a look at it

Christopher Brooks said...

Interesting.

I'm the Ptolemy Project Software Manager, someone asked me how to use Ptolemy in the first PEA Tool. Below are my notes:

Looking at the PEA site, http://www.pea-online.com/tools/cg/dd/codegen.html generates two MoML files that simulate a multi-tier simulation environment.

http://www.pea-online.com/resources.htm describes the tool that uses Ptolemy:

"This tool provides a user interface to input hardware configuration-cum-topology details, workload details and service demands to generate an output file that can be directly run with Ptolemy's Simulation Framework."

"The output of such a simulation will be predicted values of response time, throughput for each workload and system resource utilization at each resource / server."

If you want to run these MoML files, here's what you do:

1) Download and Install Ptolemy II 7.0.1 from http://www.pea-online.com/resources.htm

2) Go to http://www.pea-online.com/tools/cg/dd/codegen.html
and press "Generate XML For Simulation"

3) Grab the contents of the text widget. I did Control-A and then right click and select Copy.

4) Open your favorite text editor, paste the contents into a file
called model1.xml. It is possible to do this in Ptolemy, but easier to describe how to do it in your favorite editor. I used Emacs. Wordpad is probably preferred over Notepad.

5) Start Ptolemy II 7.0.1, do File | Open and find model1.xml

6) To layout the graph, type Control-t, or select Graph | Automatic Layout

7) Run the model

8) The LineWriter actor writes the output to c:/LocOut1.xml
That file looked like:
<item gid="Location0" tid="Tier1" cid="Cluster1" rid="Processor"
WORKLOAD="Transaction 1" RT=0.0 TPS=1.0099184172711 UTIL=0.0 />
<item gid="Location0" tid="Tier1" cid="Cluster1" rid="DISK"
WORKLOAD="Transaction 1" RT=0.0 TPS=1.0099184172711 UTIL=0.0 />
<item gid="Location0" tid="Tier2" cid="Cluster1" rid="Processor"
WORKLOAD="Transaction 1" RT=0.0 TPS=1.0099184172711 UTIL=0.0 />
<item gid="Location0" tid="Tier2" cid="Cluster1" rid="DISK"
WORKLOAD="Transaction 1" RT=0.0 TPS=1.0099184172711 UTIL=0.0 />
<item gid="Location0" tid="Tier3" cid="Cluster1" rid="Processor"
WORKLOAD="Transaction 1" RT=0.0 TPS=1.0099184172711 UTIL=0.0 />
<item gid="Location0" tid="Tier3" cid="Cluster1" rid="DISK"
WORKLOAD="Transaction 1" RT=0.0 TPS=1.0099184172711 UTIL=0.0 />

I'm not sure how they got the nice output at
http://www.pea-online.com/ptolemy/rmetric.swf


Note that the performance measurement tool generates multiple model
files, one for each location.

_Christopher