Add simulation scripts

This commit is contained in:
Loic Guegan 2019-04-24 16:49:40 +02:00
parent 39507e0bb5
commit 1da73fb609
18 changed files with 4043 additions and 2 deletions

View file

@ -0,0 +1 @@
loic@lguegan.7447:1555309869

1947
ns3-simulations/logs/log.txt Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,6 @@
node,energy
0,1.00026
1,2.00021
2,2.00021
3,2
4,1
1 node energy
2 0 1.00026
3 1 2.00021
4 2 2.00021
5 3 2
6 4 1

View file

@ -0,0 +1 @@
node,energy
1 node energy

View file

@ -0,0 +1,5 @@
0,1.00026
1,2.00021
2,2.00021
3,2
4,1
1 0 1.00026
2 1 2.00021
3 2 2.00021
4 3 2
5 4 1

View file

@ -0,0 +1 @@
node,energy
1 node energy

View file

@ -0,0 +1 @@
node,energy
1 node energy

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
#TITLE: mer. avril 24 16:37:06 CEST 2019 ns-3 simulation

View file

@ -61,6 +61,6 @@ void setupCloudEnergy(CloudInfos cloudInfos){
completeNetdeviceEnergy.Install(cloudNodes);
ns3::ConsumptionLogger conso;
conso.NodeConso(ns3::Seconds (1), ns3::Seconds(10), cloudNodes);
conso.NodeConso(ns3::Seconds (ECOFEN_LOG_EVERY), ns3::Seconds(ECOFEN_LOG_UNTIL), cloudNodes);
}

View file

@ -31,6 +31,10 @@
#include <utility> // To use std::pair
#include <iomanip> // To use std::setw
// ECOFEN
#define ECOFEN_LOG_UNTIL 1
#define ECOFEN_LOG_EVERY 0.1
// WIFI Energy Values
#define BASICENERGYSOURCEINITIALENERGYJ 1000
#define BASICENERGYSUPPLYVOLTAGEV 3.3
@ -41,7 +45,7 @@
// Cloud Energy Values
#define ONCONSO 0
#define OFFCONSO 0
#define IDLECONSO 0
#define IDLECONSO 1
#define RECVBYTEENERGY 10
#define SENTBYTEENERGY 10
#define RECVPKTENERGY 10

59
ns3-simulations/parseEnergy.awk Executable file
View file

@ -0,0 +1,59 @@
#!/bin/awk -f
BEGIN {
durationECOFEN=0
}
# For ECOFEN energy model
/Node [0-9]+ Conso/ {
if (!($4 in energyECOFEN)){
energyECOFEN[$4]=$6
countECOFEN[$4]=1
}
else {
energyECOFEN[$4]=$6+energyECOFEN[$4]
countECOFEN[$4]++
}
durationECOFEN=$2
}
# For WIFI ns-3 energy model
/Node [0-9]+ consumes/ {
gsub("J","",$4) # Remove trailling Joule symbol
if (!($2 in energy)){
energyWIFI[$2]=$4
}
else {
energyWIFI[$2]=$4+energyWIFI[$2]
}
}
END {
# Extract ECOFEN energy
for(key in energyECOFEN){
if (countECOFEN[key]>0){ # Otherwise: 0 division
overallEnergy[key]=energyECOFEN[key]/countECOFEN[key]*durationECOFEN
}
else {
overallEnergy[key]=0
}
}
# Extract WIFI energy
for(key in energyWIFI){
if(key in overallEnergy){ # Combine WIFI+ECOFEN
overallEnergy[key]+=energyWIFI[key] # Add wifi to ECOFEN
}
else {
overallEnergy[key]=energyWIFI[key] # Only add WIFI since there is no ECOFEN value
}
}
# CSV output
print("node,energy")
for(key in overallEnergy){
print(key "," overallEnergy[key])
}
}

View file

@ -0,0 +1,54 @@
* Run simulations
** Single Run
#+BEGIN_SRC bash :noweb yes :results output
<<singleRun>>
run
#+END_SRC
#+RESULTS:
: sensorsSendInterval:1 sensorsPktSize:10 sensorsNumber:2 nbHop:2 linksBandwidth:10 linksLatency:10
#+NAME: singleRun
#+BEGIN_SRC bash :noweb yes
simulator="ns3-simulator/simulator"
parseEnergyScript="./parseEnergy.awk"
logFolder="logs/"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NS3_PATH}/build/lib
run () {
[ -z ${sensorsSendInterval+x} ] && sensorsSendInterval=1
[ -z ${sensorsPktSize+x} ] && sensorsPktSize=10
[ -z ${sensorsNumber+x} ] && sensorsNumber=2
[ -z ${nbHop+x} ] && nbHop=2
[ -z ${linksBandwidth+x} ] && linksBandwidth=10
[ -z ${linksLatency+x} ] && linksLatency=10
logFile="${logFolder}/ns-3_${sensorsSendInterval}SSI_${sensorsPktSize}SPS_${sensorsNumber}SN_${nbHop}NH_${linksBandwidth}LB_${linksLatency}LL.org"
simCMD="$simulator --sensorsSendInterval=${sensorsSendInterval} --sensorsPktSize=${sensorsPktSize} --sensorsNumber=${sensorsNumber} --nbHop=${nbHop} --linksBandwidth=${linksBandwidth} --linksLatency=${linksLatency} 2>&1"
log=$(bash -c "$simCMD")
echo -e "#+TITLE: $(date) ns-3 simulation\n" > $logFile
echo "* Full Command" >> $logFile
echo "$simCMD" >> $logFile
echo "* Output" >> $logFile
echo "$log" >> $logFile
echo "* Energy CSV" >> $logFile
echo "$log" | $parseEnergyScript >> $logFile
echo "* Metrics" >> $logFile
echo " sensorsSendInterval:${sensorsSendInterval} sensorsPktSize:${sensorsPktSize} sensorsNumber:${sensorsNumber} nbHop:${nbHop} linksBandwidth:${linksBandwidth} linksLatency:${linksLatency}" >> $logFile
}
#+END_SRC
#+RESULTS:
: Processing logs/logs/log.txt
: Processing logs/logs/log.txt.csv-energy.csv
: Processing logs/logs/log.txt.csv
: Processing logs/logs/log.txt-energy.csv