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

Merge LogStructured in SQLLog #194

Merged
merged 17 commits into from
Nov 27, 2024

Conversation

marco6
Copy link
Collaborator

@marco6 marco6 commented Oct 29, 2024

This PR merges the functionality from LogStructured into SQLLog and removes LogStructured.

There are many reasons for this change but the most important one is the lack of a real separation between the two structs, making LogStructured a mere translation layer which adds no useful functionality (and actually acts as a limitation, forcing the implementation to be sub-optimal).

The PR is quite big, but each commit takes care of a single aspect of the transition, making it hopefully possible to perform a review.

Wherever made sense the PR also takes the opportunity to make some of the sub-optimal things better both in term of correctness and in terms of memory footprint/speed (for example avoiding some useless copy-paste or some useless memory allocation).

Some part of this PR (namely, the List/Get query) could be improved/made simpler, however this PR does not attempt to do that, so that it should be compatible with other outstanding PRs.

As a last note, the write path and the indexes do not change, so this PR is compatible with all existing versions.

@marco6
Copy link
Collaborator Author

marco6 commented Oct 29, 2024

Depends on #193

Copy link

github-actions bot commented Oct 29, 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                       20.17µ ±   2%    19.85µ ±   4%   -1.58% (p=0.038 n=7)
Compaction/dqlite-4                       41.91µ ±   8%    41.42µ ±   6%        ~ (p=0.456 n=7)
Create/sqlite/1-workers-4                 481.2µ ±   3%    476.3µ ±   2%        ~ (p=0.318 n=7)
Create/sqlite/4-workers-4                 462.3µ ±   5%    464.2µ ±   6%        ~ (p=0.805 n=7)
Create/sqlite/16-workers-4                434.5µ ±  14%    441.1µ ±   8%        ~ (p=0.535 n=7)
Create/sqlite/64-workers-4                490.3µ ±  16%    493.2µ ±  38%        ~ (p=0.456 n=7)
Create/sqlite/128-workers-4               648.8µ ±  20%   1219.9µ ±  55%  +88.01% (p=0.001 n=7)
Create/dqlite/1-workers-4                 1.055m ±   2%    1.041m ±   3%        ~ (p=0.073 n=7)
Create/dqlite/4-workers-4                 940.4µ ±   3%    914.4µ ±   1%        ~ (p=0.097 n=7)
Create/dqlite/16-workers-4                927.4µ ±   3%    913.1µ ±   3%        ~ (p=0.097 n=7)
Create/dqlite/64-workers-4                933.6µ ±   2%    922.3µ ±   2%        ~ (p=0.053 n=7)
Create/dqlite/128-workers-4               948.7µ ±   5%    948.2µ ±   2%        ~ (p=0.620 n=7)
Delete/sqlite/1-workers-4                 461.0µ ±   5%    477.6µ ±   3%        ~ (p=0.128 n=7)
Delete/sqlite/4-workers-4                 447.0µ ±   3%    451.3µ ±   4%        ~ (p=0.456 n=7)
Delete/sqlite/16-workers-4                427.1µ ±  11%    447.8µ ±   7%        ~ (p=0.097 n=7)
Delete/sqlite/64-workers-4                491.6µ ±  17%    462.9µ ±  17%        ~ (p=0.902 n=7)
Delete/sqlite/128-workers-4               732.8µ ± 168%    862.0µ ± 747%        ~ (p=0.383 n=7)
Delete/dqlite/1-workers-4                 1.034m ±   5%    1.047m ±   3%        ~ (p=0.535 n=7)
Delete/dqlite/4-workers-4                 922.7µ ±   4%    923.1µ ±   3%        ~ (p=0.710 n=7)
Delete/dqlite/16-workers-4                912.4µ ±   2%    935.0µ ±   7%        ~ (p=0.053 n=7)
Delete/dqlite/64-workers-4                932.0µ ±   9%    933.3µ ±   2%        ~ (p=1.000 n=7)
Delete/dqlite/128-workers-4               921.7µ ±   4%    878.0µ ±   6%   -4.74% (p=0.017 n=7)
Get/sqlite-4                              244.3µ ±   1%    231.0µ ±   3%   -5.45% (p=0.001 n=7)
Get/dqlite-4                              352.4µ ±   1%    343.7µ ±   1%   -2.46% (p=0.001 n=7)
List/sqlite-tiny/all-4                    3.988µ ±   7%    3.992µ ±   9%        ~ (p=0.456 n=7)
List/sqlite-tiny/pagination-4             8.712µ ±   3%    8.673µ ±   4%        ~ (p=0.456 n=7)
List/sqlite-fits-in-page/all-4            7.866µ ±   5%    7.471µ ±   6%   -5.02% (p=0.038 n=7)
List/sqlite-fits-in-page/pagination-4     23.22µ ±   4%    22.69µ ±   2%        ~ (p=0.053 n=7)
List/sqlite-overflows-page/all-4          17.24µ ±   3%    17.56µ ±   3%        ~ (p=0.535 n=7)
List/sqlite-overflows-page/pagination-4   42.04µ ±   8%    42.52µ ±   3%        ~ (p=0.805 n=7)
List/dqlite-tiny/all-4                    3.021µ ±   6%    2.972µ ±   7%        ~ (p=0.165 n=7)
List/dqlite-tiny/pagination-4             6.172µ ±   3%    6.151µ ±   3%        ~ (p=0.710 n=7)
List/dqlite-fits-in-page/all-4            6.813µ ±   3%    6.680µ ±   4%        ~ (p=0.097 n=7)
List/dqlite-fits-in-page/pagination-4     17.39µ ±   8%    17.74µ ±   8%        ~ (p=0.383 n=7)
List/dqlite-overflows-page/all-4          21.83µ ±   4%    21.34µ ±   3%        ~ (p=0.053 n=7)
List/dqlite-overflows-page/pagination-4   45.93µ ±   5%    43.90µ ±   3%   -4.42% (p=0.007 n=7)
Update/sqlite/1-workers-4                 493.8µ ±   4%    490.2µ ±   7%        ~ (p=0.805 n=7)
Update/sqlite/4-workers-4                 463.8µ ±   2%    451.6µ ±   7%        ~ (p=0.053 n=7)
Update/sqlite/16-workers-4                442.6µ ±   6%    436.1µ ±   5%        ~ (p=0.383 n=7)
Update/sqlite/64-workers-4                587.9µ ±  33%    441.6µ ±  34%        ~ (p=0.053 n=7)
Update/sqlite/128-workers-4               561.0µ ±  25%    820.1µ ± 136%        ~ (p=0.097 n=7)
Update/dqlite/1-workers-4                 1.061m ±  10%    1.020m ±   6%        ~ (p=0.620 n=7)
Update/dqlite/4-workers-4                 918.5µ ±   5%    948.5µ ±   4%        ~ (p=0.165 n=7)
Update/dqlite/16-workers-4                930.8µ ±   5%    933.4µ ±   4%        ~ (p=0.535 n=7)
Update/dqlite/64-workers-4                917.2µ ±   2%    923.2µ ±   5%        ~ (p=0.209 n=7)
Update/dqlite/128-workers-4               929.6µ ±   6%    925.7µ ±   4%        ~ (p=0.902 n=7)
geomean                                   202.1µ           204.6µ          +1.23%

                                        │        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.27 ±  1%     12.29 ±  1%       ~ (p=0.564 n=7)
Compaction/dqlite-4                         12.20 ±  1%     12.22 ±  1%       ~ (p=0.397 n=7)
Create/sqlite/1-workers-4                   13.91 ±  0%     13.91 ±  0%       ~ (p=0.564 n=7)
Create/sqlite/4-workers-4                   12.52 ±  4%     12.56 ±  2%       ~ (p=1.000 n=7)
Create/sqlite/16-workers-4                  10.52 ±  4%     10.69 ±  6%       ~ (p=0.833 n=7)
Create/sqlite/64-workers-4                  8.878 ±  9%     9.083 ±  5%       ~ (p=0.902 n=7)
Create/sqlite/128-workers-4                 8.257 ±  3%     8.339 ± 14%       ~ (p=0.902 n=7)
Create/dqlite/1-workers-4                   13.41 ±  1%     13.28 ±  1%  -0.97% (p=0.010 n=7)
Create/dqlite/4-workers-4                   10.97 ±  1%     10.94 ±  1%       ~ (p=0.221 n=7)
Create/dqlite/16-workers-4                  11.09 ±  2%     10.94 ±  2%  -1.35% (p=0.001 n=7)
Create/dqlite/64-workers-4                  11.09 ±  4%     10.97 ±  1%  -1.08% (p=0.042 n=7)
Create/dqlite/128-workers-4                 11.09 ±  1%     10.99 ±  1%  -0.90% (p=0.019 n=7)
Delete/sqlite/1-workers-4                   16.23 ±  0%     16.24 ±  0%       ~ (p=0.129 n=7)
Delete/sqlite/4-workers-4                   14.38 ±  3%     14.52 ±  2%       ~ (p=0.383 n=7)
Delete/sqlite/16-workers-4                  11.79 ±  4%     12.01 ±  3%       ~ (p=0.535 n=7)
Delete/sqlite/64-workers-4                  10.00 ±  6%     10.06 ±  3%       ~ (p=1.000 n=7)
Delete/sqlite/128-workers-4                 9.244 ±  3%     9.521 ± 14%       ~ (p=0.128 n=7)
Delete/dqlite/1-workers-4                   15.79 ±  1%     15.57 ±  1%  -1.39% (p=0.034 n=7)
Delete/dqlite/4-workers-4                   13.37 ±  1%     13.38 ±  0%       ~ (p=0.546 n=7)
Delete/dqlite/16-workers-4                  13.33 ±  1%     13.43 ±  3%       ~ (p=0.091 n=7)
Delete/dqlite/64-workers-4                  13.26 ±  1%     13.27 ±  2%       ~ (p=0.736 n=7)
Delete/dqlite/128-workers-4                 13.24 ±  4%     13.10 ±  4%       ~ (p=0.383 n=7)
Get/sqlite-4                                14.97 ±  0%     14.95 ±  0%       ~ (p=0.618 n=7)
Get/dqlite-4                                11.96 ±  0%     11.96 ±  0%       ~ (p=0.550 n=7)
List/sqlite-tiny/all-4                     191.1m ±  1%    191.3m ±  1%       ~ (p=0.298 n=7)
List/sqlite-tiny/pagination-4               1.133 ±  0%     1.133 ±  0%       ~ (p=0.927 n=7)
List/sqlite-fits-in-page/all-4             163.2m ±  1%    163.6m ±  1%       ~ (p=0.599 n=7)
List/sqlite-fits-in-page/pagination-4      965.6m ±  3%    965.8m ±  0%       ~ (p=0.367 n=7)
List/sqlite-overflows-page/all-4           177.1m ±  0%    177.2m ±  0%       ~ (p=0.266 n=7)
List/sqlite-overflows-page/pagination-4     1.356 ± 35%     1.388 ± 17%       ~ (p=0.773 n=7)
List/dqlite-tiny/all-4                     191.5m ±  0%    191.6m ±  0%       ~ (p=0.983 n=7)
List/dqlite-tiny/pagination-4               1.126 ±  3%     1.126 ±  3%       ~ (p=0.290 n=7)
List/dqlite-fits-in-page/all-4             164.1m ±  0%    164.1m ±  0%       ~ (p=0.929 n=7)
List/dqlite-fits-in-page/pagination-4      953.8m ±  4%    955.0m ±  0%       ~ (p=0.596 n=7)
List/dqlite-overflows-page/all-4           184.1m ±  0%    184.4m ±  0%  +0.16% (p=0.009 n=7)
List/dqlite-overflows-page/pagination-4     1.072 ±  0%     1.072 ±  3%       ~ (p=1.000 n=7)
Update/sqlite/1-workers-4                   15.84 ±  0%     15.83 ±  0%       ~ (p=0.057 n=7)
Update/sqlite/4-workers-4                   14.15 ±  1%     14.41 ±  3%  +1.84% (p=0.001 n=7)
Update/sqlite/16-workers-4                  12.29 ±  7%     12.70 ±  4%       ~ (p=0.209 n=7)
Update/sqlite/64-workers-4                  11.04 ±  4%     11.11 ±  7%       ~ (p=0.620 n=7)
Update/sqlite/128-workers-4                 10.14 ±  3%     10.36 ± 16%       ~ (p=0.334 n=7)
Update/dqlite/1-workers-4                   15.50 ±  1%     15.32 ±  1%  -1.16% (p=0.002 n=7)
Update/dqlite/4-workers-4                   12.81 ±  1%     12.80 ±  3%       ~ (p=0.765 n=7)
Update/dqlite/16-workers-4                  12.81 ±  1%     12.80 ±  1%       ~ (p=0.302 n=7)
Update/dqlite/64-workers-4                  12.80 ±  2%     12.73 ±  2%  -0.55% (p=0.010 n=7)
Update/dqlite/128-workers-4                 12.73 ±  2%     12.67 ±  1%       ~ (p=0.343 n=7)
geomean                                     5.165           5.181        +0.31%

                                        │     Before     │                 After                  │
                                        │ page-writes/op │ page-writes/op  vs base                │
Compaction/sqlite-4                        190.7m ± 0%        190.9m ± 1%       ~ (p=0.173 n=7)
Compaction/dqlite-4                        187.4m ± 1%        187.3m ± 0%       ~ (p=0.513 n=7)
Create/sqlite/1-workers-4                   4.361 ± 0%         4.362 ± 0%       ~ (p=0.385 n=7)
Create/sqlite/4-workers-4                   4.313 ± 1%         4.316 ± 1%       ~ (p=0.474 n=7)
Create/sqlite/16-workers-4                  4.298 ± 1%         4.306 ± 1%       ~ (p=0.456 n=7)
Create/sqlite/64-workers-4                  4.265 ± 1%         4.252 ± 1%       ~ (p=0.209 n=7)
Create/sqlite/128-workers-4                 4.218 ± 1%         4.157 ± 3%  -1.45% (p=0.001 n=7)
Create/dqlite/1-workers-4                   4.257 ± 1%         4.267 ± 1%       ~ (p=0.646 n=7)
Create/dqlite/4-workers-4                   4.300 ± 0%         4.301 ± 0%       ~ (p=0.967 n=7)
Create/dqlite/16-workers-4                  4.298 ± 1%         4.300 ± 1%       ~ (p=0.932 n=7)
Create/dqlite/64-workers-4                  4.300 ± 0%         4.306 ± 1%       ~ (p=0.149 n=7)
Create/dqlite/128-workers-4                 4.296 ± 0%         4.300 ± 1%       ~ (p=0.921 n=7)
Delete/sqlite/1-workers-4                   4.387 ± 0%         4.389 ± 0%       ~ (p=0.255 n=7)
Delete/sqlite/4-workers-4                   4.371 ± 1%         4.372 ± 1%       ~ (p=0.778 n=7)
Delete/sqlite/16-workers-4                  4.375 ± 1%         4.369 ± 1%       ~ (p=0.432 n=7)
Delete/sqlite/64-workers-4                  4.378 ± 1%         4.378 ± 0%       ~ (p=0.879 n=7)
Delete/sqlite/128-workers-4                 4.363 ± 2%         4.334 ± 3%       ~ (p=0.196 n=7)
Delete/dqlite/1-workers-4                   4.369 ± 1%         4.364 ± 1%       ~ (p=0.804 n=7)
Delete/dqlite/4-workers-4                   4.383 ± 0%         4.376 ± 1%       ~ (p=0.334 n=7)
Delete/dqlite/16-workers-4                  4.377 ± 1%         4.373 ± 0%       ~ (p=0.318 n=7)
Delete/dqlite/64-workers-4                  4.359 ± 1%         4.342 ± 1%       ~ (p=0.121 n=7)
Delete/dqlite/128-workers-4                 4.352 ± 0%         4.351 ± 1%       ~ (p=0.646 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.247 ± 0%         4.232 ± 0%  -0.35% (p=0.001 n=7)
Update/sqlite/4-workers-4                   4.313 ± 1%         4.311 ± 1%       ~ (p=0.977 n=7)
Update/sqlite/16-workers-4                  4.311 ± 0%         4.316 ± 0%       ~ (p=0.962 n=7)
Update/sqlite/64-workers-4                  4.289 ± 1%         4.307 ± 1%       ~ (p=0.077 n=7)
Update/sqlite/128-workers-4                 4.281 ± 1%         4.278 ± 4%       ~ (p=0.620 n=7)
Update/dqlite/1-workers-4                   4.221 ± 0%         4.211 ± 0%  -0.24% (p=0.006 n=7)
Update/dqlite/4-workers-4                   4.223 ± 1%         4.204 ± 1%       ~ (p=0.274 n=7)
Update/dqlite/16-workers-4                  4.228 ± 1%         4.226 ± 1%       ~ (p=0.554 n=7)
Update/dqlite/64-workers-4                  4.259 ± 1%         4.237 ± 0%       ~ (p=0.154 n=7)
Update/dqlite/128-workers-4                 4.239 ± 1%         4.234 ± 1%       ~ (p=0.516 n=7)
geomean                                                ²                   -0.08%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │     Before     │                 After                 │
                                        │ sec-reading/op │ sec-reading/op  vs base               │
Compaction/sqlite-4                         28.10µ ± 12%     27.60µ ± 16%        ~ (p=0.137 n=7)
Compaction/dqlite-4                         31.60µ ± 62%     28.20µ ± 60%        ~ (p=0.259 n=7)
Create/sqlite/1-workers-4                   20.30µ ± 21%     22.60µ ± 35%        ~ (p=0.646 n=7)
Create/sqlite/4-workers-4                   19.90µ ± 25%     20.60µ ± 36%        ~ (p=0.776 n=7)
Create/sqlite/16-workers-4                  22.50µ ± 45%     21.30µ ± 54%        ~ (p=0.929 n=7)
Create/sqlite/64-workers-4                  25.40µ ± 19%     25.40µ ± 25%        ~ (p=0.592 n=7)
Create/sqlite/128-workers-4                 27.50µ ± 27%     28.20µ ± 37%        ~ (p=0.684 n=7)
Create/dqlite/1-workers-4                   11.50µ ± 57%     10.20µ ± 43%        ~ (p=0.646 n=7)
Create/dqlite/4-workers-4                   13.60µ ± 36%     11.90µ ± 45%  -12.50% (p=0.038 n=7)
Create/dqlite/16-workers-4                  11.00µ ± 52%     12.40µ ± 39%        ~ (p=0.902 n=7)
Create/dqlite/64-workers-4                  12.10µ ± 29%     11.10µ ± 46%        ~ (p=0.902 n=7)
Create/dqlite/128-workers-4                 11.30µ ± 47%     11.40µ ± 63%        ~ (p=0.620 n=7)
Delete/sqlite/1-workers-4                   34.20µ ±  7%     32.70µ ± 23%        ~ (p=0.165 n=7)
Delete/sqlite/4-workers-4                   34.10µ ± 14%     32.90µ ± 11%        ~ (p=0.259 n=7)
Delete/sqlite/16-workers-4                  33.50µ ± 13%     35.30µ ± 23%        ~ (p=0.734 n=7)
Delete/sqlite/64-workers-4                  38.00µ ± 13%     38.50µ ± 23%        ~ (p=0.902 n=7)
Delete/sqlite/128-workers-4                 37.90µ ± 17%     38.00µ ± 32%        ~ (p=0.684 n=7)
Delete/dqlite/1-workers-4                   16.10µ ± 68%     15.00µ ± 45%        ~ (p=0.620 n=7)
Delete/dqlite/4-workers-4                   16.50µ ± 27%     15.20µ ± 41%        ~ (p=0.875 n=7)
Delete/dqlite/16-workers-4                  16.60µ ± 11%     13.40µ ± 62%        ~ (p=0.062 n=7)
Delete/dqlite/64-workers-4                  16.20µ ± 60%     15.20µ ± 22%        ~ (p=0.620 n=7)
Delete/dqlite/128-workers-4                 14.00µ ± 36%     14.10µ ± 45%        ~ (p=0.976 n=7)
Get/sqlite-4                                64.00µ ±  8%     64.10µ ±  6%        ~ (p=1.000 n=7)
Get/dqlite-4                                34.40µ ± 11%     35.70µ ±  8%        ~ (p=0.154 n=7)
List/sqlite-tiny/all-4                      6.600µ ± 21%     6.600µ ± 24%        ~ (p=0.400 n=7)
List/sqlite-tiny/pagination-4               16.60µ ± 13%     16.20µ ±  7%        ~ (p=0.365 n=7)
List/sqlite-fits-in-page/all-4              13.00µ ± 14%     12.30µ ± 19%        ~ (p=0.318 n=7)
List/sqlite-fits-in-page/pagination-4       39.80µ ±  4%     39.50µ ±  6%        ~ (p=0.557 n=7)
List/sqlite-overflows-page/all-4            13.30µ ±  4%     13.60µ ±  3%        ~ (p=0.106 n=7)
List/sqlite-overflows-page/pagination-4     41.60µ ± 33%     42.40µ ± 13%        ~ (p=0.805 n=7)
List/dqlite-tiny/all-4                      4.300µ ± 16%     4.100µ ± 10%        ~ (p=0.071 n=7)
List/dqlite-tiny/pagination-4               8.700µ ± 10%     8.100µ ±  7%        ~ (p=0.175 n=7)
List/dqlite-fits-in-page/all-4             11.000µ ± 15%     9.300µ ± 18%        ~ (p=0.081 n=7)
List/dqlite-fits-in-page/pagination-4       22.60µ ± 33%     23.50µ ± 23%        ~ (p=0.620 n=7)
List/dqlite-overflows-page/all-4            35.30µ ± 11%     34.80µ ± 12%        ~ (p=0.219 n=7)
List/dqlite-overflows-page/pagination-4     66.80µ ± 16%     65.90µ ±  6%        ~ (p=0.318 n=7)
Update/sqlite/1-workers-4                   17.90µ ± 25%     20.60µ ± 17%        ~ (p=0.073 n=7)
Update/sqlite/4-workers-4                   21.40µ ± 17%     23.90µ ± 35%        ~ (p=0.383 n=7)
Update/sqlite/16-workers-4                  21.30µ ± 11%     22.00µ ± 19%        ~ (p=0.646 n=7)
Update/sqlite/64-workers-4                  24.50µ ± 16%     24.70µ ± 34%        ~ (p=0.435 n=7)
Update/sqlite/128-workers-4                 24.50µ ± 22%     22.30µ ± 25%        ~ (p=0.476 n=7)
Update/dqlite/1-workers-4                   8.600µ ± 58%    10.000µ ± 52%        ~ (p=0.535 n=7)
Update/dqlite/4-workers-4                   12.10µ ± 27%     11.30µ ± 37%        ~ (p=0.334 n=7)
Update/dqlite/16-workers-4                  10.20µ ± 59%     11.30µ ± 61%        ~ (p=0.383 n=7)
Update/dqlite/64-workers-4                  11.00µ ± 45%     10.20µ ± 34%        ~ (p=0.401 n=7)
Update/dqlite/128-workers-4                11.600µ ± 66%     8.100µ ± 65%        ~ (p=0.454 n=7)
geomean                                     19.05µ           18.64µ         -2.16%

                                        │     Before     │                  After                  │
                                        │ sec-writing/op │ sec-writing/op  vs base                 │
Compaction/sqlite-4                       9.200µ ±  4%      9.000µ ±   8%        ~ (p=0.298 n=7)
Compaction/dqlite-4                       7.000µ ± 10%      6.600µ ±   6%        ~ (p=0.107 n=7)
Create/sqlite/1-workers-4                 234.8µ ±  4%      242.7µ ±   5%        ~ (p=0.383 n=7)
Create/sqlite/4-workers-4                 1.351m ±  7%      1.386m ±   7%        ~ (p=0.780 n=7)
Create/sqlite/16-workers-4                5.225m ±  4%      5.217m ±  11%        ~ (p=0.805 n=7)
Create/sqlite/64-workers-4                18.06m ± 27%      18.54m ±   8%        ~ (p=0.805 n=7)
Create/sqlite/128-workers-4               35.00m ±  8%      42.30m ±  41%  +20.86% (p=0.001 n=7)
Create/dqlite/1-workers-4                 44.80µ ± 19%      39.20µ ±  21%        ~ (p=0.209 n=7)
Create/dqlite/4-workers-4                 48.80µ ± 29%      46.60µ ±  19%        ~ (p=0.710 n=7)
Create/dqlite/16-workers-4                50.40µ ± 19%      48.10µ ±  21%        ~ (p=0.456 n=7)
Create/dqlite/64-workers-4                48.20µ ± 28%      46.80µ ±  10%        ~ (p=1.000 n=7)
Create/dqlite/128-workers-4               53.90µ ± 21%      48.90µ ±  18%        ~ (p=0.477 n=7)
Delete/sqlite/1-workers-4                 229.0µ ±  8%      241.7µ ±   6%        ~ (p=0.259 n=7)
Delete/sqlite/4-workers-4                 1.403m ± 14%      1.322m ±   9%        ~ (p=0.620 n=7)
Delete/sqlite/16-workers-4                5.283m ±  4%      5.240m ±  11%        ~ (p=1.000 n=7)
Delete/sqlite/64-workers-4                18.62m ±  9%      19.05m ±   9%        ~ (p=1.000 n=7)
Delete/sqlite/128-workers-4               34.93m ± 86%      39.60m ± 274%        ~ (p=0.128 n=7)
Delete/dqlite/1-workers-4                 41.10µ ± 25%      45.00µ ±  22%        ~ (p=0.456 n=7)
Delete/dqlite/4-workers-4                 50.30µ ±  8%      47.00µ ±  19%        ~ (p=0.259 n=7)
Delete/dqlite/16-workers-4                48.80µ ± 24%      43.40µ ±  29%        ~ (p=0.336 n=7)
Delete/dqlite/64-workers-4                47.00µ ± 28%      43.80µ ±  11%        ~ (p=0.554 n=7)
Delete/dqlite/128-workers-4               46.40µ ± 31%      47.60µ ±  14%        ~ (p=0.737 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                 247.2µ ±  8%      248.2µ ±  13%        ~ (p=0.805 n=7)
Update/sqlite/4-workers-4                 1.436m ±  5%      1.372m ±   6%   -4.46% (p=0.026 n=7)
Update/sqlite/16-workers-4                5.282m ±  5%      5.151m ±   6%        ~ (p=0.259 n=7)
Update/sqlite/64-workers-4                18.39m ± 24%      18.30m ±   9%        ~ (p=0.620 n=7)
Update/sqlite/128-workers-4               34.85m ±  6%      36.56m ±  40%        ~ (p=0.128 n=7)
Update/dqlite/1-workers-4                 35.00µ ± 21%      36.50µ ±  29%        ~ (p=0.646 n=7)
Update/dqlite/4-workers-4                 48.10µ ± 21%      48.60µ ±  19%        ~ (p=1.000 n=7)
Update/dqlite/16-workers-4                45.90µ ± 25%      47.30µ ±   9%        ~ (p=0.363 n=7)
Update/dqlite/64-workers-4                47.30µ ± 15%      40.90µ ±  22%        ~ (p=0.163 n=7)
Update/dqlite/128-workers-4               43.60µ ± 22%      47.30µ ±  16%        ~ (p=0.066 n=7)
geomean                                                ²                    -0.37%               ²
¹ all samples are equal
² summaries must be >0 to compute geomean

                                        │    Before     │                After                 │
                                        │     B/op      │     B/op       vs base               │
Compaction/sqlite-4                       2.320Ki ± 12%   2.317Ki ± 18%        ~ (p=0.902 n=7)
Compaction/dqlite-4                       5.258Ki ± 77%   5.171Ki ± 84%        ~ (p=0.535 n=7)
Create/sqlite/1-workers-4                 20.49Ki ±  0%   20.45Ki ±  0%   -0.20% (p=0.001 n=7)
Create/sqlite/4-workers-4                 20.48Ki ±  0%   20.45Ki ±  0%   -0.18% (p=0.001 n=7)
Create/sqlite/16-workers-4                20.48Ki ±  0%   20.43Ki ±  0%   -0.27% (p=0.001 n=7)
Create/sqlite/64-workers-4                20.50Ki ±  0%   20.46Ki ±  0%        ~ (p=0.535 n=7)
Create/sqlite/128-workers-4               20.59Ki ±  0%   20.69Ki ±  2%   +0.48% (p=0.004 n=7)
Create/dqlite/1-workers-4                 19.74Ki ±  0%   19.71Ki ±  0%   -0.19% (p=0.001 n=7)
Create/dqlite/4-workers-4                 19.72Ki ±  0%   19.75Ki ±  0%   +0.15% (p=0.023 n=7)
Create/dqlite/16-workers-4                19.72Ki ±  0%   19.74Ki ±  0%        ~ (p=0.318 n=7)
Create/dqlite/64-workers-4                19.73Ki ±  0%   19.74Ki ±  3%        ~ (p=0.383 n=7)
Create/dqlite/128-workers-4               19.75Ki ±  0%   19.77Ki ±  0%        ~ (p=0.154 n=7)
Delete/sqlite/1-workers-4                 22.92Ki ±  0%   22.88Ki ±  0%   -0.17% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 22.91Ki ±  0%   22.86Ki ±  0%   -0.22% (p=0.001 n=7)
Delete/sqlite/16-workers-4                22.88Ki ±  0%   22.85Ki ±  0%   -0.15% (p=0.007 n=7)
Delete/sqlite/64-workers-4                22.91Ki ±  0%   22.87Ki ±  0%        ~ (p=0.104 n=7)
Delete/sqlite/128-workers-4               22.99Ki ±  2%   23.01Ki ±  6%        ~ (p=0.456 n=7)
Delete/dqlite/1-workers-4                 22.00Ki ±  0%   21.96Ki ±  0%   -0.22% (p=0.001 n=7)
Delete/dqlite/4-workers-4                 21.97Ki ±  0%   21.93Ki ±  0%   -0.20% (p=0.001 n=7)
Delete/dqlite/16-workers-4                21.98Ki ±  0%   21.94Ki ± 10%   -0.21% (p=0.001 n=7)
Delete/dqlite/64-workers-4                21.99Ki ±  0%   21.95Ki ±  0%   -0.20% (p=0.001 n=7)
Delete/dqlite/128-workers-4               22.00Ki ± 10%   21.95Ki ± 10%   -0.23% (p=0.008 n=7)
Get/sqlite-4                              24.51Ki ±  0%   23.67Ki ±  0%   -3.40% (p=0.001 n=7)
Get/dqlite-4                              23.31Ki ±  0%   22.45Ki ±  0%   -3.68% (p=0.001 n=7)
List/sqlite-tiny/all-4                    1.160Ki ± 12%   1.148Ki ± 11%        ~ (p=0.976 n=7)
List/sqlite-tiny/pagination-4             1.773Ki ± 13%   1.690Ki ±  8%        ~ (p=0.165 n=7)
List/sqlite-fits-in-page/all-4            7.137Ki ± 14%   7.317Ki ± 20%        ~ (p=0.535 n=7)
List/sqlite-fits-in-page/pagination-4     11.05Ki ±  2%   10.95Ki ±  2%        ~ (p=0.122 n=7)
List/sqlite-overflows-page/all-4          20.54Ki ±  0%   20.51Ki ± 12%   -0.14% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4   24.63Ki ± 44%   25.54Ki ± 21%        ~ (p=0.710 n=7)
List/dqlite-tiny/all-4                    1.008Ki ±  5%   1.008Ki ±  5%        ~ (p=0.315 n=7)
List/dqlite-tiny/pagination-4               968.0 ±  5%     990.0 ±  7%        ~ (p=0.456 n=7)
List/dqlite-fits-in-page/all-4            6.063Ki ±  8%   5.973Ki ±  8%        ~ (p=0.259 n=7)
List/dqlite-fits-in-page/pagination-4     4.866Ki ± 15%   5.651Ki ± 14%  +16.13% (p=0.038 n=7)
List/dqlite-overflows-page/all-4          30.52Ki ±  9%   30.78Ki ±  1%        ~ (p=0.097 n=7)
List/dqlite-overflows-page/pagination-4   29.95Ki ±  8%   30.13Ki ±  5%        ~ (p=0.710 n=7)
Update/sqlite/1-workers-4                 22.28Ki ±  0%   21.60Ki ±  0%   -3.05% (p=0.001 n=7)
Update/sqlite/4-workers-4                 22.28Ki ±  0%   21.60Ki ±  0%   -3.05% (p=0.001 n=7)
Update/sqlite/16-workers-4                22.28Ki ±  0%   21.59Ki ±  0%   -3.08% (p=0.001 n=7)
Update/sqlite/64-workers-4                22.28Ki ±  0%   21.60Ki ±  0%   -3.04% (p=0.001 n=7)
Update/sqlite/128-workers-4               22.31Ki ±  0%   21.69Ki ±  1%   -2.80% (p=0.001 n=7)
Update/dqlite/1-workers-4                 21.48Ki ±  0%   20.81Ki ±  0%   -3.11% (p=0.001 n=7)
Update/dqlite/4-workers-4                 21.45Ki ±  0%   20.79Ki ±  0%   -3.10% (p=0.001 n=7)
Update/dqlite/16-workers-4                21.46Ki ±  0%   20.80Ki ±  0%   -3.07% (p=0.001 n=7)
Update/dqlite/64-workers-4                21.42Ki ±  0%   20.82Ki ±  2%   -2.76% (p=0.001 n=7)
Update/dqlite/128-workers-4               21.35Ki ± 10%   20.79Ki ±  0%        ~ (p=0.195 n=7)
geomean                                   14.28Ki         14.20Ki         -0.53%

                                        │   Before    │                After                │
                                        │  allocs/op  │  allocs/op    vs base               │
Compaction/sqlite-4                       50.00 ± 12%    50.00 ± 18%        ~ (p=1.000 n=7)
Compaction/dqlite-4                       126.0 ± 77%    124.0 ± 85%        ~ (p=0.558 n=7)
Create/sqlite/1-workers-4                 399.0 ±  0%    396.0 ±  0%   -0.75% (p=0.001 n=7)
Create/sqlite/4-workers-4                 399.0 ±  0%    396.0 ±  0%   -0.75% (p=0.001 n=7)
Create/sqlite/16-workers-4                399.0 ±  0%    396.0 ±  0%   -0.75% (p=0.001 n=7)
Create/sqlite/64-workers-4                399.0 ±  0%    396.0 ±  0%   -0.75% (p=0.001 n=7)
Create/sqlite/128-workers-4               400.0 ±  0%    399.0 ±  1%        ~ (p=0.333 n=7)
Create/dqlite/1-workers-4                 369.0 ±  0%    366.0 ±  0%   -0.81% (p=0.001 n=7)
Create/dqlite/4-workers-4                 369.0 ±  0%    366.0 ±  0%   -0.81% (p=0.001 n=7)
Create/dqlite/16-workers-4                369.0 ±  0%    366.0 ±  0%   -0.81% (p=0.001 n=7)
Create/dqlite/64-workers-4                368.0 ±  0%    366.0 ±  4%   -0.54% (p=0.001 n=7)
Create/dqlite/128-workers-4               368.0 ±  0%    365.0 ±  0%   -0.82% (p=0.001 n=7)
Delete/sqlite/1-workers-4                 431.0 ±  0%    427.0 ±  0%   -0.93% (p=0.001 n=7)
Delete/sqlite/4-workers-4                 431.0 ±  0%    427.0 ±  0%   -0.93% (p=0.001 n=7)
Delete/sqlite/16-workers-4                430.0 ±  0%    427.0 ±  0%   -0.70% (p=0.001 n=7)
Delete/sqlite/64-workers-4                430.0 ±  0%    426.0 ±  0%   -0.93% (p=0.001 n=7)
Delete/sqlite/128-workers-4               431.0 ±  1%    428.0 ±  2%        ~ (p=0.136 n=7)
Delete/dqlite/1-workers-4                 399.0 ±  0%    395.0 ±  0%   -1.00% (p=0.001 n=7)
Delete/dqlite/4-workers-4                 399.0 ±  0%    395.0 ±  0%   -1.00% (p=0.001 n=7)
Delete/dqlite/16-workers-4                399.0 ±  0%    395.0 ± 12%   -1.00% (p=0.001 n=7)
Delete/dqlite/64-workers-4                399.0 ±  0%    395.0 ±  0%   -1.00% (p=0.001 n=7)
Delete/dqlite/128-workers-4               399.0 ± 13%    395.0 ± 13%   -1.00% (p=0.003 n=7)
Get/sqlite-4                              446.0 ±  0%    436.0 ±  0%   -2.24% (p=0.001 n=7)
Get/dqlite-4                              413.0 ±  0%    403.0 ±  0%   -2.42% (p=0.001 n=7)
List/sqlite-tiny/all-4                    15.00 ± 20%    17.00 ± 18%        ~ (p=0.121 n=7)
List/sqlite-tiny/pagination-4             29.00 ± 17%    29.00 ±  7%        ~ (p=0.731 n=7)
List/sqlite-fits-in-page/all-4            19.00 ± 21%    21.00 ± 19%        ~ (p=0.726 n=7)
List/sqlite-fits-in-page/pagination-4     41.00 ±  5%    42.00 ±  7%        ~ (p=0.146 n=7)
List/sqlite-overflows-page/all-4          9.000 ±  0%   10.000 ±  0%  +11.11% (p=0.001 n=7)
List/sqlite-overflows-page/pagination-4   14.00 ± 57%    16.00 ± 25%        ~ (p=0.467 n=7)
List/dqlite-tiny/all-4                    15.00 ± 13%    16.00 ±  6%   +6.67% (p=0.033 n=7)
List/dqlite-tiny/pagination-4             14.00 ±  0%    15.00 ± 13%        ~ (p=0.233 n=7)
List/dqlite-fits-in-page/all-4            20.00 ±  5%    21.00 ±  5%   +5.00% (p=0.049 n=7)
List/dqlite-fits-in-page/pagination-4     16.00 ± 25%    20.00 ± 30%        ~ (p=0.192 n=7)
List/dqlite-overflows-page/all-4          34.00 ±  3%    36.00 ±  3%   +5.88% (p=0.006 n=7)
List/dqlite-overflows-page/pagination-4   34.00 ± 15%    35.00 ±  9%        ~ (p=0.547 n=7)
Update/sqlite/1-workers-4                 412.0 ±  0%    403.0 ±  0%   -2.18% (p=0.001 n=7)
Update/sqlite/4-workers-4                 412.0 ±  0%    403.0 ±  0%   -2.18% (p=0.001 n=7)
Update/sqlite/16-workers-4                411.0 ±  0%    403.0 ±  0%   -1.95% (p=0.001 n=7)
Update/sqlite/64-workers-4                412.0 ±  1%    403.0 ±  0%   -2.18% (p=0.001 n=7)
Update/sqlite/128-workers-4               412.0 ±  0%    404.0 ±  0%   -1.94% (p=0.001 n=7)
Update/dqlite/1-workers-4                 381.0 ±  0%    373.0 ±  0%   -2.10% (p=0.001 n=7)
Update/dqlite/4-workers-4                 381.0 ±  0%    373.0 ±  0%   -2.10% (p=0.001 n=7)
Update/dqlite/16-workers-4                381.0 ±  0%    372.0 ±  0%   -2.36% (p=0.001 n=7)
Update/dqlite/64-workers-4                380.0 ±  0%    372.0 ±  3%   -2.11% (p=0.001 n=7)
Update/dqlite/128-workers-4               379.0 ± 13%    371.0 ±  0%        ~ (p=0.123 n=7)
geomean                                   169.8          171.8         +1.18%

                                        │        Before         │                    After                    │
                                        │ network-bytes-read/op │ network-bytes-read/op  vs base              │
Compaction/dqlite-4                               1.899Ki ± 78%           1.867Ki ± 86%       ~ (p=0.535 n=7)
Create/dqlite/1-workers-4                           241.2 ±  0%             241.7 ±  0%  +0.21% (p=0.011 n=7)
Create/dqlite/4-workers-4                           242.2 ±  0%             242.5 ±  0%       ~ (p=0.091 n=7)
Create/dqlite/16-workers-4                          242.2 ±  0%             242.5 ±  0%       ~ (p=0.137 n=7)
Create/dqlite/64-workers-4                          242.4 ±  0%             242.3 ± 10%       ~ (p=0.928 n=7)
Create/dqlite/128-workers-4                         242.2 ±  0%             242.4 ±  0%       ~ (p=0.146 n=7)
Delete/dqlite/1-workers-4                           718.4 ±  0%             718.3 ±  0%       ~ (p=0.735 n=7)
Delete/dqlite/4-workers-4                           719.7 ±  0%             719.5 ±  0%       ~ (p=0.274 n=7)
Delete/dqlite/16-workers-4                          719.8 ±  0%             719.3 ± 12%       ~ (p=0.098 n=7)
Delete/dqlite/64-workers-4                          719.7 ±  0%             719.3 ±  0%       ~ (p=0.923 n=7)
Delete/dqlite/128-workers-4                         719.8 ± 12%             719.3 ± 12%       ~ (p=0.124 n=7)
Get/dqlite-4                                      1.133Ki ±  0%           1.134Ki ±  0%       ~ (p=0.694 n=7)
List/dqlite-tiny/all-4                              213.1 ±  9%             213.9 ±  8%       ~ (p=0.973 n=7)
List/dqlite-tiny/pagination-4                       198.7 ±  2%             196.0 ± 10%       ~ (p=0.209 n=7)
List/dqlite-fits-in-page/all-4                    1.365Ki ±  1%           1.356Ki ±  2%       ~ (p=0.645 n=7)
List/dqlite-fits-in-page/pagination-4             1.121Ki ± 26%           1.298Ki ± 31%       ~ (p=0.620 n=7)
List/dqlite-overflows-page/all-4                  7.120Ki ±  3%           7.251Ki ±  2%       ~ (p=0.073 n=7)
List/dqlite-overflows-page/pagination-4           7.173Ki ± 16%           7.163Ki ± 10%       ~ (p=0.710 n=7)
Update/dqlite/1-workers-4                           263.0 ±  0%             263.3 ±  0%  +0.11% (p=0.001 n=7)
Update/dqlite/4-workers-4                           263.0 ±  0%             263.3 ±  0%  +0.11% (p=0.006 n=7)
Update/dqlite/16-workers-4                          263.0 ±  0%             263.2 ±  0%  +0.08% (p=0.002 n=7)
Update/dqlite/64-workers-4                          262.4 ±  0%             262.8 ±  7%  +0.15% (p=0.027 n=7)
Update/dqlite/128-workers-4                         261.6 ± 32%             262.1 ±  0%  +0.19% (p=0.001 n=7)
geomean                                             560.4                   563.8        +0.61%

                                        │          Before          │                     After                      │
                                        │ network-bytes-written/op │ network-bytes-written/op  vs base              │
Compaction/dqlite-4                                    4.536 ± 14%                4.525 ± 15%       ~ (p=0.535 n=7)
Create/dqlite/1-workers-4                              115.2 ±  1%                116.2 ±  1%  +0.87% (p=0.002 n=7)
Create/dqlite/4-workers-4                              116.9 ±  0%                117.9 ±  1%  +0.86% (p=0.002 n=7)
Create/dqlite/16-workers-4                             116.9 ±  1%                117.9 ±  1%       ~ (p=0.052 n=7)
Create/dqlite/64-workers-4                             117.3 ±  1%                117.6 ±  6%       ~ (p=0.480 n=7)
Create/dqlite/128-workers-4                            117.1 ±  0%                117.9 ±  1%  +0.68% (p=0.008 n=7)
Delete/dqlite/1-workers-4                              82.57 ±  1%                82.65 ±  0%       ~ (p=0.189 n=7)
Delete/dqlite/4-workers-4                              83.28 ±  0%                83.16 ±  0%       ~ (p=0.332 n=7)
Delete/dqlite/16-workers-4                             83.18 ±  0%                83.05 ± 34%       ~ (p=0.300 n=7)
Delete/dqlite/64-workers-4                             83.16 ±  1%                83.06 ±  1%       ~ (p=0.786 n=7)
Delete/dqlite/128-workers-4                            83.26 ± 34%                83.06 ± 34%       ~ (p=0.318 n=7)
Get/dqlite-4                                           88.56 ±  0%                96.44 ±  0%  +8.90% (p=0.001 n=7)
List/dqlite-tiny/all-4                               0.04695 ± 15%              0.04746 ± 14%       ~ (p=0.929 n=7)
List/dqlite-tiny/pagination-4                        0.04942 ±  4%              0.04480 ± 14%  -9.35% (p=0.038 n=7)
List/dqlite-fits-in-page/all-4                       0.06282 ±  2%              0.06233 ±  4%       ~ (p=0.620 n=7)
List/dqlite-fits-in-page/pagination-4                0.06937 ± 42%              0.07566 ± 37%       ~ (p=0.805 n=7)
List/dqlite-overflows-page/all-4                     0.08211 ±  5%              0.08259 ±  3%       ~ (p=0.259 n=7)
List/dqlite-overflows-page/pagination-4               0.1230 ± 11%               0.1287 ± 17%       ~ (p=0.128 n=7)
Update/dqlite/1-workers-4                              136.6 ±  0%                137.1 ±  0%  +0.37% (p=0.001 n=7)
Update/dqlite/4-workers-4                              136.4 ±  0%                137.0 ±  0%  +0.44% (p=0.001 n=7)
Update/dqlite/16-workers-4                             136.4 ±  0%                137.2 ±  0%  +0.59% (p=0.001 n=7)
Update/dqlite/64-workers-4                             136.1 ±  0%                137.4 ±  4%  +0.96% (p=0.026 n=7)
Update/dqlite/128-workers-4                            135.9 ± 21%                137.1 ±  0%  +0.88% (p=0.001 n=7)
geomean                                                13.80                      13.91        +0.82%
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.85µ ±   4%
Compaction/dqlite-4                       41.42µ ±   6%
Create/sqlite/1-workers-4                 476.3µ ±   2%
Create/sqlite/4-workers-4                 464.2µ ±   6%
Create/sqlite/16-workers-4                441.1µ ±   8%
Create/sqlite/64-workers-4                493.2µ ±  38%
Create/sqlite/128-workers-4               1.220m ±  55%
Create/dqlite/1-workers-4                 1.041m ±   3%
Create/dqlite/4-workers-4                 914.4µ ±   1%
Create/dqlite/16-workers-4                913.1µ ±   3%
Create/dqlite/64-workers-4                922.3µ ±   2%
Create/dqlite/128-workers-4               948.2µ ±   2%
Delete/sqlite/1-workers-4                 477.6µ ±   3%
Delete/sqlite/4-workers-4                 451.3µ ±   4%
Delete/sqlite/16-workers-4                447.8µ ±   7%
Delete/sqlite/64-workers-4                462.9µ ±  17%
Delete/sqlite/128-workers-4               862.0µ ± 747%
Delete/dqlite/1-workers-4                 1.047m ±   3%
Delete/dqlite/4-workers-4                 923.1µ ±   3%
Delete/dqlite/16-workers-4                935.0µ ±   7%
Delete/dqlite/64-workers-4                933.3µ ±   2%
Delete/dqlite/128-workers-4               878.0µ ±   6%
Get/sqlite-4                              231.0µ ±   3%
Get/dqlite-4                              343.7µ ±   1%
List/sqlite-tiny/all-4                    3.992µ ±   9%
List/sqlite-tiny/pagination-4             8.673µ ±   4%
List/sqlite-fits-in-page/all-4            7.471µ ±   6%
List/sqlite-fits-in-page/pagination-4     22.69µ ±   2%
List/sqlite-overflows-page/all-4          17.56µ ±   3%
List/sqlite-overflows-page/pagination-4   42.52µ ±   3%
List/dqlite-tiny/all-4                    2.972µ ±   7%
List/dqlite-tiny/pagination-4             6.151µ ±   3%
List/dqlite-fits-in-page/all-4            6.680µ ±   4%
List/dqlite-fits-in-page/pagination-4     17.74µ ±   8%
List/dqlite-overflows-page/all-4          21.34µ ±   3%
List/dqlite-overflows-page/pagination-4   43.90µ ±   3%
Update/sqlite/1-workers-4                 490.2µ ±   7%
Update/sqlite/4-workers-4                 451.6µ ±   7%
Update/sqlite/16-workers-4                436.1µ ±   5%
Update/sqlite/64-workers-4                441.6µ ±  34%
Update/sqlite/128-workers-4               820.1µ ± 136%
Update/dqlite/1-workers-4                 1.020m ±   6%
Update/dqlite/4-workers-4                 948.5µ ±   4%
Update/dqlite/16-workers-4                933.4µ ±   4%
Update/dqlite/64-workers-4                923.2µ ±   5%
Update/dqlite/128-workers-4               925.7µ ±   4%
geomean                                   204.6µ

                                        │        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.29 ±  1%
Compaction/dqlite-4                         12.22 ±  1%
Create/sqlite/1-workers-4                   13.91 ±  0%
Create/sqlite/4-workers-4                   12.56 ±  2%
Create/sqlite/16-workers-4                  10.69 ±  6%
Create/sqlite/64-workers-4                  9.083 ±  5%
Create/sqlite/128-workers-4                 8.339 ± 14%
Create/dqlite/1-workers-4                   13.28 ±  1%
Create/dqlite/4-workers-4                   10.94 ±  1%
Create/dqlite/16-workers-4                  10.94 ±  2%
Create/dqlite/64-workers-4                  10.97 ±  1%
Create/dqlite/128-workers-4                 10.99 ±  1%
Delete/sqlite/1-workers-4                   16.24 ±  0%
Delete/sqlite/4-workers-4                   14.52 ±  2%
Delete/sqlite/16-workers-4                  12.01 ±  3%
Delete/sqlite/64-workers-4                  10.06 ±  3%
Delete/sqlite/128-workers-4                 9.521 ± 14%
Delete/dqlite/1-workers-4                   15.57 ±  1%
Delete/dqlite/4-workers-4                   13.38 ±  0%
Delete/dqlite/16-workers-4                  13.43 ±  3%
Delete/dqlite/64-workers-4                  13.27 ±  2%
Delete/dqlite/128-workers-4                 13.10 ±  4%
Get/sqlite-4                                14.95 ±  0%
Get/dqlite-4                                11.96 ±  0%
List/sqlite-tiny/all-4                     191.3m ±  1%
List/sqlite-tiny/pagination-4               1.133 ±  0%
List/sqlite-fits-in-page/all-4             163.6m ±  1%
List/sqlite-fits-in-page/pagination-4      965.8m ±  0%
List/sqlite-overflows-page/all-4           177.2m ±  0%
List/sqlite-overflows-page/pagination-4     1.388 ± 17%
List/dqlite-tiny/all-4                     191.6m ±  0%
List/dqlite-tiny/pagination-4               1.126 ±  3%
List/dqlite-fits-in-page/all-4             164.1m ±  0%
List/dqlite-fits-in-page/pagination-4      955.0m ±  0%
List/dqlite-overflows-page/all-4           184.4m ±  0%
List/dqlite-overflows-page/pagination-4     1.072 ±  3%
Update/sqlite/1-workers-4                   15.83 ±  0%
Update/sqlite/4-workers-4                   14.41 ±  3%
Update/sqlite/16-workers-4                  12.70 ±  4%
Update/sqlite/64-workers-4                  11.11 ±  7%
Update/sqlite/128-workers-4                 10.36 ± 16%
Update/dqlite/1-workers-4                   15.32 ±  1%
Update/dqlite/4-workers-4                   12.80 ±  3%
Update/dqlite/16-workers-4                  12.80 ±  1%
Update/dqlite/64-workers-4                  12.73 ±  2%
Update/dqlite/128-workers-4                 12.67 ±  1%
geomean                                     5.181

                                        │     After      │
                                        │ page-writes/op │
Compaction/sqlite-4                        190.9m ± 1%
Compaction/dqlite-4                        187.3m ± 0%
Create/sqlite/1-workers-4                   4.362 ± 0%
Create/sqlite/4-workers-4                   4.316 ± 1%
Create/sqlite/16-workers-4                  4.306 ± 1%
Create/sqlite/64-workers-4                  4.252 ± 1%
Create/sqlite/128-workers-4                 4.157 ± 3%
Create/dqlite/1-workers-4                   4.267 ± 1%
Create/dqlite/4-workers-4                   4.301 ± 0%
Create/dqlite/16-workers-4                  4.300 ± 1%
Create/dqlite/64-workers-4                  4.306 ± 1%
Create/dqlite/128-workers-4                 4.300 ± 1%
Delete/sqlite/1-workers-4                   4.389 ± 0%
Delete/sqlite/4-workers-4                   4.372 ± 1%
Delete/sqlite/16-workers-4                  4.369 ± 1%
Delete/sqlite/64-workers-4                  4.378 ± 0%
Delete/sqlite/128-workers-4                 4.334 ± 3%
Delete/dqlite/1-workers-4                   4.364 ± 1%
Delete/dqlite/4-workers-4                   4.376 ± 1%
Delete/dqlite/16-workers-4                  4.373 ± 0%
Delete/dqlite/64-workers-4                  4.342 ± 1%
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.232 ± 0%
Update/sqlite/4-workers-4                   4.311 ± 1%
Update/sqlite/16-workers-4                  4.316 ± 0%
Update/sqlite/64-workers-4                  4.307 ± 1%
Update/sqlite/128-workers-4                 4.278 ± 4%
Update/dqlite/1-workers-4                   4.211 ± 0%
Update/dqlite/4-workers-4                   4.204 ± 1%
Update/dqlite/16-workers-4                  4.226 ± 1%
Update/dqlite/64-workers-4                  4.237 ± 0%
Update/dqlite/128-workers-4                 4.234 ± 1%
geomean                                                ¹
¹ summaries must be >0 to compute geomean

                                        │     After      │
                                        │ sec-reading/op │
Compaction/sqlite-4                         27.60µ ± 16%
Compaction/dqlite-4                         28.20µ ± 60%
Create/sqlite/1-workers-4                   22.60µ ± 35%
Create/sqlite/4-workers-4                   20.60µ ± 36%
Create/sqlite/16-workers-4                  21.30µ ± 54%
Create/sqlite/64-workers-4                  25.40µ ± 25%
Create/sqlite/128-workers-4                 28.20µ ± 37%
Create/dqlite/1-workers-4                   10.20µ ± 43%
Create/dqlite/4-workers-4                   11.90µ ± 45%
Create/dqlite/16-workers-4                  12.40µ ± 39%
Create/dqlite/64-workers-4                  11.10µ ± 46%
Create/dqlite/128-workers-4                 11.40µ ± 63%
Delete/sqlite/1-workers-4                   32.70µ ± 23%
Delete/sqlite/4-workers-4                   32.90µ ± 11%
Delete/sqlite/16-workers-4                  35.30µ ± 23%
Delete/sqlite/64-workers-4                  38.50µ ± 23%
Delete/sqlite/128-workers-4                 38.00µ ± 32%
Delete/dqlite/1-workers-4                   15.00µ ± 45%
Delete/dqlite/4-workers-4                   15.20µ ± 41%
Delete/dqlite/16-workers-4                  13.40µ ± 62%
Delete/dqlite/64-workers-4                  15.20µ ± 22%
Delete/dqlite/128-workers-4                 14.10µ ± 45%
Get/sqlite-4                                64.10µ ±  6%
Get/dqlite-4                                35.70µ ±  8%
List/sqlite-tiny/all-4                      6.600µ ± 24%
List/sqlite-tiny/pagination-4               16.20µ ±  7%
List/sqlite-fits-in-page/all-4              12.30µ ± 19%
List/sqlite-fits-in-page/pagination-4       39.50µ ±  6%
List/sqlite-overflows-page/all-4            13.60µ ±  3%
List/sqlite-overflows-page/pagination-4     42.40µ ± 13%
List/dqlite-tiny/all-4                      4.100µ ± 10%
List/dqlite-tiny/pagination-4               8.100µ ±  7%
List/dqlite-fits-in-page/all-4              9.300µ ± 18%
List/dqlite-fits-in-page/pagination-4       23.50µ ± 23%
List/dqlite-overflows-page/all-4            34.80µ ± 12%
List/dqlite-overflows-page/pagination-4     65.90µ ±  6%
Update/sqlite/1-workers-4                   20.60µ ± 17%
Update/sqlite/4-workers-4                   23.90µ ± 35%
Update/sqlite/16-workers-4                  22.00µ ± 19%
Update/sqlite/64-workers-4                  24.70µ ± 34%
Update/sqlite/128-workers-4                 22.30µ ± 25%
Update/dqlite/1-workers-4                   10.00µ ± 52%
Update/dqlite/4-workers-4                   11.30µ ± 37%
Update/dqlite/16-workers-4                  11.30µ ± 61%
Update/dqlite/64-workers-4                  10.20µ ± 34%
Update/dqlite/128-workers-4                 8.100µ ± 65%
geomean                                     18.64µ

                                        │      After      │
                                        │ sec-writing/op  │
Compaction/sqlite-4                       9.000µ ±   8%
Compaction/dqlite-4                       6.600µ ±   6%
Create/sqlite/1-workers-4                 242.7µ ±   5%
Create/sqlite/4-workers-4                 1.386m ±   7%
Create/sqlite/16-workers-4                5.217m ±  11%
Create/sqlite/64-workers-4                18.54m ±   8%
Create/sqlite/128-workers-4               42.30m ±  41%
Create/dqlite/1-workers-4                 39.20µ ±  21%
Create/dqlite/4-workers-4                 46.60µ ±  19%
Create/dqlite/16-workers-4                48.10µ ±  21%
Create/dqlite/64-workers-4                46.80µ ±  10%
Create/dqlite/128-workers-4               48.90µ ±  18%
Delete/sqlite/1-workers-4                 241.7µ ±   6%
Delete/sqlite/4-workers-4                 1.322m ±   9%
Delete/sqlite/16-workers-4                5.240m ±  11%
Delete/sqlite/64-workers-4                19.05m ±   9%
Delete/sqlite/128-workers-4               39.60m ± 274%
Delete/dqlite/1-workers-4                 45.00µ ±  22%
Delete/dqlite/4-workers-4                 47.00µ ±  19%
Delete/dqlite/16-workers-4                43.40µ ±  29%
Delete/dqlite/64-workers-4                43.80µ ±  11%
Delete/dqlite/128-workers-4               47.60µ ±  14%
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                 248.2µ ±  13%
Update/sqlite/4-workers-4                 1.372m ±   6%
Update/sqlite/16-workers-4                5.151m ±   6%
Update/sqlite/64-workers-4                18.30m ±   9%
Update/sqlite/128-workers-4               36.56m ±  40%
Update/dqlite/1-workers-4                 36.50µ ±  29%
Update/dqlite/4-workers-4                 48.60µ ±  19%
Update/dqlite/16-workers-4                47.30µ ±   9%
Update/dqlite/64-workers-4                40.90µ ±  22%
Update/dqlite/128-workers-4               47.30µ ±  16%
geomean                                                 ¹
¹ summaries must be >0 to compute geomean

                                        │     After     │
                                        │     B/op      │
Compaction/sqlite-4                       2.317Ki ± 18%
Compaction/dqlite-4                       5.171Ki ± 84%
Create/sqlite/1-workers-4                 20.45Ki ±  0%
Create/sqlite/4-workers-4                 20.45Ki ±  0%
Create/sqlite/16-workers-4                20.43Ki ±  0%
Create/sqlite/64-workers-4                20.46Ki ±  0%
Create/sqlite/128-workers-4               20.69Ki ±  2%
Create/dqlite/1-workers-4                 19.71Ki ±  0%
Create/dqlite/4-workers-4                 19.75Ki ±  0%
Create/dqlite/16-workers-4                19.74Ki ±  0%
Create/dqlite/64-workers-4                19.74Ki ±  3%
Create/dqlite/128-workers-4               19.77Ki ±  0%
Delete/sqlite/1-workers-4                 22.88Ki ±  0%
Delete/sqlite/4-workers-4                 22.86Ki ±  0%
Delete/sqlite/16-workers-4                22.85Ki ±  0%
Delete/sqlite/64-workers-4                22.87Ki ±  0%
Delete/sqlite/128-workers-4               23.01Ki ±  6%
Delete/dqlite/1-workers-4                 21.96Ki ±  0%
Delete/dqlite/4-workers-4                 21.93Ki ±  0%
Delete/dqlite/16-workers-4                21.94Ki ± 10%
Delete/dqlite/64-workers-4                21.95Ki ±  0%
Delete/dqlite/128-workers-4               21.95Ki ± 10%
Get/sqlite-4                              23.67Ki ±  0%
Get/dqlite-4                              22.45Ki ±  0%
List/sqlite-tiny/all-4                    1.148Ki ± 11%
List/sqlite-tiny/pagination-4             1.690Ki ±  8%
List/sqlite-fits-in-page/all-4            7.317Ki ± 20%
List/sqlite-fits-in-page/pagination-4     10.95Ki ±  2%
List/sqlite-overflows-page/all-4          20.51Ki ± 12%
List/sqlite-overflows-page/pagination-4   25.54Ki ± 21%
List/dqlite-tiny/all-4                    1.008Ki ±  5%
List/dqlite-tiny/pagination-4               990.0 ±  7%
List/dqlite-fits-in-page/all-4            5.973Ki ±  8%
List/dqlite-fits-in-page/pagination-4     5.651Ki ± 14%
List/dqlite-overflows-page/all-4          30.78Ki ±  1%
List/dqlite-overflows-page/pagination-4   30.13Ki ±  5%
Update/sqlite/1-workers-4                 21.60Ki ±  0%
Update/sqlite/4-workers-4                 21.60Ki ±  0%
Update/sqlite/16-workers-4                21.59Ki ±  0%
Update/sqlite/64-workers-4                21.60Ki ±  0%
Update/sqlite/128-workers-4               21.69Ki ±  1%
Update/dqlite/1-workers-4                 20.81Ki ±  0%
Update/dqlite/4-workers-4                 20.79Ki ±  0%
Update/dqlite/16-workers-4                20.80Ki ±  0%
Update/dqlite/64-workers-4                20.82Ki ±  2%
Update/dqlite/128-workers-4               20.79Ki ±  0%
geomean                                   14.20Ki

                                        │    After    │
                                        │  allocs/op  │
Compaction/sqlite-4                       50.00 ± 18%
Compaction/dqlite-4                       124.0 ± 85%
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 ±  0%
Create/sqlite/128-workers-4               399.0 ±  1%
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 ±  4%
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               428.0 ±  2%
Delete/dqlite/1-workers-4                 395.0 ±  0%
Delete/dqlite/4-workers-4                 395.0 ±  0%
Delete/dqlite/16-workers-4                395.0 ± 12%
Delete/dqlite/64-workers-4                395.0 ±  0%
Delete/dqlite/128-workers-4               395.0 ± 13%
Get/sqlite-4                              436.0 ±  0%
Get/dqlite-4                              403.0 ±  0%
List/sqlite-tiny/all-4                    17.00 ± 18%
List/sqlite-tiny/pagination-4             29.00 ±  7%
List/sqlite-fits-in-page/all-4            21.00 ± 19%
List/sqlite-fits-in-page/pagination-4     42.00 ±  7%
List/sqlite-overflows-page/all-4          10.00 ±  0%
List/sqlite-overflows-page/pagination-4   16.00 ± 25%
List/dqlite-tiny/all-4                    16.00 ±  6%
List/dqlite-tiny/pagination-4             15.00 ± 13%
List/dqlite-fits-in-page/all-4            21.00 ±  5%
List/dqlite-fits-in-page/pagination-4     20.00 ± 30%
List/dqlite-overflows-page/all-4          36.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                 373.0 ±  0%
Update/dqlite/16-workers-4                372.0 ±  0%
Update/dqlite/64-workers-4                372.0 ±  3%
Update/dqlite/128-workers-4               371.0 ±  0%
geomean                                   171.8

                                        │         After         │
                                        │ network-bytes-read/op │
Compaction/dqlite-4                               1.867Ki ± 86%
Create/dqlite/1-workers-4                           241.7 ±  0%
Create/dqlite/4-workers-4                           242.5 ±  0%
Create/dqlite/16-workers-4                          242.5 ±  0%
Create/dqlite/64-workers-4                          242.3 ± 10%
Create/dqlite/128-workers-4                         242.4 ±  0%
Delete/dqlite/1-workers-4                           718.3 ±  0%
Delete/dqlite/4-workers-4                           719.5 ±  0%
Delete/dqlite/16-workers-4                          719.3 ± 12%
Delete/dqlite/64-workers-4                          719.3 ±  0%
Delete/dqlite/128-workers-4                         719.3 ± 12%
Get/dqlite-4                                      1.134Ki ±  0%
List/dqlite-tiny/all-4                              213.9 ±  8%
List/dqlite-tiny/pagination-4                       196.0 ± 10%
List/dqlite-fits-in-page/all-4                    1.356Ki ±  2%
List/dqlite-fits-in-page/pagination-4             1.298Ki ± 31%
List/dqlite-overflows-page/all-4                  7.251Ki ±  2%
List/dqlite-overflows-page/pagination-4           7.163Ki ± 10%
Update/dqlite/1-workers-4                           263.3 ±  0%
Update/dqlite/4-workers-4                           263.3 ±  0%
Update/dqlite/16-workers-4                          263.2 ±  0%
Update/dqlite/64-workers-4                          262.8 ±  7%
Update/dqlite/128-workers-4                         262.1 ±  0%
geomean                                             563.8

                                        │          After           │
                                        │ network-bytes-written/op │
Compaction/dqlite-4                                    4.525 ± 15%
Create/dqlite/1-workers-4                              116.2 ±  1%
Create/dqlite/4-workers-4                              117.9 ±  1%
Create/dqlite/16-workers-4                             117.9 ±  1%
Create/dqlite/64-workers-4                             117.6 ±  6%
Create/dqlite/128-workers-4                            117.9 ±  1%
Delete/dqlite/1-workers-4                              82.65 ±  0%
Delete/dqlite/4-workers-4                              83.16 ±  0%
Delete/dqlite/16-workers-4                             83.05 ± 34%
Delete/dqlite/64-workers-4                             83.06 ±  1%
Delete/dqlite/128-workers-4                            83.06 ± 34%
Get/dqlite-4                                           96.44 ±  0%
List/dqlite-tiny/all-4                               0.04746 ± 14%
List/dqlite-tiny/pagination-4                        0.04480 ± 14%
List/dqlite-fits-in-page/all-4                       0.06233 ±  4%
List/dqlite-fits-in-page/pagination-4                0.07566 ± 37%
List/dqlite-overflows-page/all-4                     0.08259 ±  3%
List/dqlite-overflows-page/pagination-4               0.1287 ± 17%
Update/dqlite/1-workers-4                              137.1 ±  0%
Update/dqlite/4-workers-4                              137.0 ±  0%
Update/dqlite/16-workers-4                             137.2 ±  0%
Update/dqlite/64-workers-4                             137.4 ±  4%
Update/dqlite/128-workers-4                            137.1 ±  0%
geomean                                                13.91

@louiseschmidtgen louiseschmidtgen marked this pull request as ready for review November 15, 2024 13:59
@louiseschmidtgen louiseschmidtgen requested a review from a team as a code owner November 15, 2024 13:59
Copy link
Contributor

@louiseschmidtgen louiseschmidtgen left a comment

Choose a reason for hiding this comment

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

Awesome, thanks for splitting this into separate commits this helped tremendously to follow along the changes one-by-one.
A few questions while I was reading through popped up:

pkg/kine/server/types.go Show resolved Hide resolved
pkg/kine/sqllog/logstructured.go Outdated Show resolved Hide resolved
pkg/kine/sqllog/logstructured.go Outdated Show resolved Hide resolved
pkg/kine/sqllog/sqllog.go Outdated Show resolved Hide resolved
pkg/kine/sqllog/sqllog.go Show resolved Hide resolved
pkg/kine/broadcaster/broadcaster.go Show resolved Hide resolved
@marco6 marco6 force-pushed the KU-1750/merge-logstructured-and-sqllog branch from e4c34ed to ba2a7c4 Compare November 25, 2024 10:39
@marco6
Copy link
Collaborator Author

marco6 commented Nov 25, 2024

I rebased on top of master, this way we see the benchmark diff which does not include other changes.

@marco6
Copy link
Collaborator Author

marco6 commented Nov 25, 2024

Dropped dependency from #193

Copy link
Contributor

@louiseschmidtgen louiseschmidtgen left a comment

Choose a reason for hiding this comment

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

LGTM, just removing the comment before merging.

pkg/kine/sqllog/logstructured.go Outdated Show resolved Hide resolved
pkg/kine/sqllog/sqllog.go Outdated Show resolved Hide resolved
@louiseschmidtgen louiseschmidtgen merged commit c67af60 into master Nov 27, 2024
8 checks passed
@marco6 marco6 deleted the KU-1750/merge-logstructured-and-sqllog branch November 27, 2024 10:40
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.

2 participants