A Performance Evaluation of Container Technologies on Internet of Things Devices

Reading time: 5 minute
...

📝 Abstract

The use of virtualization technologies in different contexts - such as Cloud Environments, Internet of Things (IoT), Software Defined Networking (SDN) - has rapidly increased during the last years. Among these technologies, container-based solutions own characteristics for deploying distributed and lightweight applications. This paper presents a performance evaluation of container technologies on constrained devices, in this case, on Raspberry Pi. The study shows that, overall, the overhead added by containers is negligible.

💡 Analysis

The use of virtualization technologies in different contexts - such as Cloud Environments, Internet of Things (IoT), Software Defined Networking (SDN) - has rapidly increased during the last years. Among these technologies, container-based solutions own characteristics for deploying distributed and lightweight applications. This paper presents a performance evaluation of container technologies on constrained devices, in this case, on Raspberry Pi. The study shows that, overall, the overhead added by containers is negligible.

📄 Content

A Performance Evaluation of Container Technologies
on Internet of Things Devices Roberto Morabito Ericsson Research, NomadicLab, Jorvas, Finland roberto.morabito@ericsson.com

Abstract— The use of virtualization technologies in different contexts – such as Cloud Environments, Internet of Things (IoT), Software Defined Networking (SDN) – has rapidly increased during the last years. Among these technologies, container-based solutions own characteristics for deploying distributed and lightweight applications. This paper presents a performance evaluation of container technologies on constrained devices, in this case, on Raspberry Pi. The study shows that, overall, the overhead added by containers is negligible. Keywords— Internet of Things; Virtualization; Container; Docker; Performance; Benchmark; Power Consumption; I. INTRODUCTION

Container-based virtualization can be considered a lightweight alternative to hypervisor-based virtualization. Containers implement isolation of processes at the operating system level of the host machine, thus, avoiding the overhead due to virtualized hardware and virtual device drivers. A container can be considered a tiny and isolated virtual environment, which includes a set of specific dependencies needed to run a specific application. The concept of “containerization’’ is not new in the virtualization world, but it has achieved more relevance and real-world adoption recently with the advent of Docker1. Docker introduces an underlying container engine, together with a functional API that allows easily building, managing, and removing a containerized application. Because of the small overhead produced, multiple containers can run even in devices with limited computation resources such as Single Board Computer platforms. These lightweight and versatile characteristics have facilitated the use of containers in different contexts ranging from Cloud Computing to Internet of Things (IoT) scenarios. Practical examples of the use of Docker containers in constrained devices can be found in [1] and [2]. In a Capillary Network [1], containers are executed in constrained environments without hardware virtualization support (e.g. a capillary gateway), and used for packaging, deployment, and execution of software suitable for network management and data pre-processing (filtering, compression and aggregation). In [2], the authors introduce a scale model of a Data Center composed of clusters of 56 Raspberry Pi devices, emulating every layer of a cloud stack from resource virtualization (implemented by means of Linux containers) to network components.

Considering the potential benefits introduced by containers, together with the significant increase of use cases, our study aims to assess the use of Docker containers in constrained environments, providing a detailed performance analysis. II. METHODOLOGY The main goal of our empirical investigation is to evaluate, by the means of different benchmark tools, the performance of Docker when running on a Single Board Computer device such as Raspberry Pi 21 (RPi2). The native performance, i.e. running the benchmark tool without including any virtualization layer, is used as a reference for comparison. We used the Docker version 1.8.0 and, as operating system for the RPi2, the image provided by Hypriot3 running Raspbian Jessie with Linux 3.18.11. The results are averaged over 15 runs.
For the Docker results, table I shows the difference compared to the native test. The power consumption of the RPi2 during the execution of each single test is also reported. This is measured by using an external power meter, and a setup similar to the one used in [3]. Figure 1 shows the entire testbed environment setup.

Fig. 1. Testbed setup. III. MEASUREMENT RESULTS A. Synthetic Benchmark Synthetic benchmarks allow generating different types of workloads to challenge a specific sub-system of the hardware under test. CPU, Memory I/O, Disk I/O, and Network I/O are the main components that we want to test in this part of the experiments. The sysbench4 tool allows performing multi- threaded tests for evaluating different parameters under intensive load. We used sysbench to test CPU, Disk I/O, and On-Line Transaction Processing (MySQL) performance. CPU. The results prove an existing difference between the native case and the Docker case. However, the container engine introduces a negligible impact on the CPU performance, with a percentage difference in the order of 2.67%. Memory I/O. To test the memory performance, we use the Unix command mbw5, which determines the available memory bandwidth by copying large arrays of data in memory, and performing three different tests (memcpy, dumb, mcblock). Similarly to the CPU case, native and container performance can be considered comparable, with a max percentage difference of 6,04% during the memcpy test. Disk I/O. To evaluate D

This content is AI-processed based on ArXiv data.

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut