Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Emulated etcd version #211

Closed
wants to merge 8 commits into from
Closed

Conversation

louiseschmidtgen
Copy link
Contributor

@louiseschmidtgen louiseschmidtgen commented Dec 5, 2024

Emulated etcd version

Support for etcd version check that evaluates whether RequestWatchProgress is supported by the current version of etcd endpoint from status request: https://github.com/kubernetes/kubernetes/blob/beb696c2c9467dbc44cbaf35c5a4a3daf0321db3/staging/src/k8s.io/apiserver/pkg/storage/feature/feature_support_checker.go#L157

Affected upstream k8s features: ConsistentListFromCache, WatchList.

Backport of k3s-io/kine#316.

This PR defines an emulated etcd version that signifies the RequestWatchProgress is not yet supported. Only once k8s-dqlite supports WatchProgressRequests we can bump the version to signal the feature's support.

Tested with 1.32 rc: https://github.com/canonical/k8s-dqlite/actions/runs/12237343236

@louiseschmidtgen louiseschmidtgen requested a review from a team as a code owner December 5, 2024 10:11
Copy link
Contributor

@bschimke95 bschimke95 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly LGTM, minor nit

.github/workflows/k8s-snap-integration.yaml Outdated Show resolved Hide resolved
Copy link

github-actions bot commented Dec 5, 2024

Benchmark

Results
goos: linux
goarch: amd64
pkg: github.com/canonical/k8s-dqlite/test
cpu: AMD EPYC 7763 64-Core Processor                
                                        │     Before     │                 After                 │
                                        │     sec/op     │     sec/op      vs base               │
Compaction/sqlite-4                        19.33µ ±   4%    19.47µ ±   7%        ~ (p=1.000 n=7)
Compaction/dqlite-4                        40.97µ ±   4%    40.49µ ±   9%        ~ (p=0.902 n=7)
Create/sqlite/1-workers-4                  530.3µ ±   6%    517.1µ ±   5%        ~ (p=0.165 n=7)
Create/sqlite/4-workers-4                  478.3µ ±  12%    474.4µ ±  12%        ~ (p=0.902 n=7)
Create/sqlite/16-workers-4                 432.3µ ±  16%    424.9µ ±  13%        ~ (p=0.805 n=7)
Create/sqlite/64-workers-4                 451.7µ ±   9%    411.3µ ±  40%        ~ (p=0.097 n=7)
Create/sqlite/128-workers-4                558.8µ ±  48%    595.5µ ±  34%        ~ (p=0.620 n=7)
Create/dqlite/1-workers-4                  1.197m ±  20%    1.141m ±   6%        ~ (p=0.710 n=7)
Create/dqlite/4-workers-4                  1.026m ±  14%    1.000m ±   6%        ~ (p=0.259 n=7)
Create/dqlite/16-workers-4                1104.0µ ±   4%    951.8µ ±  15%  -13.79% (p=0.001 n=7)
Create/dqlite/64-workers-4                 859.2µ ±  11%    965.1µ ±   5%  +12.32% (p=0.004 n=7)
Create/dqlite/128-workers-4               1114.2µ ±   8%    953.5µ ±   7%  -14.42% (p=0.001 n=7)
Delete/sqlite/1-workers-4                  515.6µ ±  17%    508.7µ ±   8%        ~ (p=0.456 n=7)
Delete/sqlite/4-workers-4                  471.2µ ±  12%    478.9µ ±   8%        ~ (p=0.710 n=7)
Delete/sqlite/16-workers-4                 443.3µ ±   9%    431.8µ ±   6%        ~ (p=0.535 n=7)
Delete/sqlite/64-workers-4                 439.0µ ± 171%    409.7µ ±  54%        ~ (p=0.259 n=7)
Delete/sqlite/128-workers-4                532.3µ ± 204%    480.5µ ±  49%        ~ (p=0.209 n=7)
Delete/dqlite/1-workers-4                  1.257m ±  12%    1.149m ±   5%   -8.58% (p=0.011 n=7)
Delete/dqlite/4-workers-4                 1077.1µ ±   6%    983.0µ ±   2%   -8.73% (p=0.001 n=7)
Delete/dqlite/16-workers-4                1114.3µ ±   9%    977.7µ ±   7%  -12.26% (p=0.001 n=7)
Delete/dqlite/64-workers-4                 1.146m ±   5%    1.006m ±   2%  -12.16% (p=0.001 n=7)
Delete/dqlite/128-workers-4                1.047m ±  10%    1.006m ±   5%        ~ (p=0.209 n=7)
Get/sqlite-4                               226.8µ ±   1%    225.7µ ±   4%        ~ (p=0.535 n=7)
Get/dqlite-4                               338.3µ ±   2%    337.4µ ±   1%        ~ (p=0.710 n=7)
List/sqlite-tiny/all-4                     3.710µ ±   3%    3.658µ ±   1%        ~ (p=0.097 n=7)
List/sqlite-tiny/pagination-4              6.028µ ±   3%    6.069µ ±   4%        ~ (p=0.535 n=7)
List/sqlite-fits-in-page/all-4             6.981µ ±   2%    6.768µ ±   7%        ~ (p=0.383 n=7)
List/sqlite-fits-in-page/pagination-4      17.10µ ±   7%    16.96µ ±   8%        ~ (p=0.620 n=7)
List/sqlite-overflows-page/all-4           16.12µ ±   5%    16.93µ ±   5%   +5.02% (p=0.017 n=7)
List/sqlite-overflows-page/pagination-4    20.70µ ±   4%    20.17µ ±   4%        ~ (p=0.128 n=7)
List/dqlite-tiny/all-4                     2.485µ ±   2%    2.479µ ±   3%        ~ (p=0.685 n=7)
List/dqlite-tiny/pagination-4              4.782µ ±   2%    4.715µ ±   1%        ~ (p=0.068 n=7)
List/dqlite-fits-in-page/all-4             6.289µ ±   7%    6.476µ ±   5%        ~ (p=0.209 n=7)
List/dqlite-fits-in-page/pagination-4      13.64µ ±   4%    13.53µ ±   2%        ~ (p=0.710 n=7)
List/dqlite-overflows-page/all-4           20.61µ ±   4%    21.14µ ±   3%        ~ (p=0.073 n=7)
List/dqlite-overflows-page/pagination-4    25.16µ ±   2%    25.44µ ±   3%        ~ (p=0.318 n=7)
Update/sqlite/1-workers-4                  499.8µ ±   3%    590.6µ ±   6%  +18.18% (p=0.001 n=7)
Update/sqlite/4-workers-4                  464.0µ ±   6%    517.4µ ±   6%  +11.52% (p=0.001 n=7)
Update/sqlite/16-workers-4                 441.0µ ±   6%    421.6µ ±   9%        ~ (p=0.259 n=7)
Update/sqlite/64-workers-4                 449.4µ ±  65%    460.9µ ± 105%        ~ (p=0.620 n=7)
Update/sqlite/128-workers-4                560.6µ ± 771%    797.2µ ±  96%        ~ (p=0.805 n=7)
Update/dqlite/1-workers-4                  1.044m ±   3%    1.182m ±  12%  +13.22% (p=0.001 n=7)
Update/dqlite/4-workers-4                  910.4µ ±   4%   1069.3µ ±  13%  +17.45% (p=0.001 n=7)
Update/dqlite/16-workers-4                 921.7µ ±   2%   1175.5µ ±  15%  +27.53% (p=0.001 n=7)
Update/dqlite/64-workers-4                 968.3µ ±   4%   1097.1µ ±   6%  +13.30% (p=0.001 n=7)
Update/dqlite/128-workers-4                962.9µ ±   6%   1132.2µ ±   5%  +17.58% (p=0.001 n=7)
geomean                                    191.6µ           193.3µ          +0.90%

                                        │        Before        │                    After                     │
                                        │ page-cache-misses/op │ page-cache-misses/op  vs base                │
Compaction/sqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Compaction/dqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/sqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/dqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
geomean                                                      ²                         +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │        Before        │                    After                     │
                                        │ page-cache-spills/op │ page-cache-spills/op  vs base                │
Compaction/sqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Compaction/dqlite-4                               0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Create/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/sqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/dqlite-4                                      0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                            0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4                     0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4                    0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4                  0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4           0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/1-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/4-workers-4                         0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/16-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/64-workers-4                        0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/dqlite/128-workers-4                       0.000 ± 0%               0.000 ± 0%       ~ (p=1.000 n=7) ¹
geomean                                                      ²                         +0.00%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │    Before     │                After                │
                                        │ page-reads/op │ page-reads/op  vs base              │
Compaction/sqlite-4                         12.22 ±  1%     12.37 ±  1%  +1.23% (p=0.016 n=7)
Compaction/dqlite-4                         12.18 ±  1%     12.21 ±  1%       ~ (p=0.374 n=7)
Create/sqlite/1-workers-4                   13.86 ±  0%     13.85 ±  0%       ~ (p=0.969 n=7)
Create/sqlite/4-workers-4                   12.75 ±  3%     12.71 ±  4%       ~ (p=0.710 n=7)
Create/sqlite/16-workers-4                  10.57 ±  8%     10.86 ±  5%       ~ (p=0.209 n=7)
Create/sqlite/64-workers-4                  8.647 ±  4%     8.775 ± 10%       ~ (p=0.209 n=7)
Create/sqlite/128-workers-4                 8.297 ±  4%     8.198 ±  6%       ~ (p=0.902 n=7)
Create/dqlite/1-workers-4                   13.31 ±  2%     13.17 ±  2%       ~ (p=0.053 n=7)
Create/dqlite/4-workers-4                   10.80 ±  2%     10.82 ±  1%       ~ (p=0.559 n=7)
Create/dqlite/16-workers-4                  10.71 ±  2%     10.97 ±  2%  +2.43% (p=0.013 n=7)
Create/dqlite/64-workers-4                  10.87 ±  1%     10.90 ±  1%       ~ (p=0.401 n=7)
Create/dqlite/128-workers-4                 10.87 ±  3%     10.96 ±  1%       ~ (p=0.318 n=7)
Delete/sqlite/1-workers-4                   16.22 ±  0%     16.23 ±  0%       ~ (p=0.883 n=7)
Delete/sqlite/4-workers-4                   14.62 ±  5%     14.75 ±  3%       ~ (p=0.902 n=7)
Delete/sqlite/16-workers-4                  12.05 ±  4%     12.08 ±  5%       ~ (p=1.000 n=7)
Delete/sqlite/64-workers-4                  9.764 ± 10%     9.787 ±  4%       ~ (p=1.000 n=7)
Delete/sqlite/128-workers-4                 9.141 ±  4%     9.214 ±  3%       ~ (p=1.000 n=7)
Delete/dqlite/1-workers-4                   15.63 ±  1%     15.58 ±  1%  -0.32% (p=0.029 n=7)
Delete/dqlite/4-workers-4                   13.35 ±  1%     13.40 ±  1%       ~ (p=0.390 n=7)
Delete/dqlite/16-workers-4                  13.35 ±  2%     13.36 ±  1%       ~ (p=0.687 n=7)
Delete/dqlite/64-workers-4                  13.22 ±  2%     13.26 ±  1%       ~ (p=0.557 n=7)
Delete/dqlite/128-workers-4                 13.20 ±  1%     13.15 ±  1%  -0.38% (p=0.033 n=7)
Get/sqlite-4                                14.97 ±  0%     14.96 ±  0%       ~ (p=0.388 n=7)
Get/dqlite-4                                11.96 ±  0%     11.97 ±  0%       ~ (p=0.057 n=7)
List/sqlite-tiny/all-4                     191.9m ±  0%    191.9m ±  0%       ~ (p=1.000 n=7)
List/sqlite-tiny/pagination-4               1.126 ±  3%     1.126 ±  0%       ~ (p=0.449 n=7)
List/sqlite-fits-in-page/all-4             163.8m ± 58%    164.1m ± 58%       ~ (p=0.872 n=7)
List/sqlite-fits-in-page/pagination-4      959.4m ±  3%    958.9m ±  3%       ~ (p=0.976 n=7)
List/sqlite-overflows-page/all-4           177.2m ±  0%    177.2m ±  0%       ~ (p=1.000 n=7)
List/sqlite-overflows-page/pagination-4     1.065 ±  3%     1.065 ±  0%       ~ (p=1.000 n=7)
List/dqlite-tiny/all-4                     190.8m ±  0%    190.8m ±  0%       ~ (p=0.865 n=7)
List/dqlite-tiny/pagination-4               1.126 ±  3%     1.126 ±  3%       ~ (p=1.000 n=7)
List/dqlite-fits-in-page/all-4             164.5m ± 58%    164.6m ±  0%       ~ (p=0.682 n=7)
List/dqlite-fits-in-page/pagination-4      955.0m ±  3%    955.6m ±  3%       ~ (p=0.257 n=7)
List/dqlite-overflows-page/all-4           184.3m ±  0%    184.9m ±  4%  +0.33% (p=0.004 n=7)
List/dqlite-overflows-page/pagination-4     1.086 ±  4%     1.109 ±  6%       ~ (p=0.435 n=7)
Update/sqlite/1-workers-4                   15.80 ±  0%     15.71 ±  1%  -0.57% (p=0.023 n=7)
Update/sqlite/4-workers-4                   14.77 ±  3%     14.65 ±  3%       ~ (p=0.245 n=7)
Update/sqlite/16-workers-4                  12.68 ±  3%     12.47 ±  4%       ~ (p=0.067 n=7)
Update/sqlite/64-workers-4                  10.68 ±  5%     10.91 ±  5%       ~ (p=0.301 n=7)
Update/sqlite/128-workers-4                 10.18 ± 43%     10.06 ±  6%       ~ (p=0.876 n=7)
Update/dqlite/1-workers-4                   15.21 ±  1%     15.14 ±  2%       ~ (p=0.779 n=7)
Update/dqlite/4-workers-4                   12.87 ±  1%     12.79 ±  1%       ~ (p=0.074 n=7)
Update/dqlite/16-workers-4                  12.85 ±  3%     12.73 ±  1%       ~ (p=0.090 n=7)
Update/dqlite/64-workers-4                  12.68 ±  1%     12.59 ±  1%  -0.71% (p=0.020 n=7)
Update/dqlite/128-workers-4                 12.61 ±  3%     12.53 ±  2%       ~ (p=0.333 n=7)
geomean                                     5.127           5.134        +0.13%

                                        │     Before     │                 After                  │
                                        │ page-writes/op │ page-writes/op  vs base                │
Compaction/sqlite-4                        190.6m ± 1%        191.2m ± 1%       ~ (p=0.079 n=7)
Compaction/dqlite-4                        187.6m ± 0%        187.5m ± 1%       ~ (p=0.741 n=7)
Create/sqlite/1-workers-4                   4.354 ± 0%         4.356 ± 0%       ~ (p=0.591 n=7)
Create/sqlite/4-workers-4                   4.321 ± 0%         4.334 ± 1%       ~ (p=0.175 n=7)
Create/sqlite/16-workers-4                  4.297 ± 1%         4.290 ± 1%       ~ (p=0.781 n=7)
Create/sqlite/64-workers-4                  4.269 ± 1%         4.276 ± 1%       ~ (p=0.778 n=7)
Create/sqlite/128-workers-4                 4.237 ± 2%         4.230 ± 1%       ~ (p=0.198 n=7)
Create/dqlite/1-workers-4                   4.282 ± 3%         4.243 ± 2%       ~ (p=0.433 n=7)
Create/dqlite/4-workers-4                   4.242 ± 2%         4.269 ± 1%       ~ (p=0.220 n=7)
Create/dqlite/16-workers-4                  4.241 ± 2%         4.282 ± 1%  +0.97% (p=0.010 n=7)
Create/dqlite/64-workers-4                  4.306 ± 3%         4.282 ± 0%       ~ (p=0.155 n=7)
Create/dqlite/128-workers-4                 4.251 ± 2%         4.287 ± 1%  +0.85% (p=0.024 n=7)
Delete/sqlite/1-workers-4                   4.389 ± 0%         4.390 ± 0%       ~ (p=0.876 n=7)
Delete/sqlite/4-workers-4                   4.397 ± 1%         4.385 ± 1%       ~ (p=0.245 n=7)
Delete/sqlite/16-workers-4                  4.362 ± 1%         4.360 ± 1%       ~ (p=0.512 n=7)
Delete/sqlite/64-workers-4                  4.371 ± 2%         4.353 ± 1%       ~ (p=1.000 n=7)
Delete/sqlite/128-workers-4                 4.331 ± 2%         4.365 ± 1%  +0.79% (p=0.040 n=7)
Delete/dqlite/1-workers-4                   4.359 ± 1%         4.372 ± 1%       ~ (p=0.258 n=7)
Delete/dqlite/4-workers-4                   4.366 ± 1%         4.384 ± 1%       ~ (p=0.068 n=7)
Delete/dqlite/16-workers-4                  4.372 ± 0%         4.375 ± 1%       ~ (p=1.000 n=7)
Delete/dqlite/64-workers-4                  4.333 ± 1%         4.360 ± 0%       ~ (p=0.245 n=7)
Delete/dqlite/128-workers-4                 4.351 ± 1%         4.351 ± 1%       ~ (p=0.741 n=7)
Get/sqlite-4                                0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
Get/dqlite-4                                0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                      0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4               0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4              0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4       0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4            0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4     0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                      0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4               0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4              0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4       0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4            0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4     0.000 ± 0%         0.000 ± 0%       ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                   4.231 ± 0%         4.228 ± 0%       ~ (p=0.195 n=7)
Update/sqlite/4-workers-4                   4.311 ± 1%         4.308 ± 1%       ~ (p=0.365 n=7)
Update/sqlite/16-workers-4                  4.302 ± 1%         4.307 ± 1%       ~ (p=0.477 n=7)
Update/sqlite/64-workers-4                  4.296 ± 1%         4.284 ± 1%       ~ (p=0.932 n=7)
Update/sqlite/128-workers-4                 4.302 ± 6%         4.267 ± 3%       ~ (p=0.833 n=7)
Update/dqlite/1-workers-4                   4.197 ± 0%         4.194 ± 1%       ~ (p=0.558 n=7)
Update/dqlite/4-workers-4                   4.204 ± 0%         4.186 ± 1%  -0.43% (p=0.016 n=7)
Update/dqlite/16-workers-4                  4.223 ± 1%         4.212 ± 0%       ~ (p=0.315 n=7)
Update/dqlite/64-workers-4                  4.237 ± 1%         4.214 ± 1%       ~ (p=0.079 n=7)
Update/dqlite/128-workers-4                 4.242 ± 0%         4.235 ± 1%  -0.17% (p=0.029 n=7)
geomean                                                ²                   +0.01%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │     Before     │                 After                 │
                                        │ sec-reading/op │ sec-reading/op  vs base               │
Compaction/sqlite-4                         26.20µ ± 17%    23.60µ ±  28%        ~ (p=0.555 n=7)
Compaction/dqlite-4                         32.80µ ± 22%    33.80µ ±  78%        ~ (p=0.592 n=7)
Create/sqlite/1-workers-4                   19.60µ ± 29%    21.70µ ±  19%        ~ (p=0.558 n=7)
Create/sqlite/4-workers-4                   21.30µ ± 11%    19.50µ ±  21%        ~ (p=0.277 n=7)
Create/sqlite/16-workers-4                  22.30µ ± 23%    23.40µ ±  12%        ~ (p=0.558 n=7)
Create/sqlite/64-workers-4                  21.10µ ± 37%    23.10µ ±  28%        ~ (p=0.155 n=7)
Create/sqlite/128-workers-4                 24.60µ ± 17%    22.50µ ±  46%        ~ (p=0.445 n=7)
Create/dqlite/1-workers-4                   11.30µ ± 24%    12.30µ ±  34%        ~ (p=0.871 n=7)
Create/dqlite/4-workers-4                   10.80µ ± 37%    12.90µ ±  74%        ~ (p=0.165 n=7)
Create/dqlite/16-workers-4                  11.50µ ± 18%    13.10µ ±  41%        ~ (p=0.097 n=7)
Create/dqlite/64-workers-4                  12.70µ ± 42%    11.40µ ±  59%        ~ (p=0.710 n=7)
Create/dqlite/128-workers-4                12.300µ ± 30%    9.900µ ±  61%        ~ (p=0.557 n=7)
Delete/sqlite/1-workers-4                   31.40µ ± 15%    33.00µ ±  14%        ~ (p=0.154 n=7)
Delete/sqlite/4-workers-4                   33.00µ ± 11%    36.90µ ±  16%  +11.82% (p=0.014 n=7)
Delete/sqlite/16-workers-4                  35.90µ ±  8%    35.90µ ±  14%        ~ (p=0.513 n=7)
Delete/sqlite/64-workers-4                  40.60µ ± 14%    38.00µ ±  20%        ~ (p=0.366 n=7)
Delete/sqlite/128-workers-4                 43.40µ ± 24%    40.90µ ±  22%        ~ (p=0.927 n=7)
Delete/dqlite/1-workers-4                   15.00µ ± 33%    15.70µ ±  24%        ~ (p=0.220 n=7)
Delete/dqlite/4-workers-4                   16.10µ ± 29%    16.80µ ±  23%        ~ (p=0.318 n=7)
Delete/dqlite/16-workers-4                  17.50µ ± 44%    17.10µ ±  19%        ~ (p=0.781 n=7)
Delete/dqlite/64-workers-4                  16.20µ ± 40%    17.50µ ±  39%        ~ (p=0.558 n=7)
Delete/dqlite/128-workers-4                 16.00µ ± 36%    16.70µ ±  71%        ~ (p=0.097 n=7)
Get/sqlite-4                                62.80µ ±  6%    62.40µ ±   8%        ~ (p=0.874 n=7)
Get/dqlite-4                                38.00µ ± 15%    35.30µ ±  19%        ~ (p=0.685 n=7)
List/sqlite-tiny/all-4                      6.900µ ±  3%    6.900µ ±   1%        ~ (p=0.139 n=7)
List/sqlite-tiny/pagination-4               8.600µ ± 10%    9.000µ ±  11%        ~ (p=0.245 n=7)
List/sqlite-fits-in-page/all-4              12.70µ ± 13%    11.00µ ±  21%        ~ (p=0.510 n=7)
List/sqlite-fits-in-page/pagination-4       27.70µ ± 18%    27.50µ ±  20%        ~ (p=0.476 n=7)
List/sqlite-overflows-page/all-4            12.60µ ±  2%    12.80µ ±   3%        ~ (p=0.065 n=7)
List/sqlite-overflows-page/pagination-4     16.10µ ±  4%    15.70µ ±   4%   -2.48% (p=0.026 n=7)
List/dqlite-tiny/all-4                      3.200µ ± 31%    3.300µ ±  24%        ~ (p=0.782 n=7)
List/dqlite-tiny/pagination-4               7.000µ ± 20%    7.600µ ±  11%        ~ (p=0.196 n=7)
List/dqlite-fits-in-page/all-4              10.00µ ± 14%    10.20µ ±  14%        ~ (p=0.481 n=7)
List/dqlite-fits-in-page/pagination-4       19.00µ ± 19%    20.20µ ±  13%        ~ (p=0.620 n=7)
List/dqlite-overflows-page/all-4            33.50µ ±  4%    34.00µ ±   3%        ~ (p=0.222 n=7)
List/dqlite-overflows-page/pagination-4     40.60µ ±  3%    41.10µ ±  12%        ~ (p=0.838 n=7)
Update/sqlite/1-workers-4                   19.50µ ± 14%    19.10µ ±  39%        ~ (p=0.902 n=7)
Update/sqlite/4-workers-4                   23.00µ ± 20%    21.10µ ±  21%        ~ (p=0.209 n=7)
Update/sqlite/16-workers-4                  22.60µ ± 12%    24.20µ ±  18%        ~ (p=0.330 n=7)
Update/sqlite/64-workers-4                  27.10µ ± 12%    26.10µ ±  19%        ~ (p=0.512 n=7)
Update/sqlite/128-workers-4                 26.70µ ± 31%    25.70µ ±  37%        ~ (p=0.976 n=7)
Update/dqlite/1-workers-4                  10.600µ ± 37%    9.700µ ±  59%        ~ (p=0.805 n=7)
Update/dqlite/4-workers-4                   11.50µ ± 27%    11.90µ ±  50%        ~ (p=1.000 n=7)
Update/dqlite/16-workers-4                 10.500µ ± 71%    9.300µ ± 111%        ~ (p=0.456 n=7)
Update/dqlite/64-workers-4                  9.700µ ± 63%   12.500µ ±  18%        ~ (p=0.175 n=7)
Update/dqlite/128-workers-4                 13.30µ ± 46%    16.10µ ±  27%        ~ (p=0.400 n=7)
geomean                                     17.93µ          18.11µ          +1.00%

                                        │     Before      │                  After                  │
                                        │ sec-writing/op  │ sec-writing/op  vs base                 │
Compaction/sqlite-4                       9.300µ ±   3%       9.200µ ± 35%        ~ (p=0.874 n=7)
Compaction/dqlite-4                       7.100µ ±  14%       6.700µ ± 13%        ~ (p=0.598 n=7)
Create/sqlite/1-workers-4                 291.5µ ±  12%       284.7µ ± 13%        ~ (p=0.620 n=7)
Create/sqlite/4-workers-4                 1.508m ±  10%       1.397m ± 12%        ~ (p=0.165 n=7)
Create/sqlite/16-workers-4                5.114m ±   9%       5.072m ±  5%        ~ (p=0.972 n=7)
Create/sqlite/64-workers-4                17.17m ±   6%       16.58m ±  4%   -3.44% (p=0.001 n=7)
Create/sqlite/128-workers-4               33.29m ±  16%       33.24m ±  9%        ~ (p=0.710 n=7)
Create/dqlite/1-workers-4                 39.50µ ±  36%       36.10µ ± 24%        ~ (p=0.318 n=7)
Create/dqlite/4-workers-4                 50.30µ ±  13%       55.20µ ± 18%        ~ (p=0.259 n=7)
Create/dqlite/16-workers-4                48.90µ ±  23%       49.00µ ±  8%        ~ (p=1.000 n=7)
Create/dqlite/64-workers-4                47.20µ ±  13%       49.80µ ± 18%        ~ (p=0.877 n=7)
Create/dqlite/128-workers-4               49.30µ ±  10%       45.60µ ± 13%        ~ (p=0.165 n=7)
Delete/sqlite/1-workers-4                 285.8µ ±  27%       270.6µ ± 11%        ~ (p=0.383 n=7)
Delete/sqlite/4-workers-4                 1.377m ±   7%       1.399m ± 18%        ~ (p=0.318 n=7)
Delete/sqlite/16-workers-4                5.191m ±   7%       5.076m ±  4%        ~ (p=0.710 n=7)
Delete/sqlite/64-workers-4                17.55m ±  35%       17.23m ±  6%        ~ (p=0.805 n=7)
Delete/sqlite/128-workers-4               32.95m ±  61%       31.21m ±  8%        ~ (p=0.073 n=7)
Delete/dqlite/1-workers-4                 37.90µ ±  28%       39.00µ ± 41%        ~ (p=0.902 n=7)
Delete/dqlite/4-workers-4                 47.70µ ±  18%       50.60µ ± 15%        ~ (p=0.620 n=7)
Delete/dqlite/16-workers-4                50.00µ ±  34%       55.30µ ± 14%        ~ (p=0.104 n=7)
Delete/dqlite/64-workers-4                54.40µ ±  31%       53.40µ ± 15%        ~ (p=0.876 n=7)
Delete/dqlite/128-workers-4               48.20µ ±  16%       48.70µ ± 16%        ~ (p=0.557 n=7)
Get/sqlite-4                               0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
Get/dqlite-4                               0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                     0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4              0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/all-4             0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/sqlite-fits-in-page/pagination-4      0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/all-4           0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4    0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/dqlite-tiny/all-4                     0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/dqlite-tiny/pagination-4              0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/all-4             0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/dqlite-fits-in-page/pagination-4      0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/all-4           0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
List/dqlite-overflows-page/pagination-4    0.000 ±   0%        0.000 ±  0%        ~ (p=1.000 n=7) ¹
Update/sqlite/1-workers-4                 272.9µ ±   6%       362.4µ ± 11%  +32.80% (p=0.001 n=7)
Update/sqlite/4-workers-4                 1.347m ±  13%       1.631m ±  8%  +21.08% (p=0.001 n=7)
Update/sqlite/16-workers-4                5.164m ±  10%       5.141m ±  6%        ~ (p=0.535 n=7)
Update/sqlite/64-workers-4                17.38m ±   6%       17.31m ± 24%        ~ (p=0.831 n=7)
Update/sqlite/128-workers-4               32.71m ± 127%       35.37m ± 40%        ~ (p=0.620 n=7)
Update/dqlite/1-workers-4                 39.80µ ±  24%       34.90µ ± 34%        ~ (p=0.128 n=7)
Update/dqlite/4-workers-4                 43.50µ ±  14%       45.80µ ± 24%        ~ (p=0.434 n=7)
Update/dqlite/16-workers-4                45.40µ ±  21%       46.30µ ± 20%        ~ (p=0.175 n=7)
Update/dqlite/64-workers-4                47.10µ ±  14%       53.70µ ± 24%        ~ (p=0.456 n=7)
Update/dqlite/128-workers-4               44.70µ ±  36%       47.10µ ± 39%        ~ (p=0.805 n=7)
geomean                                                 ²                    +1.05%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │    Before     │                After                │
                                        │     B/op      │     B/op       vs base              │
Compaction/sqlite-4                       2.245Ki ± 20%   1.903Ki ± 34%       ~ (p=0.165 n=7)
Compaction/dqlite-4                       5.725Ki ± 34%   5.876Ki ± 94%       ~ (p=0.805 n=7)
Create/sqlite/1-workers-4                 20.40Ki ±  0%   20.40Ki ±  0%       ~ (p=0.775 n=7)
Create/sqlite/4-workers-4                 20.39Ki ±  0%   20.39Ki ±  0%       ~ (p=0.831 n=7)
Create/sqlite/16-workers-4                20.37Ki ±  0%   20.37Ki ±  0%       ~ (p=0.736 n=7)
Create/sqlite/64-workers-4                20.39Ki ±  0%   20.37Ki ±  0%       ~ (p=0.478 n=7)
Create/sqlite/128-workers-4               20.46Ki ±  1%   20.52Ki ±  0%       ~ (p=0.318 n=7)
Create/dqlite/1-workers-4                 19.65Ki ±  0%   19.67Ki ±  0%       ~ (p=0.176 n=7)
Create/dqlite/4-workers-4                 19.69Ki ±  0%   19.65Ki ±  0%       ~ (p=0.535 n=7)
Create/dqlite/16-workers-4                19.75Ki ±  0%   19.68Ki ±  0%  -0.36% (p=0.004 n=7)
Create/dqlite/64-workers-4                19.64Ki ±  5%   19.66Ki ±  3%       ~ (p=0.436 n=7)
Create/dqlite/128-workers-4               19.74Ki ±  0%   19.73Ki ±  0%       ~ (p=0.223 n=7)
Delete/sqlite/1-workers-4                 22.83Ki ±  0%   22.83Ki ±  0%       ~ (p=0.738 n=7)
Delete/sqlite/4-workers-4                 22.80Ki ±  0%   22.82Ki ±  0%       ~ (p=0.368 n=7)
Delete/sqlite/16-workers-4                22.79Ki ±  0%   22.79Ki ±  0%       ~ (p=0.927 n=7)
Delete/sqlite/64-workers-4                22.81Ki ±  1%   22.79Ki ±  0%       ~ (p=0.128 n=7)
Delete/sqlite/128-workers-4               22.92Ki ±  2%   22.84Ki ±  0%       ~ (p=0.053 n=7)
Delete/dqlite/1-workers-4                 21.93Ki ±  0%   21.93Ki ±  0%       ~ (p=0.778 n=7)
Delete/dqlite/4-workers-4                 21.90Ki ±  0%   21.88Ki ±  0%       ~ (p=0.050 n=7)
Delete/dqlite/16-workers-4                21.92Ki ±  0%   21.90Ki ±  0%       ~ (p=0.197 n=7)
Delete/dqlite/64-workers-4                21.95Ki ±  0%   21.91Ki ±  0%  -0.18% (p=0.002 n=7)
Delete/dqlite/128-workers-4               21.93Ki ±  0%   21.93Ki ±  0%       ~ (p=0.927 n=7)
Get/sqlite-4                              23.00Ki ±  0%   23.00Ki ±  0%       ~ (p=0.091 n=7)
Get/dqlite-4                              21.96Ki ±  0%   21.96Ki ±  0%       ~ (p=0.092 n=7)
List/sqlite-tiny/all-4                    1.176Ki ±  6%   1.176Ki ±  5%       ~ (p=0.642 n=7)
List/sqlite-tiny/pagination-4             1.082Ki ±  8%   1.120Ki ±  8%       ~ (p=0.128 n=7)
List/sqlite-fits-in-page/all-4            7.416Ki ±  9%   6.890Ki ± 15%       ~ (p=0.165 n=7)
List/sqlite-fits-in-page/pagination-4     9.143Ki ± 12%   8.862Ki ± 21%       ~ (p=0.535 n=7)
List/sqlite-overflows-page/all-4          20.49Ki ± 12%   20.49Ki ± 12%       ~ (p=1.000 n=7)
List/sqlite-overflows-page/pagination-4   19.49Ki ± 13%   18.02Ki ± 11%       ~ (p=0.068 n=7)
List/dqlite-tiny/all-4                      990.0 ±  2%     960.0 ±  4%       ~ (p=0.195 n=7)
List/dqlite-tiny/pagination-4               971.0 ±  1%     970.0 ±  5%       ~ (p=0.645 n=7)
List/dqlite-fits-in-page/all-4            6.034Ki ±  9%   6.140Ki ±  9%       ~ (p=0.334 n=7)
List/dqlite-fits-in-page/pagination-4     5.840Ki ±  6%   5.985Ki ±  6%       ~ (p=0.535 n=7)
List/dqlite-overflows-page/all-4          30.59Ki ±  1%   31.31Ki ±  1%  +2.36% (p=0.002 n=7)
List/dqlite-overflows-page/pagination-4   31.74Ki ±  3%   32.03Ki ±  5%       ~ (p=1.000 n=7)
Update/sqlite/1-workers-4                 21.56Ki ±  0%   21.58Ki ±  0%  +0.12% (p=0.025 n=7)
Update/sqlite/4-workers-4                 21.55Ki ±  0%   21.56Ki ±  0%  +0.05% (p=0.038 n=7)
Update/sqlite/16-workers-4                21.53Ki ±  0%   21.53Ki ±  0%       ~ (p=0.710 n=7)
Update/sqlite/64-workers-4                21.56Ki ±  0%   21.58Ki ±  0%       ~ (p=0.476 n=7)
Update/sqlite/128-workers-4               21.60Ki ±  3%   21.67Ki ±  1%       ~ (p=0.710 n=7)
Update/dqlite/1-workers-4                 20.76Ki ±  0%   20.80Ki ±  0%  +0.16% (p=0.013 n=7)
Update/dqlite/4-workers-4                 20.73Ki ±  0%   20.77Ki ±  0%  +0.19% (p=0.001 n=7)
Update/dqlite/16-workers-4                20.74Ki ±  9%   20.78Ki ±  0%       ~ (p=0.097 n=7)
Update/dqlite/64-workers-4                20.78Ki ±  0%   20.76Ki ±  0%       ~ (p=0.902 n=7)
Update/dqlite/128-workers-4               20.73Ki ± 10%   20.74Ki ±  0%       ~ (p=0.332 n=7)
geomean                                   13.93Ki         13.85Ki        -0.53%

                                        │   Before    │                After                │
                                        │  allocs/op  │  allocs/op   vs base                │
Compaction/sqlite-4                       48.00 ± 21%   41.00 ± 34%       ~ (p=0.351 n=7)
Compaction/dqlite-4                       138.0 ± 34%   141.0 ± 95%       ~ (p=1.000 n=7)
Create/sqlite/1-workers-4                 396.0 ±  0%   396.0 ±  0%       ~ (p=1.000 n=7) ¹
Create/sqlite/4-workers-4                 396.0 ±  0%   396.0 ±  0%       ~ (p=1.000 n=7) ¹
Create/sqlite/16-workers-4                395.0 ±  0%   396.0 ±  0%       ~ (p=0.070 n=7)
Create/sqlite/64-workers-4                396.0 ±  0%   396.0 ±  1%       ~ (p=0.437 n=7)
Create/sqlite/128-workers-4               397.0 ±  0%   397.0 ±  0%       ~ (p=0.734 n=7)
Create/dqlite/1-workers-4                 366.0 ±  0%   366.0 ±  0%       ~ (p=1.000 n=7) ¹
Create/dqlite/4-workers-4                 366.0 ±  0%   366.0 ±  0%       ~ (p=1.000 n=7) ¹
Create/dqlite/16-workers-4                366.0 ±  0%   366.0 ±  0%       ~ (p=1.000 n=7)
Create/dqlite/64-workers-4                366.0 ±  6%   366.0 ±  5%       ~ (p=1.000 n=7)
Create/dqlite/128-workers-4               365.0 ±  0%   365.0 ±  0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/1-workers-4                 427.0 ±  0%   427.0 ±  0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/4-workers-4                 427.0 ±  0%   427.0 ±  0%       ~ (p=1.000 n=7) ¹
Delete/sqlite/16-workers-4                426.0 ±  0%   427.0 ±  0%       ~ (p=0.592 n=7)
Delete/sqlite/64-workers-4                426.0 ±  0%   426.0 ±  0%       ~ (p=0.494 n=7)
Delete/sqlite/128-workers-4               428.0 ±  1%   427.0 ±  1%       ~ (p=0.071 n=7)
Delete/dqlite/1-workers-4                 395.0 ±  0%   395.0 ±  0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/4-workers-4                 395.0 ±  0%   395.0 ±  0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/16-workers-4                395.0 ±  0%   395.0 ±  0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/64-workers-4                395.0 ±  0%   395.0 ±  0%       ~ (p=1.000 n=7) ¹
Delete/dqlite/128-workers-4               395.0 ±  0%   395.0 ±  0%       ~ (p=1.000 n=7)
Get/sqlite-4                              414.0 ±  0%   414.0 ±  0%       ~ (p=1.000 n=7) ¹
Get/dqlite-4                              392.0 ±  0%   392.0 ±  0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/all-4                    16.00 ±  0%   16.00 ±  0%       ~ (p=1.000 n=7) ¹
List/sqlite-tiny/pagination-4             14.00 ± 14%   15.00 ± 13%       ~ (p=0.234 n=7)
List/sqlite-fits-in-page/all-4            20.00 ± 15%   18.00 ± 22%       ~ (p=0.559 n=7)
List/sqlite-fits-in-page/pagination-4     29.00 ± 21%   28.00 ± 29%       ~ (p=0.481 n=7)
List/sqlite-overflows-page/all-4          8.000 ±  0%   8.000 ±  0%       ~ (p=1.000 n=7) ¹
List/sqlite-overflows-page/pagination-4   8.000 ± 12%   7.000 ± 14%       ~ (p=0.266 n=7)
List/dqlite-tiny/all-4                    12.00 ±  8%   12.00 ±  8%       ~ (p=1.000 n=7)
List/dqlite-tiny/pagination-4             12.00 ±  8%   12.00 ±  0%       ~ (p=0.192 n=7)
List/dqlite-fits-in-page/all-4            18.00 ±  6%   19.00 ±  5%       ~ (p=0.266 n=7)
List/dqlite-fits-in-page/pagination-4     18.00 ± 11%   19.00 ± 16%       ~ (p=0.447 n=7)
List/dqlite-overflows-page/all-4          31.00 ±  3%   33.00 ±  3%  +6.45% (p=0.002 n=7)
List/dqlite-overflows-page/pagination-4   34.00 ±  3%   35.00 ±  9%       ~ (p=0.571 n=7)
Update/sqlite/1-workers-4                 403.0 ±  0%   403.0 ±  0%       ~ (p=1.000 n=7) ¹
Update/sqlite/4-workers-4                 403.0 ±  0%   403.0 ±  0%       ~ (p=1.000 n=7) ¹
Update/sqlite/16-workers-4                403.0 ±  0%   403.0 ±  0%       ~ (p=1.000 n=7)
Update/sqlite/64-workers-4                403.0 ±  0%   403.0 ±  0%       ~ (p=1.000 n=7)
Update/sqlite/128-workers-4               404.0 ±  1%   404.0 ±  0%       ~ (p=0.480 n=7)
Update/dqlite/1-workers-4                 373.0 ±  0%   373.0 ±  0%       ~ (p=0.192 n=7)
Update/dqlite/4-workers-4                 373.0 ±  0%   372.0 ±  0%  -0.27% (p=0.021 n=7)
Update/dqlite/16-workers-4                372.0 ± 12%   372.0 ±  0%       ~ (p=0.192 n=7)
Update/dqlite/64-workers-4                372.0 ±  0%   371.0 ±  0%  -0.27% (p=0.005 n=7)
Update/dqlite/128-workers-4               371.0 ± 13%   370.0 ±  0%  -0.27% (p=0.029 n=7)
geomean                                   160.6         160.1        -0.32%
¹ all samples are equal

                                        │        Before         │                    After                    │
                                        │ network-bytes-read/op │ network-bytes-read/op  vs base              │
Compaction/dqlite-4                               2.075Ki ± 34%           2.131Ki ± 96%       ~ (p=0.805 n=7)
Create/dqlite/1-workers-4                           241.7 ±  1%             240.8 ±  0%       ~ (p=0.301 n=7)
Create/dqlite/4-workers-4                           240.8 ±  1%             241.6 ±  0%       ~ (p=0.209 n=7)
Create/dqlite/16-workers-4                          241.1 ±  0%             241.8 ±  0%  +0.29% (p=0.034 n=7)
Create/dqlite/64-workers-4                          241.7 ± 16%             241.7 ± 13%       ~ (p=0.881 n=7)
Create/dqlite/128-workers-4                         241.1 ±  1%             241.8 ±  0%  +0.29% (p=0.030 n=7)
Delete/dqlite/1-workers-4                           716.8 ±  0%             716.5 ±  0%       ~ (p=0.976 n=7)
Delete/dqlite/4-workers-4                           717.5 ±  0%             718.2 ±  0%       ~ (p=0.120 n=7)
Delete/dqlite/16-workers-4                          717.1 ±  0%             718.4 ±  0%       ~ (p=0.511 n=7)
Delete/dqlite/64-workers-4                          716.2 ±  0%             718.3 ±  0%  +0.29% (p=0.002 n=7)
Delete/dqlite/128-workers-4                         718.3 ±  0%             718.3 ±  0%       ~ (p=0.783 n=7)
Get/dqlite-4                                        996.2 ±  0%             996.2 ±  0%       ~ (p=1.000 n=7)
List/dqlite-tiny/all-4                              177.9 ±  4%             177.5 ±  6%       ~ (p=0.511 n=7)
List/dqlite-tiny/pagination-4                       179.9 ±  1%             178.4 ±  1%  -0.83% (p=0.029 n=7)
List/dqlite-fits-in-page/all-4                    1.349Ki ±  6%           1.397Ki ±  5%       ~ (p=0.334 n=7)
List/dqlite-fits-in-page/pagination-4             1.305Ki ±  9%           1.415Ki ± 14%       ~ (p=0.221 n=7)
List/dqlite-overflows-page/all-4                  7.167Ki ±  3%           7.499Ki ±  3%  +4.63% (p=0.002 n=7)
List/dqlite-overflows-page/pagination-4           7.864Ki ±  4%           8.024Ki ± 10%       ~ (p=0.902 n=7)
Update/dqlite/1-workers-4                           263.0 ±  0%             262.8 ±  0%  -0.08% (p=0.026 n=7)
Update/dqlite/4-workers-4                           263.1 ±  0%             262.9 ±  0%  -0.08% (p=0.015 n=7)
Update/dqlite/16-workers-4                          262.9 ± 29%             262.8 ±  0%       ~ (p=0.329 n=7)
Update/dqlite/64-workers-4                          262.4 ±  0%             262.0 ±  0%  -0.15% (p=0.001 n=7)
Update/dqlite/128-workers-4                         261.6 ± 32%             261.2 ±  0%  -0.15% (p=0.024 n=7)
geomean                                             557.1                   562.0        +0.89%

                                        │          Before          │                     After                      │
                                        │ network-bytes-written/op │ network-bytes-written/op  vs base              │
Compaction/dqlite-4                                    4.603 ±  6%                4.657 ± 16%       ~ (p=0.259 n=7)
Create/dqlite/1-workers-4                              116.7 ±  3%                115.0 ±  2%       ~ (p=0.367 n=7)
Create/dqlite/4-workers-4                              115.3 ±  2%                116.6 ±  1%       ~ (p=0.199 n=7)
Create/dqlite/16-workers-4                             115.6 ±  2%                116.7 ±  2%  +0.95% (p=0.016 n=7)
Create/dqlite/64-workers-4                             117.0 ±  9%                116.7 ±  9%       ~ (p=0.469 n=7)
Create/dqlite/128-workers-4                            115.9 ±  3%                117.2 ±  1%       ~ (p=0.052 n=7)
Delete/dqlite/1-workers-4                              81.91 ±  1%                81.85 ±  1%       ~ (p=0.929 n=7)
Delete/dqlite/4-workers-4                              82.29 ±  1%                82.63 ±  1%       ~ (p=0.172 n=7)
Delete/dqlite/16-workers-4                             82.07 ±  1%                82.65 ±  0%       ~ (p=0.435 n=7)
Delete/dqlite/64-workers-4                             81.73 ±  1%                82.66 ±  1%  +1.14% (p=0.002 n=7)
Delete/dqlite/128-workers-4                            82.65 ±  0%                82.64 ±  1%       ~ (p=1.000 n=7)
Get/dqlite-4                                           88.54 ±  0%                88.54 ±  0%       ~ (p=0.636 n=7)
List/dqlite-tiny/all-4                               0.03988 ±  7%              0.03961 ± 10%       ~ (p=0.315 n=7)
List/dqlite-tiny/pagination-4                        0.04687 ±  6%              0.04496 ±  8%       ~ (p=0.165 n=7)
List/dqlite-fits-in-page/all-4                       0.06294 ±  9%              0.06736 ±  9%       ~ (p=0.805 n=7)
List/dqlite-fits-in-page/pagination-4                0.08059 ± 18%              0.08261 ± 12%       ~ (p=0.383 n=7)
List/dqlite-overflows-page/all-4                     0.08236 ±  5%              0.08688 ±  4%  +5.49% (p=0.011 n=7)
List/dqlite-overflows-page/pagination-4               0.1109 ±  5%               0.1147 ±  7%       ~ (p=0.259 n=7)
Update/dqlite/1-workers-4                              136.9 ±  0%                137.0 ±  0%       ~ (p=0.054 n=7)
Update/dqlite/4-workers-4                              136.7 ±  0%                137.1 ±  0%  +0.29% (p=0.001 n=7)
Update/dqlite/16-workers-4                             136.9 ± 18%                136.8 ±  1%       ~ (p=0.439 n=7)
Update/dqlite/64-workers-4                             137.0 ±  0%                136.9 ±  0%       ~ (p=0.563 n=7)
Update/dqlite/128-workers-4                            136.5 ± 20%                136.5 ±  0%       ~ (p=0.507 n=7)
geomean                                                13.67                      13.78        +0.79%
Current status
goos: linux
goarch: amd64
pkg: github.com/canonical/k8s-dqlite/test
cpu: AMD EPYC 7763 64-Core Processor                
                                        │     After     │
                                        │    sec/op     │
Compaction/sqlite-4                       19.47µ ±   7%
Compaction/dqlite-4                       40.49µ ±   9%
Create/sqlite/1-workers-4                 517.1µ ±   5%
Create/sqlite/4-workers-4                 474.4µ ±  12%
Create/sqlite/16-workers-4                424.9µ ±  13%
Create/sqlite/64-workers-4                411.3µ ±  40%
Create/sqlite/128-workers-4               595.5µ ±  34%
Create/dqlite/1-workers-4                 1.141m ±   6%
Create/dqlite/4-workers-4                 1.000m ±   6%
Create/dqlite/16-workers-4                951.8µ ±  15%
Create/dqlite/64-workers-4                965.1µ ±   5%
Create/dqlite/128-workers-4               953.5µ ±   7%
Delete/sqlite/1-workers-4                 508.7µ ±   8%
Delete/sqlite/4-workers-4                 478.9µ ±   8%
Delete/sqlite/16-workers-4                431.8µ ±   6%
Delete/sqlite/64-workers-4                409.7µ ±  54%
Delete/sqlite/128-workers-4               480.5µ ±  49%
Delete/dqlite/1-workers-4                 1.149m ±   5%
Delete/dqlite/4-workers-4                 983.0µ ±   2%
Delete/dqlite/16-workers-4                977.7µ ±   7%
Delete/dqlite/64-workers-4                1.006m ±   2%
Delete/dqlite/128-workers-4               1.006m ±   5%
Get/sqlite-4                              225.7µ ±   4%
Get/dqlite-4                              337.4µ ±   1%
List/sqlite-tiny/all-4                    3.658µ ±   1%
List/sqlite-tiny/pagination-4             6.069µ ±   4%
List/sqlite-fits-in-page/all-4            6.768µ ±   7%
List/sqlite-fits-in-page/pagination-4     16.96µ ±   8%
List/sqlite-overflows-page/all-4          16.93µ ±   5%
List/sqlite-overflows-page/pagination-4   20.17µ ±   4%
List/dqlite-tiny/all-4                    2.479µ ±   3%
List/dqlite-tiny/pagination-4             4.715µ ±   1%
List/dqlite-fits-in-page/all-4            6.476µ ±   5%
List/dqlite-fits-in-page/pagination-4     13.53µ ±   2%
List/dqlite-overflows-page/all-4          21.14µ ±   3%
List/dqlite-overflows-page/pagination-4   25.44µ ±   3%
Update/sqlite/1-workers-4                 590.6µ ±   6%
Update/sqlite/4-workers-4                 517.4µ ±   6%
Update/sqlite/16-workers-4                421.6µ ±   9%
Update/sqlite/64-workers-4                460.9µ ± 105%
Update/sqlite/128-workers-4               797.2µ ±  96%
Update/dqlite/1-workers-4                 1.182m ±  12%
Update/dqlite/4-workers-4                 1.069m ±  13%
Update/dqlite/16-workers-4                1.176m ±  15%
Update/dqlite/64-workers-4                1.097m ±   6%
Update/dqlite/128-workers-4               1.132m ±   5%
geomean                                   193.3µ

                                        │        After         │
                                        │ page-cache-misses/op │
