-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: Storage
-
None
-
Product Performance
-
None
-
None
-
None
-
None
-
None
-
None
-
None
This covers read-write performance for the insert benchmark. Other issues are open for load performance (SERVER-32707) and full scan performance (SERVER-32711).
I will start with results from inMemory-16 (database in memory, 16 clients, 16 collections) and the test where each writer is limited to 100 inserts/second, there are 16 collections, 16 query clients and 16 writer clients with a query/writer pair per collection.
The first table has throughput and HW efficiency metrics:
- ips.av - average insert rate, the target is 1600 given the rate limits, but because of artifacts in my Python code the max is ~1584.
- qps.av - the average query rate
- wkb/i - KB written to storage per insert
- Mcpu/q - CPU overhead per query, alas this includes CPU used for queries and inserts
- size - database size in GB at test end
- rss - mysqld/mongod process size at test end in GB
- wmb/s - storage write MB/s
- cpu - average CPU utilization from vmstat us and sy columns
From these results:
- both engines sustain the target write rate
- InnoDB gets ~2.2X more QPS
- WiredTiger uses ~2.3X more CPU per query
ips.av qps.av wkb/i Mcpu/q size rss wmb/s cpu engine 1584 31386 36.09 1184 116 103.5 57.2 37.2 WiredTiger-3.6.0 1584 67772 42.50 518 113 121.9 67.3 35.1 InnoDB-5.7.17
The worst case response times are:
- WiredTiger : ~0.5 seconds for insert, ~0.38 seconds for query
- InnoDB: ~0.01 seconds for insert, ~0.009 seconds for query