diff options
Diffstat (limited to 'ns3-simulations/g5k-worker.sh')
| -rwxr-xr-x | ns3-simulations/g5k-worker.sh | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/ns3-simulations/g5k-worker.sh b/ns3-simulations/g5k-worker.sh index 9326941..3830e73 100755 --- a/ns3-simulations/g5k-worker.sh +++ b/ns3-simulations/g5k-worker.sh @@ -11,6 +11,7 @@ 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 +curNProcesses=0 # Start with no processes for argsFile in $(find $simArgsLoc -type f -name "$hostname*") do simulator="simulator/simulator" @@ -20,27 +21,30 @@ do export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NS3_PATH}/build/lib # Default Parameters - sensorsSendInterval=10 + sensorsSendInterval=10 # DON'T GO BELOW 1 SECONDS !!!!!!! Simulator will stay stuck sensorsPktSize=5 # 1 byte temperature (-128 à +128 °C) and 4Byte sensorsId sensorsNumber=10 nbHop=10 # Cf paper AC/Yunbo linksBandwidth=10 linksLatency=2 + positionSeed=5 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" + local logFile="${logFolder}/${simKey}_${sensorsSendInterval}SSI_${sensorsPktSize}SPS_${sensorsNumber}SN_${nbHop}NH_${linksBandwidth}LB_${linksLatency}LL_${positionSeed}PS.org" [ -f "$logFile" ] && return - simCMD="$simulator --sensorsSendInterval=${sensorsSendInterval} --sensorsPktSize=${sensorsPktSize} --sensorsNumber=${sensorsNumber} --nbHop=${nbHop} --linksBandwidth=${linksBandwidth} --linksLatency=${linksLatency} 2>&1" - log=$(bash -c "$simCMD") + local simCMD="$simulator --sensorsSendInterval=${sensorsSendInterval} --sensorsPktSize=${sensorsPktSize} --sensorsNumber=${sensorsNumber} --nbHop=${nbHop} --linksBandwidth=${linksBandwidth} --linksLatency=${linksLatency} --positionSeed=${positionSeed} 2>&1" + local 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)}') + totalEnergy=$(echo "$energyLog" | awk 'BEGIN{power=0;FS=","}NR!=1{power+=$2}END{print(power)}') + sensorsEnergy=$(echo "$energyLog" |awk -F',' 'BEGIN{sumW=0}$1<0{sumW+=$2}END{print sumW}') + networkEnergy=$(echo "$energyLog" |awk -F',' 'BEGIN{sumN=0}$1>=0{sumN+=$2}END{print sumN}') nbPacketCloud=$(echo "$log"|grep -c "CloudSwitch receive") nbNodes=$(echo "$log"|awk '/Simulation used/{print($3)}') ns3Version=$(echo "$log"|awk '/NS-3 Version/{print($3)}') @@ -56,14 +60,16 @@ do 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 - + 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} positionSeed:${positionSeed} sensorsEnergy:${sensorsEnergy} networkEnergy:${networkEnergy}" >> $logFile } logFolder=$g5kLogFolder # Don't forget override default g5kLogFolder source $argsFile # Fetch argument - run + run & # Run async + ((curNProcesses+=1)) # Increase by 2 + [ $curNProcesses -ge $nProcesses ] && { curNProcesses=0; wait; } done +wait # Wait until the end of all simulations cp -r $g5kLogFolder/* "$logsFinalDst" # Fetch log from tmp into nfs echo $(hostname) >> $finishedFile # Just say I finished |
