MinIO is a high-performance and highly scalable distributed object storage solution that runs directly on bare metal or as a Kubernetes-native plugin. Customers frequently cite MinIO’s industry-leading performance as the one of its most differentiated features. We recently added support for speedtest, an automated performance test, and wanted to share the news.
At MinIO, we’re focused on performance and simplicity. The new speedtest functionality gives storage admins the ability to enjoy both. With a single command, admins can run a distributed performance assessment of their entire MinIO cluster. Results can be used to track performance over time and proactively pinpoint potential problems before they grow into serious issues.
This post shows you how to conduct a quick performance assessment of your MinIO cluster using
mc admin speedtest or the MinIO Console.
Benefits of Speedtest
Applications access MinIO clusters via HTTP/S and an AWS S3-compatible RESTful API. We developed the open source WARP S3 benchmarking tool to measure GET and PUT performance from one or more clients to one or more hosts. While WARP is a complete benchmarking tool, in our quest for simplicity, we wanted to provide a straightforward tool that is easy to run and provides easy-to-interpret results quickly. We developed speedtest to streamline and automate performance testing so you can proactively identify potential troublespots before they cause bottlenecks.
To help you make the most of MinIO performance, we’ve put together a few resources. You can get started with reference hardware and recommended configuration, and learn how to plan and deploy MinIO in distributed mode to optimize performance.
How to Measure MinIO Cluster Performance
Let’s say you have a small MinIO cluster that’s available to applications and you want to verify that you’re getting optimal performance out of your object storage layer. This includes a quick check on your MinIO cluster’s overall health followed by running speedtest.
Speedtest runs PUTS, then GETS, then collects information and presents aggregated throughput results for a cluster.
1 Getting Cluster Status
Open a Terminal and use MinIO Client to run mc admin info to display information about a MinIO cluster or individual server. Replace /alias with the alias for the MinIO cluster you wish to test.
$ mc admin info min ● all-nodes-pool-0-0.all-nodes-hl.ns-1.svc.cluster.local:9000 Uptime: 2 days Version: 2021-11-09T03:21:45Z Network: 6/6 OK Drives: 10/10 OK ● all-nodes-pool-0-1.all-nodes-hl.ns-1.svc.cluster.local:9000 Uptime: 2 days Version: 2021-11-09T03:21:45Z Network: 6/6 OK Drives: 10/10 OK ● all-nodes-pool-0-2.all-nodes-hl.ns-1.svc.cluster.local:9000 Uptime: 2 days Version: 2021-11-09T03:21:45Z Network: 6/6 OK Drives: 10/10 OK ● all-nodes-pool-0-3.all-nodes-hl.ns-1.svc.cluster.local:9000 Uptime: 2 days Version: 2021-11-09T03:21:45Z Network: 6/6 OK Drives: 10/10 OK ● all-nodes-pool-0-4.all-nodes-hl.ns-1.svc.cluster.local:9000 Uptime: 2 days Version: 2021-11-09T03:21:45Z Network: 6/6 OK Drives: 10/10 OK ● all-nodes-pool-0-5.all-nodes-hl.ns-1.svc.cluster.local:9000 Uptime: 2 days Version: 2021-11-09T03:21:45Z Network: 6/6 OK Drives: 10/10 OK 60 drives online, 0 drives offline
We see that our cluster servers and drives are fully operational.
2 Running Speedtest from MC
Run speedtest in autotune mode. Speedtest runs, incrementally increasing load to pinpoint maximum aggregate throughput.
$ mc admin speedtest /alias
The test will run and present results on screen. The test may take anywhere from a few seconds to several minutes to execute depending on your MinIO cluster. The flag -v indicates verbose mode.
⠴ Running speedtest (With 64 MiB object size, 32 concurrency) PUT: 16 GiB/s GET: 30 GiB/s ⠼ Running speedtest (With 64 MiB object size, 48 concurrency) PUT: 16 GiB/s GET: 36 GiB/s ⠴ Running speedtest (With 64 MiB object size, 72 concurrency) PUT: 16 GiB/s GET: 51 GiB/s ⠧ Running speedtest (With 64 MiB object size, 108 concurrency) PUT: 17 GiB/s GET: 53 GiB/s ⠇ Running speedtest (With 64 MiB object size, 162 concurrency) PUT: 17 GiB/s GET: 53 GiB/s MinIO 2021-11-09T03:21:45Z, 6 servers, 60 drives PUT: 17 GiB/s, 276 objs/s * https://all-nodes-pool-0-0.all-nodes-hl.ns-1.svc.cluster.local:9000: 2.9 GiB/s 46 objs/s * https://all-nodes-pool-0-1.all-nodes-hl.ns-1.svc.cluster.local:9000: 2.7 GiB/s 43 objs/s * https://all-nodes-pool-0-2.all-nodes-hl.ns-1.svc.cluster.local:9000: 3.1 GiB/s 48 objs/s * https://all-nodes-pool-0-3.all-nodes-hl.ns-1.svc.cluster.local:9000: 2.8 GiB/s 45 objs/s * https://all-nodes-pool-0-4.all-nodes-hl.ns-1.svc.cluster.local:9000: 2.7 GiB/s 43 objs/s * https://all-nodes-pool-0-5.all-nodes-hl.ns-1.svc.cluster.local:9000: 3.1 GiB/s 49 objs/s GET: 53 GiB/s, 855 objs/s * https://all-nodes-pool-0-0.all-nodes-hl.ns-1.svc.cluster.local:9000: 9.3 GiB/s 148 objs/s * https://all-nodes-pool-0-1.all-nodes-hl.ns-1.svc.cluster.local:9000: 9.1 GiB/s 146 objs/s * https://all-nodes-pool-0-2.all-nodes-hl.ns-1.svc.cluster.local:9000: 8.2 GiB/s 130 objs/s * https://all-nodes-pool-0-3.all-nodes-hl.ns-1.svc.cluster.local:9000: 8.2 GiB/s 131 objs/s * https://all-nodes-pool-0-4.all-nodes-hl.ns-1.svc.cluster.local:9000: 9.7 GiB/s 155 objs/s * https://all-nodes-pool-0-5.all-nodes-hl.ns-1.svc.cluster.local:9000: 9.0 GiB/s 143 objs/s
Running Speedtest in MinIO Console
Navigate to the Tools menu and click on the Speedtest tile.
Click Start to run a test. Autotune is enabled by default and will report the maximum results obtained by testing with multiple configurations of duration, object size and number of concurrent requests.
To customize tests, click Show advanced settings and click the box to disable Autotune. Then configure the duration, object size and number of concurrent requests and then click Start.
Speedtest results are displayed for the entire cluster as well as for individual nodes.
It’s Test Time!
We’re dedicated to building high-performance object storage and providing the tools you need to keep it running in top shape. Now you can assess cluster performance with one command.
You don’t have to be a performance expert to get the most out of MinIO. Companies that subscribe to SUBNET can share results with us to have them reviewed by MinIO engineers. SUBNET combines a commercial license (important for the AGPLv3 obligations) with a unique support model that delivers 24/7/365 direct-to-engineer support through a MinIO-built portal that blends the best of Slack and Zendesk into an issue-resolving machine. Speedtest can be run in conjunction with SUBNET Health, an automated troubleshooting tool that runs dozens of checks on your MinIO instance to ensure it is running properly.
You can try this out by downloading MinIO. If you’d like to know more or have any questions, join our Slack Channel or drop us a note at email@example.com.