Abstract
In recent years there has been a growing interest in reducing energy consumption of software, all the while making sure they remain performant. One scenario were these two are important, and can have a great effect, is in the critical component of the Internet, the Domain Name System (DNS ). However, developers of DNS server implementations have no way to determine the amount of energy used by their implementation.
This research aims to use ECAlogic to model the energy consumption for the DNS implementations known as BIND and Unbound. ECAlogic is a recently developed tool that aims to statically provide upper bounds on the energy consumption of software. The consumed energy is determined by giving ECAlogic a model of the hardware and a software implementation. This thesis researches which hardware components must be modeled and develops simplified versions of the servers in ECAlogic. These are then populated with energy consumption values. Time is spent to research how the energy consumption values are acquired. A measurement methodology is presented on how these values can be obtained. Consumption values are obtained, analyzed and used in the analysis for the DNS servers.
The analysis on the DNS servers not only aims to provide an answer on which implementation is the most energy efficient, but also look at the limitations and possibilities of ECAlogic. This result of this analysis is than compared to another independent research that also looked at the energy consumption of DNS servers. This is followed by discussing the measurement methodology and the experience of using ECAlogic. Improvements on the measurement method are suggested and future enhancements to ECAlogic are presented.

Acknowledgements
This thesis presents a partial fulfillment of the requirements for obtaining the degree of Master of Science in Computing Science at the Radboud University Nijmegen, the Netherlands. It took a little longer than expected, but this thesis would have not been possible without the advice and support of many people. I would like to take this moment to thank all of them.
First and foremost, I would like to thank Marko van Eekelen and Rody Kersten for supervising me during this thesis, giving me the opportunity to work on this project and certainly their patience. Their words of encouragement kept me going in times when I doubted myself and could not see a way on how to finish this thesis. Every meeting would instill a new sense of determination to continue working on this research. I would also like to thank Joost Visser for agreeing to be the second reader for this thesis.
I would also like to thank Bo Merkus and Erik Hoestra of SEFlab for giving me all the time I needed to use their energy consumption measurement setup, their help when the hardware failed to work and the scripts needed to convert the measured raw data into readable power consumption values.
I would also like to send my thanks Matthijs Mekking of NLnet Labs and Jelte Jansen of SIDN labs for helping me to find my way in the source code of Unbound and BIND. Their guidance certainly steered me in the right direction in such large code bases.
I would like to express my gratitude to my family for their support and the constant reminders that I am working on a thesis that needs to be finished and handed. I would like to thank my brother for his patience when I did not have the time to help as much as I would like with our company.
Last but least, I would like to thank my girlfriend for her continuous support, encouragement and, more importantly, always believing in me.
Thank you all,
Enniër Kelly September 2015

Introduction
In recent years there has been a growing interest in reducing energy-consumption of software. The challenge lies in delivering performant software while reducing its energy-consumption. One example where energy-consumption reduction can have great effect is in a critical component of the Internet namely, the Domain Name System (DNS ). The service that the DNS provides is that of translating user-friendly domain names to Internet Protocol (IP) addresses. Each visit to a website requires the use of DNS server software. Google alone performed 5.7 billion searches in 20141 per day, and 5.9 billion in 2013, that each required the services provided by DNS. Therefore, knowing the energy-consumption of DNS server software is certainly of interest. More so, because the ICT sector accounts for ap- proximately 2% of global carbon emissions2. Thus, making DNS servers more energy-efficient can help reduce global carbon emissions. However, developers of DNS server implementations, or of software in general, currently have no simple way to ascertain how much energy their applications consume.
Reducing energy consumption of software is not only important for DNS servers, the backbone of The Internet, but also for servers used for large scale systems and devices found in the consumer market. Take for example companies such as Google, Yahoo, Microsoft and Amazon that have to support large data centers containing thousands of machines that provide the needed processing capabilities to support their business services [2]. Furthermore, trends in the consumer technology market show that more and more consumers are moving towards mobile consumer oriented devices such as smart phones and tablets. In their ‘Gartner Says’ series, Garnter reports in [10] that in 2014 alone more than 1.2 billion units of smart phone devices had been sold worldwide. Essentially making smart phone sales two-thirds of the total global phone market in 2014. However, no matter how powerful these mobile devices have all become during the last few years, they are still limited in the amount of energy they can retain [16]. Therefore, making applications for mobile devices more energy efficient is of utmost importance in extending the battery life of these devices and, at the same time, enhance the user experience.
Currently, one way of determining the energy-consumption footprint of applications is to take measure- ments while it is operational. However, taking measurements is tedious work and requires measurement equipment that may not be readily accessible to everyone. Moreover, energy consumption is only mea- sured for a finite set of test inputs. Generic results, valid for any input, cannot be achieved using this approach. One laboratory in the Netherlands that is equipped to take such measurements is the Software Energy Footprint Lab (SEFLab), located in Amsterdam. The laboratory is in possession of a number of different production grade servers. Each server is equipped to take accurate measurements directly from most of its hardware components. This is done by equipping the servers with power sensors on the power lines. The measurement setup is seen as a black box that executes the software for a determined period of time on the server and outputs the power consumption during this time period [9]. The output can then be further analyzed.