MooseFS Performance on Docker: Only 5–10% Slower Than Bare Metal
IOzone benchmarks on a 10-node cluster show MooseFS running inside Docker containers is only 5–10% slower than bare metal — making containerized deployment a practical choice for quick evaluation, feature testing, and first-time setup on any Docker-supported OS.
There is exciting news for all MooseFS users: MooseFS showcases good performance on Docker containers. 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 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 that containerized storage is 5–10% slower than bare metal setup. For speed-critical and production systems, it is recommended to use a bare metal installation. However, the Docker-based setup is recommended for first steps with MooseFS to quickly run on any operating system supported by Docker.
We do not recommend running 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 a MooseFS cluster very quickly and test MooseFS POSIX compatibility, redundancy, and other features.
In this blog, we give some information about MooseFS and Docker, explain the set-up and how the tests were conducted, and analyse the performance of MooseFS in Docker compared with bare metal. The blog concludes with scripts and detailed results 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 a full Virtual Machine. Such a solution is more and more popular due to its 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. All the machines were connected in a ring topology using Intel I350 Gigabit Network Connection cards. To eliminate hard disk bottleneck, 100 GB 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/
Results
The following graphs show read/write and random read/write operations throughput with block sizes 4k, 16k, and 2048k and 1, 2, 8 threads. The purpose of this test was to compare the performance of Docker containers with bare metal, so the Y axis is scaled such that 100% is the performance of bare metal MooseFS.
Appendix
Scripts
If you want to create your own Docker cluster, visit our repository: https://github.com/moosefs/moosefs-docker-cluster
Table 1: IOzone Test Results — Docker vs. Bare Metal
The table below shows IOzone test results with block sizes from 4 kB to 2048 kB and 1 to 16 threads.
| Block Size | Threads | Docker Write (MB/s) | Docker Read (MB/s) | Docker Rnd Write (MB/s) | Docker Rnd Read (MB/s) | BM Write (MB/s) | BM Read (MB/s) | BM Rnd Write (MB/s) | BM Rnd Read (MB/s) |
|---|---|---|---|---|---|---|---|---|---|
| 4k | 1 | 217 | 362 | 112 | 19 | 222 | 377 | 138 | 21 |
| 4k | 2 | 356 | 603 | 158 | 37 | 367 | 628 | 206 | 44 |
| 4k | 4 | 491 | 825 | 206 | 81 | 518 | 876 | 277 | 93 |
| 4k | 8 | 589 | 966 | 277 | 148 | 629 | 1047 | 318 | 179 |
| 4k | 16 | 641 | 974 | 314 | 235 | 684 | 1088 | 376 | 294 |
| 8k | 1 | 390 | 558 | 215 | 33 | 397 | 593 | 263 | 39 |
| 8k | 2 | 621 | 845 | 303 | 68 | 650 | 870 | 394 | 80 |
| 8k | 4 | 842 | 1055 | 386 | 149 | 907 | 1074 | 530 | 173 |
| 8k | 8 | 978 | 1129 | 503 | 276 | 1094 | 1185 | 606 | 329 |
| 8k | 16 | 1057 | 1141 | 589 | 443 | 1172 | 1196 | 701 | 549 |
| 16k | 1 | 635 | 730 | 392 | 51 | 681 | 757 | 464 | 73 |
| 16k | 2 | 1040 | 963 | 554 | 112 | 1088 | 994 | 692 | 156 |
| 16k | 4 | 1148 | 1116 | 679 | 240 | 1212 | 1153 | 1191 | 309 |
| 16k | 8 | 1150 | 1138 | 824 | 477 | 1209 | 1192 | 1151 | 571 |
| 16k | 16 | 1143 | 1142 | 978 | 779 | 1209 | 1197 | 1198 | 988 |
| 32k | 1 | 836 | 865 | 697 | 91 | 908 | 888 | 814 | 96 |
| 32k | 2 | 1146 | 1049 | 978 | 202 | 1210 | 1133 | 1204 | 233 |
| 32k | 4 | 1150 | 1124 | 1130 | 424 | 1209 | 1171 | 1215 | 496 |
| 32k | 8 | 1151 | 1138 | 1131 | 822 | 1208 | 1190 | 1205 | 947 |
| 32k | 16 | 1144 | 1142 | 1118 | 1143 | 1207 | 1199 | 1201 | 1202 |
| 64k | 1 | 1032 | 914 | 1133 | 160 | 1117 | 954 | 1205 | 171 |
| 64k | 2 | 1154 | 1069 | 1140 | 353 | 1209 | 1103 | 1207 | 365 |
| 64k | 4 | 1153 | 1123 | 1136 | 694 | 1214 | 1167 | 1211 | 676 |
| 64k | 8 | 1151 | 1137 | 1138 | 1142 | 1208 | 1194 | 1207 | 1188 |
| 64k | 16 | 1144 | 1142 | 1131 | 1146 | 1209 | 1199 | 1204 | 1206 |
| 128k | 1 | 1100 | 961 | 1131 | 272 | 1182 | 1019 | 1206 | 279 |
| 128k | 2 | 1148 | 1108 | 1139 | 548 | 1208 | 1116 | 1208 | 601 |
| 128k | 4 | 1154 | 1133 | 1137 | 990 | 1213 | 1180 | 1214 | 1098 |
| 128k | 8 | 1147 | 1138 | 1134 | 1146 | 1208 | 1186 | 1205 | 1207 |
| 128k | 16 | 1145 | 1141 | 1134 | 1146 | 1208 | 1197 | 1202 | 1206 |
| 256k | 1 | 1095 | 980 | 1132 | 299 | 1183 | 1013 | 1206 | 298 |
| 256k | 2 | 1160 | 1089 | 1138 | 572 | 1209 | 1151 | 1207 | 621 |
| 256k | 4 | 1156 | 1122 | 1136 | 1010 | 1218 | 1171 | 1213 | 1116 |
| 256k | 8 | 1151 | 1138 | 1133 | 1146 | 1208 | 1192 | 1208 | 1207 |
| 256k | 16 | 1145 | 1142 | 1137 | 1145 | 1208 | 1199 | 1205 | 1206 |
| 512k | 1 | 1103 | 964 | 1134 | 311 | 1183 | 1026 | 1204 | 310 |
| 512k | 2 | 1151 | 1102 | 1138 | 581 | 1209 | 1134 | 1213 | 630 |
| 512k | 4 | 1152 | 1134 | 1137 | 1030 | 1212 | 1177 | 1210 | 1130 |
| 512k | 8 | 1151 | 1137 | 1135 | 1146 | 1208 | 1193 | 1209 | 1207 |
| 512k | 16 | 1142 | 1142 | 1137 | 1146 | 1207 | 1199 | 1203 | 1205 |
| 1024k | 1 | 1106 | 947 | 1131 | 323 | 1184 | 1037 | 1205 | 313 |
| 1024k | 2 | 1145 | 1082 | 1143 | 583 | 1213 | 1121 | 1207 | 637 |
| 1024k | 4 | 1153 | 1129 | 1138 | 1029 | 1213 | 1182 | 1209 | 1127 |
| 1024k | 8 | 1151 | 1138 | 1134 | 1146 | 1207 | 1189 | 1209 | 1207 |
| 1024k | 16 | 1144 | 1141 | 1135 | 1145 | 1208 | 1198 | 1203 | 1205 |
| 2048k | 1 | 1101 | 968 | 1129 | 331 | 1180 | 1033 | 1206 | 314 |
| 2048k | 2 | 1147 | 1088 | 1137 | 591 | 1209 | 1123 | 1209 | 639 |
| 2048k | 4 | 1150 | 1132 | 1140 | 1032 | 1210 | 1166 | 1207 | 1130 |
| 2048k | 8 | 1149 | 1138 | 1136 | 1145 | 1205 | 1185 | 1209 | 1206 |
| 2048k | 16 | 1140 | 1142 | 1134 | 1144 | 1206 | 1198 | 1204 | 1205 |
If you want to download this article as PDF, please click here: MooseFS showcases good performance on Docker! (PDF)
See also what results MooseFS achieved during performance tests on InfiniBand Network.