First look at performance comparison between InfluxDB IOx and VictoriaMetrics

VictoriaMetrics
4 min readNov 12, 2020

Yesterday, InfluxData released a new product called InfluxDB IOx written in Rust. That solution covers a few different cases compared to VictoriaMetrics but still can be used to store metrics. And as you know, we love to do benchmarks with other metrics storages (influx, scylla, timescale).

We’re always curious about new solutions and approaches in the world of time series, and IOx caught our eye. We were impressed with the product design and introduction. And we wanted to compare to our product, so we did the simplest billy benchmark (see more details here) on a single instance with the following specs: Intel(R) Core(TM) i5–8265U CPU @ 1.60GHz 4 CPU, 32GB RAM, 1TB SSD

It is effortless to use, and we encourage the reader to make the test as well.

The results are following:

Ingest performance — rows/sec (higher is better)

Starting from 1,005,343 rows/sec IOx ingesting performance dropped to 603,077 rows/sec and then remained stable/constant

VictoriaMetrics at start made 5,079,938 rows/sec and 3,9989,69 after two minutes.

Full log:

# run influxcargo build --release./target/release/influxdb_iox server# run billy./billy -startdate=2020-01-01 -enddate=2020-12-31 -startkey=1 -endkey=1000000 -sink='http://localhost:8080/api/v2/write?org=bechmark&bucket=bechmark' -format=influx -blocks-per-request=10# result2020/11/11 12:31:44 created 10054080 out of 527040000000 rows in 10.002 seconds at 1005254 rows/sec; instant speed 1005343 rows/sec2020/11/11 12:31:54 created 18763200 out of 527040000000 rows in 20.001 seconds at 938108 rows/sec; instant speed 870948 rows/sec2020/11/11 12:32:04 created 25005600 out of 527040000000 rows in 30.001 seconds at 833486 rows/sec; instant speed 624234 rows/sec2020/11/11 12:32:14 created 32875200 out of 527040000000 rows in 40.001 seconds at 821854 rows/sec; instant speed 786954 rows/sec2020/11/11 12:32:24 created 39204000 out of 527040000000 rows in 50.001 seconds at 784063 rows/sec; instant speed 632893 rows/sec2020/11/11 12:32:34 created 44896320 out of 527040000000 rows in 60.001 seconds at 748259 rows/sec; instant speed 569232 rows/sec2020/11/11 12:32:44 created 51537600 out of 527040000000 rows in 70.001 seconds at 736239 rows/sec; instant speed 664124 rows/sec2020/11/11 12:32:54 created 58377600 out of 527040000000 rows in 80.001 seconds at 729710 rows/sec; instant speed 683999 rows/sec2020/11/11 12:33:04 created 64861920 out of 527040000000 rows in 90.001 seconds at 720680 rows/sec; instant speed 648438 rows/sec2020/11/11 12:33:14 created 70876800 out of 527040000000 rows in 100.001 seconds at 708761 rows/sec; instant speed 601489 rows/sec2020/11/11 12:33:24 created 76982400 out of 527040000000 rows in 110.001 seconds at 699833 rows/sec; instant speed 610555 rows/sec2020/11/11 12:33:34 created 82932480 out of 527040000000 rows in 120.001 seconds at 691097 rows/sec; instant speed 595003 rows/sec2020/11/11 12:33:44 created 88963200 out of 527040000000 rows in 130.001 seconds at 684326 rows/sec; instant speed 603077 rows/sec

And for VictoriaMetrics:

# run victoriametrics./bin/victoria-metrics --retentionPeriod=500d# run billy./billy -startdate=2020-01-01 -enddate=2020-12-31 -startkey=1 -endkey=1000000 -sink=http://localhost:8428/api/v1/import2020/11/11 12:37:32 created 50821920 out of 527040000000 rows in 10.004 seconds at 5079936 rows/sec; instant speed 5079938 rows/sec2020/11/11 12:37:42 created 92841120 out of 527040000000 rows in 20.000 seconds at 4641954 rows/sec; instant speed 4203602 rows/sec2020/11/11 12:37:52 created 132791040 out of 527040000000 rows in 30.000 seconds at 4426322 rows/sec; instant speed 3995044 rows/sec2020/11/11 12:38:02 created 171005760 out of 527040000000 rows in 40.001 seconds at 4275069 rows/sec; instant speed 3821324 rows/sec2020/11/11 12:38:12 created 209540160 out of 527040000000 rows in 50.001 seconds at 4190725 rows/sec; instant speed 3853351 rows/sec2020/11/11 12:38:22 created 247803840 out of 527040000000 rows in 60.000 seconds at 4130045 rows/sec; instant speed 3826615 rows/sec2020/11/11 12:38:32 created 286214400 out of 527040000000 rows in 70.001 seconds at 4088719 rows/sec; instant speed 3840779 rows/sec2020/11/11 12:38:42 created 325438560 out of 527040000000 rows in 80.000 seconds at 4067981 rows/sec; instant speed 3922805 rows/sec2020/11/11 12:38:52 created 364176000 out of 527040000000 rows in 90.001 seconds at 4046351 rows/sec; instant speed 3873327 rows/sec2020/11/11 12:39:02 created 403832160 out of 527040000000 rows in 100.001 seconds at 4038301 rows/sec; instant speed 3965845 rows/sec2020/11/11 12:39:12 created 443011680 out of 527040000000 rows in 110.001 seconds at 4027347 rows/sec; instant speed 3917814 rows/sec2020/11/11 12:39:22 created 482889600 out of 527040000000 rows in 120.001 seconds at 4024048 rows/sec; instant speed 3987760 rows/sec2020/11/11 12:39:32 created 522882720 out of 527040000000 rows in 130.002 seconds at 4022119 rows/sec; instant speed 3998969 rows/sec

Number of datapoints

Number of ingested datapoints (higher is better)

As you can see, VictoriaMetrics, in the first 20 seconds, processed a larger number of datapoints compared to IOx in the whole 130 seconds of the benchmark.

Average speed:

Influx IOx — 684 330 rows/sec
VictoriaMetrics — 4 022 090 rows/sec

As you can see, VictoriaMetrics provides almost six times better ingestion performance — and that impressive result is for a single node. We expect even better performance in cluster comparison but can’t do a proper test, while cluster in influx is a paid feature.

Meanwhile, the cluster version of VictoriaMetrics is free and open-sourced. Please take a look at our site to find out more about VictoriaMetrics solution.

Upd. We got commentary from InfluxData that Influx IOx is in an early stage and not ready for benchmarks. We understand that this project is in the early stages, but we can’t help but try it ourselves. We hope to make a better comparison/evaluation once the product is ready.

--

--