2019-04-24 16:49:40 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Run simulations
|
2019-04-25 15:51:05 +02:00
|
|
|
** Experiments
|
|
|
|
*** Number of sensors
|
|
|
|
#+BEGIN_SRC bash :noweb yes :results output
|
|
|
|
<<singleRun>>
|
|
|
|
for sensorsNumber in $(seq 0 20)
|
|
|
|
do
|
|
|
|
run
|
|
|
|
done
|
|
|
|
|
|
|
|
#+END_SRC
|
2019-04-24 16:49:40 +02:00
|
|
|
|
2019-04-25 15:51:05 +02:00
|
|
|
#+RESULTS:
|
2019-04-24 16:49:40 +02:00
|
|
|
|
|
|
|
** Single Run
|
|
|
|
#+NAME: singleRun
|
|
|
|
#+BEGIN_SRC bash :noweb yes
|
|
|
|
simulator="ns3-simulator/simulator"
|
|
|
|
parseEnergyScript="./parseEnergy.awk"
|
2019-04-25 15:51:05 +02:00
|
|
|
parseDelayScript="./parseDelay.awk"
|
2019-04-24 16:49:40 +02:00
|
|
|
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")
|
|
|
|
|
2019-04-25 09:00:11 +02:00
|
|
|
# Compute some metrics
|
|
|
|
energyLog=$(echo "$log" | $parseEnergyScript)
|
2019-04-25 15:51:05 +02:00
|
|
|
avgDelay=$(echo "$log" | $parseDelayScript)
|
2019-04-25 09:00:11 +02:00
|
|
|
totalEnergy=$(echo "$energyLog"| awk 'BEGIN{power=0;FS=","}NR!=1{power+=$2}END{print(power)}')
|
|
|
|
nbPacketCloud=$(echo "$log"|grep -c "CloudSwitch receive")
|
2019-04-25 15:51:05 +02:00
|
|
|
nbNodes=$(echo "$log"|awk '/Simulation used/{print($3)}')
|
|
|
|
ns3Version=$(echo "$log"|awk '/NS-3 Version/{print($3)}')
|
2019-04-24 16:49:40 +02:00
|
|
|
|
2019-04-25 09:00:11 +02:00
|
|
|
# Save logs
|
2019-04-25 15:51:05 +02:00
|
|
|
echo -e "#+TITLE: $(date) ns-3 (version ${ns3Version}) simulation\n" > $logFile
|
|
|
|
echo "* Environment Variables" >> $logFile
|
|
|
|
env >> $logFile
|
2019-04-24 16:49:40 +02:00
|
|
|
echo "* Full Command" >> $logFile
|
|
|
|
echo "$simCMD" >> $logFile
|
|
|
|
echo "* Output" >> $logFile
|
|
|
|
echo "$log" >> $logFile
|
2019-04-25 09:00:11 +02:00
|
|
|
echo "* Energy CSV (negative nodeId = WIFI, 0 = AP (Wireless+Wired), positive nodeId = ECOFEN" >> $logFile
|
|
|
|
echo "$energyLog" >> $logFile
|
2019-04-24 16:49:40 +02:00
|
|
|
echo "* Metrics" >> $logFile
|
2019-04-25 15:51:05 +02:00
|
|
|
echo "-METRICSLINE- sensorsSendInterval:${sensorsSendInterval} sensorsPktSize:${sensorsPktSize} sensorsNumber:${sensorsNumber} nbHop:${nbHop} linksBandwidth:${linksBandwidth} linksLatency:${linksLatency} totalEnergy:$totalEnergy nbPacketCloud:$nbPacketCloud nbNodes:$nbNodes avgDelay:${avgDelay} ns3Version:${ns3Version}" >> $logFile
|
2019-04-24 16:49:40 +02:00
|
|
|
|
|
|
|
}
|
|
|
|
#+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
|
|
|
|
|
2019-04-25 15:51:05 +02:00
|
|
|
* Logs Analysis
|
|
|
|
** Log -> CSV
|
|
|
|
#+NAME: logToCSV
|
|
|
|
#+BEGIN_SRC bash :results none
|
|
|
|
csvOutput="logs/data.csv"
|
|
|
|
|
|
|
|
# First save csv header line
|
|
|
|
aLog=$(find logs/ -type f -name "*.org"|head -n 1)
|
|
|
|
metrics=$(cat $aLog|grep "\-METRICSLINE\-"|sed "s/-METRICSLINE-//g")
|
|
|
|
echo $metrics | awk '{for(i=1;i<=NF;i++){split($i,elem,":");printf(elem[1]);if(i<NF)printf(",");else{print("")}}}' > $csvOutput
|
|
|
|
|
|
|
|
# Second save all values
|
|
|
|
for logFile in $(find logs/ -type f -name "*.org")
|
|
|
|
do
|
|
|
|
metrics=$(cat $logFile|grep "\-METRICSLINE\-"|sed "s/-METRICSLINE-//g")
|
|
|
|
echo $metrics | awk '{for(i=1;i<=NF;i++){split($i,elem,":");printf(elem[2]);if(i<NF)printf(",");else{print("")}}}' >> $csvOutput
|
|
|
|
done
|
|
|
|
#+END_SRC
|
|
|
|
** R Scripts
|
|
|
|
*** Load Data
|
|
|
|
#+BEGIN_SRC R
|
|
|
|
print("lkj")
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|