A Performance Evaluation of Container Technologies on Internet of Things Devices
📝 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.