diff options
| author | Loic Guegan <manzerberdes@gmx.com> | 2019-05-24 15:54:00 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerberdes@gmx.com> | 2019-05-24 15:54:00 +0200 |
| commit | 3979a58065edeeb5cbc66eaf8fc326c95e598c34 (patch) | |
| tree | e502308c20abeb6979396f643b86d1fc528bcdca /logs/g5k/analysis.org | |
| parent | d9608926832c164e7f77fb20a5c8812eae9505a8 (diff) | |
Update
Diffstat (limited to 'logs/g5k/analysis.org')
| -rw-r--r-- | logs/g5k/analysis.org | 292 |
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]] |
