mirror of
https://gitlab.com/manzerbredes/paper-lowrate-iot.git
synced 2025-06-07 15:17:40 +00:00
Nix integration
This commit is contained in:
parent
89a5ee979d
commit
f6d01996eb
18 changed files with 616 additions and 24 deletions
68
ns3-simulations/g5k-worker.sh
Executable file
68
ns3-simulations/g5k-worker.sh
Executable file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue