----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/52669/#review151943 -----------------------------------------------------------
I don't think the micro-benchmarks show anything really. The error bars for the off-heap are generally larger than the values themselves! I imagine jmh is simply not the right tool for testing off-heap. I too though am interested in real-world feedback. - John Sirois On Oct. 9, 2016, 4:35 p.m., Stephan Erb wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/52669/ > ----------------------------------------------------------- > > (Updated Oct. 9, 2016, 4:35 p.m.) > > > Review request for Aurora, David McLaughlin, John Sirois, and Zameer Manji. > > > Repository: aurora > > > Description > ------- > > This experiment is inspired by David's comment: "I don’t think the > storage engine matters. We just need to be able to offload it from > the Scheduler JVM. The problem with H2 isn’t SQL or anything else, > it’s the GC pressure." > > Basic idea is to switch to another storage backend: "nioMemFS stores > data outside of the VM's heap - useful for large memory DBs without > incurring GC costs" (http://www.h2database.com/html/advanced.html) > > Our micro-benchmarks look promising > > Current Master (on-heap db): > > TaskStoreBenchmarks.DBFetchTasksBenchmark.run N/A > N/A N/A 10000 thrpt 5 83399.727 ± 13513.406 ops/s > TaskStoreBenchmarks.DBFetchTasksBenchmark.run N/A > N/A N/A 50000 thrpt 5 38674.517 ± 26893.133 ops/s > TaskStoreBenchmarks.DBFetchTasksBenchmark.run N/A > N/A N/A 100000 thrpt 5 0.080 ± 0.037 ops/s > TaskStoreBenchmarks.MemFetchTasksBenchmark.run N/A > N/A N/A 10000 thrpt 5 251.447 ± 234.791 ops/s > TaskStoreBenchmarks.MemFetchTasksBenchmark.run N/A > N/A N/A 50000 thrpt 5 49.090 ± 43.262 ops/s > TaskStoreBenchmarks.MemFetchTasksBenchmark.run N/A > N/A N/A 100000 thrpt 5 25.915 ± 11.143 ops/s > UpdateStoreBenchmarks.JobDetailsBenchmark.run N/A > 1000 N/A N/A thrpt 5 106.155 ± 62.439 ops/s > UpdateStoreBenchmarks.JobDetailsBenchmark.run N/A > 5000 N/A N/A thrpt 5 29.003 ± 24.196 ops/s > UpdateStoreBenchmarks.JobDetailsBenchmark.run N/A > 10000 N/A N/A thrpt 5 15.572 ± 8.836 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 1 > N/A N/A N/A thrpt 5 26.939 ± 25.415 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 10 > N/A N/A N/A thrpt 5 28.599 ± 26.182 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 100 > N/A N/A N/A thrpt 5 22.560 ± 9.864 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 1000 > N/A N/A N/A thrpt 5 17.537 ± 6.562 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 10 N/A thrpt 5 28.917 ± 12.473 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 100 N/A thrpt 5 23.867 ± 8.910 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 1000 N/A thrpt 5 25.711 ± 22.488 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 10000 N/A thrpt 5 11.045 ± 6.477 ops/s > > This patch (off-heap db): > > Benchmark (instanceOverrides) > (instances) (metadata) (numTasks) Mode Cnt Score Error Units > TaskStoreBenchmarks.DBFetchTasksBenchmark.run N/A > N/A N/A 10000 thrpt 5 81368.994 ± 32366.724 ops/s > TaskStoreBenchmarks.DBFetchTasksBenchmark.run N/A > N/A N/A 50000 thrpt 5 68668.801 ± 10404.233 ops/s > TaskStoreBenchmarks.DBFetchTasksBenchmark.run N/A > N/A N/A 100000 thrpt 5 24713.776 ± 43833.452 ops/s > TaskStoreBenchmarks.MemFetchTasksBenchmark.run N/A > N/A N/A 10000 thrpt 5 268.549 ± 301.280 ops/s > TaskStoreBenchmarks.MemFetchTasksBenchmark.run N/A > N/A N/A 50000 thrpt 5 50.502 ± 21.999 ops/s > TaskStoreBenchmarks.MemFetchTasksBenchmark.run N/A > N/A N/A 100000 thrpt 5 26.802 ± 19.717 ops/s > UpdateStoreBenchmarks.JobDetailsBenchmark.run N/A > 1000 N/A N/A thrpt 5 300.698 ± 420.377 ops/s > UpdateStoreBenchmarks.JobDetailsBenchmark.run N/A > 5000 N/A N/A thrpt 5 69.884 ± 75.162 ops/s > UpdateStoreBenchmarks.JobDetailsBenchmark.run N/A > 10000 N/A N/A thrpt 5 39.471 ± 27.366 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 1 > N/A N/A N/A thrpt 5 73.923 ± 119.519 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 10 > N/A N/A N/A thrpt 5 92.899 ± 70.455 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 100 > N/A N/A N/A thrpt 5 63.936 ± 46.243 ops/s > UpdateStoreBenchmarks.JobInstructionsBenchmark.run 1000 > N/A N/A N/A thrpt 5 38.806 ± 25.216 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 10 N/A thrpt 5 83.017 ± 72.351 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 100 N/A thrpt 5 72.640 ± 74.998 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 1000 N/A thrpt 5 72.037 ± 56.763 ops/s > UpdateStoreBenchmarks.JobUpdateMetadataBenchmark.run N/A > N/A 10000 N/A thrpt 5 31.657 ± 8.772 ops/s > > Please be aware: The values seen here will not really carry over to > real world usage. It would therefore be awesome if one of you could > test this on a larger cluster! > > > Diffs > ----- > > build.gradle 3cd083ccc72ed9dfb4adc491e9ab5a40d7762879 > src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java > e7287cec28e7b8ca978c506bfe821f261bc0ac26 > > Diff: https://reviews.apache.org/r/52669/diff/ > > > Testing > ------- > > ./gradlew build > ./gradlew jmh -Pbenchmarks='UpdateStoreBenchmarks.*|TaskStoreBenchmarks.*' > > > Thanks, > > Stephan Erb > >