So far at Torusware we have seen multiple examples of software accelerated by Speedus, such as Redis, ZeroMQ, Docker, etc… Every technology is unique and our current product portfolio, Speedus Extreme Performance and Speedus Lite, is quite successful accelerating applications whenever communications I/O is the main performance bottleneck. Accelerating applications is our passion, and our plans are towards developing a next generation of products, tailored to accelerate specific software, to provide even higher value to our users and clients.
Today we are happy to introduce the first of our next generation of products, Speedus-MongoDB, (now in beta release, available upon request at info@torusware.com). Speedus-MongoDB is able to increase significantly the performance of the most popular NoSQL Database, MongoDB, giving a boost to the intraserver communications between the MongoDB server and its clients. Speedus-MongoDB is totally non-intrusive and easy to use (see below instructions, with no changes neither to the code nor the configuration).
But, how do we test the performance of MongoDB? Using one of the most popular benchmark suite for NoSQL Databases, the Yahoo! Cloud Serving Benchmark (YCSB).
YCSB comes with 6 representative scenarios/workloads:
- Workload A – 50% read and 50% update operations
- Workload B – 95% read and 5% update operations
- Workload C – 100% read operations
- Workload D – 95% read and 5% insert operations
- Workload E – 95% scan and 5% insert operations
- Workload F – 50 % read and 50 readModifyWrite* operations
Moreover, YCSB allows to execute a workload with multiple client threads to measure the scalability of the server.
Now let’s choose a representative testbed. As MongoDB is quite popular in cloud services, Azure has been selected for running the test. Amongst all the instances of Azure, the Standard_DS14 instance has been selected (16 Xeon E5-2660 cores, 112GB RAM, 800GB SSD, Linux 3.16.0-23-generic x86_64 kernel).
Here you have an overview of the testbed:
Using Speedus-MongoDB is quite straightforward, just type speedus-mongodb before mongod command.
And type speedus-mongodb before the YCSB client, ycsb
As you can see, there is no change neither in the applications code nor in the way they are launched, just add speedus-mongodb before your actual command/script.
Results
Throughtput and Latency tables present the results without (Baseline) and with Speedus-MongoDB, for 1, 4, 8 and 16 YCSB client threads, and for the 6 YCSB workloads (A to F), as well as the percentage of improvement achieved by using Speedus-MongoDB over using MongoDB without Speedus-MongoDB.


THROUGHPUT (in operations per second) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
WORK LOAD |
1 Thread Client | 4 Thread Client | 8 Thread Client | 16 Thread Client | ||||||||
Baseline Results |
Speedus-MongoDB | Baseline Results |
Speedus-MongoDB | Baseline Results |
Speedus-MongoDB | Baseline Results |
Speedus-MongoDB | |||||
Value | Benefit % | Value | Benefit % | Value | Benefit % | Value | Benefit % | |||||
A | 2508.15 | 7344.3 | 192.8% | 5512.68 | 13594.34 | 146.6% | 6613.76 | 15537.6 | 134.9% | 6045.95 | 15503.88 | 156.4% |
B | 2737.48 | 9505.7 | 247.2% | 6501.95 | 20185.71 | 210.5% | 9661.84 | 27412.28 | 183.7% | 10787.49 | 28026.91 | 159.8% |
C | 4957.12 | 13607.29 | 174.5% | 11475.79 | 26427.06 | 130.3% | 17099.86 | 35752.59 | 109.1% | 19669.55 | 38182.51 | 94.1% |
D | 4838.87 | 12399.26 | 156.2% | 10166.73 | 21079.26 | 107.3% | 16469.04 | 30950.17 | 87.9% | 16286.64 | 32320.62 | 98.4% |
E | 1568.65 | 2463.3 | 57.0% | 3262 | 5504.79 | 68.8% | 4382.51 | 8773.47 | 100.2% | 5600.99 | 8580.01 | 53.2% |
F | 2955.96 | 7261.11 | 145.6% | 6672 | 12478.16 | 87.0% | 7125.55 | 14836.8 | 108.2% | 6827.8 | 14136.27 | 107.0% |
LATENCY (in microseconds) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
WORK LOAD |
1 Thread Client | 4 Thread Client | 8 Thread Client | 16 Thread Client | ||||||||
Baseline Results |
Speedus-MongoDB | Baseline Results |
Speedus-MongoDB | Baseline Results |
Speedus-MongoDB | Baseline Results |
Speedus-MongoDB | |||||
Value | Benefit % | Value | Benefit % | Value | Benefit % | Value | Benefit % | |||||
A | 363.71 | 124.12 | 65.9% | 644.36 | 269.56 | 58.2% | 1070.69 | 476.81 | 55.5% | 2383.39 | 973.19 | 59.2% |
B | 444.62 | 95.48 | 78.5% | 648.93 | 176.46 | 72.8% | 798.13 | 259.09 | 67.5% | 1682.4 | 513.17 | 69.5% |
C | 194.97 | 67.39 | 65.4% | 324.8 | 130.37 | 59.9% | 428.34 | 204.91 | 52.2% | 749.04 | 388.94 | 48.1% |
D | 304.54 | 83.37 | 72.6% | 422.15 | 168.9 | 60.0% | 578.56 | 281.26 | 51.4% | 923.5 | 592.24 | 35.9% |
E | 636.07 | 329.05 | 48.3% | 1199.17 | 568.86 | 52.6% | 1789.24 | 816.69 | 54.4% | 2794.21 | 1713.33 | 38.7% |
F | 307.57 | 127.07 | 58.7% | 546.56 | 256.98 | 53.0% | 1038.36 | 422.45 | 59.3% | 1708.51 | 896.51 | 47.5% |
Both tables show that Speedus-MongoDB improves significantly MongoDB performance, up to 3.5X the baseline throughput while showing at the same time lower latencies (up to 78% lower).
Furthermore, Speedus-MongoDB allows MongoDB to achieve generally more throughput with 4 threads client (even with 1 thread client for Workloads A and F) than MongoDB without Speedus-MongoDB with 16 threads, reducing the infrastructure needs significantly (up to an order or magnitude).
Final words
If you are looking for the highest MongoDB performance, Speedus-MongoDB is what you are looking for. Download for free at torusware.com