diff options
Diffstat (limited to 'ns3-simulations/g5k-worker.sh')
| -rwxr-xr-x | ns3-simulations/g5k-worker.sh | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/ns3-simulations/g5k-worker.sh b/ns3-simulations/g5k-worker.sh new file mode 100755 index 0000000..00a1aff --- /dev/null +++ b/ns3-simulations/g5k-worker.sh @@ -0,0 +1,68 @@ +#!/bin/bash +g5kLogFolder="/tmp/logs/" +mkdir -p $g5kLogFolder # Create log folder just in case +rm -rf $g5kLogFolder/* # Clean previous logs just in case + +hostname=$(hostname) + +# Run simulations with sourced arguments :D +simArgsLoc=~/args/ # Don't change this path without changing it in root scripts + +argsId=0 +argsFile="$simArgsLoc/${hostname}-args-${argsId}.sh" # Arguments generated by Root Node +for argsFile in $(find $simArgsLoc -type f -name "$hostname*") +do + simulator="simulator/simulator" + parseEnergyScript="./parseEnergy.awk" + parseDelayScript="./parseDelay.awk" + logFolder="logs/" + export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NS3_PATH}/build/lib + + # Default Parameters + sensorsSendInterval=10 + sensorsPktSize=5 # 1 byte temperature (-128 à +128 °C) and 4Byte sensorsId + sensorsNumber=10 + nbHop=10 # Cf paper AC/Yunbo + linksBandwidth=10 + linksLatency=2 + simKey="NOKEY" + + run () { + # If another function want to handle simulation (tipically used on g5k) + type -t handleSim > /dev/null && { handleSim; return; } + + logFile="${logFolder}/${simKey}_${sensorsSendInterval}SSI_${sensorsPktSize}SPS_${sensorsNumber}SN_${nbHop}NH_${linksBandwidth}LB_${linksLatency}LL.org" + [ -f "$logFile" ] && return + simCMD="$simulator --sensorsSendInterval=${sensorsSendInterval} --sensorsPktSize=${sensorsPktSize} --sensorsNumber=${sensorsNumber} --nbHop=${nbHop} --linksBandwidth=${linksBandwidth} --linksLatency=${linksLatency} 2>&1" + log=$(bash -c "$simCMD") + + # Compute some metrics + energyLog=$(echo "$log" | $parseEnergyScript) + avgDelay=$(echo "$log" | $parseDelayScript) + totalEnergy=$(echo "$energyLog"| awk 'BEGIN{power=0;FS=","}NR!=1{power+=$2}END{print(power)}') + nbPacketCloud=$(echo "$log"|grep -c "CloudSwitch receive") + nbNodes=$(echo "$log"|awk '/Simulation used/{print($3)}') + ns3Version=$(echo "$log"|awk '/NS-3 Version/{print($3)}') + + # Save logs + echo -e "#+TITLE: $(date) ns-3 (version ${ns3Version}) simulation\n" > $logFile + echo "* Environment Variables" >> $logFile + env >> $logFile + echo "* Full Command" >> $logFile + echo "$simCMD" >> $logFile + echo "* Output" >> $logFile + echo "$log" >> $logFile + echo "* Energy CSV (negative nodeId = WIFI, 0 = AP (Wireless+Wired), positive nodeId = ECOFEN" >> $logFile + echo "$energyLog" >> $logFile + echo "* Metrics" >> $logFile + echo "-METRICSLINE- sensorsSendInterval:${sensorsSendInterval} sensorsPktSize:${sensorsPktSize} sensorsNumber:${sensorsNumber} nbHop:${nbHop} linksBandwidth:${linksBandwidth} linksLatency:${linksLatency} totalEnergy:$totalEnergy nbPacketCloud:$nbPacketCloud nbNodes:$nbNodes avgDelay:${avgDelay} ns3Version:${ns3Version} simKey:${simKey}" >> $logFile + + } + + logFolder=$g5kLogFolder # Don't forget override default g5kLogFolder + source $argsFile # Fetch argument + run +done + +cp -r $g5kLogFolder/* "$logsFinalDst" # Fetch log from tmp into nfs +echo $(hostname) >> $finishedFile # Just say I finished |
