← all runs
Cohere-1M — 2026-10-08
c8g.medium · peak recall 0.9991 @ 49 QPS
“c8g.medium rung, chunk_size=10000 via dataset config (OOM workaround)”
QPS at recall
| Recall | mkt-defaults |
|---|
| 0.90 | 85 |
| 0.95 | 76 |
| 0.99 | 63 |
Throughput under load
| Recall · clients | mkt-defaults |
|---|
| 0.95 · 1 client | 79 (79) p50 12.82 ms · p95 19.92 ms |
| 0.95 · 2 clients (2x of 1 CPUs) | 79 (79) · 1.0× p50 24.94 ms · p95 38.24 ms |
| 0.99 · 1 client | 68 (68) p50 14.74 ms · p95 23.38 ms |
| 0.99 · 2 clients (2x of 1 CPUs) | 67 (67) · 1.0× p50 29.41 ms · p95 44.96 ms |
Each configuration is measured at its operating point for the target: its fastest sweep point whose recall reaches it. Values are measured there, not interpolated, so the recall can be above the target. Each cell is wall-clock QPS over the whole run, then in parentheses the throughput while every client is busy, which leaves out the drain at the end, and below them the p50 and p95 query latency over all clients. With more than one client, N× is the speedup: wall-clock QPS over the same configuration's single-client wall-clock QPS at that target. Ideal scaling matches the client count until the host's CPUs saturate, after which it flattens. Clients are concurrent connections from rekall, and CPU counts are the rekall host's. Wall-clock QPS includes rekall's own work between queries, so the 1-client row reads a little below QPS at recall, which comes from query latency. Recall is distance-based (ann-benchmarks, tie-aware).
Measured on config — mkt-defaults @0.95: mkt-defaults (r=0.953) · mkt-defaults @0.99: mkt-defaults (r=0.994)
Latency at recall
| mkt-defaults |
|---|
| @ recall 0.90 | |
| p50 | 11.98 ms |
| p95 | 18.04 ms |
| p99 | 24.71 ms |
| @ recall 0.95 | |
| p50 | 13.34 ms |
| p95 | 20.93 ms |
| p99 | 29.89 ms |
| @ recall 0.99 | |
| p50 | 15.81 ms |
| p95 | 25.17 ms |
| p99 | 36.81 ms |
All values are taken at exactly the stated recall: each configuration's own sweep is log-interpolated between its two surrounding measured points (measured values are used verbatim on an exact hit) and the best configuration at that recall is shown — values are never interpolated across different configurations. “—” means no single sweep spans that recall; nothing is extrapolated. Recall is distance-based (ann-benchmarks, tie-aware). Insert/update/delete workloads are not measured.
Build comparison
| mkt-defaults |
|---|
| Build time | 148 s |
| Index size | 269.1 MB |
Plots
Pareto svg ·
Distance-recall svg ·
Per-config svg ·
Build times svg ·
Index sizes svgHost
| Instance type | c8g.medium |
| Hostname | ip-172-31-37-199 |
| CPU | unknown (1 vCPU) |
| Memory | 2 GB |
| OS | Ubuntu 26.04.1 LTS |
| Kernel | 7.0.0-1014-aws |
Versions
| rekall | 0.1.0 (f31e456 / feature/concurrent-search) |
| PostgreSQL | PostgreSQL 18.6 (Ubuntu 18.6-1.pgdg26.04+2) on aarch64-unknown-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
| pg_prewarm | 1.2 |
| pg_vectorsearch | 0.1.0-dev (039603a) |
| vector | 0.8.7 |
Search
Index builds
| Index | Type | Build time | Size | Workers |
|---|
| mkt-defaults | prism | 148.4s | 269.1 MB | 1 |
Index parameters
mkt-defaults: {"boundary_epsilon":null,"centroid_compression":null,"centroid_fastscan":null,"fan_out":null,"fastscan":null,"fastscan_bits":null,"nlist":null,"rerank_vectors":null,"soar_lambda":null}
Instance settings (observed)
instance type c8g.medium
vCPU (observed) 1
memory (observed) 1.8 GiB
cpu model unknown
kernel 7.0.0-1014-aws
data directory /var/lib/postgresql/18/main
mount point /
filesystem ext4
media ebs
device nvme0n1
device size 107 GB
ebs volume vol-04865ecb7ba623cf5
ebs volume type gp3
provisioned IOPS 3000
provisioned throughput 125 MB/s
io scheduler mq-deadline
nr_requests 126
read_ahead_kb 128
PostgreSQL settings
checkpoint_completion_target = 0.9
cluster_name = 18/main
data_directory = /var/lib/postgresql/18/main
effective_cache_size = 1 GB
effective_io_concurrency = 200
huge_pages = try
jit = off
maintenance_io_concurrency = 200
maintenance_work_mem = 384 MB
max_connections = 52
max_parallel_maintenance_workers = 1
max_parallel_workers = 1
max_wal_size = 4 GB
random_page_cost = 1.1
server_version = 18.6 (Ubuntu 18.6-1.pgdg26.04+2)
shared_buffers = 512 MB
wal_level = replica
work_mem = 16 MB