mirror of
https://gitlab.com/manzerbredes/paper-lowrate-iot.git
synced 2025-04-19 04:09:43 +00:00
Update paper
This commit is contained in:
parent
18742ad944
commit
d344407ccf
6 changed files with 257 additions and 219 deletions
|
@ -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}
|
||||
|
|
428
2019-Mascots.org
428
2019-Mascots.org
|
@ -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:
|
||||
|
|
BIN
2019-Mascots.pdf
BIN
2019-Mascots.pdf
Binary file not shown.
BIN
plots/final.png
BIN
plots/final.png
Binary file not shown.
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Binary file not shown.
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
@ -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 TCP’s 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 server’s 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}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue