Update paper

This commit is contained in:
Loic Guegan 2019-05-23 16:37:55 +02:00
parent 2b31f7dbfd
commit d960892683
37 changed files with 446126 additions and 62 deletions

1
.#2019-Mascots.org Symbolic link
View file

@ -0,0 +1 @@
loic@lguegan.1106:1558519162

1
.#2019-Mascots.org_archive Symbolic link
View file

@ -0,0 +1 @@
loic@lguegan.1106:1558519162

View file

@ -49,4 +49,13 @@ B.~F. Cornea, A.~C. Orgerie, and L.~Lefèvre, ``Studying the energy consumption
3rd {International} {Conference} on {Cloud} {Networking} ({CloudNet})}, Oct.
2014, pp. 143--148.
\bibitem{shehabi_united_2016-1}
\BIBentryALTinterwordspacing
A.~Shehabi, S.~Smith, D.~Sartor, R.~Brown, M.~Herrlin, J.~Koomey, E.~Masanet,
N.~Horner, I.~Azevedo, and W.~Lintner, ``\BIBforeignlanguage{en}{United
{States} {Data} {Center} {Energy} {Usage} {Report}},'' Tech. Rep.
LBNL--1005775, 1372902, Jun. 2016. [Online]. Available:
\url{http://www.osti.gov/servlets/purl/1372902/}
\BIBentrySTDinterwordspacing
\end{thebibliography}

View file

@ -148,23 +148,6 @@ component, formatting, style, styling, insert
\end{figure}
#+END_EXPORT
The number of sensors is the dominant factor that leverage the energy consumption of the
IoT/Network part. Therefore, we varied the number of sensors in the Wifi cell to analyze its
impact. The figure \ref{fig:sensorsNumber} represents the energy consumption of each simulated
part. It is clear that the energy consume by the network is the dominant part. However, since the
number of sensors is increasing the energy consume by the network will become negligible face to
the energy consume by the sensors. In fact, deploying new sensors in the cell do not introduce
much network load. To this end, sensors energy consumption is dominant.
#+BEGIN_EXPORT latex
\begin{figure}
\centering
\includegraphics[width=0.6\linewidth]{./plots/numberSensors-WIFINET.png}
\caption{Analysis of the variation of the number of sensors on the IoT/Network part energy consumption.}
\label{fig:sensorsNumber}
\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 how case, application accuracy is driven by the sensing frequency and thus the transmit
@ -184,8 +167,32 @@ component, formatting, style, styling, insert
#+END_EXPORT
The number of sensors is the dominant factor that leverage the energy consumption of the
IoT/Network part. Therefore, we varied the number of sensors in the Wifi cell to analyze its
impact. The figure \ref{fig:sensorsNumber} represents the energy consumption of each simulated
part. It is clear that the energy consume by the network is the dominant part. However, since the
number of sensors is increasing the energy consume by the network will become negligible face to
the energy consume by the sensors. In fact, deploying new sensors in the cell do not introduce
much network load. To this end, sensors energy consumption is dominant.
#+BEGIN_EXPORT latex
\begin{figure}
\centering
\includegraphics[width=0.6\linewidth]{./plots/numberSensors-WIFINET.png}
\caption{Analysis of the variation of the number of sensors on the IoT/Network part energy consumption.}
\label{fig:sensorsNumber}
\end{figure}
#+END_EXPORT
** Cloud Energy Consumption
In this End-To-End energy consumption study, cloud account for a huge part of the overall energy
consumption. According a report \cite{shehabi_united_2016-1} on United States data center energy
usage, the average Power Usage Effectiveness (PUE) of an hyperscale data center is 1.2. Thus, in
our analysis, all energy measurement on cloud server will account for this PUE.
*** Virtual Machine Size Impact
** End-To-End Consumption
* Discussion [1 col]
@ -574,7 +581,11 @@ component, formatting, style, styling, insert
#+BEGIN_SRC sh
#!/bin/bash
whichLog="second-final"
whichLog="last"
logsLocation="logs/g5k"
whichLog="${logsLocation}/${whichLog}"
logFile="$(dirname $(readlink -f $0))"/$whichLog/simLogs.txt
@ -617,6 +628,8 @@ component, formatting, style, styling, insert
done
#+END_SRC
#+RESULTS: G5K-mergeCSV
#+RESULTS: mergeCSV
*** Final Plots
@ -709,68 +722,69 @@ component, formatting, style, styling, insert
Final plot: Energy cloud, network and sensors
#+BEGIN_SRC R :noweb yes :results graphics :file plots/final.png :session *R*
library("tidyverse")
#+BEGIN_SRC R :noweb yes :results graphics :file plots/final.png :session *R*
library("tidyverse")
# Load data
data=read_csv("./logs/g5k/last/data.csv")
data=data%>%filter(state=="sim",simKey=="nbSensors")
PUE=1.2
# Load data
data=read_csv("./logs/g5k/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)
# 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)
dataCloud=dataCloud%>%mutate(energy=energy*PUE)
approx=function(data1, data2,nbSensors){
x1=data1$sensorsNumber
y1=data1$energy
approx=function(data1, data2,nbSensors){
x1=data1$sensorsNumber
y1=data1$energy
x2=data2$sensorsNumber
y2=data2$energy
x2=data2$sensorsNumber
y2=data2$energy
a=((y2-y1)/(x2-x1))
b=y1-a*x1
a=((y2-y1)/(x2-x1))
b=y1-a*x1
return(a*nbSensors+b)
return(a*nbSensors+b)
}
}
simTime=1800
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")
# 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")
# 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=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))
fakeNetS=fakeNetS%>%mutate(sensorsNumber=as.character(sensorsNumber))
dataCloud=dataCloud%>%mutate(sensorsNumber=as.character(sensorsNumber))
data=rbind(fakeNetS,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=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("plots/final.png",dpi=80)
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("plots/final.png",dpi=80)
#+END_SRC
@ -780,6 +794,34 @@ component, formatting, style, styling, insert
#+BEGIN_SRC R :results graphics :file plots/vmSize-cloud.png
library("tidyverse")
# Load data
data=read_csv("./logs/g5k/last/data.csv")
data=data%>%filter(simKey=="nbSensors")
dataI=data%>%filter(state=="IDLE")%>%group_by(nbSensors)%>%mutate(energy=mean(energy))
dataS=data%>%filter(state=="sim")%>%group_by(nbSensors)%>%mutate(energy=mean(energy))
data=rbind(dataI,dataS)
# data1024=data%>%filter(vmSize==1024)%>%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)
ggplot(data,aes(x=time, y=energy,color=state)) + geom_point()+facet_wrap(~nbSensors)
ggsave("plots/vmSize-cloud.png",dpi=80)
#+END_SRC
#+RESULTS:
[[file:plots/vmSize-cloud.png]]
* Emacs settings :noexport:
# Local Variables:

Binary file not shown.

BIN
Rplots.pdf Normal file

Binary file not shown.

111504
logs/g5k/last-2/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

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 1558594924 (Thu May 23 09:02:04 CEST 2019)
Simulation parameters: serverNode:nova-9.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-5.lyon.grid5000.fr clientNode:nova-5.lyon.grid5000.fr clientMac: delay:60 delayStart:1558594864 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:vmSize simStart:1558594924 simEnd:1558595227 duration:303 serverNodeName:nova-9 vmSize:1024
./recordEnergy.sh nova nova-9 1558594924 1558595227 energy_vmSize_20NS_1024vmSize_1558594924_1558595227.csv
---------- Simulation (key=vmSize) end at 1558595227 (Thu May 23 09:07:07 CEST 2019)
---------- Simulation (key=vmSize) start at 1558595365 (Thu May 23 09:09:25 CEST 2019)
Simulation parameters: serverNode:nova-9.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-5.lyon.grid5000.fr clientNode:nova-5.lyon.grid5000.fr clientMac: delay:60 delayStart:1558595305 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:vmSize simStart:1558595365 simEnd:1558595668 duration:303 serverNodeName:nova-9 vmSize:2048
./recordEnergy.sh nova nova-9 1558595365 1558595668 energy_vmSize_20NS_2048vmSize_1558595365_1558595668.csv
---------- Simulation (key=vmSize) end at 1558595668 (Thu May 23 09:14:28 CEST 2019)
---------- Simulation (key=vmSize) start at 1558595807 (Thu May 23 09:16:47 CEST 2019)
Simulation parameters: serverNode:nova-9.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-5.lyon.grid5000.fr clientNode:nova-5.lyon.grid5000.fr clientMac: delay:60 delayStart:1558595747 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:vmSize simStart:1558595807 simEnd:1558596110 duration:303 serverNodeName:nova-9 vmSize:4096
./recordEnergy.sh nova nova-9 1558595807 1558596110 energy_vmSize_20NS_4096vmSize_1558595807_1558596110.csv
---------- Simulation (key=vmSize) end at 1558596110 (Thu May 23 09:21:50 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558596246 (Thu May 23 09:24:06 CEST 2019)
Simulation parameters: serverNode:nova-9.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-5.lyon.grid5000.fr clientNode:nova-5.lyon.grid5000.fr clientMac: delay:60 delayStart:1558596186 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:nbSensors simStart:1558596246 simEnd:1558596549 duration:303 serverNodeName:nova-9 vmSize:2048
./recordEnergy.sh nova nova-9 1558596246 1558596549 energy_nbSensors_20NS_2048vmSize_1558596246_1558596549.csv
---------- Simulation (key=nbSensors) end at 1558596549 (Thu May 23 09:29:09 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558596687 (Thu May 23 09:31:27 CEST 2019)
Simulation parameters: serverNode:nova-9.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-5.lyon.grid5000.fr clientNode:nova-5.lyon.grid5000.fr clientMac: delay:60 delayStart:1558596627 nbSensors:100 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:nbSensors simStart:1558596687 simEnd:1558596999 duration:312 serverNodeName:nova-9 vmSize:2048
./recordEnergy.sh nova nova-9 1558596687 1558596999 energy_nbSensors_100NS_2048vmSize_1558596687_1558596999.csv
---------- Simulation (key=nbSensors) end at 1558596999 (Thu May 23 09:36:39 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558597138 (Thu May 23 09:38:58 CEST 2019)
Simulation parameters: serverNode:nova-9.lyon.grid5000.fr serverIp:10.140.0.1 serverMac:00:16:3E:8C:00:01 clientNode:nova-5.lyon.grid5000.fr clientNode:nova-5.lyon.grid5000.fr clientMac: delay:60 delayStart:1558597078 nbSensors:300 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:nbSensors simStart:1558597138 simEnd:1558597472 duration:334 serverNodeName:nova-9 vmSize:2048
./recordEnergy.sh nova nova-9 1558597138 1558597472 energy_nbSensors_300NS_2048vmSize_1558597138_1558597472.csv
---------- Simulation (key=nbSensors) end at 1558597472 (Thu May 23 09:44:32 CEST 2019)

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

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

111454
logs/g5k/last/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

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

30
logs/g5k/last/simLogs.txt Normal file
View file

@ -0,0 +1,30 @@
---------- Simulation (key=vmSize) start at 1558616938 (Thu May 23 15:08:58 CEST 2019)
Simulation parameters: serverNode:nova-22.lyon.grid5000.fr serverIp:10.140.4.1 serverMac:00:16:3E:8C:04:01 clientNode:nova-2.lyon.grid5000.fr clientNode:nova-2.lyon.grid5000.fr clientMac: delay:60 delayStart:1558616878 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:vmSize simStart:1558616938 simEnd:1558617241 duration:303 serverNodeName:nova-22 vmSize:1024
./recordEnergy.sh nova nova-22 1558616938 1558617241 energy_vmSize_20NS_1024vmSize_1558616938_1558617241.csv
---------- Simulation (key=vmSize) end at 1558617241 (Thu May 23 15:14:01 CEST 2019)
---------- Simulation (key=vmSize) start at 1558617377 (Thu May 23 15:16:17 CEST 2019)
Simulation parameters: serverNode:nova-22.lyon.grid5000.fr serverIp:10.140.4.1 serverMac:00:16:3E:8C:04:01 clientNode:nova-2.lyon.grid5000.fr clientNode:nova-2.lyon.grid5000.fr clientMac: delay:60 delayStart:1558617317 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:vmSize simStart:1558617377 simEnd:1558617680 duration:303 serverNodeName:nova-22 vmSize:2048
./recordEnergy.sh nova nova-22 1558617377 1558617680 energy_vmSize_20NS_2048vmSize_1558617377_1558617680.csv
---------- Simulation (key=vmSize) end at 1558617680 (Thu May 23 15:21:20 CEST 2019)
---------- Simulation (key=vmSize) start at 1558617817 (Thu May 23 15:23:37 CEST 2019)
Simulation parameters: serverNode:nova-22.lyon.grid5000.fr serverIp:10.140.4.1 serverMac:00:16:3E:8C:04:01 clientNode:nova-2.lyon.grid5000.fr clientNode:nova-2.lyon.grid5000.fr clientMac: delay:60 delayStart:1558617757 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:vmSize simStart:1558617817 simEnd:1558618120 duration:303 serverNodeName:nova-22 vmSize:4096
./recordEnergy.sh nova nova-22 1558617817 1558618120 energy_vmSize_20NS_4096vmSize_1558617817_1558618120.csv
---------- Simulation (key=vmSize) end at 1558618120 (Thu May 23 15:28:40 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558618260 (Thu May 23 15:31:00 CEST 2019)
Simulation parameters: serverNode:nova-22.lyon.grid5000.fr serverIp:10.140.4.1 serverMac:00:16:3E:8C:04:01 clientNode:nova-2.lyon.grid5000.fr clientNode:nova-2.lyon.grid5000.fr clientMac: delay:60 delayStart:1558618200 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:nbSensors simStart:1558618260 simEnd:1558618563 duration:303 serverNodeName:nova-22 vmSize:2048
./recordEnergy.sh nova nova-22 1558618260 1558618563 energy_nbSensors_20NS_2048vmSize_1558618260_1558618563.csv
---------- Simulation (key=nbSensors) end at 1558618563 (Thu May 23 15:36:03 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558618699 (Thu May 23 15:38:19 CEST 2019)
Simulation parameters: serverNode:nova-22.lyon.grid5000.fr serverIp:10.140.4.1 serverMac:00:16:3E:8C:04:01 clientNode:nova-2.lyon.grid5000.fr clientNode:nova-2.lyon.grid5000.fr clientMac: delay:60 delayStart:1558618639 nbSensors:100 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:nbSensors simStart:1558618699 simEnd:1558619011 duration:312 serverNodeName:nova-22 vmSize:2048
./recordEnergy.sh nova nova-22 1558618699 1558619011 energy_nbSensors_100NS_2048vmSize_1558618699_1558619011.csv
---------- Simulation (key=nbSensors) end at 1558619011 (Thu May 23 15:43:31 CEST 2019)
---------- Simulation (key=nbSensors) start at 1558619148 (Thu May 23 15:45:48 CEST 2019)
Simulation parameters: serverNode:nova-22.lyon.grid5000.fr serverIp:10.140.4.1 serverMac:00:16:3E:8C:04:01 clientNode:nova-2.lyon.grid5000.fr clientNode:nova-2.lyon.grid5000.fr clientMac: delay:60 delayStart:1558619088 nbSensors:300 nbSensorsFactor:3 requestPerSensors:30 sensorsSendInterval:10 simKey:nbSensors simStart:1558619148 simEnd:1558619481 duration:333 serverNodeName:nova-22 vmSize:2048
./recordEnergy.sh nova nova-22 1558619148 1558619481 energy_nbSensors_300NS_2048vmSize_1558619148_1558619481.csv
---------- Simulation (key=nbSensors) end at 1558619481 (Thu May 23 15:51:21 CEST 2019)

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

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

BIN
plots/vmSize-cloud.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -2312,4 +2312,17 @@ ALGOL 68 is substantially different from ALGOL 60 and was not well received, so
author = {Halperin, Daniel and Greenstein, Ben and Sheth, Anmol and Wetherall, David},
pages = {5},
file = {Halperin et al. - Demystifying 802.11n Power Consumption.pdf:/home/loic/.zotero/zotero/383myqxk.default/zotero/storage/HRLJIRX4/Halperin et al. - Demystifying 802.11n Power Consumption.pdf:application/pdf}
}
@techreport{shehabi_united_2016-1,
title = {United {States} {Data} {Center} {Energy} {Usage} {Report}},
url = {http://www.osti.gov/servlets/purl/1372902/},
language = {en},
number = {LBNL--1005775, 1372902},
urldate = {2019-05-23},
author = {Shehabi, Arman and Smith, Sarah and Sartor, Dale and Brown, Richard and Herrlin, Magnus and Koomey, Jonathan and Masanet, Eric and Horner, Nathaniel and Azevedo, Inês and Lintner, William},
month = jun,
year = {2016},
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}
}