Profiling scripts updated and documentation fixed
authorJaume Nin
Wed, 14 Nov 2012 14:12:48 +0100
changeset 9381 27d74f57bbfe
parent 9380 890e3ccc4bc5
child 9382 a058179c3d9d
Profiling scripts updated and documentation fixed
src/lte/doc/source/lte-profiling.rst
src/lte/test/epc-test-run-gnuplot
src/lte/test/epc-test-run-time.pl
src/lte/test/lte-test-run-gnuplot
src/lte/test/lte-test-run-time.pl
--- a/src/lte/doc/source/lte-profiling.rst	Fri Nov 09 12:23:27 2012 +0100
+++ b/src/lte/doc/source/lte-profiling.rst	Wed Nov 14 14:12:48 2012 +0100
@@ -65,15 +65,23 @@
 Perl script
 ~~~~~~~~~~~
 
-To simplify the process of running the profiling script for a wide range of values and collecting its timing data, a simple Perl script to automate the complete process is provided. It is placed in ``src/lte/test/lte-test-run-time.pl`` for *lena-profiling* and in ``src/lte/epc-test-run-time.pl`` for *lena-simple-epc*. It simply runs a batch of simulations with a range of parameters and stores the timing results in a CSV file called *times.csv* and *epcTimes.csv* respectively. The range of values each parameter sweeps can be modified editing the corresponding script.
+To simplify the process of running the profiling script for a wide range of values and collecting its timing data, a simple Perl script to automate the complete process is provided. It is placed in ``src/lte/test/lte-test-run-time.pl`` for *lena-profiling* and in ``src/lte/epc-test-run-time.pl`` for *lena-simple-epc*. It simply runs a batch of simulations with a range of parameters and stores the timing results in a CSV file called *lteTimes.csv* and *epcTimes.csv* respectively. The range of values each parameter sweeps can be modified editing the corresponding script.
 
 Requirements
 ------------
 
 The following Perl modules are required to use the provided script, all of them available from CPAN:
-* IO::CaptureOutput 
-* Statistics::Descriptive
-* Cwd
+ * IO::CaptureOutput 
+ * Statistics::Descriptive
+
+For installing the modules, simply use the follwing command:
+
+``perl -MCPAN -e 'install moduleName'``
+
+Plotting results
+----------------
+
+To plot the results obtained from running the Perl scripts, two gnuplot scripts are provided, in ``src/lte/test/lte-test-run-plot`` and ``src/lte/test/epc-test-run-plot``. Most of the plots available in this documentation can be reproduced with those, typing the commands ``gnuplot < src/lte/test/lte-test-run-plot``  and  ``gnuplot < src/lte/test/epc-test-run-plot``.
 
 Reference software and equipment
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lte/test/epc-test-run-gnuplot	Wed Nov 14 14:12:48 2012 +0100
@@ -0,0 +1,70 @@
+set style line 11 lc rgb "black"  lt 3 lw 2 pt 1  ps 2
+set style line 12 lc rgb "red"    lt 3 lw 2 pt 2  ps 2
+set style line 13 lc rgb "blue"   lt 3 lw 2 pt 1  ps 2
+set style line 14 lc rgb "orange" lt 3 lw 2 pt 1  ps 2
+set style line 15 lc rgb "green"  lt 3 lw 2 pt 1  ps 2
+set style line 16 lc rgb "yellow" lt 3 lw 2 pt 1  ps 2
+
+
+set style line 21 lc rgb "black"   lt 1 lw 2 pt  1  ps 1
+set style line 22 lc rgb "red"     lt 1 lw 2 pt  2  ps 1
+set style line 23 lc rgb "blue"    lt 1 lw 2 pt  3  ps 1
+set style line 24 lc rgb "orange"  lt 1 lw 1 pt  4  ps 1
+set style line 25 lc rgb "green"   lt 1 lw 1 pt  5  ps 1
+set style line 26 lc rgb "purple"  lt 1 lw 1 pt  6  ps 1
+set style line 27 lc rgb "yellow"  lt 1 lw 1 pt  7  ps 1
+set style line 28 lc rgb "pink"    lt 1 lw 1 pt  8  ps 1
+set style line 29 lc rgb "magenta" lt 1 lw 1 pt  9  ps 1
+
+set style line 31 lc rgb "black"   lt 2 lw 2 pt  1  ps 1
+set style line 32 lc rgb "red"     lt 2 lw 2 pt  2  ps 1
+set style line 33 lc rgb "blue"    lt 2 lw 2 pt  3  ps 1
+set style line 34 lc rgb "orange"  lt 2 lw 1 pt  4  ps 1
+set style line 35 lc rgb "green"   lt 2 lw 1 pt  5  ps 1
+set style line 36 lc rgb "purple"  lt 2 lw 1 pt  6  ps 1
+set style line 37 lc rgb "yellow"  lt 2 lw 1 pt  7  ps 1
+set style line 38 lc rgb "pink"    lt 2 lw 1 pt  8  ps 1
+set style line 39 lc rgb "magenta" lt 2 lw 1 pt  9  ps 1
+
+set style line  50 lc rgb "black"  lt 1 lw 2 pt 0 ps 0
+
+
+
+set term postscript eps enhanced
+set output 'epcRunningTime.eps' 
+set grid
+set xrange [*:23]
+set yrange [*:*]
+set ylabel "Running time [s]"
+set xlabel 'Number  eNodeB'
+set title 'Simulation time = 5 s - 1 UE per eNodeB'
+set key on top left
+plot \
+"../../../epcTimes.csv" using 2:($1==5 ? $3 : 1/0) with linespoints ls 21 title "" 
+
+set term postscript eps enhanced
+set output 'epcSimulationTime.eps' 
+set grid
+set xrange [*:11]
+set yrange [*:*]
+set ylabel "Running time [s]"
+set xlabel 'Simulation time [s]'
+set title '1 UE per eNodeB'
+set key on top left
+plot \
+"../../../epcTimes.csv" using 1:2 with linespoints ls 21 title "8 eNodeBs" 
+
+
+set term postscript eps enhanced
+set output 'epcEutranRunningTime.eps' 
+set grid
+set xrange [*:23]
+set yrange [*:*]
+set ylabel "Running time [s]"
+set xlabel 'Number  eNodeB'
+set title 'Simulation time = 5 s - 1 UE per eNodeB'
+set key on top left
+plot \
+"../../../epcTimes.csv" using 2:3 with linespoints ls 21 title "EUTRAN + EPC", \
+"../../../lteTimes.csv" using 3:($3==$4 ? $5 : 1/0) with linespoints ls 22 title "EUTRAN"
+
--- a/src/lte/test/epc-test-run-time.pl	Fri Nov 09 12:23:27 2012 +0100
+++ b/src/lte/test/epc-test-run-time.pl	Wed Nov 14 14:12:48 2012 +0100
@@ -10,7 +10,14 @@
 print FILE "#sTime\tnodes\trTime\trTDev\n";
 
 my @nodes = ( 1,2,3,4,5,6,7, 8, 12, 14);
