summaryrefslogtreecommitdiff
path: root/logs/g5k/analysis.org
diff options
context:
space:
mode:
authorLoic Guegan <manzerberdes@gmx.com>2019-05-24 15:54:00 +0200
committerLoic Guegan <manzerberdes@gmx.com>2019-05-24 15:54:00 +0200
commit3979a58065edeeb5cbc66eaf8fc326c95e598c34 (patch)
treee502308c20abeb6979396f643b86d1fc528bcdca /logs/g5k/analysis.org
parentd9608926832c164e7f77fb20a5c8812eae9505a8 (diff)
Update
Diffstat (limited to 'logs/g5k/analysis.org')
-rw-r--r--logs/g5k/analysis.org292
1 files changed, 0 insertions, 292 deletions
diff --git a/logs/g5k/analysis.org b/logs/g5k/analysis.org
deleted file mode 100644
index 7433c02..0000000
--- a/logs/g5k/analysis.org
+++ /dev/null
@@ -1,292 +0,0 @@
-
-
-
-
-* Logs Analysis
-** R Scripts
-*** Plots script
- #+BEGIN_SRC R :results output :noweb yes :file second-final/plot.png
- <<RUtils>>
- dataOrig=loadData("./second-final/data.csv")
-
- data=dataOrig%>%filter(simKey=="nbSensors")%>%filter(state=="sim",nbSensors==100)
- dataIDLE=dataOrig%>%filter(simKey=="nbSensors")%>%filter(state!="sim",nbSensors==100)
- data=data%>%mutate(meanEnergy=mean(energy))
- dataIDLE=dataIDLE%>%mutate(meanEnergy=mean(energy))
- data=rbind(data,dataIDLE)
- ggplot(data,aes(x=time,y=energy))+geom_point(position="jitter")+xlab(getLabel("time"))+expand_limits(y=0)+facet_wrap(~state)+geom_hline(aes(color=state,yintercept=mean(meanEnergy)))
- ggsave("./second-final/plot.png",dpi=180)
- #+END_SRC
-
- #+RESULTS:
- #+begin_example
- # A tibble: 3,050 x 8
- ts energy simKey vmSize nbSensors time state meanEnergy
- <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <chr> <dbl>
- 1 1558429001. 90.2 nbSensors 2048 100 0 IDLE 90.8
- 2 1558429001. 89 nbSensors 2048 100 0.0199 IDLE 90.8
- 3 1558429001. 89 nbSensors 2048 100 0.0399 IDLE 90.8
- 4 1558429001. 90.8 nbSensors 2048 100 0.0599 IDLE 90.8
- 5 1558429001. 91 nbSensors 2048 100 0.0799 IDLE 90.8
- 6 1558429001. 90.5 nbSensors 2048 100 0.1000 IDLE 90.8
- 7 1558429001. 89.9 nbSensors 2048 100 0.120 IDLE 90.8
- 8 1558429001. 88.6 nbSensors 2048 100 0.140 IDLE 90.8
- 9 1558429001. 88.6 nbSensors 2048 100 0.160 IDLE 90.8
- 10 1558429001. 90.5 nbSensors 2048 100 0.180 IDLE 90.8
- # … with 3,040 more rows
- #+end_example
-
-
-
-
-
-
-**** Final plot
-
- #+BEGIN_SRC R :results graphics :noweb yes :file second-final/plot-final.png :session *R*
- <<RUtils>>
- data=loadData("./second-final/data.csv")
- data=data%>%filter(state=="sim",simKey=="nbSensors")
-
-
- # Cloud
- data10=data%>%filter(nbSensors==20)%>%mutate(meanEnergy=mean(energy)) %>% slice(1L)
- data100=data%>%filter(nbSensors==100)%>%mutate(meanEnergy=mean(energy)) %>% slice(1L)
- data300=data%>%filter(nbSensors==300)%>%mutate(meanEnergy=mean(energy)) %>% slice(1L)
- dataCloud=rbind(data10,data100,data300)%>%mutate(nbSensors=as.character(nbSensors))
-
- # Network
- dataNet=loadData("../../ns3-simulations/logs/data.csv")
- dataNet=dataNet%>%filter(simKey=="NBSENSORS")
- data5=dataNet%>%filter(sensorsNumber==5)%>%select(networkEnergy,sensorsNumber)
- data10=dataNet%>%filter(sensorsNumber==10)%>%select(networkEnergy,sensorsNumber)
-
- print(data20)
-
- ggplot(dataCloud)+geom_bar(aes(x=nbSensors,y=meanEnergy),stat="identity")+xlab("Sensors Number")+ylab("Power Consumption (W)")
- ggsave("./second-final/plot-final.png",dpi=80)
-
- #+END_SRC
-
- #+RESULTS:
-
-
-
-
- #+BEGIN_SRC R :noweb yes :results graphics :file final.png :session *R*
- <<RUtils>>
-
-
- data=loadData("./second-final/data.csv")
- data=data%>%filter(state=="sim",simKey=="nbSensors")
-
- # Cloud
- data10=data%>%filter(nbSensors==20)%>%mutate(energy=mean(energy)) %>% slice(1L)
- data100=data%>%filter(nbSensors==100)%>%mutate(energy=mean(energy)) %>% slice(1L)
- data300=data%>%filter(nbSensors==300)%>%mutate(energy=mean(energy)) %>% slice(1L)
- dataCloud=rbind(data10,data100,data300)%>%mutate(sensorsNumber=nbSensors)%>%mutate(type="Cloud")%>%select(sensorsNumber,energy,type)
-
-
-
- approx=function(data1, data2,nbSensors){
- x1=data1$sensorsNumber
- y1=data1$energy
-
- x2=data2$sensorsNumber
- y2=data2$energy
-
- a=((y2-y1)/(x2-x1))
- b=y1-a*x1
-
- return(a*nbSensors+b)
-
- }
-
-
- simTime=1800
-
- # Network
- data=read_csv("../../ns3-simulations/logs/data.csv")
- data=data%>%filter(simKey=="NBSENSORS")
- dataC5=data%>%filter(sensorsNumber==5)%>% mutate(energy=networkEnergy/simTime) %>%select(energy,sensorsNumber)
- dataC10=data%>%filter(sensorsNumber==10)%>%mutate(energy=networkEnergy/simTime) %>%select(energy,sensorsNumber)
- dataNet=rbind(dataC5,dataC10)%>%mutate(type="Network")
-
- # Sensors
- dataS5=data%>%filter(sensorsNumber==5)%>% mutate(energy=sensorsEnergy/simTime) %>%select(energy,sensorsNumber)
- dataS10=data%>%filter(sensorsNumber==10)%>%mutate(energy=sensorsEnergy/simTime) %>%select(energy,sensorsNumber)
- dataS=rbind(dataS5,dataS10)%>%mutate(type="Sensors")
-
- fakeNetS=tibble(
- sensorsNumber=c(20,100,300,20,100,300),
- energy=c(dataC10$energy,approx(dataC5,dataC10,100),approx(dataC5,dataC10,300),dataS10$energy,approx(dataS5,dataS10,100),approx(dataS5,dataS10,300)),
- type=c("Network","Network","Network","Sensors","Sensors","Sensors")
- )
-
- fakeNetS=fakeNetS%>%mutate(sensorsNumber=as.character(sensorsNumber))
- dataCloud=dataCloud%>%mutate(sensorsNumber=as.character(sensorsNumber))
-
- data=rbind(fakeNetS,dataCloud)%>%mutate(sensorsNumber=as.character(sensorsNumber))
-
-
- data=data%>%mutate(sensorsNumber=fct_reorder(sensorsNumber,as.numeric(sensorsNumber)))
-
- ggplot(data)+geom_bar(position="dodge2",colour="black",aes(x=sensorsNumber,y=energy,fill=type),stat="identity")+
- xlab("Sensors Number")+ylab("Power Consumption (W)")+guides(fill=guide_legend(title="Part"))
- ggsave("final.png",dpi=80)
-
- #+END_SRC
-
- #+RESULTS:
- [[file:final.png]]
-
-
-
-
-
-*** 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(time="Time (s)")
-
- loadData=function(path){
- data=read_csv(path)
- }
-
- # 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
-
-
-** CSVs -> CSV
- Merge all energy file into one (and add additional fields).
-
- #+NAME: mergeCSV
- #+BEGIN_SRC sh
- #!/bin/bash
-
- whichLog="second-final"
-
-
- 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"
- csvFileIDLE="$whichLog/${simKey}_${vmSize}VMSIZE_${nbSensors}NBSENSORS_${from}${to}_IDLE.csv"
- tmpFile=${csvFile}_tmp
- echo ts,energy,simKey,vmSize,nbSensors,time,state > $tmpFile
- minTs=$(tail -n+2 $csvFile|awk -F"," 'BEGIN{min=0}$1<min||min==0{min=$1}END{print(min)}') # To compute ts field
- minTsIDLE=$(tail -n+2 $csvFileIDLE|awk -F"," 'BEGIN{min=0}$1<min||min==0{min=$1}END{print(min)}') # To compute ts field
- tail -n+2 ${csvFile} | awk -F"," '{print $0",'$simKey','$vmSize','$nbSensors',"$1-'$minTs'",sim"}' >> $tmpFile
- tail -n+2 ${csvFileIDLE} | awk -F"," '{print $0",'$simKey','$vmSize','$nbSensors',"$1-'$minTsIDLE'",IDLE"}' >> $tmpFile
- done
-
-
- ##### Fill dataFile #####
- echo ts,energy,simKey,vmSize,nbSensors,time,state > $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: mergeCSV
-
-
-
-** 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]]