Add analysis script

This commit is contained in:
Loic Guegan 2019-05-17 11:08:57 +02:00
parent 1ab4a6a97a
commit 7c9410246f
23 changed files with 171289 additions and 4 deletions

1
g5k/logs/.#analysis.org Symbolic link
View file

@ -0,0 +1 @@
loic@lguegan.5093:1558079377

BIN
g5k/logs/.RData Normal file

Binary file not shown.

25
g5k/logs/.Rhistory Normal file
View file

@ -0,0 +1,25 @@
library("tidyverse")
read_csv("nbSensors_2048VMSIZE_100NBSENSORS_15580778521558078188.csv")
energy=read_csv("nbSensors_2048VMSIZE_100NBSENSORS_15580778521558078188.csv")
ggplot(energy, aes(x=ts,y=energy))+geom_line()
ggplot(energy, aes(x=ts,y=energy))+geom_point()
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(x=,y=)
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(x=0,y=0)
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(y=0)
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(y=0) + scale_x_datetime()
energy$ts
as.POSIXct(energy$ts)
as.POSIXct(energy$ts,origin="1970-01-01")
energy %>% mutate(ts=as.POSIXct(energy$ts,origin="1970-01-01"))
energy %>% mutate(ts=as.POSIXct(ts,origin="1970-01-01"))
energy=energy %>% mutate(ts=as.POSIXct(ts,origin="1970-01-01"))
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(y=0) + scale_x_datetime()
energy=read_csv("nbSensors_2048VMSIZE_100NBSENSORS_15580778521558078188.csv")
energy
energy=energy%>%mutate(ts=ts-min(ts))
energy
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(y=0)
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(y=0)+geom_jitter
ggplot(energy, aes(x=ts,y=energy))+geom_line() + expand_limits(y=0)+geom_jitter()
ggplot(energy, aes(x=ts,y=energy)) + expand_limits(y=0)+geom_jitter()
ggplot(energy, aes(x=ts,y=energy)) + expand_limits(y=0)+geom_jitter(position = position_jitter(width = 0.4))

164
g5k/logs/analysis.org Normal file
View file

