diff --git a/performance/benchmarks/main/data.js b/performance/benchmarks/main/data.js index f263550..1436c9e 100644 --- a/performance/benchmarks/main/data.js +++ b/performance/benchmarks/main/data.js @@ -1,5 +1,5 @@ window.BENCHMARK_DATA = { - "lastUpdate": 1733992617665, + "lastUpdate": 1734078974671, "repoUrl": "https://github.com/slatedb/slatedb", "entries": { "src/bencher/benchmark-db.sh": [ @@ -490,6 +490,128 @@ window.BENCHMARK_DATA = { "unit": "ops/sec" } ] + }, + { + "commit": { + "author": { + "name": "Rohan", + "username": "rodesai", + "email": "desai.p.rohan@gmail.com" + }, + "committer": { + "name": "GitHub", + "username": "web-flow", + "email": "noreply@github.com" + }, + "id": "b9ebbd82e5fd5dd86a2b2aefe8069a9059981691", + "message": "tighten up error handling to prevent writer clients from blocking indefinitely (#373)\n\nThis patch tries to tighten up error handling to prevent writer clients\r\nfrom blocking indefinitely. Previously we could see:\r\n- a writer could pass the initial error check and then write to the in\r\nmemory table, and then block until the table is durable. meanwhile, the\r\nflush task could panic or become fenced and the writer would never be\r\nnotified.\r\n- a writer could block in the backpressure loop, which never clears\r\nbecause the compactor failed.\r\n\r\nThe approach here consists of the following changes:\r\n\r\nFirst, we add some utility types/fns:\r\n- `WriteOnceRegister` which represents a value that can be written once.\r\nLater writes are dropped. The type also supports waiting for a value to\r\nbe written to the register.\r\n- Utility methods for spawning monitored tasks and threads. A monitored\r\ntask or thread is spawned by another task/thread which waits on the\r\nresult of the monitored task/thread. Then, the monitor task/thread calls\r\na cleanup fn with the result.\r\n\r\nThe error field in DbImpl is removed and replaced with an error field of\r\ntype WriteOnceRegister in DbState. We had to move this to\r\nDbState so that we could get mutual exclusion between setting the error\r\nand creating a new writable table.\r\n\r\nThe flushed/durable notifications in the memtables are replaced with\r\nWriteOnceRegister.\r\n\r\nThe wal flush task, memtable flush task, and compactor all spawn using\r\nthe utitlity spawn methods, and also monitor the global error register.\r\nThey signal status to the monitor task/thread by returning their status.\r\nThe cleanup fn for the wal flush task sets the global error register,\r\nand the register in every wal table. The cleanup fn for the memtable\r\nflush task sets the global error register, and the register in every mem\r\ntable. The cleanup fn for the comapctor sets the global error register.", + "timestamp": "2024-12-12T22:47:34Z", + "url": "https://github.com/slatedb/slatedb/commit/b9ebbd82e5fd5dd86a2b2aefe8069a9059981691" + }, + "date": 1734078973947, + "tool": "customBiggerIsBetter", + "benches": [ + { + "name": "SlateDB 100% Puts 4 Threads - Puts/s", + "value": 18475.939, + "unit": "ops/sec" + }, + { + "name": "SlateDB 100% Puts 4 Threads - Gets/s", + "value": 0, + "unit": "ops/sec" + }, + { + "name": "SlateDB 100% Puts 1 Threads - Puts/s", + "value": 16532.1, + "unit": "ops/sec" + }, + { + "name": "SlateDB 100% Puts 1 Threads - Gets/s", + "value": 0, + "unit": "ops/sec" + }, + { + "name": "SlateDB 80% Puts 4 Threads - Puts/s", + "value": 17604.316, + "unit": "ops/sec" + }, + { + "name": "SlateDB 80% Puts 4 Threads - Gets/s", + "value": 4392.717, + "unit": "ops/sec" + }, + { + "name": "SlateDB 80% Puts 1 Threads - Puts/s", + "value": 16142.52, + "unit": "ops/sec" + }, + { + "name": "SlateDB 80% Puts 1 Threads - Gets/s", + "value": 4019.9, + "unit": "ops/sec" + }, + { + "name": "SlateDB 60% Puts 4 Threads - Puts/s", + "value": 18427.301, + "unit": "ops/sec" + }, + { + "name": "SlateDB 60% Puts 4 Threads - Gets/s", + "value": 12276.2, + "unit": "ops/sec" + }, + { + "name": "SlateDB 60% Puts 1 Threads - Puts/s", + "value": 12886.86, + "unit": "ops/sec" + }, + { + "name": "SlateDB 60% Puts 1 Threads - Gets/s", + "value": 8605.96, + "unit": "ops/sec" + }, + { + "name": "SlateDB 40% Puts 4 Threads - Puts/s", + "value": 16216.64, + "unit": "ops/sec" + }, + { + "name": "SlateDB 40% Puts 4 Threads - Gets/s", + "value": 24324.16, + "unit": "ops/sec" + }, + { + "name": "SlateDB 40% Puts 1 Threads - Puts/s", + "value": 9139.5, + "unit": "ops/sec" + }, + { + "name": "SlateDB 40% Puts 1 Threads - Gets/s", + "value": 13692.38, + "unit": "ops/sec" + }, + { + "name": "SlateDB 20% Puts 4 Threads - Puts/s", + "value": 10511.12, + "unit": "ops/sec" + }, + { + "name": "SlateDB 20% Puts 4 Threads - Gets/s", + "value": 42106.078, + "unit": "ops/sec" + }, + { + "name": "SlateDB 20% Puts 1 Threads - Puts/s", + "value": 5608.06, + "unit": "ops/sec" + }, + { + "name": "SlateDB 20% Puts 1 Threads - Gets/s", + "value": 22467.199, + "unit": "ops/sec" + } + ] } ] }