Update paper

This commit is contained in:
Loic Guegan 2019-05-28 11:01:47 +02:00
parent 18742ad944
commit d344407ccf
6 changed files with 257 additions and 219 deletions

View file

@ -36,6 +36,15 @@ Y.~Li, A.-C. Orgerie, I.~Rodero, B.~L. Amersho, M.~Parashar, and J.-M. Menaud,
\url{https://linkinghub.elsevier.com/retrieve/pii/S0167739X17314309}
\BIBentrySTDinterwordspacing
\bibitem{jalali_fog_2016}
\BIBentryALTinterwordspacing
F.~Jalali, K.~Hinton, R.~Ayre, T.~Alpcan, and R.~S. Tucker,
``\BIBforeignlanguage{en}{Fog {Computing} {May} {Help} to {Save} {Energy} in
{Cloud} {Computing}},'' \emph{\BIBforeignlanguage{en}{IEEE Journal on
Selected Areas in Communications}}, vol.~34, no.~5, pp. 1728--1739, May 2016.
[Online]. Available: \url{http://ieeexplore.ieee.org/document/7439752/}
\BIBentrySTDinterwordspacing
\bibitem{orgerie_ecofen:_2011}
A.~C. Orgerie, L.~Lefèvre, I.~Guérin-Lassous, and D.~M.~L. Pacheco,
``{ECOFEN}: {An} {End}-to-end energy {Cost} {mOdel} and simulator {For}

View file

@ -8,6 +8,7 @@
#+LATEX_HEADER: \usepackage{booktabs}
#+LATEX_HEADER: \usepackage{subfigure}
#+LATEX_HEADER: \usepackage{graphicx}
#+LATEX_HEADER: \usepackage{xcolor}
#+LATEX_HEADER: \IEEEoverridecommandlockouts
#+LATEX_HEADER: \author{\IEEEauthorblockN{1\textsuperscript{st} Anne-Cécile Orgerie}
#+LATEX_HEADER: \IEEEauthorblockA{\textit{Univ Rennes, Inria, CNRS, IRISA, Rennes, France} \\
@ -20,7 +21,9 @@
#+LATEX_HEADER: loic.guegan@irisa.fr}
#+LATEX_HEADER: }
#+BEGIN_EXPORT latex
\newcommand{\hl}[1]{\textcolor{red}{#1}}
#+END_EXPORT
#+BEGIN_EXPORT latex
\begin{abstract}
@ -107,13 +110,15 @@ component, formatting, style, styling, insert
The network part represents the a network section starting from the AP to the Cloud excluding the
server. It is also model into ns-3. We consider the server to be 9 hops away from the AP with a
typical round-trip latency of 100ms from the AP to the server. Each node from the AP to the Cloud
is assume to be network switches with static and dynamic network energy consumption. ECOFEN
\cite{orgerie_ecofen:_2011} is used to model the energy consumption of the network part. ECOFEN
is a ns-3 network energy module dedicated to wired network. It is based on an energy-per-bit
model including static energy consumption by assuming a linear relation between the amount of
data sent to the network interface and its power consumption. The different energy values used to
instantiate the ECOFEN energy model for the network part are shown in Table \ref{tab:net-energy}
and come from previous work \cite{cornea_studying_2014-1}.
is assume to be network switches with static and dynamic network energy consumption. The first 8
hop are edge switches and the last one is consider to be a core switch as mention in
\cite{jalali_fog_2016}. ECOFEN \cite{orgerie_ecofen:_2011} is used to model the energy
consumption of the network part. ECOFEN is a ns-3 network energy module dedicated to wired
network. It is based on an energy-per-bit model including static energy consumption by assuming a
linear relation between the amount of data sent to the network interface and its power
consumption. The different energy values used to instantiate the ECOFEN energy model for the
network part are shown in Table \ref{tab:net-energy} and come from previous work
\cite{cornea_studying_2014-1}.
** Cloud Part
Finally, to measure the energy consumed by the server, we used real server from the large-scale
@ -134,38 +139,40 @@ component, formatting, style, styling, insert
** IoT/Network Consumption
In a first place, we start by studying the impact of the sensors position on their energy
consumption. To this end, we run several simulations in ns-3 with different sensors position. The
results provided by Figure \ref{fig:sensorsPos} show that sensors position have a very low impact
results provided by Table \ref{tab:sensorsSendIntervalEffects} show that sensors position have a very low impact
on the energy consumption and on the application delay. It has an impact of course, but it is very
limited. This due to the fact that in such a scenario with very small number of communications
spread over the time, sensors don't have to contend for accessing to the Wifi channel.
#+BEGIN_EXPORT latex
\begin{figure}
\centering
\includegraphics[width=0.6\linewidth]{./plots/sensorsPosition-delayenergy.png}
\caption{Effects of sensors position on the application delay and the sensors energy consumption in a cell of 9 sensors.}
\label{fig:sensorsPos}
\end{figure}
% Please add the following required packages to your document preamble:
% \usepackage{booktabs}
\begin{table*}[]
\centering
\caption{Sensors send interval effects}
\label{tab:sensorsSendIntervalEffects}
\begin{tabular}{@{}lrrrrr@{}}
\toprule
Sensors Send Interval & 10s & 30s & 50s & 70s & 90s \\ \midrule
Sensors Power Consumption & 13.517\hl{94}W & 13.517\hl{67}W & 13.51767W & 13.51767W & 13.517\hl{61}W \\
Network Power Consumption & 10.441\hl{78}W & 10.441\hl{67}W & 10.44161W & 10.44161W & 10.441\hl{61}W \\
Average Appplication Delay & 17.81360s & 5.91265s & 3.53509s & 2.55086s & 1.93848s \\ \bottomrule
\end{tabular}
\end{table*}
#+END_EXPORT
Previous work \cite{li_end--end_2018} on similar scenario shows that increasing application
accuracy impact strongly the energy consumption in the context of data stream analysis. However,
in our case, application accuracy is driven by the sensing interval and thus, the transmit
frequency of the sensors. Therefore, we varied the transmission interval of the sensors from 1s
to 60s. Figure \ref{fig:frequency} present the effects of the sensors transmission interval on
the IoT/Network part energy consumption. In case of small and sporadic network traffic, these
results show that with a reasonable transmission interval the energy consumption of the
IoT/Network if almost not affected by the variation of this transmission interval. In fact,
transmitted data are not large enough to leverage the energy consumed by the network.
#+BEGIN_EXPORT latex
\begin{figure}
\centering
\includegraphics[scale=0.45]{./plots/sendFrequency-energy.png}
\caption{Sensors send interval and its influence on the IoT/Network part energy consumption.}
\label{fig:frequency}
\end{figure}
#+END_EXPORT
Previous work \cite{li_end--end_2018} on similar scenario shows that increasing application
accuracy impact strongly the energy consumption in the context of data stream analysis. However,
in our case, application accuracy is driven by the sensing interval and thus, the transmit
frequency of the sensors. Therefore, we varied the transmission interval of the sensors from 1s
to 60s. Some of these results are proposed on Table \ref{tab:sensorsSendIntervalEffects}. In
case of small and sporadic network traffic, these results show that with a reasonable
transmission interval the energy consumption of the IoT/Network if almost not affected by the
variation of this transmission interval. In fact, transmitted data are not large enough to
leverage the energy consumed by the network.
The number of sensors is a dominant factor that leverage the energy consumption of the
@ -264,7 +271,7 @@ component, formatting, style, styling, insert
sensors. However, since we are using a single server, large-scale sensors deployment lead to an
increasing consumption of energy in the IoT part. On the other side, network energy consumption
is stable regarding to the number of sensors since the system use case do not required large data
transfert. Thus, it is important to remember that, to save energy, we should maximize the number
transfer. Thus, it is important to remember that, to save energy, we should maximize the number
of sensors handle by each cloud server while keeping reasonable sensors request intervals.
#+BEGIN_EXPORT latex
@ -495,29 +502,29 @@ component, formatting, style, styling, insert
*** Plot Scripts
**** Random R Scripts
Figure
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sendFrequency-energy.png
Table sensorsSendInterval~Sensors+NetEnergyconsumption
#+BEGIN_SRC R :noweb yes :results output
<<RUtils>>
data=loadData("logs/ns3/last/data.csv")
data=data%>%filter(simKey=="SENDINTERVAL",sensorsNumber==15)
sensorsE=data%>%filter(simKey=="SENDINTERVAL",sensorsNumber==15) %>%select(sensorsSendInterval,sensorsEnergy)%>%arrange(sensorsSendInterval)
delay=data%>%filter(simKey=="SENDINTERVAL",sensorsNumber==15) %>%select(sensorsSendInterval,avgDelay)%>%arrange(sensorsSendInterval)
netE=data%>%filter(simKey=="SENDINTERVAL",sensorsNumber==15) %>%select(sensorsSendInterval,networkEnergy)%>%arrange(sensorsSendInterval)
formatData=right_join(sensorsE,netE)%>%right_join(delay)%>%filter(((sensorsSendInterval/10)%%2)!=0)
p=ggplot(data,aes(y=totalEnergy,x=sensorsSendInterval))+
xlab(getLabel("sensorsSendInterval"))+ylab(getLabel("Sensors And Network\nPower Consumption (W)"))+
geom_line()+geom_point()+expand_limits(y=c(0,50))+
guides(color=guide_legend(title="Curves"))+
theme(axis.title.y.right = element_text(margin = margin(t = 0, r = -13, b = 0, l = 7)))
p=applyTheme(p)
print(t(formatData))
ggsave("plots/sendFrequency-energy.png",dpi=100, width=3, height=2.8)
#+END_SRC
#+RESULTS:
[[file:plots/sendFrequency-energy.png]]
: [,1] [,2] [,3] [,4] [,5]
: sensorsSendInterval 10.00000 30.00000 50.00000 70.00000 90.00000
: sensorsEnergy 13.51794 13.51767 13.51767 13.51767 13.51761
: networkEnergy 10.44178 10.44167 10.44161 10.44161 10.44161
: avgDelay 17.81360 5.91265 3.53509 2.55086 1.93848
@ -653,149 +660,142 @@ component, formatting, style, styling, insert
**** Plot In Paper
Power sensors vs network
#+BEGIN_SRC R :noweb yes :results graphics :file plots/numberSensors-WIFINET.png :session *R*
Power sensors vs network
#+BEGIN_SRC R :noweb yes :results graphics :file plots/numberSensors-WIFINET.png :session *R*
<<RUtils>>
data=loadData("logs/ns3/last/data.csv")
data=data%>%filter(simKey=="NBSENSORS")
dataW=data%>%mutate(energy=sensorsEnergy)%>% mutate(type="Sensors") %>% select(sensorsNumber,energy,type)
dataN=data%>%mutate(energy=networkEnergy)%>% mutate(type="Network") %>% select(sensorsNumber,energy,type)
data=rbind(dataN,dataW)
data=data%>%mutate(sensorsNumber=as.character(sensorsNumber))
data=data%>%mutate(sensorsNumber=fct_reorder(sensorsNumber,as.numeric(sensorsNumber)))
data=data%>%filter(sensorsNumber%in%c(2,4,6,8,10))
p=ggplot(data)+geom_bar(aes(x=sensorsNumber,y=energy,fill=type),position="dodge",stat="identity")+
xlab(getLabel("sensorsNumber"))+ ylab("Power Consumption (W)") + guides(fill=guide_legend(title=""))
p=applyTheme(p)+theme(text = element_text(size=15))
size=5
ggsave("plots/numberSensors-WIFINET.png",dpi=90,width=size,height=size-1)
#+END_SRC
#+RESULTS:
[[file:plots/numberSensors-WIFINET.png]]
Final plot: Energy cloud, network and sensors
#+BEGIN_SRC R :noweb yes :results graphics :file plots/final.png
<<RUtils>>
data=loadData("logs/ns3/last/data.csv")
# Linear Approx
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)
}
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="nbSensors")
# Cloud
data20=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(data20,data100,data300)%>%mutate(sensorsNumber=nbSensors)%>%mutate(type="Cloud")%>%select(sensorsNumber,energy,type)
# Network
data=loadData("./logs/ns3/last/data.csv")
data=data%>%filter(simKey=="NBSENSORS")
dataW=data%>%mutate(energy=sensorsEnergy)%>% mutate(type="Sensors") %>% select(sensorsNumber,energy,type)
dataN=data%>%mutate(energy=networkEnergy)%>% mutate(type="Network") %>% select(sensorsNumber,energy,type)
dataN5=data%>%filter(sensorsNumber==5)%>% mutate(energy=networkEnergy) %>%select(energy,sensorsNumber)
dataN10=data%>%filter(sensorsNumber==10)%>%mutate(energy=networkEnergy) %>%select(energy,sensorsNumber)
dataNet=rbind(dataN5,dataN10)
fakeNet=tibble(sensorsNumber=c(20,100,300))
fakeNet=fakeNet%>%mutate(energy=approx(dataN5,dataN10,sensorsNumber),type="Network")
data=rbind(dataN,dataW)
data=data%>%mutate(sensorsNumber=as.character(sensorsNumber))
data=data%>%mutate(sensorsNumber=fct_reorder(sensorsNumber,as.numeric(sensorsNumber)))
data=data%>%filter(sensorsNumber%in%c(2,4,6,8,10))
# Sensors
dataS5=data%>%filter(sensorsNumber==5)%>% mutate(energy=sensorsEnergy) %>%select(energy,sensorsNumber)
dataS10=data%>%filter(sensorsNumber==10)%>%mutate(energy=sensorsEnergy) %>%select(energy,sensorsNumber)
dataS=rbind(dataS5,dataS10)
fakeS=tibble(sensorsNumber=c(20,100,300))
fakeS=fakeNet%>%mutate(energy=approx(dataS5,dataS10,sensorsNumber),type="Sensors")
p=ggplot(data)+geom_bar(aes(x=sensorsNumber,y=energy,fill=type),position="dodge",stat="identity")+
xlab(getLabel("sensorsNumber"))+ ylab("Power Consumption (W)") + guides(fill=guide_legend(title=""))
p=applyTheme(p)+theme(text = element_text(size=15))
# Combine Net/Sensors/Cloud and order factors
fakeData=rbind(fakeNet,fakeS,dataCloud)
fakeData=fakeData%>%mutate(sensorsNumber=as.character(sensorsNumber))
fakeData=fakeData%>%mutate(sensorsNumber=fct_reorder(sensorsNumber,as.numeric(sensorsNumber)))
fakeData$type=factor(fakeData$type,ordered=TRUE,levels=c("Sensors","Network","Cloud"))
# Plot
p=ggplot(fakeData)+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="System Part"))
p=applyTheme(p)+theme(text = element_text(size=16))
ggsave("plots/final.png",dpi=90,width=8,height=5.5)
size=5
ggsave("plots/numberSensors-WIFINET.png",dpi=90,width=size,height=size-1)
#+END_SRC
#+RESULTS:
[[file:plots/numberSensors-WIFINET.png]]
[[file:plots/final.png]]
Impact of vm size
#+BEGIN_SRC R :noweb yes :results graphics :noweb yes :file plots/vmSize-cloud.png
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="vmSize")%>%filter(time<=300)
data=data%>%mutate(vmSize=paste0(vmSize," MB"))
data=data%>%group_by(vmSize)%>%mutate(avgEnergy=mean(energy))%>%ungroup()
p=ggplot(data,aes(x=time, y=energy)) + geom_line()+facet_wrap(~vmSize)+geom_hline(aes(yintercept=avgEnergy),color="Red",size=1.0)+expand_limits(y=c(0,40))+ylab("Server Power Consumption (W)")+
xlab("Experiment Time (s)")
p=applyTheme(p)
ggsave("plots/vmSize-cloud.png",dpi=90,height=3,width=6)
#+END_SRC
#+RESULTS:
[[file:plots/vmSize-cloud.png]]
Impact of sensors number
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sensorsNumber-cloud.png
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="nbSensors")%>%ungroup()
Final plot: Energy cloud, network and sensors
data=data%>%mutate(nbSensorsSort=nbSensors)
data=data%>%mutate(nbSensors=paste0(nbSensors," Sensors"))
data$nbSensors=fct_reorder(data$nbSensors, data$nbSensorsSort)
#+BEGIN_SRC R :noweb yes :results graphics :file plots/final.png
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/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("./logs/ns3/last/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)))
data$type=factor(data$type,ordered=TRUE,levels=c("Sensors","Network","Cloud"))
p=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="System Part"))
p=applyTheme(p)+theme(text = element_text(size=16))
ggsave("plots/final.png",dpi=90,width=8,height=5.5)
#+END_SRC
#+RESULTS:
[[file:plots/final.png]]
Impact of vm size
#+BEGIN_SRC R :noweb yes :results graphics :noweb yes :file plots/vmSize-cloud.png
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="vmSize")%>%filter(time<=300)
data=data%>%mutate(vmSize=paste0(vmSize," MB"))
data=data%>%group_by(vmSize)%>%mutate(avgEnergy=mean(energy))%>%ungroup()
p=ggplot(data,aes(x=time, y=energy)) + geom_line()+facet_wrap(~vmSize)+geom_hline(aes(yintercept=avgEnergy),color="Red",size=1.0)+expand_limits(y=c(0,40))+ylab("Server Power Consumption (W)")+
xlab("Experiment Time (s)")
p=applyTheme(p)
ggsave("plots/vmSize-cloud.png",dpi=90,height=3,width=6)
#+END_SRC
#+RESULTS:
[[file:plots/vmSize-cloud.png]]
Impact of sensors number
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sensorsNumber-cloud.png
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="nbSensors")%>%ungroup()
data=data%>%mutate(nbSensorsSort=nbSensors)
data=data%>%mutate(nbSensors=paste0(nbSensors," Sensors"))
data$nbSensors=fct_reorder(data$nbSensors, data$nbSensorsSort)
data=data%>%group_by(nbSensors)%>%mutate(avgEnergy=mean(energy))%>%ungroup()
p=ggplot(data,aes(x=time, y=energy)) + geom_line()+facet_wrap(~nbSensors)+expand_limits(y=c(0,40))+ylab("Server Power Consumption (W)")+
xlab("Experiment Time (s)")+geom_hline(aes(yintercept=avgEnergy),color="Red",size=1.0)
p=applyTheme(p)
ggsave("plots/sensorsNumber-cloud.png",dpi=90,height=3,width=6)
#+END_SRC
#+RESULTS:
[[file:plots/sensorsNumber-cloud.png]]
data=data%>%group_by(nbSensors)%>%mutate(avgEnergy=mean(energy))%>%ungroup()
p=ggplot(data,aes(x=time, y=energy)) + geom_line()+facet_wrap(~nbSensors)+expand_limits(y=c(0,40))+ylab("Server Power Consumption (W)")+
xlab("Experiment Time (s)")+geom_hline(aes(yintercept=avgEnergy),color="Red",size=1.0)
p=applyTheme(p)
ggsave("plots/sensorsNumber-cloud.png",dpi=90,height=3,width=6)
#+END_SRC
#+RESULTS:
[[file:plots/sensorsNumber-cloud.png]]
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sensorsNumberLine-cloud.png :session *R:2*
<<RUtils>>
@ -814,66 +814,58 @@ component, formatting, style, styling, insert
p=applyTheme(p)+theme(text = element_text(size=14))+ expand_limits(y=108)
ggsave("plots/sensorsNumberLine-cloud.png",dpi=90,height=4.5,width=4)
#+END_SRC
#+END_SRC
#+RESULTS:
[[file:plots/sensorsNumberLine-cloud.png]]
#+RESULTS:
[[file:plots/sensorsNumberLine-cloud.png]]
#+BEGIN_SRC R :noweb yes :results graphics :file plots/WPS-cloud.png :session *R:2*
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="nbSensors")%>%ungroup()
#+BEGIN_SRC R :noweb yes :results graphics :file plots/WPS-cloud.png :session *R:2*
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%group_by(nbSensors)%>%mutate(avgEnergy=mean(energy))%>%distinct()%>%ungroup()
data=data%>%distinct(nbSensors,.keep_all=TRUE)
data=data%>%mutate(WPS=(avgEnergy/nbSensors))
data=data%>%filter(state=="sim",simKey=="nbSensors")%>%ungroup()
oldNb=data$nbSensors
data=data%>%mutate(nbSensors=as.character(nbSensors))
data$nbSensors=fct_reorder(data$nbSensors,oldNb)
p=ggplot(data,aes(x=nbSensors, y=WPS)) + geom_bar(stat="identity")+
xlab(getLabel("sensorsNumber"))+ylab("Server power cost per sensors (W)")
p=applyTheme(p)+theme(text = element_text(size=14))+ theme(axis.title.y = element_text(margin = margin(t = 0, r = 8, b = 0, l = 0)))
ggsave("plots/WPS-cloud.png",dpi=90,height=4,width=4)
#+END_SRC
data=data%>%group_by(nbSensors)%>%mutate(avgEnergy=mean(energy))%>%distinct()%>%ungroup()
data=data%>%distinct(nbSensors,.keep_all=TRUE)
data=data%>%mutate(WPS=(avgEnergy/nbSensors))
#+RESULTS:
[[file:plots/WPS-cloud.png]]
oldNb=data$nbSensors
data=data%>%mutate(nbSensors=as.character(nbSensors))
data$nbSensors=fct_reorder(data$nbSensors,oldNb)
p=ggplot(data,aes(x=nbSensors, y=WPS)) + geom_bar(stat="identity")+
xlab(getLabel("sensorsNumber"))+ylab("Server power cost per sensors (W)")
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sendInterval-cloud.png
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
p=applyTheme(p)+theme(text = element_text(size=14))+ theme(axis.title.y = element_text(margin = margin(t = 0, r = 8, b = 0, l = 0)))
ggsave("plots/WPS-cloud.png",dpi=90,height=4,width=4)
#+END_SRC
data=data%>%filter(state=="sim",simKey=="sendInterval")%>%ungroup()
#+RESULTS:
[[file:plots/WPS-cloud.png]]
oldSendInterval=data$sendInterval
data=data%>%mutate(sendInterval=paste0(sendInterval,"s"))
data$sendInterval=fct_reorder(data$sendInterval,oldSendInterval)
data=data%>%group_by(sendInterval)%>%mutate(avgEnergy=mean(energy))%>%ungroup()
print(data)
p=ggplot(data,aes(x=time, y=energy)) + geom_line()+facet_wrap(~sendInterval)+expand_limits(y=c(0,40))+ylab("Server power consumption (W)")+
xlab("Experiment Time (s)")+geom_hline(aes(yintercept=avgEnergy),color="Red",size=1.0)
p=applyTheme(p)
ggsave("plots/sendInterval-cloud.png",dpi=120,height=3,width=6)
#+END_SRC
#+BEGIN_SRC R :noweb yes :results graphics :file plots/sendInterval-cloud.png
<<RUtils>>
# Load data
data=loadData("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="sendInterval")%>%ungroup()
oldSendInterval=data$sendInterval
data=data%>%mutate(sendInterval=paste0(sendInterval,"s"))
data$sendInterval=fct_reorder(data$sendInterval,oldSendInterval)
data=data%>%group_by(sendInterval)%>%mutate(avgEnergy=mean(energy))%>%ungroup()
print(data)
p=ggplot(data,aes(x=time, y=energy)) + geom_line()+facet_wrap(~sendInterval)+expand_limits(y=c(0,40))+ylab("Server power consumption (W)")+
xlab("Experiment Time (s)")+geom_hline(aes(yintercept=avgEnergy),color="Red",size=1.0)
p=applyTheme(p)
ggsave("plots/sendInterval-cloud.png",dpi=120,height=3,width=6)
#+END_SRC
#+RESULTS:
[[file:plots/sendInterval-cloud.png]]
#+RESULTS:
[[file:plots/sendInterval-cloud.png]]
* Emacs settings :noexport:

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Before After
Before After

View file

@ -2326,3 +2326,40 @@ ALGOL 68 is substantially different from ALGOL 60 and was not well received, so
doi = {10.2172/1372902},
file = {Shehabi et al. - 2016 - United States Data Center Energy Usage Report.pdf:/home/loic/.zotero/zotero/383myqxk.default/zotero/storage/52D7SSUY/Shehabi et al. - 2016 - United States Data Center Energy Usage Report.pdf:application/pdf}
}
@article{maity_tcp_2017,
title = {{TCP} {Download} {Performance} in {Dense} {WiFi} {Scenarios}: {Analysis} and {Solution}},
volume = {16},
issn = {1536-1233},
shorttitle = {{TCP} {Download} {Performance} in {Dense} {WiFi} {Scenarios}},
url = {http://ieeexplore.ieee.org/document/7430293/},
doi = {10.1109/TMC.2016.2540632},
abstract = {How does a dense WiFi network perform, specifically for the common case of TCP download? While the empirical answer to this question is poor, analysis and experimentation in prior work has indicated that TCP clocks itself quite well, avoiding contentiondriven WiFi overload in dense settings. This paper focuses on measurements from a real-life use of WiFi in a dense scenario: a classroom where several students use the network to download quizzes and instruction material. We find that the TCP download performance is poor, contrary to that suggested by prior work. Through careful analysis, we explain the complex interaction of various phenomena which leads to this poor performance. Specifically, we observe that a small amount of upload traffic generated when downloading data upsets the TCP clocking, and increases contention on the channel. Further, contention losses lead to a vicious cycle of poor interaction with autorate adaptation and TCPs timeout mechanism. To reduce channel contention and improve performance, we propose a modification to the AP scheduling policy to improve the performance of large TCP downloads. Our solution, WiFiRR, picks only a subset of clients to be served by the AP during any instant, and varies this set of “active” clients periodically in a round-robin fashion over all clients to ensure that no client starves. We have done extensive evaluation of WiFiRR in simulation and in real settings. By reducing the number of contending nodes at any point of time, WiFiRR improves the download time of large TCP flows upto 3:5Â of our classroom scenario. We also compare WiFiRR with state-of-the-art prior work WiFox, WiFiRR improves download time by 2:25Â over WiFox.},
language = {en},
number = {1},
urldate = {2019-05-27},
journal = {IEEE Transactions on Mobile Computing},
author = {Maity, Mukulika and Raman, Bhaskaran and Vutukuru, Mythili},
month = jan,
year = {2017},
pages = {213--227},
file = {Maity et al. - 2017 - TCP Download Performance in Dense WiFi Scenarios .pdf:/home/loic/.zotero/zotero/383myqxk.default/zotero/storage/XVNCPAZJ/Maity et al. - 2017 - TCP Download Performance in Dense WiFi Scenarios .pdf:application/pdf}
}
@article{jalali_fog_2016,
title = {Fog {Computing} {May} {Help} to {Save} {Energy} in {Cloud} {Computing}},
volume = {34},
issn = {0733-8716},
url = {http://ieeexplore.ieee.org/document/7439752/},
doi = {10.1109/JSAC.2016.2545559},
abstract = {Tiny computers located in end-user premises are becoming popular as local servers for Internet of Things (IoT) and Fog computing services. These highly distributed servers that can host and distribute content and applications in a peer-to-peer (P2P) fashion are known as nano data centers (nDCs). Despite the growing popularity of nano servers, their energy consumption is not well-investigated. To study energy consumption of nDCs, we propose and use flow-based and time-based energy consumption models for shared and unshared network equipment, respectively. To apply and validate these models, a set of measurements and experiments are performed to compare energy consumption of a service provided by nDCs and centralized data centers (DCs). A number of findings emerge from our study, including the factors in the system design that allow nDCs to consume less energy than its centralized counterpart. These include the type of access network attached to nano servers and nano servers time utilization (the ratio of the idle time to active time). Additionally, the type of applications running on nDCs and factors such as number of downloads, number of updates, and amount of preloaded copies of data influence the energy cost. Our results reveal that number of hops between a user and content has little impact on the total energy consumption compared to the above-mentioned factors. We show that nano servers in Fog computing can complement centralized DCs to serve certain applications, mostly IoT applications for which the source of data is in end-user premises, and lead to energy saving if the applications (or a part of them) are off-loadable from centralized DCs and run on nDCs.},
language = {en},
number = {5},
urldate = {2019-05-28},
journal = {IEEE Journal on Selected Areas in Communications},
author = {Jalali, Fatemeh and Hinton, Kerry and Ayre, Robert and Alpcan, Tansu and Tucker, Rodney S.},
month = may,
year = {2016},
pages = {1728--1739},
file = {Jalali et al. - 2016 - Fog Computing May Help to Save Energy in Cloud Com.pdf:/home/loic/.zotero/zotero/383myqxk.default/zotero/storage/36J4R5W6/Jalali et al. - 2016 - Fog Computing May Help to Save Energy in Cloud Com.pdf:application/pdf}
}