{"id":36863672,"url":"https://github.com/wildcatdb/bench","last_synced_at":"2026-01-12T14:52:06.050Z","repository":{"id":298410198,"uuid":"992214746","full_name":"wildcatdb/bench","owner":"wildcatdb","description":"A research tool used to benchmark the Wildcat storage engine. ","archived":false,"fork":false,"pushed_at":"2025-06-19T00:37:27.000Z","size":74,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-19T01:31:51.810Z","etag":null,"topics":["benchmarking","database","lsmtree","storage-engine"],"latest_commit_sha":null,"homepage":"https://wildcatdb.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wildcatdb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-28T19:52:47.000Z","updated_at":"2025-06-19T00:37:31.000Z","dependencies_parsed_at":"2025-06-11T01:29:48.483Z","dependency_job_id":null,"html_url":"https://github.com/wildcatdb/bench","commit_stats":null,"previous_names":["wildcatdb/bench"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wildcatdb/bench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildcatdb%2Fbench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildcatdb%2Fbench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildcatdb%2Fbench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildcatdb%2Fbench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wildcatdb","download_url":"https://codeload.github.com/wildcatdb/bench/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wildcatdb%2Fbench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28340411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmarking","database","lsmtree","storage-engine"],"created_at":"2026-01-12T14:52:05.947Z","updated_at":"2026-01-12T14:52:06.025Z","avatar_url":"https://github.com/wildcatdb.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wildcat Bench\n\nA research tool used to benchmark the Wildcat storage engine.\n\n[Wildcat](https://github.com/wildcatdb/wildcat)\n\n## Features\n- Sequential/random reads and writes, iterators, concurrent operations\n- Adjust operations count, key/value sizes, thread count, and more\n- Latency percentiles (P50, P95, P99), throughput, error rates\n- Monitor benchmark progress with configurable intervals\n- View detailed database stats after each benchmark\n- Iterator full, range, and prefix iteration benchmarks\n\n## Quick Start\n\n```bash\n# Build the benchmark tool\ngo build -o wildcat_bench main.go\n\n# Run default benchmarks (recommended first run)\n./bench\n\n# Run specific benchmarks\n./bench -benchmarks=\"fillseq,readrandom\"\n\n# Run with custom parameters\n./wildcat_bench -num=50000 -threads=8 -key_size=32 -value_size=1024\n```\n\n## Benchmark Types\n\n### **Fill Operations**\n- **`fillseq`** - Sequential key insertion for baseline write performance\n- **`fillprefixed`** - Insert keys with common prefixes (user_, order_, product_, etc.)\n- **`fillrandom`** - Random key insertion testing hash-based access patterns\n\n### **Read Operations**\n- **`readseq`** - Sequential key reads for optimal cache behavior testing\n- **`readrandom`** - Random key reads simulating real-world access patterns\n- **`readmissing`** - Read non-existent keys to test bloom filter effectiveness\n\n### **Iterator Operations**\n- **`iterseq`** - Full database iteration testing sequential scan performance\n- **`iterrandom`** - Range iteration with random key ranges\n- **`iterprefix`** - Prefix-based iteration testing targeted queries\n\n### **Concurrent Operations**\n- **`concurrent_writers`** - Multiple threads writing independently\n- **`high_contention_writes`** - Threads competing for overlapping key ranges\n- **`batch_concurrent_writes`** - Batched operations with concurrent execution\n- **`concurrent_transactions`** - Manual transaction management under load\n- **`transaction_conflicts`** - Intentional conflict scenarios testing MVCC\n- **`concurrent_read_write`** - Mixed read/write workload (70/30 split)\n- **`heavy_contention`** - Extreme contention on very few keys\n\n### **Mixed Workloads**\n- **`readwhilewriting`** - Concurrent reads and writes\n- **`mixedworkload`** - Configurable read/write ratio\n\n## Configuration Options\n\n### Database Configuration\n```bash\n-db=\"/tmp/wildcat_bench\"              # Database directory path\n-write_buffer_size=67108864           # Write buffer size (64MB default)\n-sync=\"none\"                          # Sync option: none, partial, full\n-levels=7                             # Number of LSM levels\n-bloom_filter=true                    # Enable bloom filters\n-max_compaction_concurrency=4         # Max concurrent compactions\n```\n\n### Benchmark Parameters\n```bash\n-num=10000                           # Number of operations per benchmark\n-key_size=16                         # Key size in bytes\n-value_size=100                      # Value size in bytes\n-threads=16                          # Number of concurrent threads (uses all by default)\n-batch_size=1                        # Operations per batch/transaction\n```\n\n### Workload Configuration\n```bash\n-benchmarks=\"fillseq,readseq\"        # Comma-separated benchmark list\n-read_ratio=50                       # Read percentage for mixed workloads (0-100)\n-key_dist=\"sequential\"               # Key distribution: sequential, random, zipfian\n-existing_keys=0                     # Number of existing keys (0 = use num)\n```\n\n### Advanced Options\n```bash\n-report_interval=10s                 # Progress reporting interval\n-histogram=true                      # Show latency histograms\n-stats=true                          # Show database stats after each benchmark\n-use_txn=false                       # Use manual transactions vs Update/View\n-compressible=false                  # Generate compressible test data\n-seed=1234567890                     # Random seed for reproducible results\n-cleanup=true                        # Cleanup database after completion\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildcatdb%2Fbench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwildcatdb%2Fbench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwildcatdb%2Fbench/lists"}