-my @simTime = ( 1, 2, 5, 7, 10);
+my @simTime = (5, 10);
+
+
+# Configure and complite first the program to avoid counting compilation time as running time
+my $launch = "CXXFLAGS=\"-O3 -w\" ./waf -d optimized configure --enable-static --enable-examples --enable-modules=lte"
+my $out, my $err;
+capture { system($launch ) } \$out, \$err;
+$launch = "./waf --run \'lena-profiling --simTime=0.1 --nUe=1 --nEnb=1 --nFloors=0\'";
 
 foreach my $time (@simTime)
 {
@@ -19,8 +26,7 @@
             my $timeStats = Statistics::Descriptive::Full->new();
             for ( my $iteration = 0 ; $iteration < $nIterations ; $iteration++ )
             {
-               my $launch = "time ./waf --run \'lena-simple-epc --simTime=$time --numberOfNodes=$node'";
-               my $out, my $err;
+               $launch = "time ./waf --run \'lena-simple-epc --simTime=$time --numberOfNodes=$node'";
                print "$launch\n";
                capture { system($launch ) } \$out, \$err;
                $err =~ /real(.+)m(.+)s/;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lte/test/lte-test-run-gnuplot	Wed Nov 14 14:12:48 2012 +0100
@@ -0,0 +1,115 @@
+set style line 11 lc rgb "black"  lt 3 lw 2 pt 1  ps 2
+set style line 12 lc rgb "red"    lt 3 lw 2 pt 2  ps 2
+set style line 13 lc rgb "blue"   lt 3 lw 2 pt 1  ps 2
+set style line 14 lc rgb "orange" lt 3 lw 2 pt 1  ps 2
+set style line 15 lc rgb "green"  lt 3 lw 2 pt 1  ps 2
+set style line 16 lc rgb "yellow" lt 3 lw 2 pt 1  ps 2
+
+
+set style line 21 lc rgb "black"   lt 1 lw 2 pt  1  ps 1
+set style line 22 lc rgb "red"     lt 1 lw 2 pt  2  ps 1
+set style line 23 lc rgb "blue"    lt 1 lw 2 pt  3  ps 1
+set style line 24 lc rgb "orange"  lt 1 lw 1 pt  4  ps 1
+set style line 25 lc rgb "green"   lt 1 lw 1 pt  5  ps 1
+set style line 26 lc rgb "purple"  lt 1 lw 1 pt  6  ps 1
+set style line 27 lc rgb "yellow"  lt 1 lw 1 pt  7  ps 1
+set style line 28 lc rgb "pink"    lt 1 lw 1 pt  8  ps 1
+set style line 29 lc rgb "magenta" lt 1 lw 1 pt  9  ps 1
+
+set style line 31 lc rgb "black"   lt 2 lw 2 pt  1  ps 1
+set style line 32 lc rgb "red"     lt 2 lw 2 pt  2  ps 1
+set style line 33 lc rgb "blue"    lt 2 lw 2 pt  3  ps 1
+set style line 34 lc rgb "orange"  lt 2 lw 1 pt  4  ps 1
+set style line 35 lc rgb "green"   lt 2 lw 1 pt  5  ps 1
+set style line 36 lc rgb "purple"  lt 2 lw 1 pt  6  ps 1
+set style line 37 lc rgb "yellow"  lt 2 lw 1 pt  7  ps 1
+set style line 38 lc rgb "pink"    lt 2 lw 1 pt  8  ps 1
+set style line 39 lc rgb "magenta" lt 2 lw 1 pt  9  ps 1
+
+set style line  50 lc rgb "black"  lt 1 lw 2 pt 0 ps 0
+
+
+
+set term postscript eps enhanced
+set output 'runningTime10s.eps' 
+set grid
+set xrange [0:31]
+set yrange [*:*]
+set ylabel "Running time [s]"
+set xlabel 'Number of UEs per eNodeB'
+set title 'Simulation time = 10 s - Friis Model'
+set key on top left
+plot \
+"../../../lteTimes.csv" using 4:($1==10 && $3==1  && $2==0 ? $5 : 1/0) with linespoints ls 21 title "1 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==2  && $2==0 ? $5 : 1/0) with linespoints ls 22 title "2 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==4  && $2==0 ? $5 : 1/0) with linespoints ls 23 title "4 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==6  && $2==0 ? $5 : 1/0) with linespoints ls 24 title "6 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==8  && $2==0 ? $5 : 1/0) with linespoints ls 25 title "8 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==12 && $2==0 ? $5 : 1/0) with linespoints ls 26 title "12 eNodeB",\
+"../../../lteTimes.csv" using 4:($1==10 && $3==14 && $2==0 ? $5 : 1/0) with linespoints ls 27 title "14 eNodeB",\
+"../../../lteTimes.csv" using 4:($1==10 && $3==18 && $2==0 ? $5 : 1/0) with linespoints ls 28 title "18 eNodeB",\
+"../../../lteTimes.csv" using 4:($1==10 && $3==22 && $2==0 ? $5 : 1/0) with linespoints ls 29 title "22 eNodeB"
+
+set term postscript eps enhanced
+set output 'runningTime5s.eps' 
+set grid
+set xrange [*:31]
+set yrange [*:*]
+set ylabel "Running time [s]"
+set xlabel 'Number of UEs per eNodeB'
+set title 'Simulation time = 5 s - Friis Model'
+set key on top left
+plot \
+"../../../lteTimes.csv" using 4:($1==5 && $3==1  && $2==0 ? $5 : 1/0) with linespoints ls 21 title "1 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==5 && $3==2  && $2==0 ? $5 : 1/0) with linespoints ls 22 title "2 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==5 && $3==4  && $2==0 ? $5 : 1/0) with linespoints ls 23 title "4 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==5 && $3==6  && $2==0 ? $5 : 1/0) with linespoints ls 24 title "6 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==5 && $3==8  && $2==0 ? $5 : 1/0) with linespoints ls 25 title "8 eNodeB", \
+"../../../lteTimes.csv" using 4:($1==5 && $3==12 && $2==0 ? $5 : 1/0) with linespoints ls 26 title "12 eNodeB",\
+"../../../lteTimes.csv" using 4:($1==5 && $3==14 && $2==0 ? $5 : 1/0) with linespoints ls 27 title "14 eNodeB",\
+"../../../lteTimes.csv" using 4:($1==5 && $3==18 && $2==0 ? $5 : 1/0) with linespoints ls 28 title "18 eNodeB",\
+"../../../lteTimes.csv" using 4:($1==5 && $3==22 && $2==0 ? $5 : 1/0) with linespoints ls 29 title "22 eNodeB"
+
+set term postscript eps enhanced
+set output 'propagationModel.eps' 
+set grid
+set xrange [0:31]
+set yrange [*:*]
+set ylabel "Running time [s]"
+set xlabel 'Number of UEs per eNodeB'
+set title 'Simulation time = 10 s'
+set key on top left
+plot \
+"../../../lteTimes.csv" using 4:($1==10 && $3==4  && $2==0 ? $5 : 1/0) with linespoints ls 21 title "4 eNodeB - Friis", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==4  && $2==1 ? $5 : 1/0) with linespoints ls 31 title "4 eNodeB - Building", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==8  && $2==0 ? $5 : 1/0) with linespoints ls 22 title "8 eNodeB - Friis", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==8  && $2==1 ? $5 : 1/0) with linespoints ls 32 title "8 eNodeB - Building", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==12 && $2==0 ? $5 : 1/0) with linespoints ls 23 title "12 eNodeB - Friis", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==12 && $2==1 ? $5 : 1/0) with linespoints ls 33 title "12 eNodeB - Building", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==14 && $2==0 ? $5 : 1/0) with linespoints ls 24 title "14 eNodeB - Friis", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==14 && $2==1 ? $5 : 1/0) with linespoints ls 34 title "14 eNodeB - Building", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==18 && $2==0 ? $5 : 1/0) with linespoints ls 25 title "18 eNodeB - Friis", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==18 && $2==1 ? $5 : 1/0) with linespoints ls 35 title "18 eNodeB - Building", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==22 && $2==0 ? $5 : 1/0) with linespoints ls 26 title "22 eNodeB - Friis", \
+"../../../lteTimes.csv" using 4:($1==10 && $3==22 && $2==1 ? $5 : 1/0) with linespoints ls 36 title "22 eNodeB - Building"
+
+set term postscript eps enhanced
+set output 'simulationTime.eps' 
+set grid
+set xrange [0:16]
+set yrange [*:*]
+set ylabel "Running time [s]"
+set xlabel 'Simulation time'
+set title 'Friis propagation model 15 UE per eNodeB'
+set key on top left
+plot \
+"../../../lteTimes.csv" using 1:($4==15 && $3==1  && $2==0 ? $5 : 1/0) with linespoints ls 21 title "1 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==2  && $2==0 ? $5 : 1/0) with linespoints ls 22 title "2 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==4  && $2==0 ? $5 : 1/0) with linespoints ls 23 title "4 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==6  && $2==0 ? $5 : 1/0) with linespoints ls 24 title "6 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==8  && $2==0 ? $5 : 1/0) with linespoints ls 25 title "8 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==12  && $2==0 ? $5 : 1/0) with linespoints ls 26 title "12 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==14  && $2==0 ? $5 : 1/0) with linespoints ls 27 title "14 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==18  && $2==0 ? $5 : 1/0) with linespoints ls 28 title "18 eNodeB", \
+"../../../lteTimes.csv" using 1:($4==15 && $3==22  && $2==0 ? $5 : 1/0) with linespoints ls 29 title "22 eNodeB"
+
--- a/src/lte/test/lte-test-run-time.pl	Fri Nov 09 12:23:27 2012 +0100
+++ b/src/lte/test/lte-test-run-time.pl	Wed Nov 14 14:12:48 2012 +0100
@@ -2,20 +2,23 @@
 use strict;
 use IO::CaptureOutput qw(capture qxx qxy);
 use Statistics::Descriptive;
