wiki:Tutorials/a0Basic/Tutorial3

Version 6 (modified by pkamat, 19 years ago) ( diff )

Added sample Perl script to retrieve data from idb1

Orbit > Tutorial > Analyzing Measurement Results

Analyzing Results

It is important to understand how measurements were collected and organized to be able to interpret them. The ORBIT Measurement Framework provides tools to insert points to tap available information and to effectively collect that information in a timely manner. And after the experiment is done, the user would get access to the exprimenet database generated. In general, the results of the experiment is in one MySQL database. Different participating nodes populate different tables of this database. Usually, user would like to post-process or visualize those raw measurements for further analysis.

A number of different tools are available to interpret experimental results. The choice of tools depends upon availability and the nature of the measurements. Microsoft Excel can be used to analyze an experiment as shown below.

The user could import MySQL database to Microsoft Excel and use chart and other tools to analyze the measurements.

Matlab is another tool can be used. Sample Matlab code is shown below

function nsf(dbServer, dbUser, dbPW, database);
% Part where we retrieve data from the database;
mysql('open',dbServer, dbUser, dbPW);
mysql('use', database);
output = struct('time',[],'thr_all',[],'node',[]);
[output.time, output.thr_all, output.node] = mysql('select timestamp, throughput, node_id from group2');
[thru1_4, time1_4, thru3_1, time3_1] = sort_mysql(output);
% Finally, the plotting part
subplot(2,1,1);
plot(time1_4, thru1_4, '-*');
title('Throughput On Obstructed Link');
xlabel('Time (sec)'); ylabel('Throuhput (bps)'); grid on;
subplot(2,1,2);
plot(time3_1, thru3_1, '-*');
title('Throughput On Monitor Node'); xlabel('Time (sec)');
ylabel('Throuhput (bps)'); grid on;

And the resulting graph is show below:

Sample Perl script that gets data from the database:

#! /usr/bin/perl
#
# Script: getdata.pl
# A simple script that gets all the rows from a single table in the database.
#
# ./getdata.pl <db_name> <table_name> <outputfile>
#
# Example: ./getdata.pl zmac1_2005_04_28_00_46_10  sender_otg_senderport  out.txt
#
# To use this script replace the XXXX in DBUSER and DBPASS
# with correct username and password for idb1.
#
#
use DBI();

$DBHOST = "idb1";
$DBNAME = $ARGV[0];
$DBUSER = "XXXX";
$DBPASS = "XXXX";
$QUERY = "select * from $ARGV[1]";
$OUTFILE = $ARGV[2];

$dsn = "DBI:mysql:database=$DBNAME;host=$DBHOST";

#Connect to the DB
$dbh = DBI->connect($dsn, $DBUSER, $DBPASS, {'RaiseError' => 1});

# Prepare and execute query
my $qry = $dbh->prepare($QUERY);
$qry->execute();

open(out, ">$OUTFILE");

#Print the column names
print out "@{$qry->{'NAME'}} \n";

#Print the data
while (my @ref = $qry->fetchrow()) {
        print out "@ref \n";
}

$qry->finish();
# Disconnect from the database.
$dbh->disconnect();

Attachments (5)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.