Compaction/sqlite-4                               0.000 ± 0%
Compaction/dqlite-4                               0.000 ± 0%
Create/sqlite/1-workers-4                         0.000 ± 0%
Create/sqlite/4-workers-4                         0.000 ± 0%
Create/sqlite/16-workers-4                        0.000 ± 0%
Create/sqlite/64-workers-4                        0.000 ± 0%
Create/sqlite/128-workers-4                       0.000 ± 0%
Create/dqlite/1-workers-4                         0.000 ± 0%
Create/dqlite/4-workers-4                         0.000 ± 0%
Create/dqlite/16-workers-4                        0.000 ± 0%
Create/dqlite/64-workers-4                        0.000 ± 0%
Create/dqlite/128-workers-4                       0.000 ± 0%
Delete/sqlite/1-workers-4                         0.000 ± 0%
Delete/sqlite/4-workers-4                         0.000 ± 0%
Delete/sqlite/16-workers-4                        0.000 ± 0%
Delete/sqlite/64-workers-4                        0.000 ± 0%
Delete/sqlite/128-workers-4                       0.000 ± 0%
Delete/dqlite/1-workers-4                         0.000 ± 0%
Delete/dqlite/4-workers-4                         0.000 ± 0%
Delete/dqlite/16-workers-4                        0.000 ± 0%
Delete/dqlite/64-workers-4                        0.000 ± 0%
Delete/dqlite/128-workers-4                       0.000 ± 0%
Get/sqlite-4                                      0.000 ± 0%
Get/dqlite-4                                      0.000 ± 0%
List/sqlite-tiny/all-4                            0.000 ± 0%
List/sqlite-tiny/pagination-4                     0.000 ± 0%
List/sqlite-fits-in-page/all-4                    0.000 ± 0%
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%
List/sqlite-overflows-page/all-4                  0.000 ± 0%
List/sqlite-overflows-page/pagination-4           0.000 ± 0%
List/dqlite-tiny/all-4                            0.000 ± 0%
List/dqlite-tiny/pagination-4                     0.000 ± 0%
List/dqlite-fits-in-page/all-4                    0.000 ± 0%
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%
List/dqlite-overflows-page/all-4                  0.000 ± 0%
List/dqlite-overflows-page/pagination-4           0.000 ± 0%
Update/sqlite/1-workers-4                         0.000 ± 0%
Update/sqlite/4-workers-4                         0.000 ± 0%
Update/sqlite/16-workers-4                        0.000 ± 0%
Update/sqlite/64-workers-4                        0.000 ± 0%
Update/sqlite/128-workers-4                       0.000 ± 0%
Update/dqlite/1-workers-4                         0.000 ± 0%
Update/dqlite/4-workers-4                         0.000 ± 0%
Update/dqlite/16-workers-4                        0.000 ± 0%
Update/dqlite/64-workers-4                        0.000 ± 0%
Update/dqlite/128-workers-4                       0.000 ± 0%
geomean                                                      ¹
¹ summaries must be >0 to compute geomean

                                        │        After         │
                                        │ page-cache-spills/op │
Compaction/sqlite-4                               0.000 ± 0%
Compaction/dqlite-4                               0.000 ± 0%
Create/sqlite/1-workers-4                         0.000 ± 0%
Create/sqlite/4-workers-4                         0.000 ± 0%
Create/sqlite/16-workers-4                        0.000 ± 0%
Create/sqlite/64-workers-4                        0.000 ± 0%
Create/sqlite/128-workers-4                       0.000 ± 0%
Create/dqlite/1-workers-4                         0.000 ± 0%
Create/dqlite/4-workers-4                         0.000 ± 0%
Create/dqlite/16-workers-4                        0.000 ± 0%
Create/dqlite/64-workers-4                        0.000 ± 0%
Create/dqlite/128-workers-4                       0.000 ± 0%
Delete/sqlite/1-workers-4                         0.000 ± 0%
Delete/sqlite/4-workers-4                         0.000 ± 0%
Delete/sqlite/16-workers-4                        0.000 ± 0%
Delete/sqlite/64-workers-4                        0.000 ± 0%
Delete/sqlite/128-workers-4                       0.000 ± 0%
Delete/dqlite/1-workers-4                         0.000 ± 0%
Delete/dqlite/4-workers-4                         0.000 ± 0%
Delete/dqlite/16-workers-4                        0.000 ± 0%
Delete/dqlite/64-workers-4                        0.000 ± 0%
Delete/dqlite/128-workers-4                       0.000 ± 0%
Get/sqlite-4                                      0.000 ± 0%
Get/dqlite-4                                      0.000 ± 0%
List/sqlite-tiny/all-4                            0.000 ± 0%
List/sqlite-tiny/pagination-4                     0.000 ± 0%
List/sqlite-fits-in-page/all-4                    0.000 ± 0%
List/sqlite-fits-in-page/pagination-4             0.000 ± 0%
List/sqlite-overflows-page/all-4                  0.000 ± 0%
List/sqlite-overflows-page/pagination-4           0.000 ± 0%
List/dqlite-tiny/all-4                            0.000 ± 0%
List/dqlite-tiny/pagination-4                     0.000 ± 0%
List/dqlite-fits-in-page/all-4                    0.000 ± 0%
List/dqlite-fits-in-page/pagination-4             0.000 ± 0%
List/dqlite-overflows-page/all-4                  0.000 ± 0%
List/dqlite-overflows-page/pagination-4           0.000 ± 0%
Update/sqlite/1-workers-4                         0.000 ± 0%
Update/sqlite/4-workers-4                         0.000 ± 0%
Update/sqlite/16-workers-4                        0.000 ± 0%
Update/sqlite/64-workers-4                        0.000 ± 0%
Update/sqlite/128-workers-4                       0.000 ± 0%
Update/dqlite/1-workers-4                         0.000 ± 0%
Update/dqlite/4-workers-4                         0.000 ± 0%
Update/dqlite/16-workers-4                        0.000 ± 0%
Update/dqlite/64-workers-4                        0.000 ± 0%
Update/dqlite/128-workers-4                       0.000 ± 0%
geomean                                                      ¹
¹ summaries must be >0 to compute geomean

                                        │     After     │
                                        │ page-reads/op │
Compaction/sqlite-4                         12.37 ±  1%
Compaction/dqlite-4                         12.21 ±  1%
Create/sqlite/1-workers-4                   13.85 ±  0%
Create/sqlite/4-workers-4                   12.71 ±  4%
Create/sqlite/16-workers-4                  10.86 ±  5%
Create/sqlite/64-workers-4                  8.775 ± 10%
Create/sqlite/128-workers-4                 8.198 ±  6%
Create/dqlite/1-workers-4                   13.17 ±  2%
Create/dqlite/4-workers-4                   10.82 ±  1%
Create/dqlite/16-workers-4                  10.97 ±  2%
Create/dqlite/64-workers-4                  10.90 ±  1%
Create/dqlite/128-workers-4                 10.96 ±  1%
Delete/sqlite/1-workers-4                   16.23 ±  0%
Delete/sqlite/4-workers-4                   14.75 ±  3%
Delete/sqlite/16-workers-4                  12.08 ±  5%
Delete/sqlite/64-workers-4                  9.787 ±  4%
Delete/sqlite/128-workers-4                 9.214 ±  3%
Delete/dqlite/1-workers-4                   15.58 ±  1%
Delete/dqlite/4-workers-4                   13.40 ±  1%
Delete/dqlite/16-workers-4                  13.36 ±  1%
Delete/dqlite/64-workers-4                  13.26 ±  1%
Delete/dqlite/128-workers-4                 13.15 ±  1%
Get/sqlite-4                                14.96 ±  0%
Get/dqlite-4                                11.97 ±  0%
List/sqlite-tiny/all-4                     191.9m ±  0%
List/sqlite-tiny/pagination-4               1.126 ±  0%
List/sqlite-fits-in-page/all-4             164.1m ± 58%
List/sqlite-fits-in-page/pagination-4      958.9m ±  3%
List/sqlite-overflows-page/all-4           177.2m ±  0%
List/sqlite-overflows-page/pagination-4     1.065 ±  0%
List/dqlite-tiny/all-4                     190.8m ±  0%
List/dqlite-tiny/pagination-4               1.126 ±  3%
List/dqlite-fits-in-page/all-4             164.6m ±  0%
List/dqlite-fits-in-page/pagination-4      955.6m ±  3%
List/dqlite-overflows-page/all-4           184.9m ±  4%
List/dqlite-overflows-page/pagination-4     1.109 ±  6%
Update/sqlite/1-workers-4                   15.71 ±  1%
Update/sqlite/4-workers-4                   14.65 ±  3%
Update/sqlite/16-workers-4                  12.47 ±  4%
Update/sqlite/64-workers-4                  10.91 ±  5%
Update/sqlite/128-workers-4                 10.06 ±  6%
Update/dqlite/1-workers-4                   15.14 ±  2%
Update/dqlite/4-workers-4                   12.79 ±  1%
Update/dqlite/16-workers-4                  12.73 ±  1%
Update/dqlite/64-workers-4                  12.59 ±  1%
Update/dqlite/128-workers-4                 12.53 ±  2%
geomean                                     5.134

                                        │     After      │
                                        │ page-writes/op │
