strawmANN against Qdrant · AMD Ryzen AI 9 HX PRO 370 w/ Radeon 890M (24 logical) · generated 2026-10-13 00:02:06 CEST
At equal recall, strawmANN serves 1.34x to 2.40x Qdrant's throughput. That range spans the recall levels measured; allowing for the uncertainty in each recall figure widens it to 0.97x to 2.69x.
Every figure is the median of 3 passes per engine, run alternately (A/B/A/B). What this does not establish.
docs/spec.md, the written
rule each claim in the appendix is measured against. §7.1 is the host
gate, §7.4 the comparison rules, §8 what may be published.Queries per second; higher is better. The ratio is strawmANN
over Qdrant: green is faster, red slower, grey
≈ inside the noise floor (hover a ratio for its band). A dash means the pair is
not compared, and the note says why. An ef sweep is one row showing its
range; every measurement is under All throughput rows.
| workload | strawmANN | Qdrant | ratio | notes | |
|---|---|---|---|---|---|
| W3 | search, fp32, single query | 2,142 | 2,013 | 1.06x | |
| W4 | search, saturating (closed loop) | 27,947 | 14,226 | - | one pass apart: strawmANN pass 1 -14% |
| W5 | search batched (16 distinct dataset queries per request) | 28,1561,826 requests/s | 17,2171,148 requests/s | 1.64x | |
| W6 | quantized: scalar | 33,455 | 18,903 | 1.77x | |
| W6 ef 32 to 512 | SQ8 recall control (latency only) | 9,151 to 77,345 | 7,164 to 38,780 | 1.28 to 2.02x | |
| W7 | quantized: binary + oversampling | 27,306 | 19,742 | - | recall below the usable floor: 0.0650 and 0.0658, both under 0.50 — this row characterises the encoding, not the engines |
| W7-2bit | quantized: binary quantization, 2 bits + oversampling | 31,405 | 17,623 | - | recall differs: 0.5452 vs 0.5026 |
| W7-1p5bit | quantized: binary quantization, 1.5 bits + oversampling | 30,523 | 17,280 | - | recall below the usable floor: 0.3817 and 0.3428, both under 0.50 — this row characterises the encoding, not the engines |
| W8 | quantized: PQ | 27,153 | 19,240 | 1.41x | |
| W14-1bit | quantized: TurboQuant, 1 bit + oversampling | 27,331 | 16,257 | - | recall differs: 0.7628 vs 0.7158 |
| W14-1p5bit | quantized: TurboQuant, 1.5 bits + oversampling | 24,873 | 15,866 | - | recall differs: 0.8526 vs 0.8147 |
| W14-2bit | quantized: TurboQuant, 2 bits + oversampling | 24,919 | 16,951 | - | recall differs: 0.9711 vs 0.9427 |
| W14-4bit | quantized: TurboQuant, 4 bits + oversampling | 31,607 | 18,667 | 1.69x | |
| W9 | exact / brute force | 191 | 123 | 1.56x | |
| W10 ef 32 to 512 | recall control (latency only) | 7,434 to 47,050 | 3,964 to 22,216 | 1.88 to 2.38x | |
| W12-sel1 | filtered search, one keyword (~1% of bench12) | 36,269 | 18,359 | 1.98x | |
| W12-sel10 | filtered search, any of 10 keywords (~10% of bench12) | 4,934 | 2,184 | 2.26x | |
| W12-sel1 ef 32 to 512 | filtered recall control, one keyword (latency only) | 36,226 to 36,528 | 20,773 to 20,944 | 1.74 to 1.75x | |
| W12-sel10 ef 32 to 512 | filtered recall control, any of 10 keywords (latency only) | 4,907 to 14,946 | 1,605 to 2,588 | 2.26 to 3.53x | 1 of 5 points not compared recall differs |
| W13 | scroll / pagination | 56,641 | 50,492 | 1.12x | strawmANN: 91% is client and socket, not server Qdrant: 81% is client and socket, not server |
| W11-steady | mixed read/write below the rebuild threshold: search bench2 while 50,000 synthetic points append | 21,624 | 4,481 | - | search-during-write; no recall join |
| W11 | mixed read/write: search bench2 while 200,000 synthetic points append (runs last) | 17,800 | 2,017 | - | search-during-write; no recall join |
recall@10 against an exact fp64 search, not against the other engine.
Equal ef is not equal work in the two engines, so the comparison that
counts holds recall fixed and compares throughput there.
| recall@10 | measured at | strawmANN q/s | Qdrant q/s | strawmANN / Qdrant | range over recall CI |
|---|---|---|---|---|---|
| 0.9077 | strawmANN at ef=32, Qdrant interpolated | 47,050 | 21,042 | 2.24x | 2.15 – 2.32x |
| 0.9605 | Qdrant at ef=64, strawmANN interpolated | 36,784 | 15,661 | 2.35x | 2.30 – 2.40x |
| 0.9625 | strawmANN at ef=64, Qdrant interpolated | 36,447 | 15,184 | 2.40x | 2.23 – 2.58x |
| 0.9872 | strawmANN at ef=128, Qdrant interpolated | 24,269 | 10,308 | 2.35x | 2.24 – 2.48x |
| 0.9879 | Qdrant at ef=128, strawmANN interpolated | 23,289 | 10,205 | 2.28x | 1.94 – 2.69x |
| 0.9956 | strawmANN at ef=256, Qdrant interpolated | 14,118 | 7,040 | 2.01x | 1.81 – 2.22x |
| 0.9967 | Qdrant at ef=256, strawmANN interpolated | 10,071 | 6,683 | 1.51x | 1.03 – 2.20x |
| 0.9977 | strawmANN at ef=512, Qdrant interpolated | 7,434 | 5,533 | 1.34x | 0.97 – 1.85x |
Interpolated linear in log(q/s) between the two bracketing measurements, nothing extrapolated past the measured range. Throughput is bfb's W10 sweep, recall the conformance sweep, joined on ef — same m and ef_construct, but separate builds, so the pairing assumes two builds with identical parameters are equivalent.
The last column is why the ratio is not a result on its own. The ratio treats the anchor's recall as exact; it is an estimate, and moving it across its 95% interval moves the interpolated rate with it — near the top of the sweep 0.003 of recall spans a factor of 1.8, so two decimals there quote the interpolation. Even that is the narrow reading: it moves one recall and not the other, adjacent anchors share bracketing segments, and the throughputs behind it are medians of the run's passes.
The same reading over the scalar-quantized collection. Under the `pool` policy both engines rescore `ef` candidates, so W6 is compared row by row as well; held at equal recall, the reading does not depend on the rows landing in one recall band. Note where each engine's curve stops, because a recall only one of them reaches is the more useful fact about an encoding than any ratio.
| recall@10 | measured at | strawmANN q/s | Qdrant q/s | strawmANN / Qdrant | range over recall CI |
|---|---|---|---|---|---|
| 0.9092 | strawmANN at ef=32, Qdrant interpolated | 77,345 | 37,257 | 2.08x | 2.02 – 2.13x |
| 0.9603 | Qdrant at ef=64, strawmANN interpolated | 61,881 | 30,091 | 2.06x | 2.02 – 2.10x |
| 0.9640 | strawmANN at ef=64, Qdrant interpolated | 60,906 | 28,497 | 2.14x | 1.99 – 2.29x |
| 0.9876 | Qdrant at ef=128, strawmANN interpolated | 34,474 | 20,024 | 1.72x | 1.63 – 1.82x |
| 0.9888 | strawmANN at ef=128, Qdrant interpolated | 33,459 | 18,726 | 1.79x | 1.49 – 2.14x |
| 0.9968 | Qdrant at ef=256, strawmANN interpolated | 18,442 | 12,161 | 1.52x | 1.38 – 1.66x |
| 0.9974 | strawmANN at ef=256, Qdrant interpolated | 17,622 | 10,693 | 1.65x | 1.00 – 2.72x |
| 0.9993 | Qdrant at ef=512, strawmANN interpolated | 9,822 | 7,164 | 1.37x | 1.14 – 1.65x |
Interpolated linear in log(q/s) between the two bracketing measurements, nothing extrapolated past the measured range. Throughput is bfb's W6 sweep, recall the conformance sweep, joined on ef — same m and ef_construct, but separate builds, so the pairing assumes two builds with identical parameters are equivalent.
The last column reads as it does in the fp32 table above.
The same reading under a keyword filter over the points the condition matched, 20,088 to 20,287 across 3 builds in strawmANN and 20,131 to 20,215 across 3 builds in Qdrant (bfb draws the keyword payloads unseeded at each upload). The per-row table compares W12-sel10 at the one ef it measures; held at equal recall, the comparison extends to every recall both engines reach. Note the shape rather than any single number: one engine's curve is flat in ef and the other's is steep, so where you match decides the ratio.
| recall@10 | measured at | strawmANN q/s | Qdrant q/s | strawmANN / Qdrant | range over recall CI |
|---|---|---|---|---|---|
| 0.9784 | strawmANN at ef=32, Qdrant interpolated | 14,946 | 2,504 | 5.97x | 5.92 – 6.02x |
| 0.9915 | Qdrant at ef=64, strawmANN interpolated | 9,699 | 2,420 | 4.01x | 3.72 – 4.32x |
| 0.9953 | strawmANN at ef=64, Qdrant interpolated | 8,547 | 2,278 | 3.75x | 3.66 – 3.85x |
| 0.9982 | Qdrant at ef=128, strawmANN interpolated | 6,112 | 2,178 | 2.81x | 2.51 – 3.13x |
| 0.9996 | Qdrant at ef=256, strawmANN interpolated | 5,144 | 1,908 | 2.70x | 2.54 – 2.86x |
| 0.9999 | Qdrant at ef=512, strawmANN interpolated | 4,971 | 1,605 | 3.10x | 2.98 – 3.21x |
Interpolated linear in log(q/s) between the two bracketing measurements, nothing extrapolated past the measured range. Throughput is bfb's W12-sel10 sweep, recall the conformance sweep, joined on ef — same m and ef_construct, but separate builds, so the pairing assumes two builds with identical parameters are equivalent.
The last column reads as it does in the fp32 table above.
ef| ef | strawmANN | Qdrant | ||||||
|---|---|---|---|---|---|---|---|---|
| recall@1 | recall@10 | recall@100 | MRDE | recall@1 | recall@10 | recall@100 | MRDE | |
| ef=32 | 0.9454 | 0.9077 | - | 3.19e-03 | 0.9367 | 0.8979 | - | 3.51e-03 |
| ef=64 | 0.9791 | 0.9625 | - | 1.18e-03 | 0.9759 | 0.9605 | - | 1.22e-03 |
| ef=128 | 0.9940 | 0.9872 | 0.9492 | 4.59e-04 | 0.9937 | 0.9879 | 0.9437 | 3.15e-04 |
| ef=256 | 0.9978 | 0.9956 | 0.9839 | 2.56e-04 | 0.9988 | 0.9967 | 0.9833 | 7.75e-05 |
| ef=512 | 0.9984 | 0.9977 | 0.9950 | 2.13e-04 | 0.9998 | 0.9994 | 0.9961 | 1.08e-05 |
10,000 held-out queries, limit 10, ε=4.172e-07, against the fp64 oracle rather than against the other engine. Base checksum 7bf7ead7809a45cd: the same corpus the latency rows were measured on. Each pass rebuilds the collection. Across 3 independent builds of it, recall@10 at ef=512 spread by: strawmANN 0.00192; Qdrant 0.00022. strawmANN's graphs disagree with each other 9x as much as Qdrant's do, so a ratio read at the top of this table reports which graph the build produced as much as which engine built it. Over the same builds the engine reported unreachable nodes: strawmANN 0 of 200,000 and 0 of 1,000,000 — a node nothing points at is invisible at any ef, so that is where a graph-quality difference shows rather than being inferred from the recall beside it. Level seed: strawmANN 0x57ea3111. Recorded as provenance: under this engine's level draw, six builds at four seeds sit within 0.00003 of recall@10 at ef 512, well inside the spread above.
Client-side round trip. A closed loop understates the tail (a stalled server stops receiving requests), so this keeps the fixed-rate, open-loop rows, which offer the same load to both engines, plus single-client W3 and batched W5. Every row is under All latency rows.
| workload | strawmANN | Qdrant | ||||
|---|---|---|---|---|---|---|
| p50 | p99 | p99.9 | p50 | p99 | p99.9 | |
| W3 search, fp32, single query | 473 µs | 547 µs | 607 µs | 500 µs | 607 µs | 762 µs |
| W4-sat50 search, fixed rate at 50% of saturation (open loop) | 401 µs | 705 µs | 874 µs | 738 µs | 1.79 ms | 2.20 ms |
| W4-sat70 search, fixed rate at 70% of saturation (open loop) | 496 µs | 947 µs | 1.10 ms | 822 µs | 1.98 ms | 2.87 ms |
| W4-sat90 search, fixed rate at 90% of saturation (open loop) | 563 µs | 1.11 ms | 1.23 ms | 1.18 ms | 4.49 ms | 8.34 ms |
| W5 search batched (16 distinct dataset queries per request) | 36.08 ms | 37.03 ms | 53.77 ms | 57.74 ms | 98.66 ms | 116.90 ms |
Qdrant indexes while it ingests, so its upload time already contains most of the indexing; strawmANN uploads raw and builds afterwards. Compare the sum, not the upload line.
Solid is upload, hatched is the wait for Green. The bar's whole length is the sum this section asks you to compare; the split is why the upload line alone is not comparable between these engines.
| workload | strawmANN | Qdrant | ||
|---|---|---|---|---|
| W0-upload | d=4 floor: graph traversal with the distance taken out | 19.06 s | 22.05 s | |
| W1 | ingest throughput (no index wait) | 1.10 s | 11.98 s | |
| W2 | index build, time to Green | 41.13 s | 58.14 s | |
| W6-upload | search, SQ8 scalar quantization | 40.13 s | 47.12 s | |
| W7-upload | search, binary quantization | 41.13 s | 49.11 s | |
| W7-2bit-upload | search, binary quantization | 43.14 s | 47.10 s | |
| W7-1p5bit-upload | search, binary quantization | 43.13 s | 52.12 s | |
| W8-upload | search, product quantization | 51.16 s | 89.22 s | |
| W14-1bit-upload | upload | 41.14 s | 53.13 s | |
| W14-1p5bit-upload | upload | 41.14 s | 65.16 s | |
| W14-2bit-upload | upload | 41.14 s | 63.14 s | |
| W14-4bit-upload | upload | 41.14 s | 58.14 s | |
| W12-upload | upload | 9.03 s | 14.04 s | |
| W1 + W2 | upload and index, together | 42.2 s | 70.1 s | 1.66x |
What each engine held in memory and moved to and from disk over the whole run. Per-row figures are under Storage and I/O.
| strawmANN | Qdrant | |
|---|---|---|
| storage on disk | 3.1 GiBallocated at --capacity | 2.9 GiB |
| peak memory (RSS) | 4.7 GiB | 5.2 GiB |
| read from disk | 48.0 KiB | 3.2 GiB |
| written to disk | 5.4 GiB | 28.4 GiB |
Peak memory and storage on disk are read before the concurrent-write rows (W11): an engine rewriting segments maps old and new files at once, and RSS counts each mapping. Bytes written are summed over the same rows, since W11's volume is set by the harness's write rate; the other disk figures are totals over every row.
How the run was set up, every row of every table, and the diagnostics behind them. Charts on a logarithmic axis say so on the axis: read the positions there, not the distances.
Measured as-deployed: the scheduler was left as it ships, so a difference is what a user would see rather
than the engine in isolation, and ambient load is part of the measurement. Qdrant ran equal-work: asked for one populated graph
(--segments 1), as strawmANN serves, so ef means the same
thing on both sides. This is the configuration §8's comparative licensing is built
around, and it is a control rather than a deployment. Its optimizer treats the count
as a target; what it actually held is read back from the engine and stated under
Collection config.
Conformance tier reached: T4 quantization fidelity. T1 passed, so single-engine performance rows are licensed (§8). T3 passed, so a strawmANN-vs-Qdrant throughput comparison is licensed: the engines are at equal recall (§7.4). Conformance hash fec450c094fe8321.
On exact search the two engines' scores differ by at most 0.000e+00 (p99 0.000e+00), against a calibrated relative ε of 4.172e-07. §8.1: bit-exactness is unachievable between two different summation orders, so this — equal values within a measured tolerance — is the claim the speed rests on.
The conformance harness's single-client rate agrees on the ordering (4.10x to 4.47x); a different instrument, so no ratio is formed from it.
Every figure is the median of 3 passes per row per engine, alternated A/B/A/B (§7.4), and the spread is this run's own over 42 of 55 rows. The ingest and index-build rows (W0-upload, W1, W2, W6-upload, W7-upload, W7-2bit-upload, W7-1p5bit-upload, W8-upload, W14-1bit-upload, W14-1p5bit-upload, W14-2bit-upload, W14-4bit-upload, W12-upload) have none, so no build time carries a verdict. Each pass rebuilds the index, so the bands include build variance and are wider than a floor measured against one standing graph.
Units are queries per second. bfb reports rps, which counts
batch requests: at --search-batch-size 16 the two differ by 16x,
and reading one as the other once turned a 2.2x speedup into an apparent 7x
regression. The tables show the request rate wherever it diverges.
The open-loop rows are not a speed. W4-sat50/70/90 offer a
fixed fraction of measured saturation; serving it means the engine kept up, not that
it was faster, so no ratio is printed. They exist because --parallel is
a closed loop, where a stalled server stops receiving requests and understates its
own tail.
ef is the same unit here: Qdrant held 2 segments for this run, one populated and 1 empty (read back per segment from the engine), and strawmANN held one graph, so equal ef is equal traversal width and the curves may be read at equal x. That is a property of this run, not of the engines.
strawmANNsm-sift-perf-1012 | Qdrantqd-sift-perf-1012 | |
|---|---|---|
| engine | commit e292f0b4651aReleaseFast, native build, vnni onbinary sha256 d6f453ebe3803da4built 2026-10-12T13:37:51Z with zig 0.16.0 | version 1.19.2-dev binary ~/.cache/strawmann/qdrant-dbeb0f73/qdrantsha256 dbeb0f73dea2d371 build 878843e6 (from the server's banner, not a checkout)native binary outside a checkout: sha256 is the identity (§8.9) network native no container in the path, like strawmann |
| measured | 2026-10-12T18:29:11Z to 2026-10-12T21:15:35Z (3 passes) | 2026-10-12T18:58:59Z to 2026-10-12T21:53:32Z (3 passes) |
| profile | as-deployed · both engines | |
| §7.1 gate | pass · both engines | |
| environment hash | 373e8531fd3d1bf6 · both engines | |
| load generator | bfb dev @ 96fd5f0 (qdrant/bfb#188; #187's dependency update on top of #186, BM25 k/b in qdrant#11012's nested params, #185's text requests and #172, findings 32's --rps reaping fix) · both engines | |
| client | qdrant-client 1.16.1-dev (git dev branch) · both engines | |
| launched as | ~/Workspace/strawmann/zig-out/bin/strawmann --port 6334 --capacity 1250000 --connections 64 --workers 7 --io-threads 1 --pin --cpus 4-11 --data-dir ~/.cache/strawmann/strawmann-storage --default-placement cached | ~/.cache/strawmann/qdrant-dbeb0f73/qdrant |
| cores the engine could use | 4-11 (8 cores) requested by the harness4-11 (8 cores) observed on 8 threads0-23 (24 cores) observed on 1 thread | 4-11 (8 cores) requested by the harness4-11 (8 cores) observed on 42 threads |
datasets.json| workload | strawmANN | Qdrant | ratio | notes | |
|---|---|---|---|---|---|
| W0 | d=4 floor: graph traversal with the distance taken out | 4,518 | 3,336 | 1.35x | 1.35x is 1.84x less work per query x 0.68x cores busy during the row (0.69 against 1.01) x 1.00x clock x 1.08x counted on-CPU share: the middle term is occupancy, not search speed d=4 floor: this measures graph traversal and heaps with the distance taken out, not request plumbing (findings 28: 76% of the server's CPU was HNSW search, 24% kernel; the RPC path is a small remainder) |
| W3 | search, fp32, single query | 2,142 | 2,013 | 1.06x | |
| W4 | search, saturating (closed loop) | 27,947 | 14,226 | - | strawmANN pass 1 -14% against two passes that agree: one pass set the spread on this row, so a band built from it is not a noise band |
| W4-sat50 | search, fixed rate at 50% of saturation (open loop) | 7,109 | 7,109 | offered | |
| W4-sat70 | search, fixed rate at 70% of saturation (open loop) | 9,952 | 9,952 | offered | |
| W4-sat90 | search, fixed rate at 90% of saturation (open loop) | 12,795 | 12,795 | offered | |
| W5 | search batched (16 distinct dataset queries per request) | 28,1561,826 requests/s | 17,2171,148 requests/s | 1.64x | strawmANN: per-batch latency (16 queries/request); queries: dataset, random-sample; -n 100000 (2x the table's 50000) Qdrant: per-batch latency (16 queries/request); queries: dataset, random-sample batched 16, so qps and rps differ by 16x; the ratio uses qps |
| W6 | quantized: scalar | 33,455 | 18,903 | 1.77x | strawmANN: -n 100000 (2x the table's 50000) |
| W6-ef32 | SQ8 recall control, ef=32 (latency only) | 77,345 | 38,780 | 1.99x | strawmANN: -n 200000 (4x the table's 50000) Qdrant: -n 100000 (2x the table's 50000) strawmANN: 0.46 ms of the client's 0.53 ms p50 is not server time (7x), so 85% of this row is the load generator and the socket |
| W6-ef64 | SQ8 recall control, ef=64 (latency only) | 60,906 | 30,091 | 2.02x | strawmANN: -n 200000 (4x the table's 50000) Qdrant: -n 100000 (2x the table's 50000) |
| W6-ef128 | SQ8 recall control, ef=128 (latency only) | 33,459 | 20,024 | 1.67x | strawmANN: -n 100000 (2x the table's 50000) |
| W6-ef256 | SQ8 recall control, ef=256 (latency only) | 17,622 | 12,161 | 1.45x | |
| W6-ef512 | SQ8 recall control, ef=512 (latency only) | 9,151 | 7,164 | 1.28x | |
| W7 | quantized: binary + oversampling | 27,306 | 19,742 | - | strawmANN: -n 100000 (2x the table's 50000) recall below the usable floor: 0.0650 and 0.0658, both under 0.50 — this row characterises the encoding, not the engines |
| W7-2bit | quantized: binary quantization, 2 bits + oversampling | 31,405 | 17,623 | - | strawmANN: -n 100000 (2x the table's 50000) recall unequal: 0.5452 vs 0.5026; §7.4 compares at equal recall; the rescore pools match, so the encoders differ |
| W7-1p5bit | quantized: binary quantization, 1.5 bits + oversampling | 30,523 | 17,280 | - | strawmANN: -n 100000 (2x the table's 50000) recall below the usable floor: 0.3817 and 0.3428, both under 0.50 — this row characterises the encoding, not the engines |
| W8 | quantized: PQ | 27,153 | 19,240 | 1.41x | strawmANN: -n 100000 (2x the table's 50000) |
| W14-1bit | quantized: TurboQuant, 1 bit + oversampling | 27,331 | 16,257 | - | strawmANN: -n 100000 (2x the table's 50000) recall unequal: 0.7628 vs 0.7158; §7.4 compares at equal recall; the rescore pools match, so the encoders differ |
| W14-1p5bit | quantized: TurboQuant, 1.5 bits + oversampling | 24,873 | 15,866 | - | recall unequal: 0.8526 vs 0.8147; §7.4 compares at equal recall; the rescore pools match, so the encoders differ |
| W14-2bit | quantized: TurboQuant, 2 bits + oversampling | 24,919 | 16,951 | - | recall unequal: 0.9711 vs 0.9427; §7.4 compares at equal recall; the rescore pools match, so the encoders differ |
| W14-4bit | quantized: TurboQuant, 4 bits + oversampling | 31,607 | 18,667 | 1.69x | strawmANN: -n 100000 (2x the table's 50000) |
| W9 | exact / brute force | 191 | 123 | 1.56x | brute force over the whole collection, no index involved |
| W10-ef32 | recall control, ef=32 (latency only) | 47,050 | 22,216 | 2.12x | strawmANN: -n 100000 (2x the table's 50000) |
| W10-ef64 | recall control, ef=64 (latency only) | 36,447 | 15,661 | 2.33x | strawmANN: -n 100000 (2x the table's 50000) |
| W10-ef128 | recall control, ef=128 (latency only) | 24,269 | 10,205 | 2.38x | |
| W10-ef256 | recall control, ef=256 (latency only) | 14,118 | 6,683 | 2.11x | |
| W10-ef512 | recall control, ef=512 (latency only) | 7,434 | 3,964 | 1.88x | |
| W12-sel1 | filtered search, one keyword (~1% of bench12) | 36,269 | 18,359 | 1.98x | strawmANN: -n 100000 (2x the table's 50000) filtered search over a keyword payload index both engines were asked to build; whether each did is read back from the engine and refused beside the row when it did not. Recall is measured under the filter, against ground truth restricted to the matching set |
| W12-sel10 | filtered search, any of 10 keywords (~10% of bench12) | 4,934 | 2,184 | 2.26x | filtered search over a keyword payload index both engines were asked to build; whether each did is read back from the engine and refused beside the row when it did not. Recall is measured under the filter, against ground truth restricted to the matching set |
| W12-sel1-ef32 | filtered recall control, one keyword, ef=32 (latency only) | 36,226 | 20,773 | 1.74x | strawmANN: -n 100000 (2x the table's 50000) |
| W12-sel1-ef64 | filtered recall control, one keyword, ef=64 (latency only) | 36,528 | 20,944 | 1.74x | strawmANN: -n 100000 (2x the table's 50000) |
| W12-sel1-ef128 | filtered recall control, one keyword, ef=128 (latency only) | 36,391 | 20,827 | 1.75x | strawmANN: -n 100000 (2x the table's 50000) |
| W12-sel1-ef256 | filtered recall control, one keyword, ef=256 (latency only) | 36,479 | 20,915 | 1.74x | strawmANN: -n 100000 (2x the table's 50000) |
| W12-sel1-ef512 | filtered recall control, one keyword, ef=512 (latency only) | 36,405 | 20,876 | 1.74x | strawmANN: -n 100000 (2x the table's 50000) |
| W12-sel10-ef32 | filtered recall control, any of 10 keywords, ef=32 (latency only) | 14,946 | 2,588 | - | recall unequal: 0.9784 vs 0.9656; §7.4 compares at equal recall |
| W12-sel10-ef64 | filtered recall control, any of 10 keywords, ef=64 (latency only) | 8,547 | 2,420 | 3.53x | |
| W12-sel10-ef128 | filtered recall control, any of 10 keywords, ef=128 (latency only) | 4,930 | 2,178 | 2.26x | |
| W12-sel10-ef256 | filtered recall control, any of 10 keywords, ef=256 (latency only) | 4,936 | 1,908 | 2.59x | |
| W12-sel10-ef512 | filtered recall control, any of 10 keywords, ef=512 (latency only) | 4,907 | 1,605 | 3.06x | |
| W13 | scroll / pagination | 56,641 | 50,492 | 1.12x | -n 200000 (4x the table's 50000) strawmANN: 0.12 ms of the client's 0.13 ms p50 is not server time (12x), so 91% of this row is the load generator and the socket Qdrant: 0.12 ms of the client's 0.15 ms p50 is not server time (5x), so 81% of this row is the load generator and the socket 1.12x is 3.40x less work per query x 0.33x cores busy during the row (1.46 against 4.48) x 1.00x clock x 1.01x counted on-CPU share: the middle term is occupancy, not search speed |
| W11-steady | mixed read/write below the rebuild threshold: search bench2 while 50,000 synthetic points append | 21,624 | 4,481 | - | strawmANN: qps over the 25.0 s of the append the search saw (22,171 over the whole search); append 2,000 points/s Qdrant: qps over the 25.0 s of the append the search saw (4,484 over the whole search); append 2,000 points/s search-during-write; no recall join |
| W11 | mixed read/write: search bench2 while 200,000 synthetic points append (runs last) | 17,800 | 2,017 | - | strawmANN: qps over the 60.6 s of the append the search saw (19,108 over the whole search); append 3,300 points/s Qdrant: qps over the 60.6 s of the append the search saw (2,106 over the whole search); append 3,300 points/s search-during-write; no recall join |
A row flagged “… not server time” is one where the client saw far more than the server reported: below the rate at which a queue can form, what is left is the load generator's own scheduling.
| workload | strawmANN p50 | strawmANN p95 | strawmANN p99 | strawmANN p99.9 | strawmANN max | Qdrant p50 | Qdrant p95 | Qdrant p99 | Qdrant p99.9 | Qdrant max | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| W0 | d=4 floor: graph traversal with the distance taken out closed loop | 219 µs | 235 µs | 251 µs | 295 µs | 1.30 ms | 297 µs | 328 µs | 359 µs | 407 µs | 2.79 ms |
| W3 | search, fp32, single query closed loop | 473 µs | 523 µs | 547 µs | 607 µs | 1.25 ms | 500 µs | 572 µs | 607 µs | 762 µs | 1.99 ms |
| W4 | search, saturating (closed loop) closed loop | 2.28 ms | 2.46 ms | 2.53 ms | 20.33 ms | 24.34 ms | 4.02 ms | 8.77 ms | 12.31 ms | 22.15 ms | 27.98 ms |
| W4-sat50 | search, fixed rate at 50% of saturation (open loop) open loop | 401 µs | 626 µs | 705 µs | 874 µs | 1.84 ms | 738 µs | 1.34 ms | 1.79 ms | 2.20 ms | 5.13 ms |
| W4-sat70 | search, fixed rate at 70% of saturation (open loop) open loop | 496 µs | 869 µs | 947 µs | 1.10 ms | 3.98 ms | 822 µs | 1.61 ms | 1.98 ms | 2.87 ms | 10.80 ms |
| W4-sat90 | search, fixed rate at 90% of saturation (open loop) open loop | 563 µs | 896 µs | 1.11 ms | 1.23 ms | 3.28 ms | 1.18 ms | 2.71 ms | 4.49 ms | 8.34 ms | 16.79 ms |
| W5 | search batched (16 distinct dataset queries per request) closed loop | 36.08 ms | 36.45 ms | 37.03 ms | 53.77 ms | 57.65 ms | 57.74 ms | 84.50 ms | 98.66 ms | 116.90 ms | 134.48 ms |
| W6 | quantized: scalar closed loop | 1.91 ms | 2.02 ms | 2.07 ms | 2.76 ms | 21.00 ms | 2.96 ms | 6.68 ms | 9.33 ms | 23.34 ms | 33.40 ms |
| W6-ef32 | SQ8 recall control, ef=32 (latency only) closed loop | 533 µs | 1.07 ms | 1.41 ms | 1.98 ms | 14.08 ms | 1.48 ms | 3.02 ms | 3.93 ms | 5.61 ms | 20.12 ms |
| W6-ef64 | SQ8 recall control, ef=64 (latency only) closed loop | 1.00 ms | 1.30 ms | 1.51 ms | 2.13 ms | 24.61 ms | 1.91 ms | 3.93 ms | 5.36 ms | 8.46 ms | 21.63 ms |
| W6-ef128 | SQ8 recall control, ef=128 (latency only) closed loop | 1.91 ms | 2.02 ms | 2.07 ms | 2.88 ms | 21.51 ms | 2.98 ms | 4.95 ms | 6.50 ms | 22.86 ms | 29.84 ms |
| W6-ef256 | SQ8 recall control, ef=256 (latency only) closed loop | 3.64 ms | 3.85 ms | 3.94 ms | 20.52 ms | 24.68 ms | 5.07 ms | 7.55 ms | 9.26 ms | 21.82 ms | 29.41 ms |
| W6-ef512 | SQ8 recall control, ef=512 (latency only) closed loop | 7.04 ms | 7.48 ms | 7.67 ms | 14.93 ms | 22.25 ms | 8.92 ms | 10.11 ms | 11.93 ms | 21.60 ms | 29.50 ms |
| W7 | quantized: binary + oversampling closed loop | 2.33 ms | 2.46 ms | 2.52 ms | 2.67 ms | 18.32 ms | 3.09 ms | 5.01 ms | 6.53 ms | 18.21 ms | 25.19 ms |
| W7-2bit | quantized: binary quantization, 2 bits + oversampling closed loop | 2.03 ms | 2.12 ms | 2.16 ms | 2.54 ms | 31.05 ms | 3.11 ms | 7.44 ms | 10.83 ms | 22.41 ms | 32.80 ms |
| W7-1p5bit | quantized: binary quantization, 1.5 bits + oversampling closed loop | 2.08 ms | 2.18 ms | 2.23 ms | 2.56 ms | 23.41 ms | 3.16 ms | 7.64 ms | 10.86 ms | 23.06 ms | 33.03 ms |
| W8 | quantized: PQ closed loop | 2.36 ms | 2.49 ms | 2.54 ms | 2.77 ms | 18.46 ms | 3.19 ms | 5.11 ms | 6.68 ms | 23.63 ms | 28.79 ms |
| W14-1bit | quantized: TurboQuant, 1 bit + oversampling closed loop | 2.34 ms | 2.48 ms | 2.53 ms | 3.03 ms | 18.10 ms | 3.34 ms | 8.27 ms | 11.85 ms | 19.70 ms | 34.82 ms |
| W14-1p5bit | quantized: TurboQuant, 1.5 bits + oversampling closed loop | 2.57 ms | 2.72 ms | 2.78 ms | 18.12 ms | 21.11 ms | 3.44 ms | 8.46 ms | 11.97 ms | 23.89 ms | 36.52 ms |
| W14-2bit | quantized: TurboQuant, 2 bits + oversampling closed loop | 2.57 ms | 2.75 ms | 2.82 ms | 16.94 ms | 19.55 ms | 3.21 ms | 7.79 ms | 11.03 ms | 24.24 ms | 34.98 ms |
| W14-4bit | quantized: TurboQuant, 4 bits + oversampling closed loop | 2.03 ms | 2.14 ms | 2.19 ms | 2.65 ms | 19.71 ms | 3.01 ms | 6.80 ms | 9.44 ms | 14.22 ms | 19.06 ms |
| W9 | exact / brute force closed loop | 37.34 ms | 60.74 ms | 68.90 ms | 75.30 ms | 84.38 ms | 65.78 ms | 73.15 ms | 77.33 ms | 83.35 ms | 85.07 ms |
| W10-ef32 | recall control, ef=32 (latency only) closed loop | 163 µs | 197 µs | 221 µs | 309 µs | 1.33 ms | 333 µs | 532 µs | 652 µs | 856 µs | 2.17 ms |
| W10-ef64 | recall control, ef=64 (latency only) closed loop | 215 µs | 250 µs | 271 µs | 396 µs | 1.52 ms | 471 µs | 773 µs | 957 µs | 1.24 ms | 3.26 ms |
| W10-ef128 | recall control, ef=128 (latency only) closed loop | 328 µs | 377 µs | 403 µs | 735 µs | 1.89 ms | 708 µs | 1.27 ms | 1.52 ms | 1.95 ms | 3.39 ms |
| W10-ef256 | recall control, ef=256 (latency only) closed loop | 569 µs | 677 µs | 743 µs | 882 µs | 3.15 ms | 1.07 ms | 1.92 ms | 2.30 ms | 3.01 ms | 4.71 ms |
| W10-ef512 | recall control, ef=512 (latency only) closed loop | 1.08 ms | 1.35 ms | 1.52 ms | 1.73 ms | 4.47 ms | 1.85 ms | 3.19 ms | 3.72 ms | 4.75 ms | 7.71 ms |
| W12-sel1 | filtered search, one keyword (~1% of bench12) closed loop | 1.73 ms | 1.85 ms | 2.43 ms | 3.03 ms | 20.09 ms | 3.21 ms | 6.39 ms | 8.32 ms | 25.38 ms | 33.24 ms |
| W12-sel10 | filtered search, any of 10 keywords (~10% of bench12) closed loop | 12.74 ms | 14.10 ms | 14.38 ms | 26.36 ms | 36.19 ms | 28.87 ms | 34.08 ms | 45.06 ms | 61.57 ms | 77.11 ms |
| W12-sel1-ef32 | filtered recall control, one keyword, ef=32 (latency only) closed loop | 1.74 ms | 1.86 ms | 1.93 ms | 3.08 ms | 25.67 ms | 2.88 ms | 4.95 ms | 6.40 ms | 23.43 ms | 29.47 ms |
| W12-sel1-ef64 | filtered recall control, one keyword, ef=64 (latency only) closed loop | 1.73 ms | 1.82 ms | 1.90 ms | 2.79 ms | 19.57 ms | 2.85 ms | 4.94 ms | 6.36 ms | 20.14 ms | 26.99 ms |
| W12-sel1-ef128 | filtered recall control, one keyword, ef=128 (latency only) closed loop | 1.73 ms | 1.82 ms | 1.90 ms | 3.10 ms | 23.34 ms | 2.87 ms | 4.93 ms | 6.41 ms | 23.64 ms | 33.41 ms |
| W12-sel1-ef256 | filtered recall control, one keyword, ef=256 (latency only) closed loop | 1.73 ms | 1.82 ms | 1.90 ms | 2.89 ms | 22.78 ms | 2.87 ms | 4.93 ms | 6.39 ms | 22.63 ms | 28.76 ms |
| W12-sel1-ef512 | filtered recall control, one keyword, ef=512 (latency only) closed loop | 1.73 ms | 1.82 ms | 1.90 ms | 3.01 ms | 20.92 ms | 2.87 ms | 4.90 ms | 6.35 ms | 18.56 ms | 27.31 ms |
| W12-sel10-ef32 | filtered recall control, any of 10 keywords, ef=32 (latency only) closed loop | 4.27 ms | 4.46 ms | 4.56 ms | 21.44 ms | 26.44 ms | 24.72 ms | 26.81 ms | 27.92 ms | 36.85 ms | 53.32 ms |
| W12-sel10-ef64 | filtered recall control, any of 10 keywords, ef=64 (latency only) closed loop | 7.50 ms | 7.89 ms | 8.04 ms | 24.43 ms | 30.90 ms | 26.24 ms | 28.54 ms | 29.92 ms | 37.34 ms | 51.10 ms |
| W12-sel10-ef128 | filtered recall control, any of 10 keywords, ef=128 (latency only) closed loop | 12.75 ms | 14.10 ms | 14.27 ms | 28.53 ms | 38.15 ms | 29.01 ms | 33.04 ms | 35.07 ms | 46.94 ms | 62.77 ms |
| W12-sel10-ef256 | filtered recall control, any of 10 keywords, ef=256 (latency only) closed loop | 12.74 ms | 14.10 ms | 14.25 ms | 24.12 ms | 35.00 ms | 32.89 ms | 40.01 ms | 42.94 ms | 51.42 ms | 66.94 ms |
| W12-sel10-ef512 | filtered recall control, any of 10 keywords, ef=512 (latency only) closed loop | 12.81 ms | 14.14 ms | 14.33 ms | 24.78 ms | 34.28 ms | 38.82 ms | 50.57 ms | 54.30 ms | 59.87 ms | 81.80 ms |
| W13 | scroll / pagination closed loop | 127 µs | 184 µs | 205 µs | 238 µs | 1.03 ms | 146 µs | 210 µs | 292 µs | 459 µs | 1.76 ms |
| W11-steady | mixed read/write below the rebuild threshold: search bench2 while 50,000 synthetic points append closed loop | 329 µs | 393 µs | 1.95 ms | 2.93 ms | 9.68 ms | 1.51 ms | 3.48 ms | 6.72 ms | 13.70 ms | 34.82 ms |
| W11 | mixed read/write: search bench2 while 200,000 synthetic points append (runs last) closed loop | 333 µs | 967 µs | 2.00 ms | 3.20 ms | 9.42 ms | 2.77 ms | 10.56 ms | 16.97 ms | 26.23 ms | 836.66 ms |
The syscall rows count every descriptor, sockets included, so on a search row they measure the network rather than the disk.
| strawmANN | Qdrant | |
|---|---|---|
| storage on disk | 3.1 GiBbefore W11-steady, W11allocated at --capacity | 2.9 GiBbefore W11-steady, W11 |
| peak RSS | 4.7 GiB | 10.7 GiB5.2 GiB before the writers |
| of which anonymous | 2.2 GiB | 1.2 GiB872.4 MiB before the writers |
| of which file-backed | 2.2 GiB | 9.1 GiB3.7 GiB before the writers |
| disk read bytes | 48.0 KiB | 3.2 GiB |
| disk write bytes | 5.5 GiB | 39.1 GiB |
| disk read ops | 36 | 82,824 |
| disk write ops | 83,653 | 700,693 |
| syscall reads (all fds) | 21,367,512 | 75,363 |
| syscall writes (all fds) | 11,500,818 | 7,592,439 |
measured via strawmANN: proc+cgroup / Qdrant: proc+cgroup. proc supplies syscall counts and block-layer bytes, cgroup supplies block-layer operations and bytes, so a row one interface does not carry reads n/a via …. unknown means it was not measured, and 0 means it was: an engine started with no --data-dir has no store, which is the row this section exists for. storage on disk is the level before the rows with a concurrent writer: during those an engine that rewrites segments is caught mid-rewrite, and the same row has read 3.47 and 10.11 GiB on two runs of one binary. peak RSS does include them, being a peak.
A search row doing block-layer reads is an engine going to disk to answer a query.
| workload | strawmANN read | strawmANN written | strawmANN read ops | strawmANN write ops | Qdrant read | Qdrant written | Qdrant read ops | Qdrant write ops |
|---|---|---|---|---|---|---|---|---|
| W0-upload | 4.0 KiB | 61.1 MiB | 3 | 987 | 129.5 MiB | 401.2 MiB | 3,333 | 8,523 |
| W0 | 0 | 0 | 0 | 3 | 0 | 0 | 0 | 6 |
| W1 | 0 | 488.4 MiB | 0 | 0 | 13.2 MiB | 1.6 GiB | 435 | 25,591 |
| W2 | 0 | 488.4 MiB | 0 | 7,883 | 168.1 MiB | 2.3 GiB | 4,236 | 41,775 |
| W3 | 0 | 0 | 0 | 3 | 0 | 0 | 0 | 6 |
| W4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W4-sat50 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W4-sat70 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W4-sat90 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W6-upload | 4.0 KiB | 488.4 MiB | 3 | 7,881 | 167.1 MiB | 2.7 GiB | 4,221 | 47,760 |
| W6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W6-ef32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W6-ef64 | 0 | 0 | 0 | 3 | 0 | 0 | 0 | 0 |
| W6-ef128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W6-ef256 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W6-ef512 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W7-upload | 12.0 KiB | 488.4 MiB | 9 | 7,881 | 189.4 MiB | 2.6 GiB | 4,758 | 47,500 |
| W7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W7-2bit-upload | 0 | 488.4 MiB | 0 | 7,882 | 189.0 MiB | 2.5 GiB | 4,743 | 45,340 |
| W7-2bit | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W7-1p5bit-upload | 0 | 488.4 MiB | 0 | 7,880 | 208.8 MiB | 2.7 GiB | 5,223 | 48,729 |
| W7-1p5bit | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W8-upload | 12.0 KiB | 488.4 MiB | 9 | 8,059 | 145.1 MiB | 2.2 GiB | 3,603 | 38,797 |
| W8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W14-1bit-upload | 0 | 488.4 MiB | 0 | 7,880 | 186.0 MiB | 2.5 GiB | 4,653 | 44,655 |
| W14-1bit | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W14-1p5bit-upload | 0 | 488.4 MiB | 0 | 7,880 | 211.3 MiB | 2.7 GiB | 5,277 | 48,960 |
| W14-1p5bit | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W14-2bit-upload | 0 | 488.4 MiB | 0 | 7,880 | 218.9 MiB | 2.8 GiB | 5,460 | 51,042 |
| W14-2bit | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W14-4bit-upload | 0 | 488.4 MiB | 0 | 7,883 | 193.3 MiB | 2.9 GiB | 4,857 | 52,096 |
| W14-4bit | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W10-ef32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W10-ef64 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W10-ef128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W10-ef256 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W10-ef512 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-upload | 16.0 KiB | 97.8 MiB | 12 | 0 | 46.3 MiB | 585.8 MiB | 1,323 | 11,434 |
| W12-sel1 | 0 | 0 | 0 | 1,577 | 0 | 0 | 0 | 0 |
| W12-sel10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel1-ef32 | 0 | 0 | 0 | 3 | 0 | 0 | 0 | 0 |
| W12-sel1-ef64 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel1-ef128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel1-ef256 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel1-ef512 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel10-ef32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel10-ef64 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel10-ef128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel10-ef256 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W12-sel10-ef512 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| W11-steady | 0 | 24.5 MiB | 0 | 415 | 519.6 MiB | 4.6 GiB | 12,741 | 79,872 |
| W11 | 0 | 97.9 MiB | 0 | 1,673 | 730.1 MiB | 6.1 GiB | 17,961 | 108,607 |
Whether the engine was running while it ran. of wall is CPU over elapsed, waiting is runnable-but-not-scheduled, migrations checks the pinning claim, and switches gives voluntary over involuntary — the scheduler taking the core away against the engine choosing to sleep, which per unit of work is the cheapest signal of lock contention there is. A dash is not a zero: an index build's threads exit before the row does, and threads shows what fraction of the row the survivors account for.
Lower is better; the bar between a pair is the gap.
Peak RSS while the row ran, from the engine's own process. Unlike the disk counters this is not refused across the two engines: residency decides where bytes live, and this is what the process held either way.
| workload | strawmANN | Qdrant | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cpu | of wall | waiting | switches vol/invol | migrations | faults min/maj | threads | cpu | of wall | waiting | switches vol/invol | migrations | faults min/maj | threads | |
| W0-upload | 126.7 s | 567% | 59.6 ms | 39,300 / 623 | 6 | 114,484 / 0 | 9 1% | 160.3 s | 510% | 13,962.1 ms | 155,560 / 30,295 | 13,395 | 417,441 / 196,555 | 41 8% |
| W0 | 8.0 s | 72% | 2.4 ms | 150,106 / 39 | 0 | 0 / 0 | 9 | 15.5 s | 103% | 3.4 ms | 543,567 / 17 | 195 | 509 / 0 | 37 0% |
| W1 | 2.2 s | 68% | 2.1 ms | 122,590 / 2 | 0 | 160,271 / 0 | 9 | 77.4 s | 550% | 27,567.8 ms | 133,407 / 41,333 | 14,995 | 207,287 / 261,474 | 52 0% |
| W2 | 305.5 s | 689% | 136.4 ms | 128,011 / 1,411 | 5 | 228,003 / 0 | 9 1% | 440.3 s | 609% | 33,352.1 ms | 138,867 / 52,171 | 15,658 | 485,870 / 288,657 | 39 4% |
| W3 | 19.9 s | 85% | 2.2 ms | 152,398 / 23 | 0 | 4 / 0 | 9 | 25.7 s | 103% | 3.4 ms | 549,226 / 48 | 209 | 509 / 0 | 39 0% |
| W4 | 13.6 s | 743% | 0.9 ms | 41,626 / 22 | 0 | 70 / 0 | 9 | 27.4 s | 773% | 77,428.7 ms | 65,597 / 44,566 | 16,398 | 2,030 / 0 | 76 |
| W4-sat50 | 60.5 s | 214% | 2.9 ms | 299,343 / 44 | 0 | 12 / 0 | 9 | 119.3 s | 422% | 125,171.7 ms | 1,117,480 / 159,394 | 371,235 | 269 / 0 | 68 95% |
| W4-sat70 | 58.3 s | 288% | 13.7 ms | 218,532 / 46 | 0 | 34 / 0 | 9 | 120.3 s | 595% | 168,810.7 ms | 1,040,417 / 211,890 | 370,251 | 333 / 0 | 68 |
| W4-sat90 | 57.9 s | 367% | 1.1 ms | 188,630 / 40 | 0 | 20 / 0 | 9 | 106.6 s | 677% | 109,704.2 ms | 496,140 / 123,070 | 148,783 | 1,118 / 0 | 44 0% |
| W5 | 25.0 s | 701% | 1.0 ms | 12,834 / 40 | 0 | 147 / 0 | 9 | 22.7 s | 777% | 71,874.4 ms | 4,422 / 9,753 | 1,786 | 38,695 / 0 | 76 |
| W6-upload | 299.7 s | 685% | 111.0 ms | 47,703 / 1,327 | 0 | 277,753 / 0 | 9 1% | 328.6 s | 556% | 22,398.0 ms | 152,023 / 35,864 | 15,672 | 561,106 / 304,998 | 40 0% |
| W6 | 22.8 s | 747% | 2.2 ms | 73,613 / 32 | 0 | 10 / 0 | 9 | 20.4 s | 762% | 68,753.5 ms | 76,796 / 47,922 | 15,398 | 1,773 / 0 | 72 |
| W6-ef32 | 15.6 s | 576% | 2.0 ms | 106,848 / 15 | 0 | 90 / 0 | 9 | 19.7 s | 745% | 47,775.6 ms | 191,494 / 74,328 | 23,599 | 470 / 0 | 78 93% |
| W6-ef64 | 25.5 s | 747% | 1.4 ms | 47,526 / 40 | 0 | 44 / 0 | 9 | 25.6 s | 756% | 56,843.6 ms | 126,566 / 57,766 | 18,043 | 122 / 0 | 78 |
| W6-ef128 | 22.8 s | 747% | 1.0 ms | 72,518 / 20 | 0 | 0 / 0 | 9 | 18.7 s | 739% | 10,640.3 ms | 29,420 / 10,149 | 6,029 | 111 / 0 | 78 |
| W6-ef256 | 21.0 s | 729% | 0.9 ms | 62,574 / 27 | 0 | 0 / 0 | 9 | 31.8 s | 765% | 13,088.6 ms | 34,831 / 16,674 | 6,239 | 523 / 0 | 46 0% |
| W6-ef512 | 39.6 s | 719% | 1.8 ms | 78,174 / 54 | 0 | 3 / 0 | 9 | 55.6 s | 792% | 12,144.6 ms | 32,461 / 26,074 | 1,080 | 386 / 0 | 46 |
| W7-upload | 305.1 s | 681% | 114.5 ms | 48,976 / 1,441 | 1 | 247,541 / 0 | 9 1% | 349.8 s | 565% | 19,990.3 ms | 148,311 / 34,344 | 18,496 | 556,124 / 319,189 | 43 0% |
| W7 | 27.8 s | 743% | 2.3 ms | 92,756 / 42 | 0 | 0 / 0 | 9 | 19.2 s | 745% | 10,017.6 ms | 27,194 / 9,894 | 4,916 | 1,773 / 0 | 51 |
| W7-2bit-upload | 306.0 s | 654% | 114.5 ms | 50,144 / 1,463 | 1 | 247,485 / 0 | 9 1% | 320.2 s | 526% | 20,986.5 ms | 145,547 / 35,276 | 17,320 | 507,387 / 312,803 | 47 6% |
| W7-2bit | 24.2 s | 743% | 2.0 ms | 80,505 / 32 | 0 | 0 / 0 | 9 | 21.9 s | 762% | 74,642.5 ms | 73,996 / 48,641 | 15,579 | 2,152 / 0 | 78 |
| W7-1p5bit-upload | 306.0 s | 654% | 122.2 ms | 48,487 / 1,478 | 2 | 247,481 / 0 | 9 1% | 380.6 s | 567% | 21,732.9 ms | 146,844 / 37,381 | 18,167 | 562,838 / 321,988 | 47 6% |
| W7-1p5bit | 24.9 s | 745% | 2.1 ms | 83,266 / 32 | 0 | 0 / 0 | 9 | 22.4 s | 765% | 76,285.0 ms | 72,795 / 50,364 | 16,529 | 2,376 / 0 | 78 |
| W8-upload | 388.8 s | 708% | 139.9 ms | 48,173 / 1,754 | 1 | 249,660 / 0 | 9 0% | 566.7 s | 572% | 10,648.1 ms | 2,150,775 / 75,275 | 58,586 | 462,533 / 240,643 | 43 1% |
| W8 | 27.9 s | 743% | 1.5 ms | 94,652 / 33 | 0 | 0 / 0 | 9 | 19.6 s | 745% | 9,938.6 ms | 26,520 / 10,275 | 5,041 | 1,508 / 0 | 51 |
| W14-1bit-upload | 307.4 s | 687% | 116.1 ms | 47,215 / 1,430 | 1 | 237,464 / 0 | 9 1% | 377.5 s | 554% | 22,320.0 ms | 154,362 / 37,386 | 15,969 | 518,202 / 312,766 | 48 6% |
| W14-1bit | 27.6 s | 740% | 1.4 ms | 95,889 / 33 | 0 | 0 / 0 | 9 | 23.8 s | 766% | 81,501.1 ms | 69,084 / 46,206 | 16,389 | 2,706 / 0 | 79 |
| W14-1p5bit-upload | 309.3 s | 690% | 117.4 ms | 48,487 / 1,419 | 1 | 240,046 / 0 | 9 1% | 459.4 s | 565% | 27,703.1 ms | 154,932 / 45,943 | 17,037 | 582,138 / 324,362 | 47 5% |
| W14-1p5bit | 15.1 s | 736% | 1.0 ms | 49,356 / 11 | 0 | 0 / 0 | 9 | 24.5 s | 768% | 84,236.3 ms | 67,292 / 46,063 | 15,911 | 3,270 / 0 | 79 |
| W14-2bit-upload | 308.6 s | 688% | 120.5 ms | 49,647 / 1,420 | 0 | 242,873 / 0 | 9 1% | 433.2 s | 549% | 26,059.5 ms | 161,679 / 44,680 | 18,325 | 630,285 / 326,617 | 47 4% |
| W14-2bit | 15.1 s | 735% | 0.8 ms | 52,687 / 16 | 0 | 0 / 0 | 9 | 22.8 s | 765% | 78,044.7 ms | 69,158 / 47,581 | 16,494 | 3,445 / 0 | 78 |
| W14-4bit-upload | 309.1 s | 690% | 118.6 ms | 50,140 / 1,456 | 2 | 253,711 / 0 | 9 1% | 382.7 s | 515% | 21,608.1 ms | 172,982 / 41,385 | 18,796 | 637,899 / 334,333 | 46 7% |
| W14-4bit | 24.1 s | 746% | 1.2 ms | 78,329 / 23 | 0 | 0 / 0 | 9 | 20.8 s | 764% | 69,510.8 ms | 78,427 / 51,512 | 17,390 | 1,912 / 0 | 78 |
| W9 | 72.7 s | 694% | 4.6 ms | 3,239 / 130 | 0 | 0 / 0 | 9 | 127.3 s | 780% | 9,492.0 ms | 18,131 / 9,204 | 6,902 | 153 / 0 | 49 |
| W10-ef32 | 9.9 s | 452% | 3.2 ms | 137,890 / 11 | 0 | 0 / 0 | 9 | 13.1 s | 573% | 5,140.2 ms | 222,947 / 18,483 | 62,129 | 1,042 / 0 | 49 |
| W10-ef64 | 15.8 s | 562% | 1.2 ms | 163,283 / 6 | 0 | 0 / 0 | 9 | 19.1 s | 593% | 11,902.7 ms | 264,838 / 33,915 | 107,170 | 836 / 0 | 74 |
| W10-ef128 | 13.6 s | 648% | 0.7 ms | 95,046 / 4 | 0 | 0 / 0 | 9 | 29.4 s | 595% | 22,235.9 ms | 285,802 / 35,787 | 105,602 | 153 / 0 | 76 |
| W10-ef256 | 24.7 s | 692% | 1.1 ms | 102,259 / 11 | 0 | 0 / 0 | 9 | 46.5 s | 619% | 34,252.2 ms | 295,359 / 37,108 | 127,521 | 104 / 0 | 68 |
| W10-ef512 | 47.6 s | 703% | 2.3 ms | 114,308 / 38 | 0 | 0 / 0 | 9 | 80.5 s | 636% | 51,040.1 ms | 316,096 / 44,310 | 157,882 | 289 / 0 | 69 |
| W12-upload | 48.7 s | 416% | 18.6 ms | 10,676 / 227 | 0 | 117,259 / 0 | 9 1% | 82.4 s | 436% | 4,943.4 ms | 34,561 / 9,043 | 5,065 | 163,649 / 189,401 | 52 0% |
| W12-sel1 | 21.2 s | 748% | 3.6 ms | 63,889 / 34 | 0 | 138 / 0 | 9 | 21.1 s | 763% | 65,654.2 ms | 107,255 / 67,014 | 22,449 | 1,639 / 0 | 84 |
| W12-sel10 | 71.8 s | 706% | 12.3 ms | 46,554 / 91 | 0 | 2 / 0 | 9 | 182.9 s | 798% | 99,290.4 ms | 44,804 / 47,498 | 2,808 | 6,252 / 0 | 59 0% |
| W12-sel1-ef32 | 21.1 s | 748% | 1.3 ms | 61,036 / 23 | 0 | 4 / 0 | 9 | 18.3 s | 750% | 12,271.2 ms | 24,934 / 9,958 | 5,383 | 296 / 0 | 59 |
| W12-sel1-ef64 | 21.0 s | 749% | 1.1 ms | 61,265 / 28 | 0 | 0 / 0 | 9 | 18.1 s | 748% | 12,168.3 ms | 24,850 / 9,559 | 4,950 | 36 / 0 | 59 |
| W12-sel1-ef128 | 21.0 s | 748% | 1.2 ms | 63,893 / 24 | 0 | 0 / 0 | 9 | 18.1 s | 744% | 12,120.3 ms | 24,922 / 9,576 | 4,911 | 115 / 0 | 59 |
| W12-sel1-ef256 | 21.0 s | 746% | 1.1 ms | 63,195 / 21 | 0 | 0 / 0 | 9 | 18.2 s | 748% | 12,139.7 ms | 24,191 / 9,474 | 4,977 | 89 / 0 | 59 |
| W12-sel1-ef512 | 21.0 s | 746% | 0.9 ms | 64,730 / 17 | 0 | 0 / 0 | 9 | 18.1 s | 745% | 12,046.5 ms | 24,851 / 9,365 | 5,059 | 23 / 0 | 59 |
| W12-sel10-ef32 | 24.6 s | 727% | 1.0 ms | 76,497 / 22 | 0 | 0 / 0 | 9 | 154.2 s | 796% | 26,205.4 ms | 40,246 / 37,679 | 326 | 1,613 / 0 | 59 |
| W12-sel10-ef64 | 42.3 s | 718% | 2.1 ms | 96,750 / 33 | 0 | 0 / 0 | 9 | 165.2 s | 798% | 27,344.5 ms | 41,163 / 39,228 | 307 | 1,921 / 0 | 59 |
| W12-sel10-ef128 | 71.9 s | 706% | 2.4 ms | 46,640 / 74 | 0 | 0 / 0 | 9 | 183.5 s | 798% | 29,547.8 ms | 43,218 / 41,929 | 391 | 1,575 / 0 | 59 |
| W12-sel10-ef256 | 71.8 s | 706% | 2.6 ms | 45,939 / 95 | 0 | 0 / 0 | 9 | 209.6 s | 799% | 32,082.7 ms | 47,191 / 45,126 | 490 | 2,883 / 0 | 59 |
| W12-sel10-ef512 | 72.2 s | 706% | 2.8 ms | 45,764 / 87 | 0 | 0 / 0 | 9 | 249.2 s | 799% | 36,426.6 ms | 52,516 / 50,570 | 456 | 2,994 / 0 | 59 |
| W13 | 5.3 s | 144% | 2.2 ms | 229,052 / 8 | 0 | 0 / 0 | 9 | 18.0 s | 442% | 2,194.2 ms | 737,256 / 14,115 | 230,194 | 440 / 0 | 76 |
| W11-steady | 210.3 s | 639% | 12,368.5 ms | 1,287,096 / 2,386 | 54 | 1,162,430 / 0 | 9 90% | 230.0 s | 725% | 152,429.9 ms | 728,581 / 219,500 | 243,563 | 1,194,422 / 261,045 | 59 83% |
| W11 | 517.5 s | 656% | 71,348.8 ms | 2,646,385 / 11,754 | 224 | 8,099,839 / 0 | 9 77% | 577.2 s | 758% | 437,856.7 ms | 836,931 / 402,610 | 248,376 | 1,708,094 / 405,980 | 65 72% |
waiting is runnable and not scheduled, blocked on disk is not runnable at all, and pressure is PSI for the engine's cgroup (some = at least one task stalled, full = every runnable task).
Time every task in the engine's cgroup was stalled on I/O. Lower is better. 39 rows never stalled on I/O and are not drawn.
| workload | strawmANN | Qdrant | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| waiting | blocked on disk | cpu some/full | io some/full | memory some/full | waiting | blocked on disk | cpu some/full | io some/full | memory some/full | |
| W0-upload | 59.6 ms | 0 ms | 15 / 8 ms | 38 / 38 ms | 0 / 0 ms | 13,962.1 ms | 0 ms | 1,298 / 17 ms | 35 / 31 ms | 0 / 0 ms |
| W0 | 2.4 ms | 0 ms | 43 / 43 ms | 0 / 0 ms | 0 / 0 ms | 3.4 ms | 0 ms | 74 / 74 ms | 0 / 0 ms | 0 / 0 ms |
| W1 | 2.1 ms | 0 ms | 10 / 10 ms | 8 / 8 ms | 0 / 0 ms | 27,567.8 ms | 0 ms | 2,334 / 13 ms | 43 / 27 ms | 0 / 0 ms |
| W2 | 136.4 ms | 0 ms | 31 / 13 ms | 1 / 1 ms | 0 / 0 ms | 33,352.1 ms | 0 ms | 2,781 / 20 ms | 141 / 128 ms | 0 / 0 ms |
| W3 | 2.2 ms | 0 ms | 44 / 44 ms | 0 / 0 ms | 0 / 0 ms | 3.4 ms | 0 ms | 79 / 79 ms | 0 / 0 ms | 0 / 0 ms |
| W4 | 0.9 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 77,428.7 ms | 0 ms | 2,888 / 3 ms | 0 / 0 ms | 0 / 0 ms |
| W4-sat50 | 2.9 ms | 0 ms | 63 / 63 ms | 0 / 0 ms | 0 / 0 ms | 125,171.7 ms | 0 ms | 8,198 / 87 ms | 0 / 0 ms | 0 / 0 ms |
| W4-sat70 | 13.7 ms | 0 ms | 40 / 40 ms | 0 / 0 ms | 0 / 0 ms | 168,810.7 ms | 0 ms | 9,466 / 62 ms | 0 / 0 ms | 0 / 0 ms |
| W4-sat90 | 1.1 ms | 0 ms | 31 / 31 ms | 0 / 0 ms | 0 / 0 ms | 109,704.2 ms | 0 ms | 7,053 / 33 ms | 0 / 0 ms | 0 / 0 ms |
| W5 | 1.0 ms | 0 ms | 0 / 0 ms | 0 / 0 ms | 0 / 0 ms | 71,874.4 ms | 0 ms | 2,746 / 1 ms | 0 / 0 ms | 0 / 0 ms |
| W6-upload | 111.0 ms | 0 ms | 21 / 9 ms | 1 / 1 ms | 0 / 0 ms | 22,398.0 ms | 0 ms | 1,906 / 21 ms | 318 / 302 ms | 0 / 0 ms |
| W6 | 2.2 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 68,753.5 ms | 0 ms | 2,416 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W6-ef32 | 2.0 ms | 0 ms | 9 / 9 ms | 0 / 0 ms | 0 / 0 ms | 47,775.6 ms | 0 ms | 2,079 / 4 ms | 0 / 0 ms | 0 / 0 ms |
| W6-ef64 | 1.4 ms | 0 ms | 3 / 3 ms | 0 / 0 ms | 0 / 0 ms | 56,843.6 ms | 0 ms | 2,574 / 4 ms | 0 / 0 ms | 0 / 0 ms |
| W6-ef128 | 1.0 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 10,640.3 ms | 0 ms | 1,153 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W6-ef256 | 0.9 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 13,088.6 ms | 0 ms | 1,430 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W6-ef512 | 1.8 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 12,144.6 ms | 0 ms | 1,415 / 1 ms | 0 / 0 ms | 0 / 0 ms |
| W7-upload | 114.5 ms | 0 ms | 21 / 9 ms | 40 / 40 ms | 0 / 0 ms | 19,990.3 ms | 0 ms | 1,722 / 23 ms | 176 / 159 ms | 0 / 0 ms |
| W7 | 2.3 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 10,017.6 ms | 0 ms | 1,083 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W7-2bit-upload | 114.5 ms | 0 ms | 22 / 10 ms | 1 / 1 ms | 0 / 0 ms | 20,986.5 ms | 0 ms | 1,785 / 22 ms | 182 / 159 ms | 0 / 0 ms |
| W7-2bit | 2.0 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 74,642.5 ms | 0 ms | 2,608 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W7-1p5bit-upload | 122.2 ms | 0 ms | 26 / 10 ms | 1 / 1 ms | 0 / 0 ms | 21,732.9 ms | 0 ms | 1,887 / 23 ms | 217 / 206 ms | 0 / 0 ms |
| W7-1p5bit | 2.1 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 76,285.0 ms | 0 ms | 2,672 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W8-upload | 139.9 ms | 0 ms | 25 / 10 ms | 10 / 10 ms | 0 / 0 ms | 10,648.1 ms | 0 ms | 1,884 / 166 ms | 119 / 113 ms | 0 / 0 ms |
| W8 | 1.5 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 9,938.6 ms | 0 ms | 1,070 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W14-1bit-upload | 116.1 ms | 0 ms | 22 / 10 ms | 1 / 1 ms | 0 / 0 ms | 22,320.0 ms | 0 ms | 1,931 / 25 ms | 207 / 195 ms | 0 / 0 ms |
| W14-1bit | 1.4 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 81,501.1 ms | 0 ms | 2,840 / 3 ms | 0 / 0 ms | 0 / 0 ms |
| W14-1p5bit-upload | 117.4 ms | 0 ms | 22 / 10 ms | 1 / 1 ms | 0 / 0 ms | 27,703.1 ms | 0 ms | 2,386 / 26 ms | 153 / 143 ms | 0 / 0 ms |
| W14-1p5bit | 1.0 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 84,236.3 ms | 0 ms | 2,924 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W14-2bit-upload | 120.5 ms | 0 ms | 22 / 10 ms | 2 / 2 ms | 0 / 0 ms | 26,059.5 ms | 0 ms | 2,192 / 27 ms | 237 / 202 ms | 0 / 0 ms |
| W14-2bit | 0.8 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 78,044.7 ms | 0 ms | 2,719 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W14-4bit-upload | 118.6 ms | 0 ms | 22 / 9 ms | 1 / 1 ms | 0 / 0 ms | 21,608.1 ms | 0 ms | 1,900 / 31 ms | 228 / 215 ms | 0 / 0 ms |
| W14-4bit | 1.2 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 69,510.8 ms | 0 ms | 2,462 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W9 | 4.6 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 9,492.0 ms | 0 ms | 1,051 / 15 ms | 0 / 0 ms | 0 / 0 ms |
| W10-ef32 | 3.2 ms | 0 ms | 12 / 12 ms | 0 / 0 ms | 0 / 0 ms | 5,140.2 ms | 0 ms | 584 / 15 ms | 0 / 0 ms | 0 / 0 ms |
| W10-ef64 | 1.2 ms | 0 ms | 13 / 13 ms | 0 / 0 ms | 0 / 0 ms | 11,902.7 ms | 0 ms | 1,080 / 16 ms | 0 / 0 ms | 0 / 0 ms |
| W10-ef128 | 0.7 ms | 0 ms | 6 / 6 ms | 0 / 0 ms | 0 / 0 ms | 22,235.9 ms | 0 ms | 1,856 / 19 ms | 0 / 0 ms | 0 / 0 ms |
| W10-ef256 | 1.1 ms | 0 ms | 6 / 6 ms | 0 / 0 ms | 0 / 0 ms | 34,252.2 ms | 0 ms | 2,924 / 20 ms | 0 / 0 ms | 0 / 0 ms |
| W10-ef512 | 2.3 ms | 0 ms | 5 / 5 ms | 0 / 0 ms | 0 / 0 ms | 51,040.1 ms | 0 ms | 4,664 / 25 ms | 0 / 0 ms | 0 / 0 ms |
| W12-upload | 18.6 ms | 0 ms | 5 / 3 ms | 8 / 8 ms | 0 / 0 ms | 4,943.4 ms | 0 ms | 459 / 7 ms | 48 / 43 ms | 0 / 0 ms |
| W12-sel1 | 3.6 ms | 0 ms | 4 / 4 ms | 0 / 0 ms | 0 / 0 ms | 65,654.2 ms | 0 ms | 2,454 / 3 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel10 | 12.3 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 99,290.4 ms | 0 ms | 5,976 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel1-ef32 | 1.3 ms | 0 ms | 3 / 3 ms | 0 / 0 ms | 0 / 0 ms | 12,271.2 ms | 0 ms | 1,326 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel1-ef64 | 1.1 ms | 0 ms | 3 / 3 ms | 0 / 0 ms | 0 / 0 ms | 12,168.3 ms | 0 ms | 1,285 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel1-ef128 | 1.2 ms | 0 ms | 3 / 3 ms | 0 / 0 ms | 0 / 0 ms | 12,120.3 ms | 0 ms | 1,288 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel1-ef256 | 1.1 ms | 0 ms | 3 / 3 ms | 0 / 0 ms | 0 / 0 ms | 12,139.7 ms | 0 ms | 1,289 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel1-ef512 | 0.9 ms | 0 ms | 3 / 3 ms | 0 / 0 ms | 0 / 0 ms | 12,046.5 ms | 0 ms | 1,293 / 2 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel10-ef32 | 1.0 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 26,205.4 ms | 0 ms | 3,230 / 1 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel10-ef64 | 2.1 ms | 0 ms | 2 / 2 ms | 0 / 0 ms | 0 / 0 ms | 27,344.5 ms | 0 ms | 3,387 / 1 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel10-ef128 | 2.4 ms | 0 ms | 1 / 1 ms | 0 / 0 ms | 0 / 0 ms | 29,547.8 ms | 0 ms | 3,644 / 1 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel10-ef256 | 2.6 ms | 0 ms | 1 / 1 ms | 0 / 0 ms | 0 / 0 ms | 32,082.7 ms | 0 ms | 3,968 / 1 ms | 0 / 0 ms | 0 / 0 ms |
| W12-sel10-ef512 | 2.8 ms | 0 ms | 1 / 1 ms | 0 / 0 ms | 0 / 0 ms | 36,426.6 ms | 0 ms | 4,519 / 1 ms | 0 / 0 ms | 0 / 0 ms |
| W13 | 2.2 ms | 0 ms | 22 / 22 ms | 0 / 0 ms | 0 / 0 ms | 2,194.2 ms | 0 ms | 297 / 50 ms | 0 / 0 ms | 0 / 0 ms |
| W11-steady | 12,368.5 ms | 0 ms | 2,159 / 93 ms | 5 / 4 ms | 0 / 0 ms | 152,429.9 ms | 0 ms | 13,687 / 67 ms | 197 / 56 ms | 0 / 0 ms |
| W11 | 71,348.8 ms | 0 ms | 12,306 / 205 ms | 0 / 0 ms | 0 / 0 ms | 437,856.7 ms | 0 ms | 36,582 / 81 ms | 251 / 64 ms | 0 / 0 ms |
A dash under blocked on disk is not a zero: most hosts ship
with kernel.task_delayacct=0, which reports the field as a permanent
zero and would manufacture the strongest claim here — that the memory-resident
engine never waits for a device — out of a sysctl. bench/setup.py apply
turns it on.
What the core did per query, from perf stat attached to
the engine for the same window as the /proc counters. §5's cost model is
a set of claims about instructions per cycle, DRAM traffic and TLB reach; these are
those quantities, measured on the row the headline quotes rather than on a
microbenchmark.
Lower is better; the bar between a pair is the gap. Load rows are absent: they have no queries to divide by, and an absolute count under a per-query axis would be a different quantity wearing this one's label.
Demand loads served from DRAM, times the cache line this host reports. Lower is better. Demand only: the hardware prefetcher's fills are a separate counter and are not in this number, so a row that streams — an exact scan above all — moved far more than this says. On the graph rows, where there is little for a prefetcher to predict, it is most of the traffic and is the outstanding-miss quantity §5.2 argues the engine is limited by.
Data TLB misses that reached a page walk, per query. Lower is better. §5.5 argues a memory-resident index needs hugepage care; this is what not taking it costs, and `--no-huge-pages` is the A/B arm that prices it.
How well the core was fed while it ran. Not a score: a low IPC on a memory-bound row is what §5.2 predicts, and a high one on a row that does more work per query is not a win. Read it beside the two charts above.
A graph traversal is a chain of data-dependent branches and none of them is predictable from the last query, so this is the column that separates a slow kernel from an unpredictable walk. Per thousand instructions rather than per branch: `branches` costs a PMU counter that `ref-cycles` needs more, and MPKI is the comparable form anyway.
| workload | strawmANN | Qdrant | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| IPC | GHz | branch MPKI | cycles/query | demand DRAM/query | TLB walks/query | IPC | GHz | branch MPKI | cycles/query | demand DRAM/query | TLB walks/query | |
| W0-upload | 1.52 | 2.011.005x nominal | 5.36 | - | - | - | 1.35 | 2.011.004x nominal | 4.58 | - | - | - |
| W0 | 1.39 | 2.011.006x nominal | 5.59 | 268,769 | 7.1 KiB | 1,206.5 | 1.14 | 2.011.006x nominal | 3.31 | 494,358 | 45.9 KiB | 1,429.6 |
| W1 | 1.82 | 2.011.007x nominal | 0.75 | - | - | - | 1.44 | 2.011.005x nominal | 3.76 | - | - | - |
| W2 | 1.28 | 2.011.005x nominal | 4.52 | - | - | - | 1.08 | 2.011.005x nominal | 4.01 | - | - | - |
| W3 | 1.17 | 2.011.005x nominal | 5.21 | 726,756 | 52.1 KiB | 3,355.7 | 1.17 | 2.011.007x nominal | 3.20 | 906,349 | 1,003.6 KiB | 3,692.5 |
| W4 | 1.56 | 2.011.007x nominal | 4.48 | 535,497 | 64.2 KiB | 2,871.9 | 0.91 | 2.011.006x nominal | 3.76 | 1,037,402 | 1,095.7 KiB | 3,052.6 |
| W4-sat50 | 1.45 | 2.011.006x nominal | 4.90 | 578,304 | 49.3 KiB | 3,172.8 | 0.97 | 2.011.006x nominal | 3.82 | 1,082,505 | 1,089.6 KiB | 3,512.2 |
| W4-sat70 | 1.46 | 2.011.006x nominal | 4.96 | 569,984 | 49.5 KiB | 3,033.2 | 0.96 | 2.011.006x nominal | 3.79 | 1,082,837 | 1,090.7 KiB | 3,370.8 |
| W4-sat90 | 1.48 | 2.011.007x nominal | 4.90 | 562,195 | 49.7 KiB | 2,995.7 | 0.97 | 2.011.006x nominal | 3.73 | 1,006,740 | 1,066.2 KiB | 3,217.0 |
| W5 | 1.57 | 2.011.007x nominal | 4.67 | 500,013 | 67.6 KiB | 2,883.3 | 0.90 | 2.011.006x nominal | 3.88 | 899,667 | 1,041.2 KiB | 2,899.5 |
| W6-upload | 1.39 | 2.011.006x nominal | 4.37 | - | - | - | 1.79 | 2.011.006x nominal | 4.61 | - | - | - |
| W6 | 1.82 | 2.011.006x nominal | 4.87 | 451,556 | 66.4 KiB | 3,844.5 | 1.54 | 2.011.006x nominal | 3.41 | 762,826 | 222.6 KiB | 2,743.2 |
| W6-ef32 | 1.88 | 2.011.006x nominal | 3.46 | 151,412 | 21.8 KiB | 1,315.2 | 1.60 | 2.011.006x nominal | 2.44 | 346,559 | 73.7 KiB | 1,070.4 |
| W6-ef64 | 1.83 | 2.011.007x nominal | 4.23 | 254,617 | 37.5 KiB | 2,091.8 | 1.61 | 2.011.006x nominal | 2.87 | 473,993 | 123.9 KiB | 1,667.1 |
| W6-ef128 | 1.82 | 2.011.007x nominal | 4.86 | 451,941 | 66.3 KiB | 3,846.1 | 1.58 | 2.011.005x nominal | 3.35 | 734,503 | 210.6 KiB | 2,672.9 |
| W6-ef256 | 1.80 | 2.011.007x nominal | 5.50 | 830,087 | 122.9 KiB | 7,390.9 | 1.53 | 2.011.006x nominal | 3.82 | 1,253,620 | 371.1 KiB | 4,548.3 |
| W6-ef512 | 1.77 | 2.011.007x nominal | 6.06 | 1,574,080 | 233.8 KiB | 14,672.1 | 1.50 | 2.011.005x nominal | 4.09 | 2,201,488 | 670.8 KiB | 7,775.7 |
| W7-upload | 1.28 | 2.011.006x nominal | 4.54 | - | - | - | 2.11 | 2.011.006x nominal | 3.92 | - | - | - |
| W7 | 1.71 | 2.011.007x nominal | 6.06 | 548,922 | 56.8 KiB | 3,172.5 | 1.64 | 2.011.006x nominal | 3.50 | 751,071 | 198.9 KiB | 1,574.2 |
| W7-2bit-upload | 1.28 | 2.011.007x nominal | 4.57 | - | - | - | 2.25 | 2.011.006x nominal | 3.61 | - | - | - |
| W7-2bit | 1.63 | 2.011.006x nominal | 6.56 | 478,799 | 58.6 KiB | 2,644.8 | 1.67 | 2.011.006x nominal | 3.31 | 825,827 | 229.1 KiB | 2,676.8 |
| W7-1p5bit-upload | 1.28 | 2.011.005x nominal | 4.57 | - | - | - | 2.29 | 2.011.005x nominal | 3.58 | - | - | - |
| W7-1p5bit | 1.65 | 2.011.006x nominal | 6.44 | 491,732 | 58.8 KiB | 2,750.9 | 1.68 | 2.011.006x nominal | 3.28 | 845,435 | 234.1 KiB | 2,768.4 |
| W8-upload | 2.31 | 2.011.007x nominal | 2.23 | - | - | - | 4.43 | 2.011.006x nominal | 0.94 | - | - | - |
| W8 | 2.73 | 2.011.007x nominal | 2.90 | 551,215 | 59.6 KiB | 1,875.5 | 2.27 | 2.011.006x nominal | 1.98 | 772,849 | 182.8 KiB | 1,906.1 |
| W14-1bit-upload | 1.33 | 2.011.005x nominal | 4.34 | - | - | - | 2.20 | 2.011.005x nominal | 2.81 | - | - | - |
| W14-1bit | 1.81 | 2.011.006x nominal | 4.66 | 544,640 | 65.3 KiB | 3,064.5 | 1.49 | 2.011.006x nominal | 2.98 | 904,764 | 258.9 KiB | 2,032.2 |
| W14-1p5bit-upload | 1.34 | 2.011.006x nominal | 4.25 | - | - | - | 2.31 | 2.011.005x nominal | 2.60 | - | - | - |
| W14-1p5bit | 1.73 | 2.011.005x nominal | 4.40 | 595,095 | 81.2 KiB | 3,462.0 | 1.49 | 2.011.006x nominal | 3.06 | 930,872 | 267.0 KiB | 2,299.3 |
| W14-2bit-upload | 1.32 | 2.011.005x nominal | 4.34 | - | - | - | 2.29 | 2.011.005x nominal | 2.70 | - | - | - |
| W14-2bit | 1.51 | 2.011.006x nominal | 4.87 | 593,842 | 119.0 KiB | 3,646.8 | 1.47 | 2.011.006x nominal | 3.32 | 865,527 | 248.6 KiB | 2,314.0 |
| W14-4bit-upload | 1.33 | 2.011.005x nominal | 4.30 | - | - | - | 2.19 | 2.011.005x nominal | 3.28 | - | - | - |
| W14-4bit | 1.76 | 2.011.005x nominal | 5.02 | 476,057 | 66.3 KiB | 3,985.9 | 1.64 | 2.011.006x nominal | 3.22 | 778,110 | 212.5 KiB | 2,560.9 |
| W9 | 2.06 | 2.011.007x nominal | 0.01 | 72,884,330 | 26,601.8 KiB | 83,053.5 | 1.32 | 2.011.006x nominal | 0.15 | 126,763,983 | 10,965.1 KiB | 126,516.4 |
| W10-ef32 | 1.67 | 2.011.007x nominal | 3.22 | 185,005 | 34.5 KiB | 996.9 | 1.14 | 2.011.006x nominal | 2.65 | 458,480 | 362.6 KiB | 1,261.9 |
| W10-ef64 | 1.64 | 2.011.006x nominal | 3.88 | 300,667 | 46.5 KiB | 1,690.8 | 1.04 | 2.011.007x nominal | 3.19 | 683,247 | 624.3 KiB | 2,061.2 |
| W10-ef128 | 1.60 | 2.011.007x nominal | 4.45 | 526,239 | 64.4 KiB | 3,014.5 | 0.97 | 2.011.006x nominal | 3.76 | 1,063,928 | 1,095.1 KiB | 3,351.2 |
| W10-ef256 | 1.54 | 2.011.007x nominal | 4.94 | 974,147 | 98.1 KiB | 5,664.8 | 0.94 | 2.011.006x nominal | 4.27 | 1,740,530 | 1,898.8 KiB | 5,487.5 |
| W10-ef512 | 1.46 | 2.011.006x nominal | 5.37 | 1,885,513 | 159.3 KiB | 11,152.7 | 0.89 | 2.011.006x nominal | 4.72 | 3,067,810 | 3,409.8 KiB | 9,107.6 |
| W12-upload | 1.40 | 2.011.007x nominal | 4.98 | - | - | - | 1.35 | 2.011.006x nominal | 3.98 | - | - | - |
| W12-sel1 | 1.20 | 2.011.006x nominal | 4.48 | 418,177 | 719.8 KiB | 1,075.5 | 1.32 | 2.011.006x nominal | 0.80 | 751,522 | 725.0 KiB | 2,498.8 |
| W12-sel10 | 1.24 | 2.011.006x nominal | 1.00 | 2,876,933 | 5,819.1 KiB | 4,717.0 | 2.16 | 2.011.006x nominal | 1.05 | 7,283,920 | 6,325.5 KiB | 18,027.2 |
| W12-sel1-ef32 | 1.20 | 2.011.007x nominal | 4.47 | 418,813 | 720.6 KiB | 1,071.4 | 1.35 | 2.011.007x nominal | 0.69 | 715,256 | 705.3 KiB | 2,390.0 |
| W12-sel1-ef64 | 1.21 | 2.011.007x nominal | 4.47 | 416,662 | 720.4 KiB | 1,071.9 | 1.36 | 2.011.007x nominal | 0.67 | 708,012 | 708.6 KiB | 2,382.1 |
| W12-sel1-ef128 | 1.20 | 2.011.007x nominal | 4.49 | 416,086 | 720.6 KiB | 1,073.7 | 1.36 | 2.011.007x nominal | 0.68 | 709,083 | 707.9 KiB | 2,386.8 |
| W12-sel1-ef256 | 1.20 | 2.011.007x nominal | 4.48 | 415,953 | 720.0 KiB | 1,071.2 | 1.36 | 2.011.007x nominal | 0.68 | 709,585 | 707.4 KiB | 2,387.7 |
| W12-sel1-ef512 | 1.20 | 2.011.007x nominal | 4.49 | 415,264 | 720.1 KiB | 1,072.1 | 1.36 | 2.011.007x nominal | 0.67 | 710,528 | 708.4 KiB | 2,381.2 |
| W12-sel10-ef32 | 1.68 | 2.011.007x nominal | 2.98 | 974,133 | 356.7 KiB | 1,938.2 | 2.29 | 2.011.007x nominal | 0.70 | 6,147,902 | 5,750.6 KiB | 17,371.5 |
| W12-sel10-ef64 | 1.55 | 2.011.006x nominal | 3.56 | 1,679,077 | 609.9 KiB | 3,440.7 | 2.24 | 2.011.007x nominal | 0.83 | 6,577,779 | 5,992.5 KiB | 17,608.0 |
| W12-sel10-ef128 | 1.24 | 2.011.007x nominal | 1.00 | 2,877,379 | 5,744.3 KiB | 4,715.7 | 2.15 | 2.011.006x nominal | 1.05 | 7,306,766 | 6,335.7 KiB | 17,991.2 |
| W12-sel10-ef256 | 1.24 | 2.011.007x nominal | 1.00 | 2,875,090 | 5,732.2 KiB | 4,718.0 | 2.08 | 2.011.006x nominal | 1.38 | 8,346,143 | 6,722.9 KiB | 18,452.6 |
| W12-sel10-ef512 | 1.23 | 2.011.006x nominal | 1.00 | 2,891,957 | 5,828.0 KiB | 4,716.3 | 1.99 | 2.011.006x nominal | 1.83 | 9,933,856 | 7,192.7 KiB | 19,093.4 |
| W13 | 1.37 | 2.011.007x nominal | 1.25 | 40,095 | 0.9 KiB | 10.9 | 1.46 | 2.011.007x nominal | 1.43 | 136,303 | 1.3 KiB | 30.7 |
| W11-steady | 1.64 | 2.011.005x nominal | 4.20 | 585,624 | 94.3 KiB | 3,045.3 | 1.70 | 2.011.005x nominal | 2.01 | 3,128,595 | 1,857.1 KiB | 4,742.6 |
| W11 | 1.64 | 2.011.006x nominal | 3.82 | 694,807 | 220.7 KiB | 3,425.1 | 1.73 | 2.011.006x nominal | 1.50 | 7,046,538 | 4,315.9 KiB | 11,945.5 |
Nothing here is scaled. Where perf had to multiplex the
group, the values it prints are extrapolations from the fraction of the row each
counter was on, and they are withheld rather than shown — the same rule the scheduler
table applies to a thread that exited. An event this host does not implement is
likewise blank, never zero.
The two instruments disagree on these rows.
Qdrant: perf and /proc disagree on minor faults by up to 11% on W1, W2, W6-upload, W7-upload, W7-2bit-upload, W7-1p5bit-upload, W8-upload, W14-1bit-upload, W14-1p5bit-upload, W14-2bit-upload, W14-4bit-upload, W12-upload, W11-steady, W11; Qdrant: perf and /proc disagree on context switches by up to 23% on W8-upload, W14-1bit-upload, W14-1p5bit-upload, W14-2bit-upload, W14-4bit-upload.
perf keeps an exiting thread's counts and the /proc sums do
not, so a gap here is usually the same lost-thread effect the scheduler table reports
as coverage.
Read back from the engine rather than taken from the request.
--segments 1 sets Qdrant's default_segment_number, which its
optimizer treats as a target, and the segment count is the largest confound in the
ef comparison. strawmANN held 1 segment; Qdrant held 2 segments.
Where the engines disagree a cell reads strawmANN / Qdrant, and is marked.
| collection | segments | populated segments | requested segments | points | indexed vectors | vector size | hnsw m | hnsw ef_construct | quantization | shards | vector residency |
|---|---|---|---|---|---|---|---|---|---|---|---|
| bench0 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 4 | 16 | 100 | - | 1 | cached |
| bench1 | 1 / 5 | - / 5 | - / 1 | 1,000,000 | 0 / 185,400 | 128 | 16 | 100 | - | 1 | cached |
| bench2 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | - | 1 | cached |
| bench6 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | scalar | 1 | cached |
| bench7 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | binary | 1 | cached |
| bench7b2 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | binary | 1 | cached |
| bench7b15 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | binary | 1 | cached |
| bench8 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | product | 1 | cached |
| bench14t1 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | turboquant | 1 | cached |
| bench14t15 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | turboquant | 1 | cached |
| bench14t2 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | turboquant | 1 | cached |
| bench14t4 | 1 / 2 | - / 1 | - / 1 | 1,000,000 | 1,000,000 | 128 | 16 | 100 | turboquant | 1 | cached |
| bench12 | 1 / 2 | - / 1 | - / 1 | 200,000 | 200,000 | 128 | 16 | 100 | - | 1 | cached |
After the mutating rows bench2 held strawmANN 1,250,000 (+250,000), 1,250,000 of them indexed; Qdrant 1,250,000 (+250,000), 1,246,100 of them indexed. The table above is the state the throughput, latency and recall rows searched; this is what W11 left, and is that row's subject rather than theirs.
bench1 was read back straight after its row and dropped, with no settle between, so an engine still building it reports a snapshot taken mid-ingest. Its cells are not marked as a disagreement.
Metric down, engine across, so a comparison is two adjacent cells. Metrics a row did not measure are dropped rather than shown empty.
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 22.4 s | 31.4 s | 1.41x |
| of which upload | 1.2 s | 7.3 s | 5.97x |
| of which index wait | 19.1 s | 22.1 s | 1.16x |
| time to Green | 19.1 s | 22.1 s | 1.16x |
| cpu | 126.7 s | 160.3 s | 1.27x |
| cpu, % of wall | 567% | 510% | |
| waiting for a core | 59.6 ms | 13,962.1 ms | 234.40x |
| migrations | 6 | 13,395 | 2,232.50x |
| faults min/maj | 114,484 / 0 | 417,441 / 196,555 | |
| peak RSS | 444.3 MiB | 1.4 GiB | 3.18x |
| disk written | 61.1 MiB | 401.2 MiB | |
| disk read | 4.0 KiB | 129.5 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 4,518 | 3,336 | 1.35x |
| client p50 | 219 µs | 297 µs | 1.36x |
| client p99 | 251 µs | 359 µs | 1.43x |
| client p99.9 | 295 µs | 407 µs | 1.38x |
| server p50 | 132 µs | 197 µs | 1.49x |
| server p99 | 145 µs | 238 µs | 1.64x |
| wall clock | 11.1 s | 15.0 s | 1.35x |
| queries sent | 50,000 | 50,000 | |
| cpu | 8.0 s | 15.5 s | 1.95x |
| cpu, % of wall | 72% | 103% | |
| waiting for a core | 2.4 ms | 3.4 ms | 1.43x |
| migrations | 0 | 195 | |
| faults min/maj | 0 / 0 | 509 / 0 | |
| peak RSS | 444.3 MiB | 1.4 GiB | 3.18x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 3.2 s | 14.1 s | 4.38x |
| of which upload | 1.1 s | 12.0 s | 10.88x |
| cpu | 2.2 s | 77.4 s | 35.35x |
| cpu, % of wall | 68% | 550% | |
| waiting for a core | 2.1 ms | 27,567.8 ms | 13,225.17x |
| migrations | 0 | 14,995 | |
| faults min/maj | 160,271 / 0 | 207,287 / 261,474 | |
| peak RSS | 1.1 GiB | 2.4 GiB | 2.15x |
| disk written | 488.4 MiB | 1.6 GiB | |
| disk read | 0 | 13.2 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 44.3 s | 72.3 s | 1.63x |
| of which upload | 1.1 s | 12.7 s | 11.53x |
| of which index wait | 41.1 s | 58.1 s | 1.41x |
| time to Green | 41.1 s | 58.1 s | 1.41x |
| cpu | 305.5 s | 440.3 s | 1.44x |
| cpu, % of wall | 689% | 609% | |
| waiting for a core | 136.4 ms | 33,352.1 ms | 244.60x |
| migrations | 5 | 15,658 | 3,131.60x |
| faults min/maj | 228,003 / 0 | 485,870 / 288,657 | |
| peak RSS | 1.4 GiB | 3.8 GiB | 2.77x |
| disk written | 488.4 MiB | 2.3 GiB | |
| disk read | 0 | 168.1 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 2,142 | 2,013 | 1.06x |
| recall@10 | 0.9872 | 0.9879 | ~equal |
| client p50 | 473 µs | 500 µs | 1.06x |
| client p99 | 547 µs | 607 µs | 1.11x |
| client p99.9 | 607 µs | 762 µs | 1.26x |
| server p50 | 381 µs | 409 µs | 1.07x |
| server p99 | 446 µs | 501 µs | 1.13x |
| wall clock | 23.4 s | 24.9 s | 1.06x |
| queries sent | 50,000 | 50,000 | |
| cpu | 19.9 s | 25.7 s | 1.30x |
| cpu, % of wall | 85% | 103% | |
| waiting for a core | 2.2 ms | 3.4 ms | 1.50x |
| migrations | 0 | 209 | |
| faults min/maj | 4 / 0 | 509 / 0 | |
| peak RSS | 1.4 GiB | 3.8 GiB | 2.77x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 27,947 | 14,226 | - |
| recall@10 | 0.9872 | 0.9879 | |
| client p50 | 2.28 ms | 4.02 ms | |
| client p99 | 2.53 ms | 12.31 ms | |
| client p99.9 | 20.33 ms | 22.15 ms | |
| server p50 | 2.20 ms | 2.82 ms | |
| server p99 | 2.43 ms | 9.66 ms | |
| wall clock | 1.8 s | 3.6 s | |
| queries sent | 50,000 | 50,000 | |
| cpu | 13.6 s | 27.4 s | |
| cpu, % of wall | 743% | 773% | |
| waiting for a core | 0.9 ms | 77,428.7 ms | |
| migrations | 0 | 16,398 | |
| faults min/maj | 70 / 0 | 2,030 / 0 | |
| peak RSS | 1.4 GiB | 3.8 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 7,109 | 7,109 | offered |
| recall@10 | 0.9872 | 0.9879 | ~equal |
| client p50 | 401 µs | 738 µs | 1.84x |
| client p99 | 705 µs | 1.79 ms | 2.54x |
| client p99.9 | 874 µs | 2.20 ms | 2.52x |
| server p50 | 295 µs | 579 µs | 1.96x |
| server p99 | 557 µs | 1.53 ms | 2.75x |
| wall clock | 28.3 s | 28.3 s | ~equal |
| queries sent | 200,000 | 200,000 | |
| cpu | 60.5 s | 119.3 s | 1.97x |
| cpu, % of wall | 214% | 422% | |
| waiting for a core | 2.9 ms | 125,171.7 ms | 43,268.19x |
| migrations | 0 | 371,235 | |
| faults min/maj | 12 / 0 | 269 / 0 | |
| peak RSS | 1.4 GiB | 3.8 GiB | 2.77x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 9,952 | 9,952 | offered |
| recall@10 | 0.9872 | 0.9879 | ~equal |
| client p50 | 496 µs | 822 µs | 1.66x |
| client p99 | 947 µs | 1.98 ms | 2.09x |
| client p99.9 | 1.10 ms | 2.87 ms | 2.60x |
| server p50 | 369 µs | 636 µs | 1.73x |
| server p99 | 774 µs | 1.70 ms | 2.20x |
| wall clock | 20.2 s | 20.2 s | ~equal |
| queries sent | 200,000 | 200,000 | |
| cpu | 58.3 s | 120.3 s | 2.06x |
| cpu, % of wall | 288% | 595% | |
| waiting for a core | 13.7 ms | 168,810.7 ms | 12,343.01x |
| migrations | 0 | 370,251 | |
| faults min/maj | 34 / 0 | 333 / 0 | |
| peak RSS | 1.4 GiB | 3.8 GiB | 2.77x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 12,795 | 12,795 | offered |
| recall@10 | 0.9872 | 0.9879 | ~equal |
| client p50 | 563 µs | 1.18 ms | 2.10x |
| client p99 | 1.11 ms | 4.49 ms | 4.03x |
| client p99.9 | 1.23 ms | 8.34 ms | 6.80x |
| server p50 | 448 µs | 859 µs | 1.92x |
| server p99 | 919 µs | 3.14 ms | 3.42x |
| wall clock | 15.8 s | 15.8 s | ~equal |
| queries sent | 200,000 | 200,000 | |
| cpu | 57.9 s | 106.6 s | 1.84x |
| cpu, % of wall | 367% | 677% | |
| waiting for a core | 1.1 ms | 109,704.2 ms | 96,130.60x |
| migrations | 0 | 148,783 | |
| faults min/maj | 20 / 0 | 1,118 / 0 | |
| peak RSS | 1.4 GiB | 3.8 GiB | 2.77x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 28,156 | 17,217 | 1.64x |
| recall@10 | 0.9872 | 0.9879 | ~equal |
| client p50 | 36.08 ms | 57.74 ms | 1.60x |
| client p99 | 37.03 ms | 98.66 ms | 2.66x |
| client p99.9 | 53.77 ms | 116.90 ms | 2.17x |
| server p50 | 35.94 ms | 52.63 ms | 1.46x |
| server p99 | 36.63 ms | 88.09 ms | 2.40x |
| wall clock | 3.6 s | 2.9 s | 0.82x |
| queries sent | 100,000 | 50,000 | |
| cpu | 25.0 s | 22.7 s | 0.91x |
| cpu, % of wall | 701% | 777% | |
| waiting for a core | 1.0 ms | 71,874.4 ms | 72,373.16x |
| migrations | 0 | 1,786 | |
| faults min/maj | 147 / 0 | 38,695 / 0 | |
| peak RSS | 1.4 GiB | 3.8 GiB | 2.77x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 43.8 s | 59.1 s | 1.35x |
| of which upload | 1.5 s | 10.9 s | 7.16x |
| of which index wait | 40.1 s | 47.1 s | 1.17x |
| time to Green | 40.1 s | 47.1 s | 1.17x |
| cpu | 299.7 s | 328.6 s | 1.10x |
| cpu, % of wall | 685% | 556% | |
| waiting for a core | 111.0 ms | 22,398.0 ms | 201.87x |
| migrations | 0 | 15,672 | |
| faults min/maj | 277,753 / 0 | 561,106 / 304,998 | |
| peak RSS | 2.4 GiB | 4.5 GiB | 1.86x |
| disk written | 488.4 MiB | 2.7 GiB | |
| disk read | 4.0 KiB | 167.1 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 33,455 | 18,903 | 1.77x |
| recall@10 | 0.9888 | 0.9876 | ~equal |
| client p50 | 1.91 ms | 2.96 ms | 1.55x |
| client p99 | 2.07 ms | 9.33 ms | 4.52x |
| client p99.9 | 2.76 ms | 23.34 ms | 8.47x |
| server p50 | 1.83 ms | 1.71 ms | 0.93x |
| server p99 | 1.97 ms | 6.87 ms | 3.48x |
| wall clock | 3.1 s | 2.7 s | 0.88x |
| queries sent | 100,000 | 50,000 | |
| cpu | 22.8 s | 20.4 s | 0.89x |
| cpu, % of wall | 747% | 762% | |
| waiting for a core | 2.2 ms | 68,753.5 ms | 31,287.51x |
| migrations | 0 | 15,398 | |
| faults min/maj | 10 / 0 | 1,773 / 0 | |
| peak RSS | 2.4 GiB | 4.5 GiB | 1.86x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 77,345 | 38,780 | 1.99x |
| recall@10 | 0.9092 | 0.8996 | ~equal |
| client p50 | 533 µs | 1.48 ms | 2.79x |
| client p99 | 1.41 ms | 3.93 ms | 2.79x |
| client p99.9 | 1.98 ms | 5.61 ms | 2.84x |
| server p50 | 78 µs | 622 µs | 8.01x |
| server p99 | 268 µs | 2.33 ms | 8.70x |
| wall clock | 2.7 s | 2.6 s | 0.98x |
| queries sent | 200,000 | 100,000 | |
| cpu | 15.6 s | 19.7 s | 1.26x |
| cpu, % of wall | 576% | 745% | |
| waiting for a core | 2.0 ms | 47,775.6 ms | 23,816.81x |
| migrations | 0 | 23,599 | |
| faults min/maj | 90 / 0 | 470 / 0 | |
| peak RSS | 2.4 GiB | 4.5 GiB | 1.86x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 60,906 | 30,091 | 2.02x |
| recall@10 | 0.9640 | 0.9603 | ~equal |
| client p50 | 1.00 ms | 1.91 ms | 1.91x |
| client p99 | 1.51 ms | 5.36 ms | 3.55x |
| client p99.9 | 2.13 ms | 8.46 ms | 3.98x |
| server p50 | 789 µs | 1.14 ms | 1.44x |
| server p99 | 995 µs | 3.69 ms | 3.71x |
| wall clock | 3.4 s | 3.4 s | ~equal |
| queries sent | 200,000 | 100,000 | |
| cpu | 25.5 s | 25.6 s | ~equal |
| cpu, % of wall | 747% | 756% | |
| waiting for a core | 1.4 ms | 56,843.6 ms | 42,062.14x |
| migrations | 0 | 18,043 | |
| faults min/maj | 44 / 0 | 122 / 0 | |
| peak RSS | 2.4 GiB | 4.5 GiB | 1.86x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 33,459 | 20,024 | 1.67x |
| recall@10 | 0.9888 | 0.9876 | ~equal |
| client p50 | 1.91 ms | 2.98 ms | 1.56x |
| client p99 | 2.07 ms | 6.50 ms | 3.15x |
| client p99.9 | 2.88 ms | 22.86 ms | 7.94x |
| server p50 | 1.83 ms | 2.53 ms | 1.38x |
| server p99 | 1.97 ms | 5.39 ms | 2.73x |
| wall clock | 3.1 s | 2.5 s | 0.83x |
| queries sent | 100,000 | 50,000 | |
| cpu | 22.8 s | 18.7 s | 0.82x |
| cpu, % of wall | 747% | 739% | |
| waiting for a core | 1.0 ms | 10,640.3 ms | 11,180.03x |
| migrations | 0 | 6,029 | |
| faults min/maj | 0 / 0 | 111 / 0 | |
| peak RSS | 2.4 GiB | 4.5 GiB | 1.86x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 17,622 | 12,161 | 1.45x |
| recall@10 | 0.9974 | 0.9968 | ~equal |
| client p50 | 3.64 ms | 5.07 ms | 1.40x |
| client p99 | 3.94 ms | 9.26 ms | 2.35x |
| client p99.9 | 20.52 ms | 21.82 ms | 1.06x |
| server p50 | 3.56 ms | 4.72 ms | 1.33x |
| server p99 | 3.85 ms | 8.17 ms | 2.12x |
| wall clock | 2.9 s | 4.2 s | 1.45x |
| queries sent | 50,000 | 50,000 | |
| cpu | 21.0 s | 31.8 s | 1.52x |
| cpu, % of wall | 729% | 765% | |
| waiting for a core | 0.9 ms | 13,088.6 ms | 13,981.18x |
| migrations | 0 | 6,239 | |
| faults min/maj | 0 / 0 | 523 / 0 | |
| peak RSS | 2.4 GiB | 4.5 GiB | 1.86x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 9,151 | 7,164 | 1.28x |
| recall@10 | 0.9995 | 0.9993 | ~equal |
| client p50 | 7.04 ms | 8.92 ms | 1.27x |
| client p99 | 7.67 ms | 11.93 ms | 1.56x |
| client p99.9 | 14.93 ms | 21.60 ms | 1.45x |
| server p50 | 6.96 ms | 8.66 ms | 1.24x |
| server p99 | 7.57 ms | 11.25 ms | 1.49x |
| wall clock | 5.5 s | 7.0 s | 1.28x |
| queries sent | 50,000 | 50,000 | |
| cpu | 39.6 s | 55.6 s | 1.40x |
| cpu, % of wall | 719% | 792% | |
| waiting for a core | 1.8 ms | 12,144.6 ms | 6,780.01x |
| migrations | 0 | 1,080 | |
| faults min/maj | 3 / 0 | 386 / 0 | |
| peak RSS | 2.4 GiB | 4.5 GiB | 1.86x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 44.8 s | 61.9 s | 1.38x |
| of which upload | 1.5 s | 10.7 s | 6.97x |
| of which index wait | 41.1 s | 49.1 s | 1.19x |
| time to Green | 41.1 s | 49.1 s | 1.19x |
| cpu | 305.1 s | 349.8 s | 1.15x |
| cpu, % of wall | 681% | 565% | |
| waiting for a core | 114.5 ms | 19,990.3 ms | 174.55x |
| migrations | 1 | 18,496 | 18,496.00x |
| faults min/maj | 247,541 / 0 | 556,124 / 319,189 | |
| peak RSS | 3.4 GiB | 5.1 GiB | 1.50x |
| disk written | 488.4 MiB | 2.6 GiB | |
| disk read | 12.0 KiB | 189.4 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 27,306 | 19,742 | - |
| recall@10 | 0.0650 | 0.0658 | |
| client p50 | 2.33 ms | 3.09 ms | |
| client p99 | 2.52 ms | 6.53 ms | |
| client p99.9 | 2.67 ms | 18.21 ms | |
| server p50 | 2.25 ms | 2.67 ms | |
| server p99 | 2.44 ms | 5.57 ms | |
| wall clock | 3.7 s | 2.6 s | |
| queries sent | 100,000 | 50,000 | |
| cpu | 27.8 s | 19.2 s | |
| cpu, % of wall | 743% | 745% | |
| waiting for a core | 2.3 ms | 10,017.6 ms | |
| migrations | 0 | 4,916 | |
| faults min/maj | 0 / 0 | 1,773 / 0 | |
| peak RSS | 3.4 GiB | 5.1 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 46.8 s | 60.8 s | 1.30x |
| of which upload | 1.6 s | 11.6 s | 7.48x |
| of which index wait | 43.1 s | 47.1 s | 1.09x |
| time to Green | 43.1 s | 47.1 s | 1.09x |
| cpu | 306.0 s | 320.2 s | 1.05x |
| cpu, % of wall | 654% | 526% | |
| waiting for a core | 114.5 ms | 20,986.5 ms | 183.29x |
| migrations | 1 | 17,320 | 17,320.00x |
| faults min/maj | 247,485 / 0 | 507,387 / 312,803 | |
| peak RSS | 4.7 GiB | 5.2 GiB | 1.12x |
| disk written | 488.4 MiB | 2.5 GiB | |
| disk read | 0 | 189.0 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 31,405 | 17,623 | - |
| recall@10 | 0.5452 | 0.5026 | |
| client p50 | 2.03 ms | 3.11 ms | |
| client p99 | 2.16 ms | 10.83 ms | |
| client p99.9 | 2.54 ms | 22.41 ms | |
| server p50 | 1.95 ms | 1.89 ms | |
| server p99 | 2.07 ms | 8.15 ms | |
| wall clock | 3.3 s | 2.9 s | |
| queries sent | 100,000 | 50,000 | |
| cpu | 24.2 s | 21.9 s | |
| cpu, % of wall | 743% | 762% | |
| waiting for a core | 2.0 ms | 74,642.5 ms | |
| migrations | 0 | 15,579 | |
| faults min/maj | 0 / 0 | 2,152 / 0 | |
| peak RSS | 4.7 GiB | 5.2 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 46.8 s | 67.1 s | 1.43x |
| of which upload | 1.5 s | 11.9 s | 7.78x |
| of which index wait | 43.1 s | 52.1 s | 1.21x |
| time to Green | 43.1 s | 52.1 s | 1.21x |
| cpu | 306.0 s | 380.6 s | 1.24x |
| cpu, % of wall | 654% | 567% | |
| waiting for a core | 122.2 ms | 21,732.9 ms | 177.89x |
| migrations | 2 | 18,167 | 9,083.50x |
| faults min/maj | 247,481 / 0 | 562,838 / 321,988 | |
| peak RSS | 4.7 GiB | 5.2 GiB | 1.12x |
| disk written | 488.4 MiB | 2.7 GiB | |
| disk read | 0 | 208.8 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 30,523 | 17,280 | - |
| recall@10 | 0.3817 | 0.3428 | |
| client p50 | 2.08 ms | 3.16 ms | |
| client p99 | 2.23 ms | 10.86 ms | |
| client p99.9 | 2.56 ms | 23.06 ms | |
| server p50 | 2.00 ms | 1.93 ms | |
| server p99 | 2.14 ms | 8.33 ms | |
| wall clock | 3.3 s | 2.9 s | |
| queries sent | 100,000 | 50,000 | |
| cpu | 24.9 s | 22.4 s | |
| cpu, % of wall | 745% | 765% | |
| waiting for a core | 2.1 ms | 76,285.0 ms | |
| migrations | 0 | 16,529 | |
| faults min/maj | 0 / 0 | 2,376 / 0 | |
| peak RSS | 4.7 GiB | 5.2 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 54.9 s | 99.1 s | 1.81x |
| of which upload | 1.5 s | 7.8 s | 5.11x |
| of which index wait | 51.2 s | 89.2 s | 1.74x |
| time to Green | 51.2 s | 89.2 s | 1.74x |
| cpu | 388.8 s | 566.7 s | 1.46x |
| cpu, % of wall | 708% | 572% | |
| waiting for a core | 139.9 ms | 10,648.1 ms | 76.11x |
| migrations | 1 | 58,586 | 58,586.00x |
| faults min/maj | 249,660 / 0 | 462,533 / 240,643 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.32x |
| disk written | 488.4 MiB | 2.2 GiB | |
| disk read | 12.0 KiB | 145.1 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 27,153 | 19,240 | 1.41x |
| recall@10 | 0.9829 | 0.9780 | ~equal |
| client p50 | 2.36 ms | 3.19 ms | 1.35x |
| client p99 | 2.54 ms | 6.68 ms | 2.63x |
| client p99.9 | 2.77 ms | 23.63 ms | 8.54x |
| server p50 | 2.28 ms | 2.83 ms | 1.24x |
| server p99 | 2.46 ms | 5.89 ms | 2.40x |
| wall clock | 3.8 s | 2.6 s | 0.70x |
| queries sent | 100,000 | 50,000 | |
| cpu | 27.9 s | 19.6 s | 0.71x |
| cpu, % of wall | 743% | 745% | |
| waiting for a core | 1.5 ms | 9,938.6 ms | 6,701.99x |
| migrations | 0 | 5,041 | |
| faults min/maj | 0 / 0 | 1,508 / 0 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.32x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 44.8 s | 68.1 s | 1.52x |
| of which upload | 1.5 s | 12.5 s | 8.22x |
| of which index wait | 41.1 s | 53.1 s | 1.29x |
| time to Green | 41.1 s | 53.1 s | 1.29x |
| cpu | 307.4 s | 377.5 s | 1.23x |
| cpu, % of wall | 687% | 554% | |
| waiting for a core | 116.1 ms | 22,320.0 ms | 192.22x |
| migrations | 1 | 15,969 | 15,969.00x |
| faults min/maj | 237,464 / 0 | 518,202 / 312,766 | |
| peak RSS | 4.7 GiB | 5.2 GiB | 1.12x |
| disk written | 488.4 MiB | 2.5 GiB | |
| disk read | 0 | 186.0 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 27,331 | 16,257 | - |
| recall@10 | 0.7628 | 0.7158 | |
| client p50 | 2.34 ms | 3.34 ms | |
| client p99 | 2.53 ms | 11.85 ms | |
| client p99.9 | 3.03 ms | 19.70 ms | |
| server p50 | 2.26 ms | 2.16 ms | |
| server p99 | 2.44 ms | 9.40 ms | |
| wall clock | 3.7 s | 3.1 s | |
| queries sent | 100,000 | 50,000 | |
| cpu | 27.6 s | 23.8 s | |
| cpu, % of wall | 740% | 766% | |
| waiting for a core | 1.4 ms | 81,501.1 ms | |
| migrations | 0 | 16,389 | |
| faults min/maj | 0 / 0 | 2,706 / 0 | |
| peak RSS | 4.7 GiB | 5.2 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 44.8 s | 81.3 s | 1.81x |
| of which upload | 1.6 s | 13.8 s | 8.87x |
| of which index wait | 41.1 s | 65.2 s | 1.58x |
| time to Green | 41.1 s | 65.2 s | 1.58x |
| cpu | 309.3 s | 459.4 s | 1.49x |
| cpu, % of wall | 690% | 565% | |
| waiting for a core | 117.4 ms | 27,703.1 ms | 235.89x |
| migrations | 1 | 17,037 | 17,037.00x |
| faults min/maj | 240,046 / 0 | 582,138 / 324,362 | |
| peak RSS | 4.7 GiB | 5.2 GiB | 1.12x |
| disk written | 488.4 MiB | 2.7 GiB | |
| disk read | 0 | 211.3 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 24,873 | 15,866 | - |
| recall@10 | 0.8526 | 0.8147 | |
| client p50 | 2.57 ms | 3.44 ms | |
| client p99 | 2.78 ms | 11.97 ms | |
| client p99.9 | 18.12 ms | 23.89 ms | |
| server p50 | 2.49 ms | 2.25 ms | |
| server p99 | 2.69 ms | 9.42 ms | |
| wall clock | 2.0 s | 3.2 s | |
| queries sent | 50,000 | 50,000 | |
| cpu | 15.1 s | 24.5 s | |
| cpu, % of wall | 736% | 768% | |
| waiting for a core | 1.0 ms | 84,236.3 ms | |
| migrations | 0 | 15,911 | |
| faults min/maj | 0 / 0 | 3,270 / 0 | |
| peak RSS | 4.7 GiB | 5.2 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 44.9 s | 78.9 s | 1.76x |
| of which upload | 1.6 s | 13.7 s | 8.77x |
| of which index wait | 41.1 s | 63.1 s | 1.53x |
| time to Green | 41.1 s | 63.1 s | 1.53x |
| cpu | 308.6 s | 433.2 s | 1.40x |
| cpu, % of wall | 688% | 549% | |
| waiting for a core | 120.5 ms | 26,059.5 ms | 216.32x |
| migrations | 0 | 18,325 | |
| faults min/maj | 242,873 / 0 | 630,285 / 326,617 | |
| peak RSS | 4.7 GiB | 5.2 GiB | 1.12x |
| disk written | 488.4 MiB | 2.8 GiB | |
| disk read | 0 | 218.9 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 24,919 | 16,951 | - |
| recall@10 | 0.9711 | 0.9427 | |
| client p50 | 2.57 ms | 3.21 ms | |
| client p99 | 2.82 ms | 11.03 ms | |
| client p99.9 | 16.94 ms | 24.24 ms | |
| server p50 | 2.49 ms | 2.03 ms | |
| server p99 | 2.73 ms | 8.68 ms | |
| wall clock | 2.0 s | 3.0 s | |
| queries sent | 50,000 | 50,000 | |
| cpu | 15.1 s | 22.8 s | |
| cpu, % of wall | 735% | 765% | |
| waiting for a core | 0.8 ms | 78,044.7 ms | |
| migrations | 0 | 16,494 | |
| faults min/maj | 0 / 0 | 3,445 / 0 | |
| peak RSS | 4.7 GiB | 5.2 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 44.8 s | 74.3 s | 1.66x |
| of which upload | 1.6 s | 13.9 s | 8.86x |
| of which index wait | 41.1 s | 58.1 s | 1.41x |
| time to Green | 41.1 s | 58.1 s | 1.41x |
| cpu | 309.1 s | 382.7 s | 1.24x |
| cpu, % of wall | 690% | 515% | |
| waiting for a core | 118.6 ms | 21,608.1 ms | 182.25x |
| migrations | 2 | 18,796 | 9,398.00x |
| faults min/maj | 253,711 / 0 | 637,899 / 334,333 | |
| peak RSS | 4.7 GiB | 5.2 GiB | 1.12x |
| disk written | 488.4 MiB | 2.9 GiB | |
| disk read | 0 | 193.3 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 31,607 | 18,667 | 1.69x |
| recall@10 | 0.9892 | 0.9847 | ~equal |
| client p50 | 2.03 ms | 3.01 ms | 1.48x |
| client p99 | 2.19 ms | 9.44 ms | 4.31x |
| client p99.9 | 2.65 ms | 14.22 ms | 5.37x |
| server p50 | 1.94 ms | 1.75 ms | 0.90x |
| server p99 | 2.10 ms | 6.97 ms | 3.31x |
| wall clock | 3.2 s | 2.7 s | 0.84x |
| queries sent | 100,000 | 50,000 | |
| cpu | 24.1 s | 20.8 s | 0.86x |
| cpu, % of wall | 746% | 764% | |
| waiting for a core | 1.2 ms | 69,510.8 ms | 57,191.06x |
| migrations | 0 | 17,390 | |
| faults min/maj | 0 / 0 | 1,912 / 0 | |
| peak RSS | 4.7 GiB | 5.2 GiB | 1.12x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 191 | 123 | 1.56x |
| client p50 | 37.34 ms | 65.78 ms | 1.76x |
| client p99 | 68.90 ms | 77.33 ms | 1.12x |
| client p99.9 | 75.30 ms | 83.35 ms | 1.11x |
| server p50 | 36.81 ms | 64.62 ms | 1.76x |
| server p99 | 68.38 ms | 76.29 ms | 1.12x |
| wall clock | 10.5 s | 16.3 s | 1.56x |
| queries sent | 2,000 | 2,000 | |
| cpu | 72.7 s | 127.3 s | 1.75x |
| cpu, % of wall | 694% | 780% | |
| waiting for a core | 4.6 ms | 9,492.0 ms | 2,045.04x |
| migrations | 0 | 6,902 | |
| faults min/maj | 0 / 0 | 153 / 0 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.31x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 47,050 | 22,216 | 2.12x |
| recall@10 | 0.9077 | 0.8979 | ~equal |
| client p50 | 163 µs | 333 µs | 2.05x |
| client p99 | 221 µs | 652 µs | 2.95x |
| client p99.9 | 309 µs | 856 µs | 2.77x |
| server p50 | 79 µs | 211 µs | 2.66x |
| server p99 | 109 µs | 453 µs | 4.15x |
| wall clock | 2.2 s | 2.3 s | 1.04x |
| queries sent | 100,000 | 50,000 | |
| cpu | 9.9 s | 13.1 s | 1.32x |
| cpu, % of wall | 452% | 573% | |
| waiting for a core | 3.2 ms | 5,140.2 ms | 1,598.43x |
| migrations | 0 | 62,129 | |
| faults min/maj | 0 / 0 | 1,042 / 0 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.31x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 36,447 | 15,661 | 2.33x |
| recall@10 | 0.9625 | 0.9605 | ~equal |
| client p50 | 215 µs | 471 µs | 2.19x |
| client p99 | 271 µs | 957 µs | 3.53x |
| client p99.9 | 396 µs | 1.24 ms | 3.12x |
| server p50 | 137 µs | 337 µs | 2.45x |
| server p99 | 176 µs | 774 µs | 4.40x |
| wall clock | 2.8 s | 3.2 s | 1.15x |
| queries sent | 100,000 | 50,000 | |
| cpu | 15.8 s | 19.1 s | 1.21x |
| cpu, % of wall | 562% | 593% | |
| waiting for a core | 1.2 ms | 11,902.7 ms | 10,190.75x |
| migrations | 0 | 107,170 | |
| faults min/maj | 0 / 0 | 836 / 0 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.31x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 24,269 | 10,205 | 2.38x |
| recall@10 | 0.9872 | 0.9879 | ~equal |
| client p50 | 328 µs | 708 µs | 2.16x |
| client p99 | 403 µs | 1.52 ms | 3.76x |
| client p99.9 | 735 µs | 1.95 ms | 2.66x |
| server p50 | 254 µs | 561 µs | 2.21x |
| server p99 | 321 µs | 1.30 ms | 4.06x |
| wall clock | 2.1 s | 4.9 s | 2.36x |
| queries sent | 50,000 | 50,000 | |
| cpu | 13.6 s | 29.4 s | 2.16x |
| cpu, % of wall | 648% | 595% | |
| waiting for a core | 0.7 ms | 22,235.9 ms | 32,603.90x |
| migrations | 0 | 105,602 | |
| faults min/maj | 0 / 0 | 153 / 0 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.31x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 14,118 | 6,683 | 2.11x |
| recall@10 | 0.9956 | 0.9967 | ~equal |
| client p50 | 569 µs | 1.07 ms | 1.89x |
| client p99 | 743 µs | 2.30 ms | 3.09x |
| client p99.9 | 882 µs | 3.01 ms | 3.41x |
| server p50 | 494 µs | 913 µs | 1.85x |
| server p99 | 667 µs | 2.00 ms | 3.00x |
| wall clock | 3.6 s | 7.5 s | 2.10x |
| queries sent | 50,000 | 50,000 | |
| cpu | 24.7 s | 46.5 s | 1.88x |
| cpu, % of wall | 692% | 619% | |
| waiting for a core | 1.1 ms | 34,252.2 ms | 30,523.24x |
| migrations | 0 | 127,521 | |
| faults min/maj | 0 / 0 | 104 / 0 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.31x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 7,434 | 3,964 | 1.88x |
| recall@10 | 0.9977 | 0.9994 | ~equal |
| client p50 | 1.08 ms | 1.85 ms | 1.72x |
| client p99 | 1.52 ms | 3.72 ms | 2.45x |
| client p99.9 | 1.73 ms | 4.75 ms | 2.75x |
| server p50 | 995 µs | 1.65 ms | 1.66x |
| server p99 | 1.43 ms | 3.36 ms | 2.35x |
| wall clock | 6.8 s | 12.6 s | 1.87x |
| queries sent | 50,000 | 50,000 | |
| cpu | 47.6 s | 80.5 s | 1.69x |
| cpu, % of wall | 703% | 636% | |
| waiting for a core | 2.3 ms | 51,040.1 ms | 22,630.00x |
| migrations | 0 | 157,882 | |
| faults min/maj | 0 / 0 | 289 / 0 | |
| peak RSS | 4.0 GiB | 5.2 GiB | 1.31x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| wall clock | 11.7 s | 18.9 s | 1.62x |
| of which upload | 0.6 s | 2.4 s | 4.25x |
| of which index wait | 9.0 s | 14.0 s | 1.55x |
| time to Green | 9.0 s | 14.0 s | 1.55x |
| cpu | 48.7 s | 82.4 s | 1.69x |
| cpu, % of wall | 416% | 436% | |
| waiting for a core | 18.6 ms | 4,943.4 ms | 265.74x |
| migrations | 0 | 5,065 | |
| faults min/maj | 117,259 / 0 | 163,649 / 189,401 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 97.8 MiB | 585.8 MiB | |
| disk read | 16.0 KiB | 46.3 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 36,269 | 18,359 | 1.98x |
| recall@10 | 1.0000 | 1.0000 | ~equal |
| client p50 | 1.73 ms | 3.21 ms | 1.86x |
| client p99 | 2.43 ms | 8.32 ms | 3.43x |
| client p99.9 | 3.03 ms | 25.38 ms | 8.38x |
| server p50 | 1.63 ms | 1.50 ms | 0.92x |
| server p99 | 2.27 ms | 5.38 ms | 2.37x |
| wall clock | 2.8 s | 2.8 s | 0.98x |
| queries sent | 100,000 | 50,000 | |
| cpu | 21.2 s | 21.1 s | ~equal |
| cpu, % of wall | 748% | 763% | |
| waiting for a core | 3.6 ms | 65,654.2 ms | 18,309.36x |
| migrations | 0 | 22,449 | |
| faults min/maj | 138 / 0 | 1,639 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 4,934 | 2,184 | 2.26x |
| recall@10 | 1.0000 | 0.9982 | ~equal |
| client p50 | 12.74 ms | 28.87 ms | 2.27x |
| client p99 | 14.38 ms | 45.06 ms | 3.13x |
| client p99.9 | 26.36 ms | 61.57 ms | 2.34x |
| server p50 | 12.62 ms | 28.26 ms | 2.24x |
| server p99 | 14.24 ms | 41.74 ms | 2.93x |
| wall clock | 10.2 s | 22.9 s | 2.25x |
| queries sent | 50,000 | 50,000 | |
| cpu | 71.8 s | 182.9 s | 2.55x |
| cpu, % of wall | 706% | 798% | |
| waiting for a core | 12.3 ms | 99,290.4 ms | 8,051.53x |
| migrations | 0 | 2,808 | |
| faults min/maj | 2 / 0 | 6,252 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 36,226 | 20,773 | 1.74x |
| recall@10 | 1.0000 | 1.0000 | ~equal |
| client p50 | 1.74 ms | 2.88 ms | 1.66x |
| client p99 | 1.93 ms | 6.40 ms | 3.33x |
| client p99.9 | 3.08 ms | 23.43 ms | 7.61x |
| server p50 | 1.64 ms | 2.29 ms | 1.39x |
| server p99 | 1.81 ms | 5.08 ms | 2.80x |
| wall clock | 2.8 s | 2.4 s | 0.87x |
| queries sent | 100,000 | 50,000 | |
| cpu | 21.1 s | 18.3 s | 0.87x |
| cpu, % of wall | 748% | 750% | |
| waiting for a core | 1.3 ms | 12,271.2 ms | 9,619.18x |
| migrations | 0 | 5,383 | |
| faults min/maj | 4 / 0 | 296 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 36,528 | 20,944 | 1.74x |
| recall@10 | 1.0000 | 1.0000 | ~equal |
| client p50 | 1.73 ms | 2.85 ms | 1.65x |
| client p99 | 1.90 ms | 6.36 ms | 3.35x |
| client p99.9 | 2.79 ms | 20.14 ms | 7.23x |
| server p50 | 1.63 ms | 2.29 ms | 1.40x |
| server p99 | 1.76 ms | 5.20 ms | 2.96x |
| wall clock | 2.8 s | 2.4 s | 0.87x |
| queries sent | 100,000 | 50,000 | |
| cpu | 21.0 s | 18.1 s | 0.86x |
| cpu, % of wall | 749% | 748% | |
| waiting for a core | 1.1 ms | 12,168.3 ms | 11,031.99x |
| migrations | 0 | 4,950 | |
| faults min/maj | 0 / 0 | 36 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 36,391 | 20,827 | 1.75x |
| recall@10 | 1.0000 | 1.0000 | ~equal |
| client p50 | 1.73 ms | 2.87 ms | 1.66x |
| client p99 | 1.90 ms | 6.41 ms | 3.37x |
| client p99.9 | 3.10 ms | 23.64 ms | 7.62x |
| server p50 | 1.63 ms | 2.28 ms | 1.40x |
| server p99 | 1.76 ms | 5.15 ms | 2.93x |
| wall clock | 2.8 s | 2.4 s | 0.87x |
| queries sent | 100,000 | 50,000 | |
| cpu | 21.0 s | 18.1 s | 0.86x |
| cpu, % of wall | 748% | 744% | |
| waiting for a core | 1.2 ms | 12,120.3 ms | 9,903.84x |
| migrations | 0 | 4,911 | |
| faults min/maj | 0 / 0 | 115 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 36,479 | 20,915 | 1.74x |
| recall@10 | 1.0000 | 1.0000 | ~equal |
| client p50 | 1.73 ms | 2.87 ms | 1.66x |
| client p99 | 1.90 ms | 6.39 ms | 3.37x |
| client p99.9 | 2.89 ms | 22.63 ms | 7.84x |
| server p50 | 1.63 ms | 2.28 ms | 1.40x |
| server p99 | 1.75 ms | 5.13 ms | 2.93x |
| wall clock | 2.8 s | 2.4 s | 0.86x |
| queries sent | 100,000 | 50,000 | |
| cpu | 21.0 s | 18.2 s | 0.87x |
| cpu, % of wall | 746% | 748% | |
| waiting for a core | 1.1 ms | 12,139.7 ms | 11,390.41x |
| migrations | 0 | 4,977 | |
| faults min/maj | 0 / 0 | 89 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 36,405 | 20,876 | 1.74x |
| recall@10 | 1.0000 | 1.0000 | ~equal |
| client p50 | 1.73 ms | 2.87 ms | 1.66x |
| client p99 | 1.90 ms | 6.35 ms | 3.35x |
| client p99.9 | 3.01 ms | 18.56 ms | 6.17x |
| server p50 | 1.63 ms | 2.28 ms | 1.40x |
| server p99 | 1.75 ms | 5.14 ms | 2.94x |
| wall clock | 2.8 s | 2.4 s | 0.87x |
| queries sent | 100,000 | 50,000 | |
| cpu | 21.0 s | 18.1 s | 0.86x |
| cpu, % of wall | 746% | 745% | |
| waiting for a core | 0.9 ms | 12,046.5 ms | 13,113.31x |
| migrations | 0 | 5,059 | |
| faults min/maj | 0 / 0 | 23 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 14,946 | 2,588 | - |
| recall@10 | 0.9784 | 0.9656 | |
| client p50 | 4.27 ms | 24.72 ms | |
| client p99 | 4.56 ms | 27.92 ms | |
| client p99.9 | 21.44 ms | 36.85 ms | |
| server p50 | 4.18 ms | 24.18 ms | |
| server p99 | 4.46 ms | 27.45 ms | |
| wall clock | 3.4 s | 19.4 s | |
| queries sent | 50,000 | 50,000 | |
| cpu | 24.6 s | 154.2 s | |
| cpu, % of wall | 727% | 796% | |
| waiting for a core | 1.0 ms | 26,205.4 ms | |
| migrations | 0 | 326 | |
| faults min/maj | 0 / 0 | 1,613 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 8,547 | 2,420 | 3.53x |
| recall@10 | 0.9953 | 0.9915 | ~equal |
| client p50 | 7.50 ms | 26.24 ms | 3.50x |
| client p99 | 8.04 ms | 29.92 ms | 3.72x |
| client p99.9 | 24.43 ms | 37.34 ms | 1.53x |
| server p50 | 7.41 ms | 25.87 ms | 3.49x |
| server p99 | 7.94 ms | 29.43 ms | 3.70x |
| wall clock | 5.9 s | 20.7 s | 3.52x |
| queries sent | 50,000 | 50,000 | |
| cpu | 42.3 s | 165.2 s | 3.91x |
| cpu, % of wall | 718% | 798% | |
| waiting for a core | 2.1 ms | 27,344.5 ms | 12,755.56x |
| migrations | 0 | 307 | |
| faults min/maj | 0 / 0 | 1,921 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 4,930 | 2,178 | 2.26x |
| recall@10 | 1.0000 | 0.9982 | ~equal |
| client p50 | 12.75 ms | 29.01 ms | 2.28x |
| client p99 | 14.27 ms | 35.07 ms | 2.46x |
| client p99.9 | 28.53 ms | 46.94 ms | 1.64x |
| server p50 | 12.63 ms | 28.62 ms | 2.27x |
| server p99 | 14.13 ms | 34.65 ms | 2.45x |
| wall clock | 10.2 s | 23.0 s | 2.26x |
| queries sent | 50,000 | 50,000 | |
| cpu | 71.9 s | 183.5 s | 2.55x |
| cpu, % of wall | 706% | 798% | |
| waiting for a core | 2.4 ms | 29,547.8 ms | 12,147.87x |
| migrations | 0 | 391 | |
| faults min/maj | 0 / 0 | 1,575 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 4,936 | 1,908 | 2.59x |
| recall@10 | 1.0000 | 0.9996 | ~equal |
| client p50 | 12.74 ms | 32.89 ms | 2.58x |
| client p99 | 14.25 ms | 42.94 ms | 3.01x |
| client p99.9 | 24.12 ms | 51.42 ms | 2.13x |
| server p50 | 12.62 ms | 32.26 ms | 2.56x |
| server p99 | 14.11 ms | 42.19 ms | 2.99x |
| wall clock | 10.2 s | 26.2 s | 2.58x |
| queries sent | 50,000 | 50,000 | |
| cpu | 71.8 s | 209.6 s | 2.92x |
| cpu, % of wall | 706% | 799% | |
| waiting for a core | 2.6 ms | 32,082.7 ms | 12,163.83x |
| migrations | 0 | 490 | |
| faults min/maj | 0 / 0 | 2,883 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 4,907 | 1,605 | 3.06x |
| recall@10 | 1.0000 | 0.9999 | ~equal |
| client p50 | 12.81 ms | 38.82 ms | 3.03x |
| client p99 | 14.33 ms | 54.30 ms | 3.79x |
| client p99.9 | 24.78 ms | 59.87 ms | 2.42x |
| server p50 | 12.70 ms | 38.07 ms | 3.00x |
| server p99 | 14.19 ms | 53.86 ms | 3.79x |
| wall clock | 10.2 s | 31.2 s | 3.05x |
| queries sent | 50,000 | 50,000 | |
| cpu | 72.2 s | 249.2 s | 3.45x |
| cpu, % of wall | 706% | 799% | |
| waiting for a core | 2.8 ms | 36,426.6 ms | 13,120.65x |
| migrations | 0 | 456 | |
| faults min/maj | 0 / 0 | 2,994 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 56,641 | 50,492 | 1.12x |
| client p50 | 127 µs | 146 µs | 1.15x |
| client p99 | 205 µs | 292 µs | 1.43x |
| client p99.9 | 238 µs | 459 µs | 1.93x |
| server p50 | 11 µs | 28 µs | 2.62x |
| server p99 | 15 µs | 100 µs | 6.51x |
| wall clock | 3.6 s | 4.1 s | 1.12x |
| queries sent | 200,000 | 200,000 | |
| cpu | 5.3 s | 18.0 s | 3.43x |
| cpu, % of wall | 144% | 442% | |
| waiting for a core | 2.2 ms | 2,194.2 ms | 1,005.72x |
| migrations | 0 | 230,194 | |
| faults min/maj | 0 / 0 | 440 / 0 | |
| peak RSS | 4.5 GiB | 5.2 GiB | 1.16x |
| disk written | 0 | 0 | |
| disk read | 0 | 0 |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 21,624 | 4,481 | - |
| client p50 | 329 µs | 1.51 ms | |
| client p99 | 1.95 ms | 6.72 ms | |
| client p99.9 | 2.93 ms | 13.70 ms | |
| server p50 | 255 µs | 1.18 ms | |
| server p99 | 1.05 ms | 5.89 ms | |
| wall clock | 32.9 s | 31.7 s | |
| queries sent | 696,388 | 140,836 | |
| cpu | 210.3 s | 230.0 s | |
| cpu, % of wall | 639% | 725% | |
| waiting for a core | 12,368.5 ms | 152,429.9 ms | |
| migrations | 54 | 243,563 | |
| faults min/maj | 1,162,430 / 0 | 1,194,422 / 261,045 | |
| peak RSS | 4.7 GiB | 10.3 GiB | |
| disk written | 24.5 MiB | 4.6 GiB | |
| disk read | 0 | 519.6 MiB |
| metric | strawmANN | Qdrant | |
|---|---|---|---|
| queries/second | 17,800 | 2,017 | - |
| client p50 | 333 µs | 2.77 ms | |
| client p99 | 2.00 ms | 16.97 ms | |
| client p99.9 | 3.20 ms | 26.23 ms | |
| server p50 | 258 µs | 2.30 ms | |
| server p99 | 1.16 ms | 15.78 ms | |
| wall clock | 78.9 s | 76.2 s | |
| queries sent | 1,448,903 | 159,737 | |
| cpu | 517.5 s | 577.2 s | |
| cpu, % of wall | 656% | 758% | |
| waiting for a core | 71,348.8 ms | 437,856.7 ms | |
| migrations | 224 | 248,376 | |
| faults min/maj | 8,099,839 / 0 | 1,708,094 / 405,980 | |
| peak RSS | 4.7 GiB | 10.7 GiB | |
| disk written | 97.9 MiB | 6.1 GiB | |
| disk read | 0 | 730.1 MiB |
373e8531fd3d1bf6373e8531fd3d1bf6No Qdrant developer has used this tool. Nothing here has been run, checked against something already known, or disagreed with by anyone outside the project: every number has one author and one reviewer, and they are the same person. A result you can refute is more useful to us than one you accept.
It has never been pointed at a real Qdrant regression. The harness detects
a known ISA slowdown and correctly reports no difference on a control row. That is
internal consistency, not evidence it would flag a regression in your tree or stay
quiet through a refactor. bench/harness/qdrant_ab.py exists to run two
of your commits through it blind, and that experiment has not been done.
Part of the measured throughput gap is kernel width, not architecture.
Read from a dev checkout: Qdrant's distance path tops out at four
256-bit accumulators and has no AVX-512, while these kernels use 512-bit ones on a
machine that has them. That is a real difference and it is not the same claim as
"the design is faster".
The engines are not equivalent, by construction. §1 removes sharding,
replication, consensus, snapshots, sparse vectors, multivectors and disk-resident
operation — permanently. Payload storage and filtering were in that list until
2026-09-03 and are now built (M7), so W12 measures a filtered search with a keyword
index on both engines. Anything still unbuilt answers UNIMPLEMENTED
naming the construct and reports n/a, never a silent degradation. A
strawman that was not faster would mean it was badly built; the question is by how
much, and where the model was wrong.
Everything below runs from a clone. The engine has no dependencies; the
analysis path is a uv project pinned by bench/uv.lock.
scripts/doctor.py # what can this machine measure?
bench/setup.py check # §7.1 host gate: governor, boost, isolation, idle
conformance/datasets/datasets.py fetch
# one engine at a time, §7.1
zig build -Doptimize=ReleaseFast
# --connections matters: W4 opens ~32 sockets (-t 16 -c 2) and a server with
# fewer closes the excess before the HTTP/2 preface, which the client reports
# only as "transport error".
./zig-out/bin/strawmann --port 6334 --connections 64
bench/harness/workloads.py run http://localhost:6334 strawmann --sink --report
# the other half of every number: recall, and the licence to compare at all
cd conformance
cargo run --release -- relevance --engine http://localhost:6334 --label strawmann \
--base $DATA/sift1m/sift1m.fbin --queries $DATA/sift1m/sift1m_query.fbin \
--ground-truth $DATA/sift1m/gt/sift1m.euclid.k100.gt.json --metric euclid \
--ef 32 64 128 256 512 --json ../bench/results/strawmann/recall.json
cargo run --release -- differ --strawmann http://localhost:6334 --qdrant http://localhost:6434 \
--base $DATA/sift1m/sift1m.fbin --queries $DATA/sift1m/sift1m_query.fbin \
--ground-truth $DATA/sift1m/gt/sift1m.euclid.k100.gt.json \
--json ../bench/results/strawmann/conformance.json
uv run --project bench bench/harness/report.py strawmann qdrant
Disagreements are the point. docs/spec.md is what all of this is
measured against, docs/bugs.md lists the measurement bugs found so far
(each produced a plausible wrong number rather than a failure), and
docs/validation.md records what has and has not been checked.