-use Cwd;
 
 my $nIterations = 1;
 
-open( FILE, '>times.csv' );
+open( FILE, '>lteTimes.csv' );
 print FILE "#sTime\tnFloors\tnEnb\tnUe\trTime\trTDev\n";
 
-my @nUe = ( 1, 5, 10, 15, 20, 25, 30 );
-my @nEnb = ( 1, 2, 4, 6, 8, 12, 14, 18, 22 );
-my @nFloors = ( 0, 1 );
-my @simTime = ( 1, 5);
+my @nUe = (1, 5, 10, 15, 20, 25, 30);
+my @nEnb = (1, 2, 4, 6, 8, 12, 14, 18, 22);
+my @nFloors = (0, 1);
+my @simTime = (5, 10);
 
-my $traceDirectory = ".";
-my $traceDirectory = getcwd() . "/"; 
+# Configure and complite first the program to avoid counting compilation time as running time
+my $launch = "CXXFLAGS=\"-O3 -w\" ./waf -d optimized configure --enable-static --enable-examples --enable-modules=lte"
+my $out, my $err;
+capture { system($launch ) } \$out, \$err;
+$launch = "./waf --run \'lena-profiling --simTime=0.1 --nUe=1 --nEnb=1 --nFloors=0\'";
+capture { system($launch ) } \$out, \$err;
 
 foreach my $time (@simTime)
 {
@@ -28,8 +31,7 @@
             my $timeStats = Statistics::Descriptive::Full->new();
             for ( my $iteration = 0 ; $iteration < $nIterations ; $iteration++ )
             {
-               my $launch = "time ./waf --run \'lena-profiling --simTime=$time --nUe=$ue --nEnb=$enb --nFloors=$floor --traceDirectory=$traceDirectory\'";
-               my $out, my $err;
+               $launch = "time ./waf --run \'lena-profiling --simTime=$time --nUe=$ue --nEnb=$enb --nFloors=$floor\'";
                print "$launch\n";
                capture { system($launch ) } \$out, \$err;
                $err =~ /real(.+)m(.+)s/;