From 0a9e79416df03a9e0a3d2cf171cf90028a644d6d Mon Sep 17 00:00:00 2001 From: "Douglas B. Rumbaugh" Date: Mon, 15 Jan 2024 17:21:11 -0500 Subject: Benchmarking programs --- benchmarks/reconstruction_interference.cpp | 110 +++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 benchmarks/reconstruction_interference.cpp (limited to 'benchmarks/reconstruction_interference.cpp') diff --git a/benchmarks/reconstruction_interference.cpp b/benchmarks/reconstruction_interference.cpp new file mode 100644 index 0000000..a843c71 --- /dev/null +++ b/benchmarks/reconstruction_interference.cpp @@ -0,0 +1,110 @@ +/* + * + */ + +#define ENABLE_TIMER + +#include + +#include "framework/DynamicExtension.h" +#include "shard/ISAMTree.h" +#include "query/rangequery.h" +#include "framework/interface/Record.h" + +#include "psu-util/timer.h" + + +typedef de::Record Rec; +typedef de::ISAMTree ISAM; +typedef de::rq::Query Q; +typedef de::DynamicExtension Ext; + +void query_thread(Ext *extension, double selectivity, size_t k) { + TIMER_INIT(); + + size_t reccnt = extension->get_record_count(); + size_t range = reccnt * selectivity; + + auto q = new de::rq::Parms(); + + TIMER_START(); + for (int64_t i=0; ilower_bound = start; + q->upper_bound = start + range; + auto res = extension->query(q); + auto r = res.get(); + } + TIMER_STOP(); + auto query_lat = TIMER_RESULT(); + fprintf(stdout, "Q\t%ld\t%ld\t%ld\n", reccnt, query_lat, k); + delete q; +} + +Ext *build_structure(size_t n) { + auto extension = new Ext(1000, 10000, 2); + + size_t i=0; + Rec r; + do { + r.key = rand() % n; + r.value = i; + if (extension->insert(r)) { + i++; + } else { + _mm_pause(); + } + } while (i < n); + + extension->await_next_epoch(); + return extension; +} + +void query_benchmark(double selectivity, size_t k, Ext *extension) { + TIMER_INIT(); + + size_t query_thrd_cnt = 4; + std::vector thrds(query_thrd_cnt); + + TIMER_START(); + for (size_t i=0; iget_record_count(), query_lat, k, query_thrd_cnt); +} + +int main(int argc, char **argv) { + + /* the closeout routine takes _forever_ ... so we'll just leak the memory */ + size_t n = 10000000; + + size_t per_trial = 1000; + double selectivity = .001; + + /* build initial structure */ + auto extension = build_structure(n); + + /* benchmark queries w/o any interference from reconstructions */ + query_benchmark(selectivity, per_trial, extension); + + fprintf(stderr, "Running interference test...\n"); + + /* trigger a worst-case reconstruction and benchmark the queries */ + std::thread q_thrd(query_benchmark, selectivity, per_trial, extension); + auto s = extension->create_static_structure(); + fprintf(stderr, "Construction complete\n"); + q_thrd.join(); + + delete extension; + delete s; + + fflush(stderr); +} + -- cgit v1.2.3 From 38693c342558628c75e0ab0d23c32a95a499ed8b Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Fri, 19 Jan 2024 15:58:04 -0500 Subject: Initial rough-out of internal statistics tracker Need to figure out the best way to do the detailed tracking in a concurrent manner. I was thinking just an event log, with parsing routines for extracting statistics. But that'll be pretty slow. --- benchmarks/reconstruction_interference.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'benchmarks/reconstruction_interference.cpp') diff --git a/benchmarks/reconstruction_interference.cpp b/benchmarks/reconstruction_interference.cpp index a843c71..2fb1591 100644 --- a/benchmarks/reconstruction_interference.cpp +++ b/benchmarks/reconstruction_interference.cpp @@ -101,6 +101,8 @@ int main(int argc, char **argv) { auto s = extension->create_static_structure(); fprintf(stderr, "Construction complete\n"); q_thrd.join(); + + extension->print_scheduler_statistics(); delete extension; delete s; -- cgit v1.2.3 From 97ddc19c2f57d54df2fe791ddedcbaf62fd1922e Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 22 Jan 2024 10:42:40 -0500 Subject: Moved some benchmarks over to range count --- benchmarks/reconstruction_interference.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'benchmarks/reconstruction_interference.cpp') diff --git a/benchmarks/reconstruction_interference.cpp b/benchmarks/reconstruction_interference.cpp index 2fb1591..5cf364a 100644 --- a/benchmarks/reconstruction_interference.cpp +++ b/benchmarks/reconstruction_interference.cpp @@ -8,7 +8,7 @@ #include "framework/DynamicExtension.h" #include "shard/ISAMTree.h" -#include "query/rangequery.h" +#include "query/rangecount.h" #include "framework/interface/Record.h" #include "psu-util/timer.h" @@ -16,7 +16,7 @@ typedef de::Record Rec; typedef de::ISAMTree ISAM; -typedef de::rq::Query Q; +typedef de::rc::Query Q; typedef de::DynamicExtension Ext; void query_thread(Ext *extension, double selectivity, size_t k) { @@ -25,7 +25,7 @@ void query_thread(Ext *extension, double selectivity, size_t k) { size_t reccnt = extension->get_record_count(); size_t range = reccnt * selectivity; - auto q = new de::rq::Parms(); + auto q = new de::rc::Parms(); TIMER_START(); for (int64_t i=0; i Date: Mon, 22 Jan 2024 12:10:54 -0500 Subject: Adjusted recon_benchmark and properly shutdown FIFOScheduler --- benchmarks/reconstruction_interference.cpp | 36 ++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'benchmarks/reconstruction_interference.cpp') diff --git a/benchmarks/reconstruction_interference.cpp b/benchmarks/reconstruction_interference.cpp index 5cf364a..c4c8c1b 100644 --- a/benchmarks/reconstruction_interference.cpp +++ b/benchmarks/reconstruction_interference.cpp @@ -19,6 +19,8 @@ typedef de::ISAMTree ISAM; typedef de::rc::Query Q; typedef de::DynamicExtension Ext; +volatile std::atomic queries_done; + void query_thread(Ext *extension, double selectivity, size_t k) { TIMER_INIT(); @@ -60,10 +62,9 @@ Ext *build_structure(size_t n) { return extension; } -void query_benchmark(double selectivity, size_t k, Ext *extension) { +void query_benchmark(double selectivity, size_t k, Ext *extension, size_t query_thrd_cnt) { TIMER_INIT(); - size_t query_thrd_cnt = 4; std::vector thrds(query_thrd_cnt); TIMER_START(); @@ -78,6 +79,8 @@ void query_benchmark(double selectivity, size_t k, Ext *extension) { auto query_lat = TIMER_RESULT(); fprintf(stdout, "Q\t%ld\t%ld\t%ld\t%ld\n", extension->get_record_count(), query_lat, k, query_thrd_cnt); + + queries_done.store(true); } int main(int argc, char **argv) { @@ -91,21 +94,30 @@ int main(int argc, char **argv) { /* build initial structure */ auto extension = build_structure(n); - /* benchmark queries w/o any interference from reconstructions */ - query_benchmark(selectivity, per_trial, extension); + std::vector thread_counts = {8, 16, 32, 64, 128}; + + for (auto &threads : thread_counts) { + /* benchmark queries w/o any interference from reconstructions */ + query_benchmark(selectivity, per_trial, extension, threads); + + fprintf(stderr, "Running interference test...\n"); - fprintf(stderr, "Running interference test...\n"); + queries_done.store(false); + /* trigger a worst-case reconstruction and benchmark the queries */ - /* trigger a worst-case reconstruction and benchmark the queries */ - std::thread q_thrd(query_benchmark, selectivity, per_trial, extension); - auto s = extension->create_static_structure(); - fprintf(stderr, "Construction complete\n"); - q_thrd.join(); + std::thread q_thrd(query_benchmark, selectivity, per_trial, extension, threads); + + while (!queries_done.load()) { + auto s = extension->create_static_structure(); + delete s; + } + + fprintf(stderr, "Construction complete\n"); + q_thrd.join(); + } extension->print_scheduler_statistics(); - delete extension; - delete s; fflush(stderr); } -- cgit v1.2.3 From 2c5d549b3618b9ea72e6eece4cb4f3da5a6811a8 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Wed, 7 Feb 2024 13:42:34 -0500 Subject: Fully realized shard concept interface --- benchmarks/reconstruction_interference.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'benchmarks/reconstruction_interference.cpp') diff --git a/benchmarks/reconstruction_interference.cpp b/benchmarks/reconstruction_interference.cpp index c4c8c1b..57eb923 100644 --- a/benchmarks/reconstruction_interference.cpp +++ b/benchmarks/reconstruction_interference.cpp @@ -16,7 +16,7 @@ typedef de::Record Rec; typedef de::ISAMTree ISAM; -typedef de::rc::Query Q; +typedef de::rc::Query Q; typedef de::DynamicExtension Ext; volatile std::atomic queries_done; -- cgit v1.2.3