Towards our objective of accelerating applications and developing products adapted to specific customer needs, Speedus-MongoDB, tailored MongoDB acceleration, was presented in a previous post. Remember, this product, first of our next generation of solutions, is now in beta release, available for free download at 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 fully non-intrusive and easy to use (see instructions below, 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, Amazon has been selected for running the test. Amongst all the instances of Amazon, the c3.8xlarge instance has been selected (Amazon Linux AMI 2015.03, Xeon E5-2680 v2).
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 | 6658.68 | 10768.9 | 61.70% | 16539.86 | 20781.38 | 25.60% | 20772.75 | 22563.18 | 8.60% | 22361.36 | 24473.81 | 9.40% |
B | 7755.55 | 14845.61 | 91.40% | 20153.16 | 30998.14 | 53.80% | 27593.82 | 34364.26 | 24.50% | 31172.07 | 37850.11 | 21.40% |
C | 8949.35 | 17908.31 | 100.10% | 21249.47 | 31766.2 | 49.50% | 27917.36 | 35945.36 | 28.80% | 31766.2 | 37678.98 | 18.60% |
D | 8329.17 | 15489.47 | 86.00% | 20508.61 | 30376.67 | 48.10% | 27159.15 | 34223.13 | 26.00% | 31230.48 | 37792.89 | 21.00% |
E | 2489.30 | 3059.79 | 22.90% | 7031.36 | 7167.43 | 1.90% | 8315.32 | 8441.67 | 1.50% | 8427.44 | 9498.48 | 12.70% |
F | 5410.08 | 10193.68 | 88.40% | 13462.57 | 17445.92 | 29.60% | 16265.45 | 21213.41 | 30.40% | 18740.63 | 21070.38 | 12.40% |
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 | 141.38 | 84.44 | -40.30% | 226.77 | 176.64 | -22.10% | 363.95 | 331.42 | -8.90% | 680.78 | 618.79 | -9.10% |
B | 121.67 | 60.48 | -50.30% | 185.38 | 115.08 | -37.90% | 269.79 | 206.82 | -23.30% | 479.52 | 386.79 | -19.30% |
C | 104.94 | 49.16 | -53.20% | 173.9 | 108.08 | -37.90% | 264.21 | 197.46 | -25.30% | 468.14 | 389.84 | -16.70% |
D | 113.27 | 57.96 | -48.80% | 181.82 | 118.07 | -35.10% | 274.26 | 209.78 | -23.50% | 479.55 | 385.72 | -19.60% |
E | 394.72 | 319.68 | -48.80% | 556.05 | 541.42 | -2.60% | 941.47 | 924.37 | -1.80% | 1863.79 | 1644.23 | -11.80% |
F | 151.21 | 78.03 | -48.40% | 240.09 | 181.71 | -24.30% | 396.43 | 296.46 | -25.20% | 684.21 | 612.09 | -10.50% |
Both tables show that Speedus-MongoDB improves significantly MongoDB performance, up to 2X the baseline throughput while showing at the same time lower latencies (up to 53% lower).
Furthermore, Speedus-MongoDB allows MongoDB to achieve generally more throughput with 8 threads client than MongoDB without Speedus-MongoDB with 16 threads, reducing the infrastructure needs significantly and halving the response time.
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.