MooseFS showcases good performance on Docker!

October 21st, 2017 | Karol Majek post_thumbnail

MooseFS showcases good performance on Docker! In this article, we show how we tested MooseFS performance on Docker and present what results the MooseFS has achieved.

There is one exciting news for all the MooseFS users that MooseFS showcases good performance on Docker containers. So, this means our customers can now deploy MooseFS easily using Docker containers. The tests were performed with Docker 1.13 and MooseFS 4.0 software version but the results are also achievable with MooseFS 3.0.92+ version.

We conducted a test, in which MooseFS was run on Docker to check whether rapid deployment of MooseFS can be achieved or not using Docker. The setup consisted of 10 servers, one as a client, two as master servers and seven machines as chunk servers. All the machines were connected in a ring topology using Intel I350 Gigabit Network Connection cards.

The experiments showed us how the use of containers affected the performance of the MooseFS storage cluster. Results show us that containerized storage is 5-10% slower than bare metal setup. Although, for speed-critical and production systems, it is recommended to use bare metal installation. However, the Docker based setup is recommended, for the first steps with MooseFS to quickly run on any operating system supported by Docker.

We do not recommend to run MooseFS production clusters on Docker, however such a setup can be used for example to test MooseFS features. Using this configuration one can set-up MooseFS cluster very quickly and test MooseFS POSIX compatibility, redundancy, and other features.

In this blog, we will first give some information about MooseFS and Docker and then we will explain the set-up and how the tests were conducted to run MooseFS in docker. And then there will be the analysis of the performance of MooseFS in Docker as compared with bare metal with the help of graphs. This blog concludes with scripts and detailed results as mentioned in the appendix.

About Docker

Docker is a container platform which provides an additional layer of abstraction and automation of operating system level virtualization on Windows and Linux. It isolates software which can run on a shared operating system instead of running on full Virtual Machine. Such a solution is more and more popular due to it’s really fast and reliable deployment capability.

For more information about Docker please visit: https://www.docker.com/

MooseFS in Docker

The following section provides description and configuration details for MooseFS in Docker containers. Only one server was dedicated as MooseFS client. Benchmark was executed inside the MooseFS client mount point. Benchmark tool used in this test was IOzone software, version 3.465.

docker run -p 9419-9422:9419-9422 -d --privileged mfs4chunkserver

Test setup

We used 10 servers for the setup, one as a client, two as masters and seven machines as chunk servers (Figure 1). All the machines were connected in a ring topology using Intel I350 Gigabit Network Connection cards. To eliminate hard disk bottleneck, 100GB RAM disks were created on each chunk server. No kernel modifications and no additional components were required. MooseFS replication was set to goal 1. Docker instances used the official Ubuntu 14.04 image from https://hub.docker.com/_/ubuntu/.

single client 1024x868 - MooseFS showcases good performance on Docker!
Storage cluster architecture

Results

The following graphs show read/write and random read/write operations throughput with block size 4k, 16k, 2048k and 1, 2, 8 threads. The purpose of this test was to compare the performance of Docker container with bare metal, so the Y axis is scaled such that 100% is the performance of bare metal MooseFS.

d chart2 - MooseFS showcases good performance on Docker!
Write speed test results using 1, 2, 8 threads for each 4 kB, 16 kB, 2048 kB Block Size

 

d chart1 - MooseFS showcases good performance on Docker!
Read speed test results using 1, 2, 8 threads for each 4 kB, 16 kB, 2048 kB Block Size

 

d chart3 - MooseFS showcases good performance on Docker!
Random read speed test results using 1, 2, 8 threads for each 4 kB, 16 kB, 2048 kB Block Size

 

d chart4 - MooseFS showcases good performance on Docker!
Random write speed test results using 1, 2, 8 threads for each 4 kB, 16 kB, 2048 kB Block Size

 

d chart5 - MooseFS showcases good performance on Docker!
Performance loss when using Docker containers instead of bare metal MooseFS

Appendix

This section provides Docker scripts and detailed results gathered during all IOzone benchmark tests. The below table shows all the results of performed tests. It includes block sizes starting from 4 kB to 2048 kB and 1 to 16 threads.

Scripts

If you want to create own docker cluster visit our repository.  https://github.com/moosefs/moosefs-docker-cluster

Detailed Results

Table 1: IOzone test results showing how performance changes with block size and number of processing threads for Bare metal and Docker

Block SizeThreadsDockerBare metal
Write MB/sRead MB/sRandom write MB/sRandom read MB/sWrite MB/sRandom write MB/sRandom read MB/s
4k12173621121922237713821
23566031583736762820644
44918252068151887627793
85899662771486291 047318179
166419743142356841 088376294
8k13905582153339759326339
26218453036865087039480
48421 0553861499071 074530173
89781 1295032761 0941 185606329
161 0571 1415894431 1721 196701549
16k16357303925168175746473
21 0409635541121 088994692156
41 1481 1166792401 2121 1531 191309
81 1501 1388244771 2091 1921 151571
161 1431 1429787791 2091 1971 198988
32k18368656979190888881496
21 1461 0499782021 2101 1331 204233
41 1501 1241 1304241 2091 1711 215496
81 1511 1381 1318221 2081 1901 205947
161 1441 1421 1181 1431 2071 1991 2011 202
64k11 0329141 1331601 1179541 205171
21 1541 0691 1403531 2091 1031 207365
41 1531 1231 1366941 2141 1671 211676
81 1511 1371 1381 1421 2081 1941 2071 188
161 1441 1421 1311 1461 2091 1991 2041 206
128k11 1009611 1312721 1821 0191 206279
21 1481 1081 1395481 2081 1161 208601
41 1541 1331 1379901 2131 1801 2141 098
81 1471 1381 1341 1461 2081 1861 2051 207
161 1451 1411 1341 1461 2081 1971 2021 206
256k11 0959801 1322991 1831 0131 206298
21 1601 0891 1385721 2091 1511 207621
41 1561 1221 1361 0101 2181 1711 2131 116
81 1511 1381 1331 1461 2081 1921 2081 207
161 1451 1421 1371 1451 2081 1991 2051 206
512k11 1039641 1343111 1831 0261 204310
21 1511 1021 1385811 2091 1341 213630
41 1521 1341 1371 0301 2121 1771 2101 130
81 1511 1371 1351 1461 2081 1931 2091 207
161 1421 1421 1371 1461 2071 1991 2031 205
1024k11 1069471 1313231 1841 0371 205313
21 1451 0821 1435831 2131 1211 207637
41 1531 1291 1381 0291 2131 1821 2091 127
81 1511 1381 1341 1461 2071 1891 2091 207
161 1441 1411 1351 1451 2081 1981 2031 205
2048k11 1019681 1293311 1801 0331 206314
21 1471 0881 1375911 2091 1231 209639
41 1501 1321 1401 0321 2101 1661 2071 130
81 1491 1381 1361 1451 2051 1851 2091 206
161 1401 1421 1341 1441 2061 1981 2041 205
 

We hide the results table on small screens.

Download pdf report

If you want to download this article as pdf, please click here: MooseFS showcases good performance on Docker!

See also what results the MooseFS has achieved during performance tests on InfiniBand Network