Compaction/sqlite-4                        191.2m ± 1%
Compaction/dqlite-4                        187.5m ± 1%
Create/sqlite/1-workers-4                   4.356 ± 0%
Create/sqlite/4-workers-4                   4.334 ± 1%
Create/sqlite/16-workers-4                  4.290 ± 1%
Create/sqlite/64-workers-4                  4.276 ± 1%
Create/sqlite/128-workers-4                 4.230 ± 1%
Create/dqlite/1-workers-4                   4.243 ± 2%
Create/dqlite/4-workers-4                   4.269 ± 1%
Create/dqlite/16-workers-4                  4.282 ± 1%
Create/dqlite/64-workers-4                  4.282 ± 0%
Create/dqlite/128-workers-4                 4.287 ± 1%
Delete/sqlite/1-workers-4                   4.390 ± 0%
Delete/sqlite/4-workers-4                   4.385 ± 1%
Delete/sqlite/16-workers-4                  4.360 ± 1%
Delete/sqlite/64-workers-4                  4.353 ± 1%
Delete/sqlite/128-workers-4                 4.365 ± 1%
Delete/dqlite/1-workers-4                   4.372 ± 1%
Delete/dqlite/4-workers-4                   4.384 ± 1%
Delete/dqlite/16-workers-4                  4.375 ± 1%
Delete/dqlite/64-workers-4                  4.360 ± 0%
Delete/dqlite/128-workers-4                 4.351 ± 1%
Get/sqlite-4                                0.000 ± 0%
Get/dqlite-4                                0.000 ± 0%
List/sqlite-tiny/all-4                      0.000 ± 0%
List/sqlite-tiny/pagination-4               0.000 ± 0%
List/sqlite-fits-in-page/all-4              0.000 ± 0%
List/sqlite-fits-in-page/pagination-4       0.000 ± 0%
List/sqlite-overflows-page/all-4            0.000 ± 0%
List/sqlite-overflows-page/pagination-4     0.000 ± 0%
List/dqlite-tiny/all-4                      0.000 ± 0%
List/dqlite-tiny/pagination-4               0.000 ± 0%
List/dqlite-fits-in-page/all-4              0.000 ± 0%
List/dqlite-fits-in-page/pagination-4       0.000 ± 0%
List/dqlite-overflows-page/all-4            0.000 ± 0%
List/dqlite-overflows-page/pagination-4     0.000 ± 0%
Update/sqlite/1-workers-4                   4.228 ± 0%
Update/sqlite/4-workers-4                   4.308 ± 1%
Update/sqlite/16-workers-4                  4.307 ± 1%
Update/sqlite/64-workers-4                  4.284 ± 1%
Update/sqlite/128-workers-4                 4.267 ± 3%
Update/dqlite/1-workers-4                   4.194 ± 1%
Update/dqlite/4-workers-4                   4.186 ± 1%
Update/dqlite/16-workers-4                  4.212 ± 0%
Update/dqlite/64-workers-4                  4.214 ± 1%
Update/dqlite/128-workers-4                 4.235 ± 1%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After      │
                                        │ sec-reading/op │
Compaction/sqlite-4                        23.60µ ±  28%
Compaction/dqlite-4                        33.80µ ±  78%
Create/sqlite/1-workers-4                  21.70µ ±  19%
Create/sqlite/4-workers-4                  19.50µ ±  21%
Create/sqlite/16-workers-4                 23.40µ ±  12%
Create/sqlite/64-workers-4                 23.10µ ±  28%
Create/sqlite/128-workers-4                22.50µ ±  46%
Create/dqlite/1-workers-4                  12.30µ ±  34%
Create/dqlite/4-workers-4                  12.90µ ±  74%
Create/dqlite/16-workers-4                 13.10µ ±  41%
Create/dqlite/64-workers-4                 11.40µ ±  59%
Create/dqlite/128-workers-4                9.900µ ±  61%
Delete/sqlite/1-workers-4                  33.00µ ±  14%
Delete/sqlite/4-workers-4                  36.90µ ±  16%
Delete/sqlite/16-workers-4                 35.90µ ±  14%
Delete/sqlite/64-workers-4                 38.00µ ±  20%
Delete/sqlite/128-workers-4                40.90µ ±  22%
Delete/dqlite/1-workers-4                  15.70µ ±  24%
Delete/dqlite/4-workers-4                  16.80µ ±  23%
Delete/dqlite/16-workers-4                 17.10µ ±  19%
Delete/dqlite/64-workers-4                 17.50µ ±  39%
Delete/dqlite/128-workers-4                16.70µ ±  71%
Get/sqlite-4                               62.40µ ±   8%
Get/dqlite-4                               35.30µ ±  19%
List/sqlite-tiny/all-4                     6.900µ ±   1%
List/sqlite-tiny/pagination-4              9.000µ ±  11%
List/sqlite-fits-in-page/all-4             11.00µ ±  21%
List/sqlite-fits-in-page/pagination-4      27.50µ ±  20%
List/sqlite-overflows-page/all-4           12.80µ ±   3%
List/sqlite-overflows-page/pagination-4    15.70µ ±   4%
List/dqlite-tiny/all-4                     3.300µ ±  24%
List/dqlite-tiny/pagination-4              7.600µ ±  11%
List/dqlite-fits-in-page/all-4             10.20µ ±  14%
List/dqlite-fits-in-page/pagination-4      20.20µ ±  13%
List/dqlite-overflows-page/all-4           34.00µ ±   3%
List/dqlite-overflows-page/pagination-4    41.10µ ±  12%
Update/sqlite/1-workers-4                  19.10µ ±  39%
Update/sqlite/4-workers-4                  21.10µ ±  21%
Update/sqlite/16-workers-4                 24.20µ ±  18%
Update/sqlite/64-workers-4                 26.10µ ±  19%
Update/sqlite/128-workers-4                25.70µ ±  37%
Update/dqlite/1-workers-4                  9.700µ ±  59%
Update/dqlite/4-workers-4                  11.90µ ±  50%
Update/dqlite/16-workers-4                 9.300µ ± 111%
Update/dqlite/64-workers-4                 12.50µ ±  18%
Update/dqlite/128-workers-4                16.10µ ±  27%
geomean                                    18.11µ

                                        │     After      │
                                        │ sec-writing/op │
Compaction/sqlite-4                       9.200µ ± 35%
Compaction/dqlite-4                       6.700µ ± 13%
Create/sqlite/1-workers-4                 284.7µ ± 13%
Create/sqlite/4-workers-4                 1.397m ± 12%
Create/sqlite/16-workers-4                5.072m ±  5%
Create/sqlite/64-workers-4                16.58m ±  4%
Create/sqlite/128-workers-4               33.24m ±  9%
Create/dqlite/1-workers-4                 36.10µ ± 24%
Create/dqlite/4-workers-4                 55.20µ ± 18%
Create/dqlite/16-workers-4                49.00µ ±  8%
Create/dqlite/64-workers-4                49.80µ ± 18%
Create/dqlite/128-workers-4               45.60µ ± 13%
Delete/sqlite/1-workers-4                 270.6µ ± 11%
Delete/sqlite/4-workers-4                 1.399m ± 18%
Delete/sqlite/16-workers-4                5.076m ±  4%
Delete/sqlite/64-workers-4                17.23m ±  6%
Delete/sqlite/128-workers-4               31.21m ±  8%
Delete/dqlite/1-workers-4                 39.00µ ± 41%
Delete/dqlite/4-workers-4                 50.60µ ± 15%
Delete/dqlite/16-workers-4                55.30µ ± 14%
Delete/dqlite/64-workers-4                53.40µ ± 15%
Delete/dqlite/128-workers-4               48.70µ ± 16%
Get/sqlite-4                               0.000 ±  0%
Get/dqlite-4                               0.000 ±  0%
List/sqlite-tiny/all-4                     0.000 ±  0%
List/sqlite-tiny/pagination-4              0.000 ±  0%
List/sqlite-fits-in-page/all-4             0.000 ±  0%
List/sqlite-fits-in-page/pagination-4      0.000 ±  0%
List/sqlite-overflows-page/all-4           0.000 ±  0%
List/sqlite-overflows-page/pagination-4    0.000 ±  0%
List/dqlite-tiny/all-4                     0.000 ±  0%
List/dqlite-tiny/pagination-4              0.000 ±  0%
List/dqlite-fits-in-page/all-4             0.000 ±  0%
List/dqlite-fits-in-page/pagination-4      0.000 ±  0%
List/dqlite-overflows-page/all-4           0.000 ±  0%
List/dqlite-overflows-page/pagination-4    0.000 ±  0%
Update/sqlite/1-workers-4                 362.4µ ± 11%
Update/sqlite/4-workers-4                 1.631m ±  8%
Update/sqlite/16-workers-4                5.141m ±  6%
Update/sqlite/64-workers-4                17.31m ± 24%
Update/sqlite/128-workers-4               35.37m ± 40%
Update/dqlite/1-workers-4                 34.90µ ± 34%
Update/dqlite/4-workers-4                 45.80µ ± 24%
Update/dqlite/16-workers-4                46.30µ ± 20%
Update/dqlite/64-workers-4                53.70µ ± 24%
Update/dqlite/128-workers-4               47.10µ ± 39%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After     │
                                        │     B/op      │
Compaction/sqlite-4                       1.903Ki ± 34%
Compaction/dqlite-4                       5.876Ki ± 94%
Create/sqlite/1-workers-4                 20.40Ki ±  0%
Create/sqlite/4-workers-4                 20.39Ki ±  0%
Create/sqlite/16-workers-4                20.37Ki ±  0%
Create/sqlite/64-workers-4                20.37Ki ±  0%
Create/sqlite/128-workers-4               20.52Ki ±  0%
Create/dqlite/1-workers-4                 19.67Ki ±  0%
Create/dqlite/4-workers-4                 19.65Ki ±  0%
Create/dqlite/16-workers-4                19.68Ki ±  0%
Create/dqlite/64-workers-4                19.66Ki ±  3%
Create/dqlite/128-workers-4               19.73Ki ±  0%
Delete/sqlite/1-workers-4                 22.83Ki ±  0%
Delete/sqlite/4-workers-4                 22.82Ki ±  0%
Delete/sqlite/16-workers-4                22.79Ki ±  0%
Delete/sqlite/64-workers-4                22.79Ki ±  0%
Delete/sqlite/128-workers-4               22.84Ki ±  0%
Delete/dqlite/1-workers-4                 21.93Ki ±  0%
Delete/dqlite/4-workers-4                 21.88Ki ±  0%
Delete/dqlite/16-workers-4                21.90Ki ±  0%
Delete/dqlite/64-workers-4                21.91Ki ±  0%
Delete/dqlite/128-workers-4               21.93Ki ±  0%
Get/sqlite-4                              23.00Ki ±  0%
Get/dqlite-4                              21.96Ki ±  0%
List/sqlite-tiny/all-4                    1.176Ki ±  5%
List/sqlite-tiny/pagination-4             1.120Ki ±  8%
List/sqlite-fits-in-page/all-4            6.890Ki ± 15%
List/sqlite-fits-in-page/pagination-4     8.862Ki ± 21%
List/sqlite-overflows-page/all-4          20.49Ki ± 12%
List/sqlite-overflows-page/pagination-4   18.02Ki ± 11%
List/dqlite-tiny/all-4                      960.0 ±  4%
List/dqlite-tiny/pagination-4               970.0 ±  5%
List/dqlite-fits-in-page/all-4            6.140Ki ±  9%
List/dqlite-fits-in-page/pagination-4     5.985Ki ±  6%
List/dqlite-overflows-page/all-4          31.31Ki ±  1%
List/dqlite-overflows-page/pagination-4   32.03Ki ±  5%
Update/sqlite/1-workers-4                 21.58Ki ±  0%
Update/sqlite/4-workers-4                 21.56Ki ±  0%
Update/sqlite/16-workers-4                21.53Ki ±  0%
Update/sqlite/64-workers-4                21.58Ki ±  0%
Update/sqlite/128-workers-4               21.67Ki ±  1%
Update/dqlite/1-workers-4                 20.80Ki ±  0%
Update/dqlite/4-workers-4                 20.77Ki ±  0%
Update/dqlite/16-workers-4                20.78Ki ±  0%
Update/dqlite/64-workers-4                20.76Ki ±  0%
Update/dqlite/128-workers-4               20.74Ki ±  0%
geomean                                   13.85Ki

                                        │    After    │
                                        │  allocs/op  │
Compaction/sqlite-4                       41.00 ± 34%
Compaction/dqlite-4                       141.0 ± 95%
Create/sqlite/1-workers-4                 396.0 ±  0%
Create/sqlite/4-workers-4                 396.0 ±  0%
Create/sqlite/16-workers-4                396.0 ±  0%
Create/sqlite/64-workers-4                396.0 ±  1%
Create/sqlite/128-workers-4               397.0 ±  0%
Create/dqlite/1-workers-4                 366.0 ±  0%
Create/dqlite/4-workers-4                 366.0 ±  0%
Create/dqlite/16-workers-4                366.0 ±  0%
Create/dqlite/64-workers-4                366.0 ±  5%
Create/dqlite/128-workers-4               365.0 ±  0%
Delete/sqlite/1-workers-4                 427.0 ±  0%
Delete/sqlite/4-workers-4                 427.0 ±  0%
Delete/sqlite/16-workers-4                427.0 ±  0%
Delete/sqlite/64-workers-4                426.0 ±  0%
Delete/sqlite/128-workers-4               427.0 ±  1%
Delete/dqlite/1-workers-4                 395.0 ±  0%
Delete/dqlite/4-workers-4                 395.0 ±  0%
Delete/dqlite/16-workers-4                395.0 ±  0%
Delete/dqlite/64-workers-4                395.0 ±  0%
Delete/dqlite/128-workers-4               395.0 ±  0%
Get/sqlite-4                              414.0 ±  0%
Get/dqlite-4                              392.0 ±  0%
List/sqlite-tiny/all-4                    16.00 ±  0%
List/sqlite-tiny/pagination-4             15.00 ± 13%
List/sqlite-fits-in-page/all-4            18.00 ± 22%
List/sqlite-fits-in-page/pagination-4     28.00 ± 29%
List/sqlite-overflows-page/all-4          8.000 ±  0%
List/sqlite-overflows-page/pagination-4   7.000 ± 14%
List/dqlite-tiny/all-4                    12.00 ±  8%
List/dqlite-tiny/pagination-4             12.00 ±  0%
List/dqlite-fits-in-page/all-4            19.00 ±  5%
List/dqlite-fits-in-page/pagination-4     19.00 ± 16%
List/dqlite-overflows-page/all-4          33.00 ±  3%
List/dqlite-overflows-page/pagination-4   35.00 ±  9%
Update/sqlite/1-workers-4                 403.0 ±  0%
Update/sqlite/4-workers-4                 403.0 ±  0%
Update/sqlite/16-workers-4                403.0 ±  0%
Update/sqlite/64-workers-4                403.0 ±  0%
Update/sqlite/128-workers-4               404.0 ±  0%
Update/dqlite/1-workers-4                 373.0 ±  0%
Update/dqlite/4-workers-4                 372.0 ±  0%
Update/dqlite/16-workers-4                372.0 ±  0%
Update/dqlite/64-workers-4                371.0 ±  0%
Update/dqlite/128-workers-4               370.0 ±  0%
geomean                                   160.1

                                        │         After         │
                                        │ network-bytes-read/op │
Compaction/dqlite-4                               2.131Ki ± 96%
Create/dqlite/1-workers-4                           240.8 ±  0%
Create/dqlite/4-workers-4                           241.6 ±  0%
Create/dqlite/16-workers-4                          241.8 ±  0%
Create/dqlite/64-workers-4                          241.7 ± 13%
Create/dqlite/128-workers-4                         241.8 ±  0%
Delete/dqlite/1-workers-4                           716.5 ±  0%
Delete/dqlite/4-workers-4                           718.2 ±  0%
Delete/dqlite/16-workers-4                          718.4 ±  0%
Delete/dqlite/64-workers-4                          718.3 ±  0%
Delete/dqlite/128-workers-4                         718.3 ±  0%
Get/dqlite-4                                        996.2 ±  0%
List/dqlite-tiny/all-4                              177.5 ±  6%
List/dqlite-tiny/pagination-4                       178.4 ±  1%
List/dqlite-fits-in-page/all-4                    1.397Ki ±  5%
List/dqlite-fits-in-page/pagination-4             1.415Ki ± 14%
List/dqlite-overflows-page/all-4                  7.499Ki ±  3%
List/dqlite-overflows-page/pagination-4           8.024Ki ± 10%
Update/dqlite/1-workers-4                           262.8 ±  0%
Update/dqlite/4-workers-4                           262.9 ±  0%
Update/dqlite/16-workers-4                          262.8 ±  0%
Update/dqlite/64-workers-4                          262.0 ±  0%
Update/dqlite/128-workers-4                         261.2 ±  0%
geomean                                             562.0

                                        │          After           │
                                        │ network-bytes-written/op │
Compaction/dqlite-4                                    4.657 ± 16%
Create/dqlite/1-workers-4                              115.0 ±  2%
Create/dqlite/4-workers-4                              116.6 ±  1%
Create/dqlite/16-workers-4                             116.7 ±  2%
Create/dqlite/64-workers-4                             116.7 ±  9%
Create/dqlite/128-workers-4                            117.2 ±  1%
Delete/dqlite/1-workers-4                              81.85 ±  1%
Delete/dqlite/4-workers-4                              82.63 ±  1%
Delete/dqlite/16-workers-4                             82.65 ±  0%
Delete/dqlite/64-workers-4                             82.66 ±  1%
Delete/dqlite/128-workers-4                            82.64 ±  1%
Get/dqlite-4                                           88.54 ±  0%
List/dqlite-tiny/all-4                               0.03961 ± 10%
List/dqlite-tiny/pagination-4                        0.04496 ±  8%
List/dqlite-fits-in-page/all-4                       0.06736 ±  9%
List/dqlite-fits-in-page/pagination-4                0.08261 ± 12%
List/dqlite-overflows-page/all-4                     0.08688 ±  4%
List/dqlite-overflows-page/pagination-4               0.1147 ±  7%
Update/dqlite/1-workers-4                              137.0 ±  0%
Update/dqlite/4-workers-4                              137.1 ±  0%
Update/dqlite/16-workers-4                             136.8 ±  1%
Update/dqlite/64-workers-4                             136.9 ±  0%
Update/dqlite/128-workers-4                            136.5 ±  0%
geomean                                                13.78

Copy link
Member

@berkayoz berkayoz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM overall, small questions

docs/configuration.md Outdated Show resolved Hide resolved
cmd/root.go Show resolved Hide resolved
pkg/kine/server/get.go Show resolved Hide resolved
Copy link
Contributor

@HomayoonAlimohammadi HomayoonAlimohammadi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot @louiseschmidtgen, LGTM!

if r.Limit != 0 {
return nil, fmt.Errorf("unexpected limit: want 0, got %d", r.Limit)
if r.Limit != 0 && len(r.RangeEnd) != 0 {
err := fmt.Errorf("invalid combination of rangeEnd and limit, limit should be 0 got %d", r.Limit)
Copy link
Contributor

@HomayoonAlimohammadi HomayoonAlimohammadi Dec 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can change this to a named return (probably in another PR). Because IMO it's easy to miss this and just return fmt.Errorf(...) which won't be caught in the defer.

@louiseschmidtgen
Copy link
Contributor Author

See https://github.com/canonical/k8s-dqlite/pull/212/files#r1879804010, emulatedEtcdVersion is implemented in the linked PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants