10

I've been interested in the applications of Docker on IoT devices such as Raspberry Pis.

After reading A Performance Evaluation of Container Technologies on Internet of Things Devices, I was slightly confused by one of the results. In Table 1, the power consumption shown under Apache 2 Benchmarking (200 clients) shows that using a Docker container reduced power consumption, despite the overhead of containerisation using Docker.

Why does this occur? Is this reliable enough to be used to slightly reduce power consumption of IoT devices, and would there be any drawbacks?

  • 1
    By my reading of the tables on the last page you have that a little backward. Power consumption is mostly higher for "Docker" than "Native". The text does refer to a case where there's also a performance difference (it's in the lower right quadrant of Table I), presumably because of an increased network bottleneck for the container, which would amount to a less active processor. – goldilocks Dec 10 '16 at 19:09
  • @delicateLatticeworkFever maybe so, I'm looking at "5000 requests", "25000 requests" and "100000 requests" where the power usage is shown to be "-4.63%", "-3.84%" and "-5.29%" respectively. The performance difference does seem to be the likely cause of of the power difference, which might be worth discussing in an answer. Part of my question is whether you could exploit that as a tradeoff if you were happy with slightly degraded performance, because it seemed like an interesting idea to me. – Aurora0001 Dec 10 '16 at 19:11
  • 1
    Well, if its because those 5000 requests took longer, it does imply doing things at less than 100% means less energy per task used. That might be the general form of this question and as a casual guess I might say it has to do with energy lost through heat dissipation. Are (at least some) processors less efficient when maxed out? Could easily be. In that case, if you want the benefit, you could run tests with the CPU throttled a bit and see if that yields the same advantage (it will definitely run slower and use less power). Note on a 5W device I'm not sure if +/- <5% is meaningful. – goldilocks Dec 10 '16 at 19:16
  • Note on a 5W device I'm not sure if +/- <5% is meaningful. - that's a good point, but if you run IoT devices at scale, the energy savings become more significant (and it's an interesting thought experiment regardless). If you want to collate your thoughts into an answer, I think you'd be spot on with addressing the questions I raised. – Aurora0001 Dec 10 '16 at 19:19
  • 1
    Hmmm, not so sure my quick hypothesis is correct though; glancing at this it seems the relationship is linear: stackoverflow.com/questions/6128960/… ...and the slope on that graph is < 1, so a maxed out processor should be more efficient. – goldilocks Dec 10 '16 at 19:29
7

After some further investigation, I think the issue in the question is that although the power (rate of energy transfer) was reduced, the overall energy consumption was increased by using Docker, so there is no benefit in terms of reduced electricity costs.

Based on the paper's figures for 100,000 requests, we can calculate the energy usage through the formula:

Energy = power x time

Given that the native code consumed 2.4893 W of power, and took approximately 170 seconds (see Figure 3, Native 200), we know that the energy used was:

2.4893 W * 170 s

= 423.181 Ws = 423.181 J (1 watt-second is equivalent to a joule, or, in other words, a watt is a joule per second)

For the Docker code, the power usage was 2.3642 W, but the time taken was 220 seconds, so:

2.3642 W * 220 s

= 520.124 Ws = 520.124 J

Hence, the overall energy usage for the example was 96.943 J higher, which is clearly undesirable if energy usage is a concern. However, using Docker does have other advantages for deployment and management, but in tightly constrained environments (e.g. battery-only), it would seem that it is best avoided.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.