@ -0,0 +1,164 @@
* Logs Analysis
** R Scripts
*** Generate all plots script
#+BEGIN_SRC R
#<<RUtils>>
energy=loadEnergy
#+END_SRC
*** R Utils
RUtils is intended to load logs (data.csv) and providing
simple plot function for them.
#+NAME: RUtils
#+BEGIN_SRC R :eval never
library("tidyverse")
# Fell free to update the following
labels=c(nbNodes="Number of nodes",sensorsNumber="Number of sensors",totalEnergy="Total Energy (J)",
nbHop="Number of hop (AP to Cloud)", linksBandwidth="Links Bandwidth (Mbps)", avgDelay="Average Application Delay (s)",
linksLatency="Links Latency (ms)", sensorsSendInterval="Sensors Send Interval (s)", positionSeed="Position Seed",
sensorsEnergy="Sensors Wifi Energy Consumption (J)", networkEnergy="Network Energy Consumption (J)")
# Load Data
data=read_csv("logs/data.csv")
loadData=function(path){
data=read_csv(path)
data%>%mutate(time=ts-min(ts))
}
# Get label according to varName
getLabel=function(varName){
if(is.na(labels[varName])){
return(varName)
}
return(labels[varName])
}
#+END_SRC
** Plots -> PDF
Merge all plots in plots/ folder into a pdf file.
#+NAME: plotToPDF
#+BEGIN_SRC bash :results output :noweb yes
orgFile="plots/plots.org"
<<singleRun>> # To get all default arguments
# Write helper function
function write {
echo "$1" >> $orgFile
}
echo "#+TITLE: Analysis" > $orgFile
write "#+LATEX_HEADER: \usepackage{fullpage}"
write "#+OPTIONS: toc:nil"
# Default arguments
write '\begin{center}'
write '\begin{tabular}{lr}'
write 'Parameters & Values\\'
write '\hline'
write "sensorsPktSize & ${sensorsPktSize} bytes\\\\"
write "sensorsSendInterval & ${sensorsSendInterval}s\\\\"
write "sensorsNumber & ${sensorsNumber}\\\\"
write "nbHop & ${nbHop}\\\\"
write "linksBandwidth & ${linksBandwidth}Mbps\\\\"
write "linksLatency & ${linksLatency}ms\\\\"
write '\end{tabular}'
write '\newline'
write '\end{center}'
for plot in $(find plots/ -type f -name "*.png")
do
write "\includegraphics[width=0.5\linewidth]{$(basename ${plot})}"
done
# Export to pdf
emacs $orgFile --batch -f org-latex-export-to-pdf --kill
#+END_SRC
#+RESULTS:
** CSVs -> CSV
#+NAME: mergeCSV
#+BEGIN_SRC sh :results output
#!/bin/bash
whichLog="first-try"
logFile="$(dirname $(readlink -f $0))"/$whichLog/simLogs.txt
dataFile=$(dirname "$logFile")/data.csv
getValue () {
line=$(echo "$1" | grep "Simulation para"|sed "s/Simulation parameters: //g")
key=$2
echo "$line"|awk 'BEGIN{RS=" ";FS=":"}"'$key'"==$1{gsub("\n","",$0);print $2}'
}
##### Add extract info to energy #####
IFS=$'\n'
for cmd in $(cat $logFile|grep "Simulation parameters")
do
nodeName=$(getValue $cmd serverNodeName)
from=$(getValue $cmd simStart)
to=$(getValue $cmd simEnd)
vmSize=$(getValue $cmd vmSize)
nbSensors=$(getValue $cmd nbSensors)
simKey=$(getValue $cmd simKey)
csvFile="$whichLog/${simKey}_${vmSize}VMSIZE_${nbSensors}NBSENSORS_${from}${to}.csv"
tmpFile=${csvFile}_tmp
echo ts,energy,simKey,vmSize,nbSensors > $tmpFile
tail -n+2 ${csvFile} | awk '{print $0",'$simKey','$vmSize','$nbSensors'"}' >> $tmpFile
done
##### File dataFile #####
echo ts,energy,simKey,vmSize,nbSensors > $dataFile
for tmpFile in $(find ${whichLog}/*_tmp -type f)
do
tail -n+2 $tmpFile >> $dataFile
rm $tmpFile # Pay attention to this line :D
done
#+END_SRC
#+RESULTS:
** Custom Plots
#+NAME: ssiNet
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sensorsSendInterval-net.png
<<RUtils>>
data%>%filter(simKey=="SENDINTERVAL",sensorsNumber==20) %>% ggplot(aes(x=sensorsSendInterval,y=networkEnergy))+xlab(getLabel("sensorsSendInterval"))+ylab(getLabel("networkEnergy"))+
geom_line()+labs(title="For 20 sensors")
ggsave("plots/sensorsSendInterval-net.png",dpi=80)
#+END_SRC
#+RESULTS:
[[file:plots/sensorsSendInterval-net.png]]
#+NAME: ssiWifi
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sensorsSendInterval-wifi.png
<<RUtils>>
data%>%filter(simKey=="SENDINTERVAL",sensorsNumber==20) %>% ggplot(aes(x=sensorsSendInterval,y=sensorsEnergy))+xlab(getLabel("sensorsSendInterval"))+ylab(getLabel("sensorsEnergy"))+
geom_line() + geom_line()+labs(title="For 20 sensors")
ggsave("plots/sensorsSendInterval-wifi.png",dpi=80)
#+END_SRC
#+RESULTS: ssiWifi
[[file:plots/sensorsSendInterval-wifi.png]]
#+RESULTS:
[[file:plots/sensorsSendInterval.png]]

85351
g5k/logs/first-try/data.csv Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,30 @@
---------- Simulation (key=vmSize) start at 1558075866 (Fri May 17 08:51:06 CEST 2019)
Simulation parameters: serverNode:nova-20.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-21.lyon.grid5000.fr clientNode:nova-21.lyon.grid5000.fr clientMac:00:16:3E:8C:00:02 delay:60 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:vmSize simStart:1558075866 simEnd:1558076173 duration:307 serverNodeName:nova-20 vmSize:1024
./recordEnergy.sh nova nova-20 1558075866 1558076173 energy_vmSize_20NS_1024vmSize_1558075866_1558076173.csv
---------- Simulation (key=vmSize) end at 1558076173 (Fri May 17 08:56:13 CEST 2019)
---------- Simulation (key=vmSize) start at 1558076362 (Fri May 17 08:59:22 CEST 2019)
Simulation parameters: serverNode:nova-20.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-21.lyon.grid5000.fr clientNode:nova-21.lyon.grid5000.fr clientMac:00:16:3E:8C:00:02 delay:60 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:vmSize simStart:1558076362 simEnd:1558076670 duration:308 serverNodeName:nova-20 vmSize:2048
./recordEnergy.sh nova nova-20 1558076362 1558076670 energy_vmSize_20NS_2048vmSize_1558076362_1558076670.csv
---------- Simulation (key=vmSize) end at 1558076670 (Fri May 17 09:04:30 CEST 2019)
---------- Simulation (key=vmSize) start at 1558076859 (Fri May 17 09:07:39 CEST 2019)
Simulation parameters: serverNode:nova-20.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-21.lyon.grid5000.fr clientNode:nova-21.lyon.grid5000.fr clientMac:00:16:3E:8C:00:02 delay:60 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:vmSize simStart:1558076859 simEnd:1558077167 duration:308 serverNodeName:nova-20 vmSize:4096
./recordEnergy.sh nova nova-20 1558076859 1558077167 energy_vmSize_20NS_4096vmSize_1558076859_1558077167.csv
---------- Simulation (key=vmSize) end at 1558077167 (Fri May 17 09:12:47 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558077356 (Fri May 17 09:15:56 CEST 2019)
Simulation parameters: serverNode:nova-20.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-21.lyon.grid5000.fr clientNode:nova-21.lyon.grid5000.fr clientMac:00:16:3E:8C:00:02 delay:60 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:nbSensors simStart:1558077356 simEnd:1558077664 duration:308 serverNodeName:nova-20 vmSize:2048
./recordEnergy.sh nova nova-20 1558077356 1558077664 energy_nbSensors_20NS_2048vmSize_1558077356_1558077664.csv
---------- Simulation (key=nbSensors) end at 1558077664 (Fri May 17 09:21:04 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558077852 (Fri May 17 09:24:12 CEST 2019)
Simulation parameters: serverNode:nova-20.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-21.lyon.grid5000.fr clientNode:nova-21.lyon.grid5000.fr clientMac:00:16:3E:8C:00:02 delay:60 nbSensors:100 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:nbSensors simStart:1558077852 simEnd:1558078188 duration:336 serverNodeName:nova-20 vmSize:2048
./recordEnergy.sh nova nova-20 1558077852 1558078188 energy_nbSensors_100NS_2048vmSize_1558077852_1558078188.csv
---------- Simulation (key=nbSensors) end at 1558078188 (Fri May 17 09:29:48 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558078377 (Fri May 17 09:32:57 CEST 2019)
Simulation parameters: serverNode:nova-20.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-21.lyon.grid5000.fr clientNode:nova-21.lyon.grid5000.fr clientMac:00:16:3E:8C:00:02 delay:60 nbSensors:300 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:nbSensors simStart:1558078377 simEnd:1558078782 duration:405 serverNodeName:nova-20 vmSize:2048
./recordEnergy.sh nova nova-20 1558078377 1558078782 energy_nbSensors_300NS_2048vmSize_1558078377_1558078782.csv
---------- Simulation (key=nbSensors) end at 1558078782 (Fri May 17 09:39:42 CEST 2019)

View file

@ -0,0 +1,19 @@
ts,energy
1 ts energy

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff