Skip to content

Instantly share code, notes, and snippets.

@BohuTANG
Last active November 6, 2015 07:20
Show Gist options
  • Save BohuTANG/8818804aae6e6f04ea35 to your computer and use it in GitHub Desktop.
Save BohuTANG/8818804aae6e6f04ea35 to your computer and use it in GitHub Desktop.
Sophia, LMDB, nessDB ioarena benchmarks
https://github.com/BohuTANG/ioarena
Model Name: MacBook Air
Model Identifier: MacBookAir7,2
Processor Name: Intel Core i5
Memory: 8 GB
==================================1) small kv tests=================================
number of operations 20,000,000
operations set
key order random
key size 16 bytes
value size 32 bytes
LMDB:
[ t min, t max] ops count %
--------------------------------------------------
[ 0, 1] 19999476 100.00
[ 1, 2] 28 0.00
[ 2, 3] 5 0.00
[ 3, 4] 3 0.00
[ 4, 5] 3 0.00
[ 10, 12] 1 0.00
[ 25, 30] 3 0.00
[ 30, 35] 20 0.00
[ 35, 40] 35 0.00
[ 40, 45] 11 0.00
[ 45, 50] 3 0.00
[ 50, 60] 6 0.00
[ 60, 70] 5 0.00
[ 70, 80] 3 0.00
[ 80, 90] 4 0.00
[ 90, 100] 5 0.00
[ 100, 120] 16 0.00
[ 120, 140] 14 0.00
[ 140, 160] 16 0.00
[ 160, 180] 15 0.00
[ 180, 200] 8 0.00
[ 200, 250] 45 0.00
[ 250, 300] 54 0.00
[ 300, 350] 56 0.00
[ 350, 400] 113 0.00
[ 400, 450] 42 0.00
[ 450, 500] 3 0.00
[ 500, 600] 1 0.00
[ 600, 700] 1 0.00
[ 700, 800] 1 0.00
[ 800, 900] 2 0.00
[ 900, 1000] 2 0.00
--------------------------------------------------
total: 217339 msec 20000000 100%
min latency : 0.000000 * 1e-3 sec/op
avg latency : 0.010867 * 1e-3 sec/op
max latency : 951.329947 * 1e-3 sec/op
avg throughput : 92022 ops/sec
Sophia:
[ t min, t max] ops count %
--------------------------------------------------
[ 0, 1] 19998355 99.99
[ 1, 2] 807 0.00
[ 2, 3] 332 0.00
[ 3, 4] 149 0.00
[ 4, 5] 105 0.00
[ 5, 6] 56 0.00
[ 6, 7] 45 0.00
[ 7, 8] 41 0.00
[ 8, 9] 18 0.00
[ 9, 10] 12 0.00
[ 10, 12] 20 0.00
[ 12, 14] 14 0.00
[ 14, 16] 11 0.00
[ 16, 18] 6 0.00
[ 18, 20] 5 0.00
[ 20, 25] 7 0.00
[ 25, 30] 5 0.00
[ 30, 35] 6 0.00
[ 35, 40] 1 0.00
[ 40, 45] 2 0.00
[ 50, 60] 2 0.00
[ 100, 120] 1 0.00
--------------------------------------------------
total: 130662 msec 20000000 100%
min latency : 0.001907 * 1e-3 sec/op
avg latency : 0.006533 * 1e-3 sec/op
max latency : 115.455866 * 1e-3 sec/op
avg throughput : 153066 ops/sec
nessDB: (cache size: 512MB)
[ t min, t max] ops count %
--------------------------------------------------
[ 0, 1] 19998660 99.99
[ 1, 2] 176 0.00
[ 2, 3] 94 0.00
[ 3, 4] 87 0.00
[ 4, 5] 107 0.00
[ 5, 6] 79 0.00
[ 6, 7] 53 0.00
[ 7, 8] 43 0.00
[ 8, 9] 49 0.00
[ 9, 10] 89 0.00
[ 10, 12] 173 0.00
[ 12, 14] 118 0.00
[ 14, 16] 82 0.00
[ 16, 18] 59 0.00
[ 18, 20] 44 0.00
[ 20, 25] 59 0.00
[ 25, 30] 18 0.00
[ 30, 35] 9 0.00
[ 35, 40] 1 0.00
--------------------------------------------------
total: 59629 msec 20000000 100%
min latency : 0.000000 * 1e-3 sec/op
avg latency : 0.002981 * 1e-3 sec/op
max latency : 36.046982 * 1e-3 sec/op
avg throughput : 335407 ops/sec
==================================2) 1KB set tests=================================
number of operations 10,000,000
operations set
key order random
key size 128 bytes
value size 1024 bytes
LMDB:
[ t min, t max] ops count %
--------------------------------------------------
[ 0, 1] 9960176 99.60
[ 1, 2] 4391 0.04
[ 2, 3] 8308 0.08
[ 3, 4] 23820 0.24
[ 4, 5] 601 0.01
[ 5, 6] 356 0.00
[ 6, 7] 258 0.00
[ 7, 8] 159 0.00
[ 8, 9] 87 0.00
[ 9, 10] 36 0.00
[ 10, 12] 42 0.00
[ 12, 14] 16 0.00
[ 14, 16] 6 0.00
[ 16, 18] 3 0.00
[ 18, 20] 1 0.00
[ 20, 25] 2 0.00
[ 25, 30] 5 0.00
[ 30, 35] 1 0.00
[ 35, 40] 3 0.00
[ 60, 70] 1 0.00
[ 70, 80] 1 0.00
[ 80, 90] 1 0.00
[ 90, 100] 1 0.00
[ 100, 120] 1 0.00
[ 120, 140] 2 0.00
[ 140, 160] 2 0.00
[ 160, 180] 1 0.00
[ 180, 200] 5 0.00
[ 200, 250] 17 0.00
[ 250, 300] 15 0.00
[ 300, 350] 24 0.00
[ 350, 400] 38 0.00
[ 400, 450] 94 0.00
[ 450, 500] 111 0.00
[ 500, 600] 306 0.00
[ 600, 700] 717 0.01
[ 700, 800] 320 0.00
[ 800, 900] 51 0.00
[ 900, 1000] 14 0.00
[ 1000, 1200] 7 0.00
--------------------------------------------------
total: 2046133 msec 10000000 100%
min latency : 0.000000 * 1e-3 sec/op
avg latency : 0.204613 * 1e-3 sec/op
max latency : 1143.145084 * 1e-3 sec/op
avg throughput : 4887 ops/sec
nessDB:(cache size:512MB fanout:32 page size:16MB)
[ t min, t max] ops count %
--------------------------------------------------
[ 0, 1] 9995856 99.96
[ 1, 2] 2349 0.02
[ 2, 3] 769 0.01
[ 3, 4] 86 0.00
[ 4, 5] 19 0.00
[ 5, 6] 18 0.00
[ 6, 7] 11 0.00
[ 7, 8] 15 0.00
[ 8, 9] 21 0.00
[ 9, 10] 17 0.00
[ 10, 12] 38 0.00
[ 12, 14] 20 0.00
[ 14, 16] 12 0.00
[ 16, 18] 14 0.00
[ 18, 20] 21 0.00
[ 20, 25] 125 0.00
[ 25, 30] 119 0.00
[ 30, 35] 103 0.00
[ 35, 40] 107 0.00
[ 40, 45] 71 0.00
[ 45, 50] 54 0.00
[ 50, 60] 73 0.00
[ 60, 70] 19 0.00
[ 70, 80] 35 0.00
[ 80, 90] 6 0.00
[ 90, 100] 2 0.00
[ 100, 120] 12 0.00
[ 120, 140] 3 0.00
[ 140, 160] 2 0.00
[ 160, 180] 2 0.00
[ 180, 200] 1 0.00
--------------------------------------------------
total: 145004 msec 10000000 100%
min latency : 0.000000 * 1e-3 sec/op
avg latency : 0.014500 * 1e-3 sec/op
max latency : 195.000172 * 1e-3 sec/op
avg throughput : 68963 ops/sec
sophia:
[ t min, t max] ops count %
--------------------------------------------------
[ 0, 1] 9996288 99.96
[ 1, 2] 1612 0.02
[ 2, 3] 426 0.00
[ 3, 4] 255 0.00
[ 4, 5] 205 0.00
[ 5, 6] 166 0.00
[ 6, 7] 157 0.00
[ 7, 8] 123 0.00
[ 8, 9] 90 0.00
[ 9, 10] 93 0.00
[ 10, 12] 141 0.00
[ 12, 14] 93 0.00
[ 14, 16] 65 0.00
[ 16, 18] 66 0.00
[ 18, 20] 37 0.00
[ 20, 25] 64 0.00
[ 25, 30] 33 0.00
[ 30, 35] 16 0.00
[ 35, 40] 12 0.00
[ 40, 45] 11 0.00
[ 45, 50] 18 0.00
[ 50, 60] 11 0.00
[ 60, 70] 4 0.00
[ 70, 80] 5 0.00
[ 80, 90] 4 0.00
[ 90, 100] 1 0.00
[ 100, 120] 2 0.00
[ 140, 160] 1 0.00
[ 600, 700] 1 0.00
--------------------------------------------------
total: 132064 msec 10000000 100%
min latency : 0.002861 * 1e-3 sec/op
avg latency : 0.013206 * 1e-3 sec/op
max latency : 623.759031 * 1e-3 sec/op
avg throughput : 75721 ops/sec
@BohuTANG
Copy link
Author

BohuTANG commented Nov 6, 2015

'Much of that LMDB driver needs to be rewritten, it's not a realistic use at all.'
No, we just add these codes to ia_lmdb_set:

if ((i % 1000) == 0) {
            mdb_txn_commit(s->txn);
            rc = mdb_txn_begin(s->env, NULL, 0, &s->txn);
            if (rc != MDB_SUCCESS) {
                ia_log("error: mdb_txn_begin(): %d", rc);
                return -1;
            }
  }

It works as 10000 sets per transaction, but it still slow and then the tail gets really slow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment