{
  "startedUtc": "2026-10-05T03:15:56Z",
  "command": "run-all",
  "commandLine": "~/gvb-work/lanes/v5-final/src/GenericVectorBuilder.Bench/bin/Release/net10.0/GenericVectorBuilder.Bench.dll run-all --pipeline eshoponweb --queries golden --seed 502 --out ~/ForClaude/GenericVectorBuilder/bench-results",
  "machine": {
    "host": "bench-host",
    "cpu": "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz",
    "logicalCpus": 8,
    "ramGiB": 62.7,
    "gpu": "NVIDIA GeForce RTX 3060, 12288 MiB",
    "os": "Ubuntu 24.04.5 LTS, kernel 6.8.0-142-generic",
    "dotNet": ".NET 10.0.12",
    "loadAverage": "3.47 2.99 2.95"
  },
  "pipeline": "eshoponweb",
  "collection": "gvbbench_eshoponweb",
  "rows": 524,
  "dimension": 1024,
  "source": "Read READ-ONLY from GenericVectorBuilder.dbo.gvb_eshoponweb in ChunkId order, vectors as native SqlVector\u003Cfloat\u003E, 0.2 s.",
  "queries": "golden: 20 labelled questions from ~/ForClaude/evalkit/questions_golden.json, embedded with qwen3-emb-0.6b (cached in ~/gvb-data/bench-cache/golden-eshoponweb-68df42ca69efa079.json, no embedding calls)",
  "queryCount": 20,
  "top": 10,
  "concurrency": [
    1,
    8
  ],
  "secondsPerLevel": 20,
  "truthSeconds": 0.0249724,
  "truthNdcg": 0.5181699774768911,
  "runSeed": 502,
  "targetOrder": [
    "mariadb",
    "weaviate",
    "redis",
    "sqlitevec",
    "qdrant",
    "oracle",
    "mongodb",
    "vespa",
    "qdrant-hnsw",
    "typesense",
    "chroma",
    "duckdb",
    "elasticsearch",
    "sql-diskann",
    "pgvector",
    "sql",
    "milvus",
    "clickhouse",
    "opensearch"
  ],
  "notes": [
    "Order: targets ran one at a time in a random order from seed 502 (runSeed; --seed 502 repeats it, targetOrder lists it). Inside each target the timed passes also ran in a random order from the same seed and the target\u0027s name (passOrder): default@1 is one searcher for 20 s (every search\u0027s latency gives p50/p95/p99, the completed searches give QPS@1, its first answer to each query gives recall and nDCG), default@N is N searchers for 20 s (QPS@N), exact is the engine\u0027s exact mode, one searcher for 60 s cycling the queries.",
    "Preparation, untimed, before any timed pass: a rehearsal of every pass type for 5 s each through the same code the passes use, then a settle (default searches one at a time until the p50s of 3 windows of 100 agree within 5%, at most 120 s). Right before the first timed pass a 2 s trial of default searches must agree with the settled p50 within 15%; if it does not, or the settle did not settle, the settle is extended once (at least 30 s, at most 120 s more) and a second trial taken. Each target\u0027s notes give the result; a target still disagreeing is marked NOT settled.",
    "Warm-up: every timed pass started with its own untimed warm-up of 20 searches in the same search mode and with the same number of searchers, stopped early after 60 s; with machine control on, the check for a quiet box comes right before the warm-up, so warm-up and timed pass run back to back. Failed untimed searches are counted per target (warmupErrors) and are not in the timed error counts.",
    "Load rows/s counts only time inside each target\u0027s upsert calls: one writer, batches of 1000, rows already in memory, the collection dropped and created fresh first. Engines that build or finish their index after the writes do it in a separate timed index step (the load\u0027s index seconds), and the run waits for it before searching.",
    "Index proof: each engine\u0027s own report of its index (indexState) is read after the load and again after the last pass. A target whose index was not ready after the load was still measured and carries a WARNING; an engine that reports nothing counts as not ready.",
    "Durability: each target\u0027s crash-safety setting as configured here (durability). Engines that do not force writes to disk on every commit load faster for that reason.",
    "Latency is client-side wall time around each search (network and driver included), every search of the default@1 window, one searcher, the queries cycled; a window with fewer than 200 searches, a p50 above 1.25 x its mean, or a mean above its p99 is flagged.",
    "QPS: N searchers back to back for 20 s per level; completed searches divided by the window\u0027s elapsed time.",
    "Recall@10: share of the exact top 10 (brute force in memory) that the engine returned. A hit whose exact similarity ties the 10th best (within 1e-5) also counts, because duplicate rows embed to identical vectors.",
    "Routes: a container engine (the benchmark\u0027s own SQL Server and Qdrant containers included) is reached at its container\u0027s own address on its Docker network, never through the published localhost port (docker-proxy); the native comparison targets (sql-native, qdrant-native) are native services reached directly over loopback. Each target\u0027s addresses and the connections the client held open after its passes are in its notes and in conditions.connections.",
    "RAM of compose engines, the benchmark\u0027s own SQL Server and Qdrant containers (sql, sql-diskann, qdrant, qdrant-hnsw) included, is docker stats of the engine\u0027s containers; for the native comparison targets (sql-native, qdrant-native) it is the whole native process, including every other database or collection it serves. Disk is the table\u0027s reserved pages (SQL), the collection folder (Qdrant), or for other engines what the load added to the engine\u0027s data folder (engines that keep data in memory until a snapshot show almost nothing).",
    "Engines: run-all starts an engine that is down and stops it afterwards only if it was not running when the run began; an engine that was already running is left running.",
    "WARNING: the engine did not report a ready index after the load for: elasticsearch. They were measured anyway; their numbers may come from a scan or a half-built index (see each target\u0027s index state).",
    "Machine control on: governor performance on every CPU during the run (before: schedutil; at the end: performance; after putting it back: schedutil). engine CPUs 2-3,6-7 (cores 2,6 and 3,7), client CPUs 0-1,4-5 (cores 0,4 and 1,5); the client process was pinned; each engine was pinned to the engine CPUs for its turn and put back after (conditions.engines); an engine run-all started (and stopped) was asked to be created on them, and its notes say whether the host did so or it was moved there after the start. Busy box: right before each pass\u0027s warm-up the run waits, up to 10 min, while processes outside the benchmark (everything but this client and the engine under test\u0027s cgroups) use more than 0.3 CPUs on average over the last 60 s or the last 5 s, neither window reaching back past the start of the target or of its engine (so the engine\u0027s own start-up is not outside work); if the box does not clear the pass runs anyway, flagged \u0027busy box\u0027, as is a pass whose own outside load is above the limit. Outside load counts busy = user \u002B nice \u002B system \u002B irq \u002B softirq \u002B steal (guest time is already in user); CONFIG_IRQ_TIME_ACCOUNTING is not set, so task and cgroup run time include the interrupt and softirq time that hit them and it is added; CONFIG_PARAVIRT_TIME_ACCOUNTING is not set, so steal is added (/boot/config-6.8.0-142-generic) (conditions.cpuAccounting); each pass also records this client\u0027s own CPU time per search (conditions.passes[].clientCpuMsPerSearch). CPU clocks were sampled every 250 ms; each pass\u0027s min/median/max per CPU is in conditions.passes. CPU idle states, recorded and left as found: driver intel_idle, governor menu, intel_idle max_cstate 9; POLL on, C1 on, C1E on, C3 OFF on CPUs 0-7 (default disabled), C6 on (conditions.cpuIdle). How each target was reached: conditions.connections. Client build Release, .NET 10.0.12.",
    "sqlitevec is embedded: it ran inside the client process on the client CPUs 0-1,4-5, sharing them with the client.",
    "duckdb is embedded: it ran inside the client process on the client CPUs 0-1,4-5, sharing them with the client.",
    "WARNING: accounting mismatch in typesense exact: outside load over the last few seconds before the warm-up was -0.057 CPUs, below -0.05; the kernel\u0027s busy time minus this process minus the engine\u0027s cgroups came out negative, so the outside-load figures of this pass cannot be trusted.",
    "WARNING: accounting mismatch in typesense default@8: outside load during the pass was -0.060 CPUs, below -0.05; the kernel\u0027s busy time minus this process minus the engine\u0027s cgroups came out negative, so the outside-load figures of this pass cannot be trusted."
  ],
  "targets": [
    {
      "name": "mariadb",
      "engine": "MariaDB 11.8.9 (InnoDB \u002B VECTOR INDEX)",
      "index": "VECTOR INDEX (HNSW variant) DISTANCE=cosine, M=16 (no ef_construction setting exists), mhnsw_ef_search=100 per statement (the ef 100 most engines here use, so the search effort matches; MariaDB\u0027s own default is 20; recall@10 at ef 100 falls as the set grows (random 1024-dimension vectors, measured 2026-10-04: 0.99 at 524, 0.89 to 0.92 at 2,000; an earlier run gave about 0.09 at 100,000)), mhnsw_max_cache_size 4G; exact mode = IGNORE INDEX full scan",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.5124745,
        "rowsPerSecond": 1022.4898994974383,
        "countMatchSeconds": 0.0066112,
        "indexSeconds": 0.5318152,
        "indexNote": "VECTOR INDEX is maintained inside every INSERT, nothing to build; confirmed after 2 poll(s) in 0.5 s (poll 1 of 2 said: not ready: a search at mhnsw_ef_search 100 returned only 403 of 524 requested rows through the index (EXPLAIN key \u0027vec_idx\u0027) (information_schema lists vec_idx as INDEX_TYPE VECTOR, EXPLAIN of the default search uses key vec_idx, the server applied mhnsw_ef_search 100 (asked for 100, read back from the server), a search at that effort returned 403 of 524 requested rows through the index; MariaDB has no per-index row count (the graph is a hidden InnoDB table), so indexed vectors are not reported)): information_schema lists vec_idx as INDEX_TYPE VECTOR, EXPLAIN of the default search uses key vec_idx, the server applied mhnsw_ef_search 100 (asked for 100, read back from the server), a search at that effort returned 520 of 524 requested rows through the index; MariaDB has no per-index row count (the graph is a hidden InnoDB table), so indexed vectors are not reported"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 31456,
        "p50Ms": 0.6234500000000001,
        "p95Ms": 0.7077249999999999,
        "p99Ms": 0.8993800000000003,
        "qps": {
          "1": 1572.7513312100557,
          "8": 5969.620024820835
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 37291,
        "exactP50Ms": 1.58,
        "exactP95Ms": 1.7062,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 0.4832,
          "8": 0.3816
        }
      },
      "ram": {
        "bytes": 177733632,
        "text": "169.5 MiB (docker stats)"
      },
      "disk": {
        "bytes": 23077570,
        "text": "22.01 MiB added by this load (182.79 MiB (whole engine data folder), 160.78 MiB before)"
      },
      "passOrder": [
        "default@1",
        "exact",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "totalVectors": 524,
          "detail": "information_schema lists vec_idx as INDEX_TYPE VECTOR, EXPLAIN of the default search uses key vec_idx, the server applied mhnsw_ef_search 100 (asked for 100, read back from the server), a search at that effort returned 520 of 524 requested rows through the index; MariaDB has no per-index row count (the graph is a hidden InnoDB table), so indexed vectors are not reported"
        },
        "afterSearch": {
          "ready": true,
          "totalVectors": 524,
          "detail": "information_schema lists vec_idx as INDEX_TYPE VECTOR, EXPLAIN of the default search uses key vec_idx, the server applied mhnsw_ef_search 100 (asked for 100, read back from the server), a search at that effort returned 520 of 524 requested rows through the index; MariaDB has no per-index row count (the graph is a hidden InnoDB table), so indexed vectors are not reported"
        }
      },
      "durability": "innodb_flush_log_at_trx_commit=2 (mariadb.compose.yaml): the InnoDB redo log is written to the operating system at every commit but fsynced about once a second, so a crash of the mariadbd process loses nothing, while an operating-system crash or power cut can lose the last second of commits; innodb_doublewrite is on (default), the binary log is off, and the vector graph is an InnoDB table under the same log (settings read from the running server with SHOW VARIABLES; the crash behaviour is InnoDB\u0027s documented behaviour for this setting and was not tested, because gvb-mariadb is shared and stays up)",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started mariadb-bench.compose.yaml with every container created on CPUs 2-3,6-7: gvbbench-mariadb cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, ? of 524 indexed (information_schema lists vec_idx as INDEX_TYPE VECTOR, EXPLAIN of the default search uses key vec_idx, the server applied mhnsw_ef_search 100 (asked for 100, read back from the server), a search at that effort returned 520 of 524 requested rows through the index; MariaDB has no per-index row count (the graph is a hidden InnoDB table), so indexed vectors are not reported). Durability: innodb_flush_log_at_trx_commit=2 (mariadb.compose.yaml): the InnoDB redo log is written to the operating system at every commit but fsynced about once a second, so a crash of the mariadbd process loses nothing, while an operating-system crash or power cut can lose the last second of commits; innodb_doublewrite is on (default), the binary log is off, and the vector graph is an InnoDB table under the same log (settings read from the running server with SHOW VARIABLES; the crash behaviour is InnoDB\u0027s documented behaviour for this setting and was not tested, because gvb-mariadb is shared and stays up).",
        "Load average 3.25 2.96 2.94 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 7,497 searches in 5.0 s, exact 3,089 searches in 5.0 s, default@8 30,091 searches in 5.0 s.",
        "Settle: settled after 0.3 s and 400 searches (0 failed); p50 of the last windows of 100: 0.59, 0.59, 0.59 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 3,123 searches in 2.0 s: p50 0.628 ms against the settled p50 0.586 ms, 7% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:16:23.746Z to 2026-10-05T03:16:43.747Z (20.0 s), 31,456 searches, 0 failed, p50 0.623 ms, mean 0.634 ms, p99 0.899 ms, 1572.8 QPS (1000/QPS 0.636 ms).",
        "Pass exact after default@1: 2026-10-05T03:16:43.899Z to 2026-10-05T03:17:43.900Z (60.0 s), 37,291 searches, 0 failed, p50 1.580 ms, mean 1.607 ms, p99 2.159 ms, 621.5 QPS (1000/QPS 1.609 ms).",
        "Pass default@8 after exact: 2026-10-05T03:17:43.940Z to 2026-10-05T03:18:03.941Z (20.0 s), 119,398 searches, 0 failed, p50 1.300 ms, mean 1.338 ms, p99 2.455 ms, 5969.6 QPS (1000/QPS 0.168 ms).",
        "Passes in the order run: default@1, exact, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 44,260 sent, 0 failed (warmupErrors). Index after the searches: ready, ? of 524 indexed (information_schema lists vec_idx as INDEX_TYPE VECTOR, EXPLAIN of the default search uses key vec_idx, the server applied mhnsw_ef_search 100 (asked for 100, read back from the server), a search at that effort returned 520 of 524 requested rows through the index; MariaDB has no per-index row count (the graph is a hidden InnoDB table), so indexed vectors are not reported).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvbbench-mariadb (d78c2651a20a) on network gvbbench-mariadb_default at container-ip:3306, not through docker-proxy localhost:13306. Open after the passes: container-ip:3306 x8 (this target), localhost:1433 x2 (not this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvbbench-mariadb: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvbbench-mariadb: 14 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.13 during, client CPU 0.483 ms per search; exact 3592/3592 MHz, performance, outside load 0.12 before the warm-up, 0.12 during, client CPU 0.502 ms per search; default@8 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.06 during, client CPU 0.382 ms per search."
      ]
    },
    {
      "name": "weaviate",
      "engine": "Weaviate 1.39.8 (single node, REST \u002B GraphQL)",
      "index": "HNSW maxConnections(M)=16 efConstruction=128, ef=-1 (dynamic: limit x 8 clamped 100..500), cosine, no quantization; approximate only (no exact mode)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.6381125,
        "rowsPerSecond": 821.1718153146977,
        "countMatchSeconds": 0.0042784,
        "indexSeconds": 0.0198717,
        "indexNote": "HNSW is updated inside every batch, nothing to build; confirmed in 0.0 s: shard Dv6Hedvh8BDL vectorIndexingStatus READY, vectorQueueLength 0, node status objectCount 0 (refreshed only when the memtable is flushed, so it lags a minute and does not decide readiness), schema shard Dv6Hedvh8BDL status READY, Aggregate count 524, Aggregate nearVector with objectLimit 524 reached 524, Weaviate reports no count of vectors in the HNSW index, so indexed vectors are not reported"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 3474,
        "p50Ms": 5.1604,
        "p95Ms": 10.394995,
        "p99Ms": 11.642379,
        "qps": {
          "1": 173.67890235533636,
          "8": 315.71998693931516
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 0,
        "clientCpuMsPerSearch": {
          "1": 0.5638,
          "8": 0.6015
        }
      },
      "ram": {
        "bytes": 108422758,
        "text": "103.4 MiB (docker stats)"
      },
      "disk": {
        "bytes": 3018476,
        "text": "2.88 MiB added by this load (4.94 MiB (whole engine data folder), 2.06 MiB before)"
      },
      "passOrder": [
        "default@1",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "totalVectors": 524,
          "detail": "shard Dv6Hedvh8BDL vectorIndexingStatus READY, vectorQueueLength 0, node status objectCount 0 (refreshed only when the memtable is flushed, so it lags a minute and does not decide readiness), schema shard Dv6Hedvh8BDL status READY, Aggregate count 524, Aggregate nearVector with objectLimit 524 reached 524, Weaviate reports no count of vectors in the HNSW index, so indexed vectors are not reported"
        },
        "afterSearch": {
          "ready": true,
          "totalVectors": 524,
          "detail": "shard Dv6Hedvh8BDL vectorIndexingStatus READY, vectorQueueLength 0, node status objectCount 0 (refreshed only when the memtable is flushed, so it lags a minute and does not decide readiness), schema shard Dv6Hedvh8BDL status READY, Aggregate count 524, Aggregate nearVector with objectLimit 524 reached 524, Weaviate reports no count of vectors in the HNSW index, so indexed vectors are not reported"
        }
      },
      "durability": "Weaviate 1.39.8 defaults, weaviate.compose.yaml sets no persistence variable: every object is appended to the LSM write-ahead log with a plain write and no fsync, and the log is fsynced only when its memtable is flushed, 60 seconds after the last write (PERSISTENCE_MEMTABLES_FLUSH_IDLE_AFTER_SECONDS default; measured with strace: 2,080 writes into the objects log during a 2,000-object load, the first fsync 60 s after the last write), so a power cut can lose the last minute of writes; the HNSW commit log is buffered inside the process (77 writes for 2,000 vectors), so a killed process loses the newest vectors from the vector index while their objects survive (measured with docker kill, which is SIGKILL, one second after the load and a restart, two runs each: 0 to 1 of 50, 264 to 267 of 300 and 1,992 to 1,997 of 2,000 stored objects were still reachable through a vector search)",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started weaviate.compose.yaml with every container created on CPUs 2-3,6-7: gvb-weaviate cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, ? of 524 indexed (shard Dv6Hedvh8BDL vectorIndexingStatus READY, vectorQueueLength 0, node status objectCount 0 (refreshed only when the memtable is flushed, so it lags a minute and does not decide readiness), schema shard Dv6Hedvh8BDL status READY, Aggregate count 524, Aggregate nearVector with objectLimit 524 reached 524, Weaviate reports no count of vectors in the HNSW index, so indexed vectors are not reported). Durability: Weaviate 1.39.8 defaults, weaviate.compose.yaml sets no persistence variable: every object is appended to the LSM write-ahead log with a plain write and no fsync, and the log is fsynced only when its memtable is flushed, 60 seconds after the last write (PERSISTENCE_MEMTABLES_FLUSH_IDLE_AFTER_SECONDS default; measured with strace: 2,080 writes into the objects log during a 2,000-object load, the first fsync 60 s after the last write), so a power cut can lose the last minute of writes; the HNSW commit log is buffered inside the process (77 writes for 2,000 vectors), so a killed process loses the newest vectors from the vector index while their objects survive (measured with docker kill, which is SIGKILL, one second after the load and a restart, two runs each: 0 to 1 of 50, 264 to 267 of 300 and 1,992 to 1,997 of 2,000 stored objects were still reachable through a vector search).",
        "Load average 2.91 2.90 2.91 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 852 searches in 5.0 s, default@8 1,580 searches in 5.0 s.",
        "Settle: settled after 1.7 s and 300 searches (0 failed); p50 of the last windows of 100: 5.18, 5.16, 5.16 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 350 searches in 2.0 s: p50 5.151 ms against the settled p50 5.163 ms, 0% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:18:42.105Z to 2026-10-05T03:19:02.107Z (20.0 s), 3,474 searches, 0 failed, p50 5.160 ms, mean 5.755 ms, p99 11.642 ms, 173.7 QPS (1000/QPS 5.758 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:19:02.181Z to 2026-10-05T03:19:22.195Z (20.0 s), 6,319 searches, 0 failed, p50 23.959 ms, mean 25.328 ms, p99 53.405 ms, 315.7 QPS (1000/QPS 3.167 ms).",
        "Passes in the order run: default@1, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 3,122 sent, 0 failed (warmupErrors). Index after the searches: ready, ? of 524 indexed (shard Dv6Hedvh8BDL vectorIndexingStatus READY, vectorQueueLength 0, node status objectCount 0 (refreshed only when the memtable is flushed, so it lags a minute and does not decide readiness), schema shard Dv6Hedvh8BDL status READY, Aggregate count 524, Aggregate nearVector with objectLimit 524 reached 524, Weaviate reports no count of vectors in the HNSW index, so indexed vectors are not reported).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-weaviate (16135b2cb6ff) on network gvb-weaviate_default at container-ip:8080, not through docker-proxy localhost:8085. Open after the passes: container-ip:8080 x8 (this target), localhost:1433 x2 (not this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-weaviate: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-weaviate: 10 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3587/3565 MHz, performance, outside load 0.11 before the warm-up, 0.11 during, client CPU 0.564 ms per search; default@8 3564/3565 MHz, performance, outside load 0.11 before the warm-up, 0.11 during, client CPU 0.602 ms per search."
      ]
    },
    {
      "name": "redis",
      "engine": "Redis 8.10.2 (query engine, HASH \u002B vector index)",
      "index": "HNSW TYPE FLOAT32 M=16 EF_CONSTRUCTION=128, EF_RUNTIME=100 per query, cosine; exact mode = FLAT index built on first exact query",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.0493195,
        "rowsPerSecond": 10624.600817121016,
        "countMatchSeconds": 0.0148347,
        "indexSeconds": 0.0229076,
        "indexNote": "HNSW index finished after 0.0 s of waiting: FT.INFO indexing 0, percent_indexed 1, hash_indexing_failures 0, flat_buffer_size 0, num_docs 524, hashes counted with SCAN under gvb_gvbbench_eshoponweb: 524"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 53586,
        "p50Ms": 0.352,
        "p95Ms": 0.4647,
        "p99Ms": 0.6906150000000001,
        "qps": {
          "1": 2679.284674491662,
          "8": 5089.431674163542
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 176574,
        "exactP50Ms": 0.3201,
        "exactP95Ms": 0.4321,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 0.5282,
          "8": 0.3567
        }
      },
      "ram": {
        "bytes": 22292725,
        "text": "21.26 MiB (docker stats)"
      },
      "disk": {
        "bytes": 0,
        "text": "0 B added by this load (89 B (whole engine data folder), 89 B before)"
      },
      "passOrder": [
        "default@1",
        "exact",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "FT.INFO indexing 0, percent_indexed 1, hash_indexing_failures 0, flat_buffer_size 0, num_docs 524, hashes counted with SCAN under gvb_gvbbench_eshoponweb: 524"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "FT.INFO indexing 0, percent_indexed 1, hash_indexing_failures 0, flat_buffer_size 0, num_docs 524, hashes counted with SCAN under gvb_gvbbench_eshoponweb: 524"
        }
      },
      "durability": "save \u0022300 1\u0022 and appendonly no (redis.compose.yaml): an RDB snapshot is written every 5 minutes if at least one key changed, and on a clean stop; there is no append-only log, so a crash loses every write since the last snapshot (up to 5 minutes plus the time a snapshot takes; measured with docker kill, which is SIGKILL, right after a 2,000-vector load: none of the 2,000 hashes were there after the restart, and the restart loaded an older snapshot that still held keys of a collection that had been dropped since)",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started redis.compose.yaml with every container created on CPUs 2-3,6-7: gvb-redis cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (FT.INFO indexing 0, percent_indexed 1, hash_indexing_failures 0, flat_buffer_size 0, num_docs 524, hashes counted with SCAN under gvb_gvbbench_eshoponweb: 524). Durability: save \u0022300 1\u0022 and appendonly no (redis.compose.yaml): an RDB snapshot is written every 5 minutes if at least one key changed, and on a clean stop; there is no append-only log, so a crash loses every write since the last snapshot (up to 5 minutes plus the time a snapshot takes; measured with docker kill, which is SIGKILL, right after a 2,000-vector load: none of the 2,000 hashes were there after the restart, and the restart loaded an older snapshot that still held keys of a collection that had been dropped since).",
        "Load average 2.84 2.86 2.89 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 13,214 searches in 5.0 s, exact 14,176 searches in 5.0 s, default@8 25,525 searches in 5.0 s.",
        "Settle: settled after 0.3 s and 700 searches (0 failed); p50 of the last windows of 100: 0.35, 0.34, 0.35 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 5,539 searches in 2.0 s: p50 0.343 ms against the settled p50 0.346 ms, 1% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:19:47.864Z to 2026-10-05T03:20:07.864Z (20.0 s), 53,586 searches, 0 failed, p50 0.352 ms, mean 0.372 ms, p99 0.691 ms, 2679.3 QPS (1000/QPS 0.373 ms).",
        "Pass exact after default@1: 2026-10-05T03:20:07.934Z to 2026-10-05T03:21:07.934Z (60.0 s), 176,574 searches, 0 failed, p50 0.320 ms, mean 0.338 ms, p99 0.630 ms, 2942.9 QPS (1000/QPS 0.340 ms).",
        "Pass default@8 after exact: 2026-10-05T03:21:08.107Z to 2026-10-05T03:21:28.109Z (20.0 s), 101,797 searches, 0 failed, p50 1.537 ms, mean 1.570 ms, p99 2.242 ms, 5089.4 QPS (1000/QPS 0.196 ms).",
        "Passes in the order run: default@1, exact, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 59,214 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (FT.INFO indexing 0, percent_indexed 1, hash_indexing_failures 0, flat_buffer_size 0, num_docs 524, hashes counted with SCAN under gvb_gvbbench_eshoponweb: 524).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-redis (989f19e9cdad) on network gvb-redis_default at container-ip:6379, not through docker-proxy localhost:6379. Open after the passes: localhost:1433 x2 (not this target), container-ip:6379 x1 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-redis: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-redis: 6 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3492/3492 MHz, performance, outside load 0.09 before the warm-up, 0.10 during, client CPU 0.528 ms per search; exact 3492/3492 MHz, performance, outside load 0.09 before the warm-up, 0.10 during, client CPU 0.511 ms per search; default@8 3492/3492 MHz, performance, outside load 0.10 before the warm-up, 0.08 during, client CPU 0.357 ms per search."
      ]
    },
    {
      "name": "sqlitevec",
      "engine": "SQLite 3.53.3 \u002B sqlite-vec 0.1.7-alpha.2.1 (vec0, embedded, in process)",
      "index": "vec0 brute-force scan, no ANN index (exact), float32, cosine distance, default chunk_size=1024; score = 1 - cosine distance",
      "hosting": "embedded",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.1204693,
        "rowsPerSecond": 4349.6558874335615,
        "countMatchSeconds": 0.0025647,
        "indexSeconds": 0.003482,
        "indexNote": "nothing to build, every search scans all vectors; checked in 0.00 s: no index, exact scan by design: gvb_gvbbench_eshoponweb is a vec0 virtual table holding 524 vectors and every search compares all of them (EXPLAIN QUERY PLAN: SCAN gvb_gvbbench_eshoponweb VIRTUAL TABLE INDEX 0:3{___}___ | USE TEMP B-TREE FOR ORDER BY)"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 10906,
        "p50Ms": 1.8087,
        "p95Ms": 2.005875,
        "p99Ms": 2.2264700000000004,
        "qps": {
          "1": 545.2619870605721,
          "8": 529.4626901002513
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 32665,
        "exactP50Ms": 1.8121,
        "exactP95Ms": 2.0126,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 1.9312,
          "8": 1.9874
        }
      },
      "ram": {
        "text": "in this process, not measured"
      },
      "disk": {
        "bytes": 10196088,
        "text": "9.72 MiB added by this load (9.72 MiB (engine data folder), 0 B before)"
      },
      "passOrder": [
        "exact",
        "default@1",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "totalVectors": 524,
          "detail": "no index, exact scan by design: gvb_gvbbench_eshoponweb is a vec0 virtual table holding 524 vectors and every search compares all of them (EXPLAIN QUERY PLAN: SCAN gvb_gvbbench_eshoponweb VIRTUAL TABLE INDEX 0:3{___}___ | USE TEMP B-TREE FOR ORDER BY)"
        },
        "afterSearch": {
          "ready": true,
          "totalVectors": 524,
          "detail": "no index, exact scan by design: gvb_gvbbench_eshoponweb is a vec0 virtual table holding 524 vectors and every search compares all of them (EXPLAIN QUERY PLAN: SCAN gvb_gvbbench_eshoponweb VIRTUAL TABLE INDEX 0:3{___}___ | USE TEMP B-TREE FOR ORDER BY)"
        }
      },
      "durability": "PRAGMA journal_mode=WAL and PRAGMA synchronous=NORMAL (set by this sink when it opens the file): each commit is appended to the -wal file and handed to the operating system, but the WAL is fsynced only when SQLite checkpoints it (measured with strace: 40 single-record commits caused 3 WAL fsyncs), so a crash of the process loses nothing (measured with kill -9 and a reopen: all 50, 300 and 2,000 rows were there), while an operating-system crash or power cut can lose the newest commits since the last checkpoint and leaves the database consistent",
      "notes": [
        "Index after the load: ready, ? of 524 indexed (no index, exact scan by design: gvb_gvbbench_eshoponweb is a vec0 virtual table holding 524 vectors and every search compares all of them (EXPLAIN QUERY PLAN: SCAN gvb_gvbbench_eshoponweb VIRTUAL TABLE INDEX 0:3{___}___ | USE TEMP B-TREE FOR ORDER BY)). Durability: PRAGMA journal_mode=WAL and PRAGMA synchronous=NORMAL (set by this sink when it opens the file): each commit is appended to the -wal file and handed to the operating system, but the WAL is fsynced only when SQLite checkpoints it (measured with strace: 40 single-record commits caused 3 WAL fsyncs), so a crash of the process loses nothing (measured with kill -9 and a reopen: all 50, 300 and 2,000 rows were there), while an operating-system crash or power cut can lose the newest commits since the last checkpoint and leaves the database consistent.",
        "Load average 3.07 2.81 2.86 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: exact 2,694 searches in 5.0 s, default@1 2,709 searches in 5.0 s, default@8 2,605 searches in 5.0 s.",
        "Settle: settled after 0.6 s and 300 searches (0 failed); p50 of the last windows of 100: 1.86, 1.81, 1.82 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 1,086 searches in 2.0 s: p50 1.816 ms against the settled p50 1.819 ms, 0% apart (limit 15%).",
        "Pass exact after settle: 2026-10-05T03:21:47.489Z to 2026-10-05T03:22:47.490Z (60.0 s), 32,665 searches, 0 failed, p50 1.812 ms, mean 1.834 ms, p99 2.229 ms, 544.4 QPS (1000/QPS 1.837 ms).",
        "Pass default@1 after exact: 2026-10-05T03:22:47.558Z to 2026-10-05T03:23:07.559Z (20.0 s), 10,906 searches, 0 failed, p50 1.809 ms, mean 1.831 ms, p99 2.226 ms, 545.3 QPS (1000/QPS 1.834 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:23:07.607Z to 2026-10-05T03:23:27.621Z (20.0 s), 10,597 searches, 0 failed, p50 14.784 ms, mean 15.101 ms, p99 17.896 ms, 529.5 QPS (1000/QPS 1.889 ms).",
        "Passes in the order run: exact, default@1, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 9,454 sent, 0 failed (warmupErrors). Index after the searches: ready, ? of 524 indexed (no index, exact scan by design: gvb_gvbbench_eshoponweb is a vec0 virtual table holding 524 vectors and every search compares all of them (EXPLAIN QUERY PLAN: SCAN gvb_gvbbench_eshoponweb VIRTUAL TABLE INDEX 0:3{___}___ | USE TEMP B-TREE FOR ORDER BY)).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: in this process (embedded), no network: no network address. No open connection seen (no open TCP connection was found).",
        "CPU pinning: none: an embedded engine runs inside the benchmark client process, so it shares the client CPUs, CPUs 0-1,4-5.",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): exact 3600/3592 MHz, performance, outside load 0.13 before the warm-up, 0.12 during, client CPU 1.932 ms per search; default@1 3598/3592 MHz, performance, outside load 0.12 before the warm-up, 0.12 during, client CPU 1.931 ms per search; default@8 3598/3592 MHz, performance, outside load 0.12 before the warm-up, 0.12 during, client CPU 1.987 ms per search."
      ]
    },
    {
      "name": "qdrant",
      "engine": "Qdrant 1.17.0 in container gvb-qdrant (image qdrant/qdrant:v1.17.0@sha256:f1c7272cdac52b38c1a0e89313922d940ba50afd90d593a1605dbbc214e66ffb; cpuset 2-3,6-7 from its creation; 3 search thread(s))",
      "index": "exact scan: the builder\u0027s sink sends exact=true on every search, so no HNSW graph is used whether or not Qdrant has built one (see the index state)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.0911116,
        "rowsPerSecond": 5751.188652158452,
        "countMatchSeconds": 0.0075503,
        "indexSeconds": 1.015244,
        "indexNote": "status Green, 0 of 524 vectors in HNSW segments (2 segments), waited 1.0 s"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 22354,
        "p50Ms": 0.88235,
        "p95Ms": 0.9999,
        "p99Ms": 1.4116640000000014,
        "qps": {
          "1": 1117.6608762810258,
          "8": 3284.2223048676037
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 0,
        "clientCpuMsPerSearch": {
          "1": 0.7346,
          "8": 0.5441
        }
      },
      "ram": {
        "bytes": 39562772,
        "text": "37.73 MiB (docker stats)"
      },
      "disk": {
        "bytes": 205603870,
        "text": "196.08 MiB (collection folder)"
      },
      "passOrder": [
        "default@1",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 0,
          "totalVectors": 524,
          "detail": "status Green, optimizer ok, indexed_vectors_count 0 of 524 points, 2 segments, indexing_threshold_kb 10,000, full_scan_threshold_kb 10,000; no index used, exact scan by design (the builder\u0027s sink sends exact=true on every search); no graph was built; searches counted since the collection was created: unfiltered_hnsw 0, unfiltered_plain 0, unfiltered_exact 0"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 0,
          "totalVectors": 524,
          "detail": "status Green, optimizer ok, indexed_vectors_count 0 of 524 points, 2 segments, indexing_threshold_kb 10,000, full_scan_threshold_kb 10,000; no index used, exact scan by design (the builder\u0027s sink sends exact=true on every search); no graph was built; searches counted since the collection was created: unfiltered_hnsw 0, unfiltered_plain 224,994, unfiltered_exact 0"
        }
      },
      "durability": "What was measured (strace -f on the Qdrant server process, 30 single-point REST upserts per setting, every sync call timed against the request that caused it): with wait=true each upsert had exactly one msync(MS_SYNC) of the write-ahead-log segment inside the request, before the reply (30 of 30); with wait=false the 30 upserts were acknowledged within 0.26 s with no sync call, and the first WAL msync (one call covering all 30 records) came 2.7 s after the last reply, followed by the segment-file flushes. So the log is flushed to disk under both settings, but with wait=false the flush comes after the acknowledgement: an operating-system crash or power cut in that gap loses acknowledged writes, while a crash of the Qdrant process alone should not, because the bytes are already in the kernel\u0027s page cache (inferred, not tested). Every upsert here is sent with wait=true in batches of 256 over gRPC; the strace used one point per request, so one flush per batch is inferred, not measured. Segment files are flushed every 5 s; log segments 32 MB, 0 created ahead. /qdrant/config/config.yaml in container gvb-qdrant (the image\u0027s own file; its storage keys are listed) sets: storage.collection.quantization = null, storage.collection.replication_factor = 1, storage.collection.vectors.on_disk = null, storage.collection.write_consistency_factor = 1, storage.hnsw_index.ef_construct = 100, storage.hnsw_index.full_scan_threshold_kb = 10000, storage.hnsw_index.m = 16, storage.hnsw_index.max_indexing_threads = 0, storage.hnsw_index.on_disk = false, storage.hnsw_index.payload_m = null, storage.max_collections = null, storage.node_type = Normal, storage.on_disk_payload = true, storage.optimizers.default_segment_number = 0, storage.optimizers.deleted_threshold = 0.2, storage.optimizers.flush_interval_sec = 5, storage.optimizers.indexing_threshold_kb = 10000, storage.optimizers.max_optimization_threads = null, storage.optimizers.max_segment_size_kb = null, storage.optimizers.vacuum_min_vector_number = 1000, storage.performance.max_search_threads = 0, storage.performance.optimizer_cpu_budget = 0, storage.performance.update_rate_limit = null, storage.shard_transfer_method = null, storage.snapshots_config.snapshots_storage = local, storage.snapshots_path = ./snapshots, storage.storage_path = ./storage, storage.temp_path = null, storage.update_concurrency = null, storage.wal.wal_capacity_mb = 32, storage.wal.wal_segments_ahead = 0; no QDRANT__ environment overrides in the server process. Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started qdrant.compose.yaml with every container created on CPUs 2-3,6-7: gvb-qdrant cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 0 of 524 indexed (status Green, optimizer ok, indexed_vectors_count 0 of 524 points, 2 segments, indexing_threshold_kb 10,000, full_scan_threshold_kb 10,000; no index used, exact scan by design (the builder\u0027s sink sends exact=true on every search); no graph was built; searches counted since the collection was created: unfiltered_hnsw 0, unfiltered_plain 0, unfiltered_exact 0). Durability: What was measured (strace -f on the Qdrant server process, 30 single-point REST upserts per setting, every sync call timed against the request that caused it): with wait=true each upsert had exactly one msync(MS_SYNC) of the write-ahead-log segment inside the request, before the reply (30 of 30); with wait=false the 30 upserts were acknowledged within 0.26 s with no sync call, and the first WAL msync (one call covering all 30 records) came 2.7 s after the last reply, followed by the segment-file flushes. So the log is flushed to disk under both settings, but with wait=false the flush comes after the acknowledgement: an operating-system crash or power cut in that gap loses acknowledged writes, while a crash of the Qdrant process alone should not, because the bytes are already in the kernel\u0027s page cache (inferred, not tested). Every upsert here is sent with wait=true in batches of 256 over gRPC; the strace used one point per request, so one flush per batch is inferred, not measured. Segment files are flushed every 5 s; log segments 32 MB, 0 created ahead. /qdrant/config/config.yaml in container gvb-qdrant (the image\u0027s own file; its storage keys are listed) sets: storage.collection.quantization = null, storage.collection.replication_factor = 1, storage.collection.vectors.on_disk = null, storage.collection.write_consistency_factor = 1, storage.hnsw_index.ef_construct = 100, storage.hnsw_index.full_scan_threshold_kb = 10000, storage.hnsw_index.m = 16, storage.hnsw_index.max_indexing_threads = 0, storage.hnsw_index.on_disk = false, storage.hnsw_index.payload_m = null, storage.max_collections = null, storage.node_type = Normal, storage.on_disk_payload = true, storage.optimizers.default_segment_number = 0, storage.optimizers.deleted_threshold = 0.2, storage.optimizers.flush_interval_sec = 5, storage.optimizers.indexing_threshold_kb = 10000, storage.optimizers.max_optimization_threads = null, storage.optimizers.max_segment_size_kb = null, storage.optimizers.vacuum_min_vector_number = 1000, storage.performance.max_search_threads = 0, storage.performance.optimizer_cpu_budget = 0, storage.performance.update_rate_limit = null, storage.shard_transfer_method = null, storage.snapshots_config.snapshots_storage = local, storage.snapshots_path = ./snapshots, storage.storage_path = ./storage, storage.temp_path = null, storage.update_concurrency = null, storage.wal.wal_capacity_mb = 32, storage.wal.wal_segments_ahead = 0; no QDRANT__ environment overrides in the server process. Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked..",
        "Load average 1.33 2.22 2.63 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 5,416 searches in 5.0 s, default@8 16,460 searches in 5.0 s.",
        "Settle: settled after 0.3 s and 300 searches (0 failed); p50 of the last windows of 100: 0.90, 0.88, 0.87 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 2,238 searches in 2.0 s: p50 0.882 ms against the settled p50 0.881 ms, 0% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:23:47.676Z to 2026-10-05T03:24:07.677Z (20.0 s), 22,354 searches, 0 failed, p50 0.882 ms, mean 0.893 ms, p99 1.412 ms, 1117.7 QPS (1000/QPS 0.895 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:24:07.706Z to 2026-10-05T03:24:27.707Z (20.0 s), 65,689 searches, 0 failed, p50 2.352 ms, mean 2.433 ms, p99 4.190 ms, 3284.2 QPS (1000/QPS 0.304 ms).",
        "Passes in the order run: default@1, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 24,454 sent, 0 failed (warmupErrors). Index after the searches: ready, 0 of 524 indexed (status Green, optimizer ok, indexed_vectors_count 0 of 524 points, 2 segments, indexing_threshold_kb 10,000, full_scan_threshold_kb 10,000; no index used, exact scan by design (the builder\u0027s sink sends exact=true on every search); no graph was built; searches counted since the collection was created: unfiltered_hnsw 0, unfiltered_plain 224,994, unfiltered_exact 0).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-qdrant (87511a708990) on network gvb-qdrant_default at container-ip:6334, not through docker-proxy localhost:16334; container gvb-qdrant (87511a708990) on network gvb-qdrant_default at container-ip:6333, not through docker-proxy localhost:16333. Open after the passes: container-ip:6334 x1 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-qdrant: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-qdrant: 24 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3492/3492 MHz, performance, outside load 0.10 before the warm-up, 0.09 during, client CPU 0.735 ms per search; default@8 3492/3492 MHz, performance, outside load 0.09 before the warm-up, 0.07 during, client CPU 0.544 ms per search."
      ]
    },
    {
      "name": "oracle",
      "engine": "Oracle AI Database Free 23.26 (23ai line, VECTOR FLOAT32)",
      "index": "HNSW in-memory neighbor graph NEIGHBORS=16 EFCONSTRUCTION=128, EFSEARCH=100 per query, cosine; exact mode = FETCH EXACT FIRST (full scan); Oracle Free caps itself at 2 CPUs (cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.2531923,
        "rowsPerSecond": 2069.57320582024,
        "countMatchSeconds": 0.0483321,
        "indexSeconds": 3.2709899,
        "indexNote": "HNSW graph holds 524 of 524 rows, change log waiting: 0 inserts and 0 deletes, USER_INDEXES status VALID, plan of the default search: VECTOR INDEX HNSW SCAN \u003E TABLE ACCESS BY INDEX ROWID, index used by 0 queries so far; Oracle Free caps itself at 2 CPUs (cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit); graph rebuilt in 2.0 s"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 21772,
        "p50Ms": 0.8951,
        "p95Ms": 1.06,
        "p99Ms": 1.7987740000000005,
        "qps": {
          "8": 3155.5752126889693,
          "1": 1088.5848468989311
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 24057,
        "exactP50Ms": 2.4354,
        "exactP95Ms": 2.8341400000000005,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "8": 0.6456,
          "1": 0.8791
        }
      },
      "ram": {
        "bytes": 2295660019,
        "text": "2.14 GiB (docker stats)"
      },
      "disk": {
        "bytes": 0,
        "text": "0 B added by this load (6.88 GiB (whole engine data folder), 6.88 GiB before)"
      },
      "passOrder": [
        "default@8",
        "exact",
        "default@1"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "HNSW graph holds 524 of 524 rows, change log waiting: 0 inserts and 0 deletes, USER_INDEXES status VALID, plan of the default search: VECTOR INDEX HNSW SCAN \u003E TABLE ACCESS BY INDEX ROWID, index used by 0 queries so far; Oracle Free caps itself at 2 CPUs (cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit)"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "HNSW graph holds 524 of 524 rows, change log waiting: 0 inserts and 0 deletes, USER_INDEXES status VALID, plan of the default search: VECTOR INDEX HNSW SCAN \u003E TABLE ACCESS BY INDEX ROWID, index used by 108074 queries so far; Oracle Free caps itself at 2 CPUs (cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit)"
        }
      },
      "durability": "By these settings a committed row should survive a crash or power loss. The sink uses a plain COMMIT and commit_logging, commit_wait and commit_write are unset in the database, so every commit waits for its redo to be written. Measured 2026-10-04: 50 separate client commits raised V$SYSSTAT \u0027redo synch writes\u0027 by 55 (the 50 commits plus the CREATE and DROP of the probe table), and the log writer and the datafile writer hold their files open with O_DSYNC (open flags 02110002, filesystemio_options none). The database runs NOARCHIVELOG (V$DATABASE.LOG_MODE), so redo serves crash recovery only and there is no point-in-time restore. The HNSW graph lives in the 768 MB vector memory pool (oracle-init/01-vector-memory.sh) and is not the durable copy; the table is. Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked. CPU: Oracle Free caps itself at 2 CPUs (cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit).",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started oracle.compose.yaml with every container created on CPUs 2-3,6-7: gvb-oracle cpuset 2-3,6-7, gvb-oracle-seed cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (HNSW graph holds 524 of 524 rows, change log waiting: 0 inserts and 0 deletes, USER_INDEXES status VALID, plan of the default search: VECTOR INDEX HNSW SCAN \u003E TABLE ACCESS BY INDEX ROWID, index used by 0 queries so far; Oracle Free caps itself at 2 CPUs (cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit)). Durability: By these settings a committed row should survive a crash or power loss. The sink uses a plain COMMIT and commit_logging, commit_wait and commit_write are unset in the database, so every commit waits for its redo to be written. Measured 2026-10-04: 50 separate client commits raised V$SYSSTAT \u0027redo synch writes\u0027 by 55 (the 50 commits plus the CREATE and DROP of the probe table), and the log writer and the datafile writer hold their files open with O_DSYNC (open flags 02110002, filesystemio_options none). The database runs NOARCHIVELOG (V$DATABASE.LOG_MODE), so redo serves crash recovery only and there is no point-in-time restore. The HNSW graph lives in the 768 MB vector memory pool (oracle-init/01-vector-memory.sh) and is not the durable copy; the table is. Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked. CPU: Oracle Free caps itself at 2 CPUs (measured 2026-10-04: cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit; this sink reads the live value when the index state is read)..",
        "Load average 3.04 2.58 2.73 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@8 15,261 searches in 5.5 s, exact 1,968 searches in 5.0 s, default@1 5,404 searches in 5.0 s.",
        "Settle: settled after 0.3 s and 300 searches (0 failed); p50 of the last windows of 100: 0.87, 0.89, 0.89 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 2,182 searches in 2.0 s: p50 0.895 ms against the settled p50 0.890 ms, 1% apart (limit 15%).",
        "Pass default@8 after settle: 2026-10-05T03:25:04.348Z to 2026-10-05T03:25:24.349Z (20.0 s), 63,115 searches, 0 failed, p50 1.581 ms, mean 2.532 ms, p99 3.404 ms, 3155.6 QPS (1000/QPS 0.317 ms).",
        "Pass exact after default@8: 2026-10-05T03:25:24.421Z to 2026-10-05T03:26:24.422Z (60.0 s), 24,057 searches, 0 failed, p50 2.435 ms, mean 2.492 ms, p99 3.924 ms, 400.9 QPS (1000/QPS 2.494 ms).",
        "Pass default@1 after exact: 2026-10-05T03:26:24.460Z to 2026-10-05T03:26:44.460Z (20.0 s), 21,772 searches, 0 failed, p50 0.895 ms, mean 0.917 ms, p99 1.799 ms, 1088.6 QPS (1000/QPS 0.919 ms).",
        "Passes in the order run: default@8, exact, default@1; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 25,175 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (HNSW graph holds 524 of 524 rows, change log waiting: 0 inserts and 0 deletes, USER_INDEXES status VALID, plan of the default search: VECTOR INDEX HNSW SCAN \u003E TABLE ACCESS BY INDEX ROWID, index used by 108074 queries so far; Oracle Free caps itself at 2 CPUs (cpu_count 2 in V$PARAMETER, edition FREE in V$INSTANCE, 8 host CPUs in V$OSSTAT NUM_CPUS; the 2 CPU thread limit is Oracle\u0027s documented Free edition limit)).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-oracle (1d59e41e9fe6) on network gvb-oracle_default at container-ip:1521, not through docker-proxy localhost:1521. Open after the passes: container-ip:1521 x15 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-oracle: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-oracle: 86 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@8 3492/3492 MHz, performance, outside load 0.15 before the warm-up, 0.12 during, client CPU 0.646 ms per search; exact 3492/3492 MHz, performance, outside load 0.13 before the warm-up, 0.12 during, client CPU 0.952 ms per search; default@1 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.11 during, client CPU 0.879 ms per search."
      ]
    },
    {
      "name": "mongodb",
      "engine": "MongoDB 8.0.32 Atlas Local (mongod \u002B mongot Vector Search)",
      "index": "vectorSearch index, HNSW maxEdges=16 numEdgeCandidates=128, float32 binData, cosine, numCandidates=20x hits (min 100); exact mode = $vectorSearch exact:true",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.1543945,
        "rowsPerSecond": 3393.903280233428,
        "countMatchSeconds": 1.7843323,
        "indexSeconds": 1.0918678,
        "indexNote": "index status READY, queryable True; mongot holds 524 of 524 documents in 4 segment(s), 4 searched through the HNSW graph (Approximate); wait took 1.1 s"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 13982,
        "p50Ms": 1.3796,
        "p95Ms": 1.7105,
        "p99Ms": 2.082757,
        "qps": {
          "1": 699.0791115161479,
          "8": 2063.4113941902137
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 48020,
        "exactP50Ms": 1.2258,
        "exactP95Ms": 1.413,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 0.3148,
          "8": 0.2838
        }
      },
      "ram": {
        "bytes": 683566694,
        "text": "651.9 MiB (docker stats)"
      },
      "disk": {
        "bytes": 0,
        "text": "0 B added by this load (1.3 GiB (whole engine data folder), 1.3 GiB before)"
      },
      "passOrder": [
        "default@1",
        "default@8",
        "exact"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "index status READY, queryable True; mongot holds 524 of 524 documents in 4 segment(s), 4 searched through the HNSW graph (Approximate)"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "index status READY, queryable True; mongot holds 524 of 524 documents in 4 segment(s), 4 searched through the HNSW graph (Approximate)"
        }
      },
      "durability": "Acknowledged writes are journaled before the acknowledgement. The sink sets no write concern, so the server default applies: getDefaultRWConcern gives w majority and the one-member replica set (--replSet gvbmongo in the image) has writeConcernMajorityJournalDefault true, with WiredTiger journaling on (journalCommitInterval 100 ms is only the interval for unacknowledged work). Measured 2026-10-04: 30 acknowledged single-document inserts raised WiredTiger \u0027log sync operations\u0027 by 30 and strace showed fdatasync on /data/db/journal/WiredTigerLog files. A crash loses no acknowledged write. mongot\u0027s search index is not part of that promise: it follows the collection asynchronously and is rebuilt from it.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started mongodb.compose.yaml with every container created on CPUs 2-3,6-7: gvb-mongodb cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (index status READY, queryable True; mongot holds 524 of 524 documents in 4 segment(s), 4 searched through the HNSW graph (Approximate)). Durability: Acknowledged writes are journaled before the acknowledgement. The sink sets no write concern, so the server default applies: getDefaultRWConcern gives w majority and the one-member replica set (--replSet gvbmongo in the image) has writeConcernMajorityJournalDefault true, with WiredTiger journaling on (journalCommitInterval 100 ms is only the interval for unacknowledged work). Measured 2026-10-04: 30 acknowledged single-document inserts raised WiredTiger \u0027log sync operations\u0027 by 30 and strace showed fdatasync on /data/db/journal/WiredTigerLog files. A crash loses no acknowledged write. mongot\u0027s search index is not part of that promise: it follows the collection asynchronously and is rebuilt from it..",
        "Load average 1.85 2.49 2.69 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 1,799 searches in 5.0 s, default@8 5,736 searches in 5.0 s, exact 3,506 searches in 5.0 s.",
        "Settle: settled after 0.6 s and 400 searches (0 failed); p50 of the last windows of 100: 1.39, 1.36, 1.39 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 1,352 searches in 2.0 s: p50 1.404 ms against the settled p50 1.386 ms, 1% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:27:16.700Z to 2026-10-05T03:27:36.700Z (20.0 s), 13,982 searches, 0 failed, p50 1.380 ms, mean 1.428 ms, p99 2.083 ms, 699.1 QPS (1000/QPS 1.430 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:27:36.724Z to 2026-10-05T03:27:56.727Z (20.0 s), 41,275 searches, 0 failed, p50 3.709 ms, mean 3.874 ms, p99 7.510 ms, 2063.4 QPS (1000/QPS 0.485 ms).",
        "Pass exact after default@8: 2026-10-05T03:27:56.764Z to 2026-10-05T03:28:56.764Z (60.0 s), 48,020 searches, 0 failed, p50 1.226 ms, mean 1.247 ms, p99 1.763 ms, 800.3 QPS (1000/QPS 1.249 ms).",
        "Passes in the order run: default@1, default@8, exact; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 12,853 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (index status READY, queryable True; mongot holds 524 of 524 documents in 4 segment(s), 4 searched through the HNSW graph (Approximate)).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-mongodb (55a23265ddaf) on network gvb-mongodb_default at container-ip:27017, not through docker-proxy localhost:27017. Open after the passes: container-ip:27017 x10 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-mongodb: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-mongodb: 208 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3492/3492 MHz, performance, outside load 0.17 before the warm-up, 0.26 during, client CPU 0.315 ms per search; default@8 3492/3492 MHz, performance, outside load 0.21 before the warm-up, 0.18 during, client CPU 0.284 ms per search; exact 3492/3492 MHz, performance, outside load 0.20 before the warm-up, 0.21 during, client CPU 0.307 ms per search."
      ]
    },
    {
      "name": "vespa",
      "engine": "Vespa 8.754.14 (tensor attribute \u002B HNSW)",
      "index": "HNSW float32 tensor, prenormalized-angular (cosine), max-links-per-node=16, neighbors-to-explore-at-insert=128; search targetHits=top, ef=100 via exploreAdditionalHits; exact mode = approximate:false; vectors held in memory",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 1.7627746,
        "rowsPerSecond": 297.25865121950363,
        "countMatchSeconds": 0.0199975,
        "indexSeconds": 0.0666982,
        "indexNote": "nothing to build, Vespa inserts into the HNSW graph while writing; ready after 0.1 s: HNSW graph returns 524 of 524 vectors: totalCount 524, coverage full True, nearestNeighbor approximate:true with targetHits above the count: has_index True, algorithm \u0022index top k\u0022, top_k_hits 524; the graph is updated while each write is applied, so there is no later build step"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 10320,
        "p50Ms": 1.8819,
        "p95Ms": 2.303105,
        "p99Ms": 2.6034239999999995,
        "qps": {
          "8": 914.6355971415784,
          "1": 515.9899665751
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 30680,
        "exactP50Ms": 1.88395,
        "exactP95Ms": 2.3808049999999996,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "8": 0.9502,
          "1": 0.9593
        }
      },
      "ram": {
        "bytes": 2946347565,
        "text": "2.74 GiB (docker stats)"
      },
      "disk": {
        "bytes": 2111753,
        "text": "2.01 MiB added by this load (1.76 GiB (whole engine data folder), 1.75 GiB before)"
      },
      "passOrder": [
        "default@8",
        "exact",
        "default@1"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "HNSW graph returns 524 of 524 vectors: totalCount 524, coverage full True, nearestNeighbor approximate:true with targetHits above the count: has_index True, algorithm \u0022index top k\u0022, top_k_hits 524; the graph is updated while each write is applied, so there is no later build step"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "HNSW graph returns 524 of 524 vectors: totalCount 524, coverage full True, nearestNeighbor approximate:true with targetHits above the count: has_index True, algorithm \u0022index top k\u0022, top_k_hits 524; the graph is updated while each write is applied, so there is no later build step"
        }
      },
      "durability": "Vespa\u0027s transaction log server fsyncs after each commit: searchlib.translogserver usefsync=true, and an operation is searchable when it is acknowledged: proton documentdb visibilitydelay=0. Neither is overridden by this sink or by the services.xml it deploys; VespaReadinessTests reads both from the live config server. After a crash the node replays the transaction log over its last flushed data and rebuilds the in-memory HNSW graph. By those settings an acknowledged write survives a crash; this is read from the settings, not shown by pulling power. One node and min-redundancy 1, so a lost disk loses the data.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started vespa.compose.yaml with every container created on CPUs 2-3,6-7: gvb-vespa cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (HNSW graph returns 524 of 524 vectors: totalCount 524, coverage full True, nearestNeighbor approximate:true with targetHits above the count: has_index True, algorithm \u0022index top k\u0022, top_k_hits 524; the graph is updated while each write is applied, so there is no later build step). Durability: Vespa\u0027s transaction log server fsyncs after each commit: searchlib.translogserver usefsync=true, and an operation is searchable when it is acknowledged: proton documentdb visibilitydelay=0. Neither is overridden by this sink or by the services.xml it deploys; VespaReadinessTests reads both from the live config server. After a crash the node replays the transaction log over its last flushed data and rebuilds the in-memory HNSW graph. By those settings an acknowledged write survives a crash; this is read from the settings, not shown by pulling power. One node and min-redundancy 1, so a lost disk loses the data..",
        "Load average 5.10 2.95 2.80 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@8 1,512 searches in 5.0 s, exact 977 searches in 5.0 s, default@1 1,437 searches in 5.0 s.",
        "Settle: settled after 1.5 s and 500 searches (0 failed); p50 of the last windows of 100: 2.66, 2.60, 2.72 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 681 searches in 2.0 s: p50 2.817 ms against the settled p50 2.659 ms, 6% apart (limit 15%).",
        "Pass default@8 after settle: 2026-10-05T03:31:10.589Z to 2026-10-05T03:31:30.594Z (20.0 s), 18,298 searches, 0 failed, p50 8.332 ms, mean 8.743 ms, p99 18.099 ms, 914.6 QPS (1000/QPS 1.093 ms).",
        "Pass exact after default@8: 2026-10-05T03:31:30.671Z to 2026-10-05T03:32:30.672Z (60.0 s), 30,680 searches, 0 failed, p50 1.884 ms, mean 1.953 ms, p99 2.802 ms, 511.3 QPS (1000/QPS 1.956 ms).",
        "Pass default@1 after exact: 2026-10-05T03:32:30.738Z to 2026-10-05T03:32:50.738Z (20.0 s), 10,320 searches, 0 failed, p50 1.882 ms, mean 1.935 ms, p99 2.603 ms, 516.0 QPS (1000/QPS 1.938 ms).",
        "Passes in the order run: default@8, exact, default@1; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 5,167 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (HNSW graph returns 524 of 524 vectors: totalCount 524, coverage full True, nearestNeighbor approximate:true with targetHits above the count: has_index True, algorithm \u0022index top k\u0022, top_k_hits 524; the graph is updated while each write is applied, so there is no later build step).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-vespa (7957d927b8f3) on network engines_default at container-ip:8080, not through docker-proxy localhost:8090; container gvb-vespa (7957d927b8f3) on network engines_default at container-ip:19071, not through docker-proxy localhost:19071. Open after the passes: container-ip:8080 x1 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-vespa: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-vespa: 214 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@8 3501/3497 MHz, performance, outside load 0.14 before the warm-up, 0.16 during, client CPU 0.950 ms per search; exact 3516/3496 MHz, performance, outside load 0.15 before the warm-up, 0.08 during, client CPU 0.967 ms per search; default@1 3510/3495 MHz, performance, outside load 0.08 before the warm-up, 0.08 during, client CPU 0.959 ms per search."
      ]
    },
    {
      "name": "qdrant-hnsw",
      "engine": "Qdrant 1.17.0 in container gvb-qdrant (image qdrant/qdrant:v1.17.0@sha256:f1c7272cdac52b38c1a0e89313922d940ba50afd90d593a1605dbbc214e66ffb; cpuset 2-3,6-7 from its creation; 3 search thread(s))",
      "index": "HNSW m=16 ef_construct=100, hnsw_ef=server default, cosine; indexing_threshold_kb 1 and full_scan_threshold_kb 10 (server defaults are 10,000 each) so a small collection builds and walks its graph",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.0785958,
        "rowsPerSecond": 6667.022919799786,
        "countMatchSeconds": 0.0021837,
        "indexSeconds": 2.0076855,
        "indexNote": "indexing_threshold_kb 1, full_scan_threshold_kb 10; status Green, 524 of 524 vectors in HNSW segments (2 segments), waited 2.0 s"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 21578,
        "p50Ms": 0.9163,
        "p95Ms": 1.0201,
        "p99Ms": 1.459546,
        "qps": {
          "1": 1078.878573471531,
          "8": 3456.8050999569223
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 66473,
        "exactP50Ms": 0.8909,
        "exactP95Ms": 1.0003,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 0.7425,
          "8": 0.5213
        }
      },
      "ram": {
        "bytes": 39992688,
        "text": "38.14 MiB (docker stats)"
      },
      "disk": {
        "bytes": 172067279,
        "text": "164.1 MiB (collection folder)"
      },
      "passOrder": [
        "default@1",
        "exact",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "status Green, optimizer ok, indexed_vectors_count 524 of 524 points, 2 segments, indexing_threshold_kb 1, full_scan_threshold_kb 10; every one of 1 non-empty segments has a complete HNSW graph above its full-scan threshold; no search has run yet, so the walk is proven by the segment settings only; searches counted since the collection was created: unfiltered_hnsw 0, unfiltered_plain 0, unfiltered_exact 0"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "status Green, optimizer ok, indexed_vectors_count 524 of 524 points, 2 segments, indexing_threshold_kb 1, full_scan_threshold_kb 10; every one of 1 non-empty segments has a complete HNSW graph above its full-scan threshold; 115,957 segment searches walked the graph and none scanned; searches counted since the collection was created: unfiltered_hnsw 115,957, unfiltered_plain 0, unfiltered_exact 71,989"
        }
      },
      "durability": "What was measured (strace -f on the Qdrant server process, 30 single-point REST upserts per setting, every sync call timed against the request that caused it): with wait=true each upsert had exactly one msync(MS_SYNC) of the write-ahead-log segment inside the request, before the reply (30 of 30); with wait=false the 30 upserts were acknowledged within 0.26 s with no sync call, and the first WAL msync (one call covering all 30 records) came 2.7 s after the last reply, followed by the segment-file flushes. So the log is flushed to disk under both settings, but with wait=false the flush comes after the acknowledgement: an operating-system crash or power cut in that gap loses acknowledged writes, while a crash of the Qdrant process alone should not, because the bytes are already in the kernel\u0027s page cache (inferred, not tested). Every upsert here is sent with wait=true in batches of 256 over gRPC; the strace used one point per request, so one flush per batch is inferred, not measured. Segment files are flushed every 5 s; log segments 32 MB, 0 created ahead. /qdrant/config/config.yaml in container gvb-qdrant (the image\u0027s own file; its storage keys are listed) sets: storage.collection.quantization = null, storage.collection.replication_factor = 1, storage.collection.vectors.on_disk = null, storage.collection.write_consistency_factor = 1, storage.hnsw_index.ef_construct = 100, storage.hnsw_index.full_scan_threshold_kb = 10000, storage.hnsw_index.m = 16, storage.hnsw_index.max_indexing_threads = 0, storage.hnsw_index.on_disk = false, storage.hnsw_index.payload_m = null, storage.max_collections = null, storage.node_type = Normal, storage.on_disk_payload = true, storage.optimizers.default_segment_number = 0, storage.optimizers.deleted_threshold = 0.2, storage.optimizers.flush_interval_sec = 5, storage.optimizers.indexing_threshold_kb = 10000, storage.optimizers.max_optimization_threads = null, storage.optimizers.max_segment_size_kb = null, storage.optimizers.vacuum_min_vector_number = 1000, storage.performance.max_search_threads = 0, storage.performance.optimizer_cpu_budget = 0, storage.performance.update_rate_limit = null, storage.shard_transfer_method = null, storage.snapshots_config.snapshots_storage = local, storage.snapshots_path = ./snapshots, storage.storage_path = ./storage, storage.temp_path = null, storage.update_concurrency = null, storage.wal.wal_capacity_mb = 32, storage.wal.wal_segments_ahead = 0; no QDRANT__ environment overrides in the server process. Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started qdrant.compose.yaml with every container created on CPUs 2-3,6-7: gvb-qdrant cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (status Green, optimizer ok, indexed_vectors_count 524 of 524 points, 2 segments, indexing_threshold_kb 1, full_scan_threshold_kb 10; every one of 1 non-empty segments has a complete HNSW graph above its full-scan threshold; no search has run yet, so the walk is proven by the segment settings only; searches counted since the collection was created: unfiltered_hnsw 0, unfiltered_plain 0, unfiltered_exact 0). Durability: What was measured (strace -f on the Qdrant server process, 30 single-point REST upserts per setting, every sync call timed against the request that caused it): with wait=true each upsert had exactly one msync(MS_SYNC) of the write-ahead-log segment inside the request, before the reply (30 of 30); with wait=false the 30 upserts were acknowledged within 0.26 s with no sync call, and the first WAL msync (one call covering all 30 records) came 2.7 s after the last reply, followed by the segment-file flushes. So the log is flushed to disk under both settings, but with wait=false the flush comes after the acknowledgement: an operating-system crash or power cut in that gap loses acknowledged writes, while a crash of the Qdrant process alone should not, because the bytes are already in the kernel\u0027s page cache (inferred, not tested). Every upsert here is sent with wait=true in batches of 256 over gRPC; the strace used one point per request, so one flush per batch is inferred, not measured. Segment files are flushed every 5 s; log segments 32 MB, 0 created ahead. /qdrant/config/config.yaml in container gvb-qdrant (the image\u0027s own file; its storage keys are listed) sets: storage.collection.quantization = null, storage.collection.replication_factor = 1, storage.collection.vectors.on_disk = null, storage.collection.write_consistency_factor = 1, storage.hnsw_index.ef_construct = 100, storage.hnsw_index.full_scan_threshold_kb = 10000, storage.hnsw_index.m = 16, storage.hnsw_index.max_indexing_threads = 0, storage.hnsw_index.on_disk = false, storage.hnsw_index.payload_m = null, storage.max_collections = null, storage.node_type = Normal, storage.on_disk_payload = true, storage.optimizers.default_segment_number = 0, storage.optimizers.deleted_threshold = 0.2, storage.optimizers.flush_interval_sec = 5, storage.optimizers.indexing_threshold_kb = 10000, storage.optimizers.max_optimization_threads = null, storage.optimizers.max_segment_size_kb = null, storage.optimizers.vacuum_min_vector_number = 1000, storage.performance.max_search_threads = 0, storage.performance.optimizer_cpu_budget = 0, storage.performance.update_rate_limit = null, storage.shard_transfer_method = null, storage.snapshots_config.snapshots_storage = local, storage.snapshots_path = ./snapshots, storage.storage_path = ./storage, storage.temp_path = null, storage.update_concurrency = null, storage.wal.wal_capacity_mb = 32, storage.wal.wal_segments_ahead = 0; no QDRANT__ environment overrides in the server process. Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked..",
        "Load average 2.64 3.14 2.92 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 5,364 searches in 5.0 s, exact 5,496 searches in 5.0 s, default@8 17,385 searches in 5.0 s.",
        "Settle: settled after 0.3 s and 300 searches (0 failed); p50 of the last windows of 100: 0.92, 0.89, 0.92 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 2,148 searches in 2.0 s: p50 0.918 ms against the settled p50 0.920 ms, 0% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:33:26.568Z to 2026-10-05T03:33:46.568Z (20.0 s), 21,578 searches, 0 failed, p50 0.916 ms, mean 0.925 ms, p99 1.460 ms, 1078.9 QPS (1000/QPS 0.927 ms).",
        "Pass exact after default@1: 2026-10-05T03:33:46.607Z to 2026-10-05T03:34:46.607Z (60.0 s), 66,473 searches, 0 failed, p50 0.891 ms, mean 0.901 ms, p99 1.435 ms, 1107.9 QPS (1000/QPS 0.903 ms).",
        "Pass default@8 after exact: 2026-10-05T03:34:46.677Z to 2026-10-05T03:35:06.679Z (20.0 s), 69,142 searches, 0 failed, p50 2.226 ms, mean 2.312 ms, p99 4.029 ms, 3456.8 QPS (1000/QPS 0.289 ms).",
        "Passes in the order run: default@1, exact, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 30,753 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (status Green, optimizer ok, indexed_vectors_count 524 of 524 points, 2 segments, indexing_threshold_kb 1, full_scan_threshold_kb 10; every one of 1 non-empty segments has a complete HNSW graph above its full-scan threshold; 115,957 segment searches walked the graph and none scanned; searches counted since the collection was created: unfiltered_hnsw 115,957, unfiltered_plain 0, unfiltered_exact 71,989).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-qdrant (82613f71f1d7) on network gvb-qdrant_default at container-ip:6334, not through docker-proxy localhost:16334; container gvb-qdrant (82613f71f1d7) on network gvb-qdrant_default at container-ip:6333, not through docker-proxy localhost:16333. Open after the passes: container-ip:6334 x1 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-qdrant: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-qdrant: 24 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3492/3492 MHz, performance, outside load 0.09 before the warm-up, 0.06 during, client CPU 0.743 ms per search; exact 3492/3492 MHz, performance, outside load 0.08 before the warm-up, 0.08 during, client CPU 0.734 ms per search; default@8 3492/3492 MHz, performance, outside load 0.08 before the warm-up, 0.12 during, client CPU 0.521 ms per search."
      ]
    },
    {
      "name": "typesense",
      "engine": "Typesense 30.2 (vector search)",
      "index": "HNSW float32 (hnswlib), m=16, ef_construction=128, cosine; search k=top, ef=100; exact mode = filter ordinal:\u003E=0 with flat_search_cutoff; index held in memory",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 1.0527645,
        "rowsPerSecond": 497.7371482416057,
        "countMatchSeconds": 0.0019645,
        "indexSeconds": 0.7244412,
        "indexNote": "nothing to build, Typesense inserts into the HNSW graph while writing; ready after 0.7 s: HNSW graph returns 524 of 524 vectors, no writes queued: num_documents 524, pending_write_batches 0, health ok, unfiltered vector query with k above the count returned 524; the graph is built in memory during each write, so there is no later build step"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 4907,
        "p50Ms": 4.0316,
        "p95Ms": 4.3411800000000005,
        "p99Ms": 4.729427999999996,
        "qps": {
          "1": 245.32714164357736,
          "8": 588.1855912740403
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 10880,
        "exactP50Ms": 5.461650000000001,
        "exactP95Ms": 5.85892,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 0.5124,
          "8": 0.5747
        }
      },
      "ram": {
        "bytes": 123836825,
        "text": "118.1 MiB (docker stats)"
      },
      "disk": {
        "bytes": 0,
        "text": "0 B added by this load (240.61 MiB (whole engine data folder), 635.8 MiB before)"
      },
      "passOrder": [
        "exact",
        "default@1",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "HNSW graph returns 524 of 524 vectors, no writes queued: num_documents 524, pending_write_batches 0, health ok, unfiltered vector query with k above the count returned 524; the graph is built in memory during each write, so there is no later build step"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "HNSW graph returns 524 of 524 vectors, no writes queued: num_documents 524, pending_write_batches 0, health ok, unfiltered vector query with k above the count returned 524; the graph is built in memory during each write, so there is no later build step"
        }
      },
      "durability": "Every acknowledged write is appended to Typesense\u0027s raft log and fsynced before the answer: braft raft_sync=true with raft_sync_policy=0 (sync immediately), read from the running container\u0027s brpc /flags page on 2026-10-04. A restart replays the log from the last snapshot (typesense.compose.yaml sets TYPESENSE_SNAPSHOT_INTERVAL_SECONDS=300) and rebuilds the in-memory HNSW graph, so by those settings a crash loses no acknowledged write, but the restart is slow after a big load. This is read from the settings, not shown by pulling power. One node and no replicas, so a lost disk loses the data.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started typesense.compose.yaml with every container created on CPUs 2-3,6-7: gvb-typesense cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (HNSW graph returns 524 of 524 vectors, no writes queued: num_documents 524, pending_write_batches 0, health ok, unfiltered vector query with k above the count returned 524; the graph is built in memory during each write, so there is no later build step). Durability: Every acknowledged write is appended to Typesense\u0027s raft log and fsynced before the answer: braft raft_sync=true with raft_sync_policy=0 (sync immediately), read from the running container\u0027s brpc /flags page on 2026-10-04. A restart replays the log from the last snapshot (typesense.compose.yaml sets TYPESENSE_SNAPSHOT_INTERVAL_SECONDS=300) and rebuilds the in-memory HNSW graph, so by those settings a crash loses no acknowledged write, but the restart is slow after a big load. This is read from the settings, not shown by pulling power. One node and no replicas, so a lost disk loses the data..",
        "Load average 3.46 3.06 2.91 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: exact 904 searches in 5.0 s, default@1 1,227 searches in 5.0 s, default@8 2,942 searches in 5.0 s.",
        "Settle: settled after 1.2 s and 300 searches (0 failed); p50 of the last windows of 100: 4.02, 4.03, 4.04 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 485 searches in 2.0 s: p50 4.043 ms against the settled p50 4.029 ms, 0% apart (limit 15%).",
        "Pass exact after settle: 2026-10-05T03:35:35.727Z to 2026-10-05T03:36:35.728Z (60.0 s), 10,880 searches, 0 failed, p50 5.462 ms, mean 5.513 ms, p99 6.307 ms, 181.3 QPS (1000/QPS 5.515 ms).",
        "Pass default@1 after exact: 2026-10-05T03:36:35.817Z to 2026-10-05T03:36:55.819Z (20.0 s), 4,907 searches, 0 failed, p50 4.032 ms, mean 4.074 ms, p99 4.729 ms, 245.3 QPS (1000/QPS 4.076 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:36:55.859Z to 2026-10-05T03:37:15.870Z (20.0 s), 11,770 searches, 0 failed, p50 13.055 ms, mean 13.597 ms, p99 25.460 ms, 588.2 QPS (1000/QPS 1.700 ms).",
        "Passes in the order run: exact, default@1, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 5,918 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (HNSW graph returns 524 of 524 vectors, no writes queued: num_documents 524, pending_write_batches 0, health ok, unfiltered vector query with k above the count returned 524; the graph is built in memory during each write, so there is no later build step).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-typesense (5d83a5073e5d) on network engines_default at container-ip:8108, not through docker-proxy localhost:8108. Open after the passes: container-ip:8108 x8 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-typesense: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-typesense: 303 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): exact 3592/3592 MHz, performance, outside load 0.07 before the warm-up, 0.12 during, client CPU 0.524 ms per search; default@1 3592/3592 MHz, performance, outside load 0.12 before the warm-up, 0.12 during, client CPU 0.512 ms per search; default@8 3592/3592 MHz, performance, outside load 0.12 before the warm-up, -0.06 during, client CPU 0.575 ms per search."
      ]
    },
    {
      "name": "chroma",
      "engine": "Chroma 1.4.4 (single node, REST API v2)",
      "index": "HNSW M=16 ef_construction=128, ef_search=100 (Chroma default), cosine; approximate only (no exact mode)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.5697565,
        "rowsPerSecond": 919.6911312113157,
        "countMatchSeconds": 0.0218971,
        "indexSeconds": 0.0181351,
        "indexNote": "Chroma has no index build to wait for and exposes no index status; checked in 0.0 s: Chroma exposes no index status (indexing_status endpoint: HTTP 500 {\u0022error\u0022:\u0022InternalError\u0022,\u0022message\u0022:\u0022Method scout_logs is not implemented\u0022}), so indexed vectors are not reported and ready only means the two counts agree to within 1 percent: count endpoint 524, a vector search asking for 524 results returned 524"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 9758,
        "p50Ms": 2.0303,
        "p95Ms": 2.260615,
        "p99Ms": 2.5529740000000003,
        "qps": {
          "8": 805.0043500773688,
          "1": 487.8854097868203
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 0,
        "clientCpuMsPerSearch": {
          "8": 0.4593,
          "1": 0.4624
        }
      },
      "ram": {
        "bytes": 46944747,
        "text": "44.77 MiB (docker stats)"
      },
      "disk": {
        "bytes": 424100,
        "text": "414.16 KiB added by this load (2.01 GiB (whole engine data folder), 2 GiB before)"
      },
      "passOrder": [
        "default@8",
        "default@1"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "totalVectors": 524,
          "detail": "Chroma exposes no index status (indexing_status endpoint: HTTP 500 {\u0022error\u0022:\u0022InternalError\u0022,\u0022message\u0022:\u0022Method scout_logs is not implemented\u0022}), so indexed vectors are not reported and ready only means the two counts agree to within 1 percent: count endpoint 524, a vector search asking for 524 results returned 524"
        },
        "afterSearch": {
          "ready": true,
          "totalVectors": 524,
          "detail": "Chroma exposes no index status (indexing_status endpoint: HTTP 500 {\u0022error\u0022:\u0022InternalError\u0022,\u0022message\u0022:\u0022Method scout_logs is not implemented\u0022}), so indexed vectors are not reported and ready only means the two counts agree to within 1 percent: count endpoint 524, a vector search asking for 524 results returned 524"
        }
      },
      "durability": "SQLite rollback journal with its default synchronous=FULL under the data directory (chroma.compose.yaml sets IS_PERSISTENT=1 and PERSIST_DIRECTORY=/data and no sync setting): every write is committed to chroma.sqlite3 with fsync of the journal, the directory and the database file before the call returns (strace: 15 database fsyncs and 38 journal fsyncs for one create, four 500-vector upserts and one delete), and the HNSW files are written every sync_threshold=1000 vectors and rebuilt from the SQLite log after a crash; measured with kill -9 and a restart: all 50, 300 and 2,000 vectors were still stored and searchable",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started chroma.compose.yaml with every container created on CPUs 2-3,6-7: gvb-chroma cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, ? of 524 indexed (Chroma exposes no index status (indexing_status endpoint: HTTP 500 {\u0022error\u0022:\u0022InternalError\u0022,\u0022message\u0022:\u0022Method scout_logs is not implemented\u0022}), so indexed vectors are not reported and ready only means the two counts agree to within 1 percent: count endpoint 524, a vector search asking for 524 results returned 524). Durability: SQLite rollback journal with its default synchronous=FULL under the data directory (chroma.compose.yaml sets IS_PERSISTENT=1 and PERSIST_DIRECTORY=/data and no sync setting): every write is committed to chroma.sqlite3 with fsync of the journal, the directory and the database file before the call returns (strace: 15 database fsyncs and 38 journal fsyncs for one create, four 500-vector upserts and one delete), and the HNSW files are written every sync_threshold=1000 vectors and rebuilt from the SQLite log after a crash; measured with kill -9 and a restart: all 50, 300 and 2,000 vectors were still stored and searchable.",
        "Load average 2.55 2.76 2.81 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@8 4,009 searches in 5.0 s, default@1 2,428 searches in 5.0 s.",
        "Settle: settled after 0.6 s and 300 searches (0 failed); p50 of the last windows of 100: 2.11, 2.01, 2.04 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 972 searches in 2.0 s: p50 2.035 ms against the settled p50 2.038 ms, 0% apart (limit 15%).",
        "Pass default@8 after settle: 2026-10-05T03:37:38.069Z to 2026-10-05T03:37:58.076Z (20.0 s), 16,106 searches, 0 failed, p50 9.878 ms, mean 9.934 ms, p99 11.509 ms, 805.0 QPS (1000/QPS 1.242 ms).",
        "Pass default@1 after default@8: 2026-10-05T03:37:58.123Z to 2026-10-05T03:38:18.123Z (20.0 s), 9,758 searches, 0 failed, p50 2.030 ms, mean 2.048 ms, p99 2.553 ms, 487.9 QPS (1000/QPS 2.050 ms).",
        "Passes in the order run: default@8, default@1; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 7,749 sent, 0 failed (warmupErrors). Index after the searches: ready, ? of 524 indexed (Chroma exposes no index status (indexing_status endpoint: HTTP 500 {\u0022error\u0022:\u0022InternalError\u0022,\u0022message\u0022:\u0022Method scout_logs is not implemented\u0022}), so indexed vectors are not reported and ready only means the two counts agree to within 1 percent: count endpoint 524, a vector search asking for 524 results returned 524).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-chroma (df84d63d7e2b) on network gvb-chroma_default at container-ip:8000, not through docker-proxy localhost:8000. Open after the passes: container-ip:8000 x8 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-chroma: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-chroma: 9 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@8 3592/3592 MHz, performance, outside load 0.09 before the warm-up, 0.07 during, client CPU 0.459 ms per search; default@1 3592/3592 MHz, performance, outside load 0.07 before the warm-up, 0.07 during, client CPU 0.462 ms per search."
      ]
    },
    {
      "name": "duckdb",
      "engine": "DuckDB 1.5.6 \u002B vss b833341 (HNSW, embedded, in process)",
      "index": "HNSW (vss extension) FLOAT[n] metric=cosine m=16 ef_construction=128, ef_search=100 per connection, persistent (hnsw_enable_experimental_persistence=true, checkpoint_threshold=256MB); exact mode = array_cosine_similarity sequential scan; score = 1 - cosine distance",
      "hosting": "embedded",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.3434066,
        "rowsPerSecond": 1525.887970702951,
        "countMatchSeconds": 0.0027829,
        "indexSeconds": 0.0137627,
        "indexNote": "HNSW is maintained inside every transaction, nothing to build; confirmed in 0.01 s: duckdb_indexes() lists gvb_gvbbench_eshoponweb_hnsw, pragma_hnsw_index_info() counts 524 vectors of 524 rows, EXPLAIN of the default search shows HNSW_INDEX_SCAN on it = True"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 5678,
        "p50Ms": 3.4906,
        "p95Ms": 3.8499649999999996,
        "p99Ms": 5.039721999999995,
        "qps": {
          "1": 283.8571446675838,
          "8": 279.4439344300011
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 14672,
        "exactP50Ms": 4.0120000000000005,
        "exactP95Ms": 4.744014999999999,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 4.8103,
          "8": 4.945
        }
      },
      "ram": {
        "text": "in this process, not measured"
      },
      "disk": {
        "bytes": 3040286,
        "text": "2.9 MiB added by this load (413.83 MiB (engine data folder), 410.93 MiB before)"
      },
      "passOrder": [
        "default@1",
        "default@8",
        "exact"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "duckdb_indexes() lists gvb_gvbbench_eshoponweb_hnsw, pragma_hnsw_index_info() counts 524 vectors of 524 rows, EXPLAIN of the default search shows HNSW_INDEX_SCAN on it = True"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "duckdb_indexes() lists gvb_gvbbench_eshoponweb_hnsw, pragma_hnsw_index_info() counts 524 vectors of 524 rows, EXPLAIN of the default search shows HNSW_INDEX_SCAN on it = True"
        }
      },
      "durability": "DuckDB\u0027s write-ahead log is fsynced at every commit and no DuckDbSink setting changes that (checkpoint_threshold=256MB only spaces out the checkpoints that write the database file; measured with strace: 42 WAL fsyncs for 40 single-record commits plus 2 setup statements), so an operating-system crash or power cut loses no committed row; measured with kill -9 right after the last commit and a reopen: all 50, 300 and 2,000 rows and an HNSW index that counted the same number were recovered from the log; not tested and documented by DuckDB: the HNSW index is file-backed only through hnsw_enable_experimental_persistence = true, which this sink turns on, and WAL recovery for such custom indexes is not complete, so a crash during a checkpoint or a later commit can damage the index while the rows survive",
      "notes": [
        "Index after the load: ready, 524 of 524 indexed (duckdb_indexes() lists gvb_gvbbench_eshoponweb_hnsw, pragma_hnsw_index_info() counts 524 vectors of 524 rows, EXPLAIN of the default search shows HNSW_INDEX_SCAN on it = True). Durability: DuckDB\u0027s write-ahead log is fsynced at every commit and no DuckDbSink setting changes that (checkpoint_threshold=256MB only spaces out the checkpoints that write the database file; measured with strace: 42 WAL fsyncs for 40 single-record commits plus 2 setup statements), so an operating-system crash or power cut loses no committed row; measured with kill -9 right after the last commit and a reopen: all 50, 300 and 2,000 rows and an HNSW index that counted the same number were recovered from the log; not tested and documented by DuckDB: the HNSW index is file-backed only through hnsw_enable_experimental_persistence = true, which this sink turns on, and WAL recovery for such custom indexes is not complete, so a crash during a checkpoint or a later commit can damage the index while the rows survive.",
        "Load average 2.47 2.70 2.79 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 1,434 searches in 5.0 s, default@8 1,442 searches in 5.0 s, exact 1,255 searches in 5.0 s.",
        "Settle: settled after 1.1 s and 300 searches (0 failed); p50 of the last windows of 100: 3.51, 3.44, 3.44 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 571 searches in 2.0 s: p50 3.464 ms against the settled p50 3.440 ms, 1% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:38:38.457Z to 2026-10-05T03:38:58.460Z (20.0 s), 5,678 searches, 0 failed, p50 3.491 ms, mean 3.520 ms, p99 5.040 ms, 283.9 QPS (1000/QPS 3.523 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:38:58.541Z to 2026-10-05T03:39:18.570Z (20.0 s), 5,597 searches, 0 failed, p50 28.395 ms, mean 28.606 ms, p99 31.587 ms, 279.4 QPS (1000/QPS 3.579 ms).",
        "Pass exact after default@8: 2026-10-05T03:39:18.657Z to 2026-10-05T03:40:18.659Z (60.0 s), 14,672 searches, 0 failed, p50 4.012 ms, mean 4.085 ms, p99 5.657 ms, 244.5 QPS (1000/QPS 4.090 ms).",
        "Passes in the order run: default@1, default@8, exact; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 5,062 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (duckdb_indexes() lists gvb_gvbbench_eshoponweb_hnsw, pragma_hnsw_index_info() counts 524 vectors of 524 rows, EXPLAIN of the default search shows HNSW_INDEX_SCAN on it = True).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: in this process (embedded), no network: no network address. No open connection seen (no open TCP connection was found).",
        "CPU pinning: none: an embedded engine runs inside the benchmark client process, so it shares the client CPUs, CPUs 0-1,4-5.",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3593/3592 MHz, performance, outside load 0.10 before the warm-up, 0.09 during, client CPU 4.810 ms per search; default@8 3597/3592 MHz, performance, outside load 0.10 before the warm-up, 0.08 during, client CPU 4.945 ms per search; exact 3593/3592 MHz, performance, outside load 0.09 before the warm-up, 0.12 during, client CPU 6.036 ms per search."
      ]
    },
    {
      "name": "elasticsearch",
      "engine": "Elasticsearch 9.5.3 (dense_vector)",
      "index": "HNSW float32, no quantization, m=16, ef_construction=128, cosine; search k=top, num_candidates=100; 1 shard, 0 replicas; force-merged to one segment after the load (at 1,024 dimensions a segment under 1,043 vectors gets no graph)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 1.1201493,
        "rowsPerSecond": 467.7947841417211,
        "countMatchSeconds": 0.0970873,
        "indexSeconds": 0.3781866,
        "indexNote": "FAILED after 0.4 s: NO HNSW GRAPH, searches scan all 524 vectors: 1 segment(s), 524 vectors, total_vex_size_bytes 0 (_stats dense_vector), index_options hnsw m=16 ef_construction=128; Lucene builds no graph for a segment this small (measured at 1,024 dimensions: 1,042 vectors none, 1,043 vectors a graph), so default search equals exact search"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 14320,
        "p50Ms": 1.3354,
        "p95Ms": 1.7162299999999995,
        "p99Ms": 2.1578389999999987,
        "qps": {
          "1": 715.9575974112932,
          "8": 2652.936669506185
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 47574,
        "exactP50Ms": 1.2376,
        "exactP95Ms": 1.4422,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 0.4662,
          "8": 0.4899
        }
      },
      "ram": {
        "bytes": 2687575785,
        "text": "2.5 GiB (docker stats)"
      },
      "disk": {
        "bytes": 2504217,
        "text": "2.39 MiB added by this load (2.59 MiB (whole engine data folder), 209.91 KiB before)"
      },
      "passOrder": [
        "default@1",
        "default@8",
        "exact"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": false,
          "indexedVectors": 0,
          "totalVectors": 524,
          "detail": "NO HNSW GRAPH, searches scan all 524 vectors: 1 segment(s), 524 vectors, total_vex_size_bytes 0 (_stats dense_vector), index_options hnsw m=16 ef_construction=128; Lucene builds no graph for a segment this small (measured at 1,024 dimensions: 1,042 vectors none, 1,043 vectors a graph), so default search equals exact search"
        },
        "afterSearch": {
          "ready": false,
          "indexedVectors": 0,
          "totalVectors": 524,
          "detail": "NO HNSW GRAPH, searches scan all 524 vectors: 1 segment(s), 524 vectors, total_vex_size_bytes 0 (_stats dense_vector), index_options hnsw m=16 ef_construction=128; Lucene builds no graph for a segment this small (measured at 1,024 dimensions: 1,042 vectors none, 1,043 vectors a graph), so default search equals exact search"
        }
      },
      "durability": "Every acknowledged bulk request is fsynced to the translog before the answer: index.translog.durability=request, the Elasticsearch default, which neither this sink nor elasticsearch.compose.yaml overrides (ElasticsearchReadinessTests reads it back from the live index). By that setting a process crash or power loss loses no acknowledged write; this is read from the setting, not shown by pulling power. One node and no replicas, so a lost disk loses the data.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started elasticsearch.compose.yaml with every container created on CPUs 2-3,6-7: gvb-elasticsearch cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "WARNING: the index step after the load FAILED (NO HNSW GRAPH, searches scan all 524 vectors: 1 segment(s), 524 vectors, total_vex_size_bytes 0 (_stats dense_vector), index_options hnsw m=16 ef_construction=128; Lucene builds no graph for a segment this small (measured at 1,024 dimensions: 1,042 vectors none, 1,043 vectors a graph), so default search equals exact search). Searched anyway; see the index state.",
        "WARNING: index not ready after the load: NOT ready, 0 of 524 indexed (NO HNSW GRAPH, searches scan all 524 vectors: 1 segment(s), 524 vectors, total_vex_size_bytes 0 (_stats dense_vector), index_options hnsw m=16 ef_construction=128; Lucene builds no graph for a segment this small (measured at 1,024 dimensions: 1,042 vectors none, 1,043 vectors a graph), so default search equals exact search). Measured anyway, so its search numbers may come from a scan or a half-built index. Durability: Every acknowledged bulk request is fsynced to the translog before the answer: index.translog.durability=request, the Elasticsearch default, which neither this sink nor elasticsearch.compose.yaml overrides (ElasticsearchReadinessTests reads it back from the live index). By that setting a process crash or power loss loses no acknowledged write; this is read from the setting, not shown by pulling power. One node and no replicas, so a lost disk loses the data..",
        "Load average 2.30 2.41 2.65 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 1,009 searches in 5.0 s, default@8 4,838 searches in 5.0 s, exact 1,973 searches in 5.0 s.",
        "Settle: settled after 1.4 s and 700 searches (0 failed); p50 of the last windows of 100: 1.54, 1.54, 1.50 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 1,101 searches in 2.0 s: p50 1.687 ms against the settled p50 1.536 ms, 9% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:41:10.855Z to 2026-10-05T03:41:30.856Z (20.0 s), 14,320 searches, 0 failed, p50 1.335 ms, mean 1.395 ms, p99 2.158 ms, 716.0 QPS (1000/QPS 1.397 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:41:30.878Z to 2026-10-05T03:41:50.880Z (20.0 s), 53,064 searches, 0 failed, p50 2.846 ms, mean 3.013 ms, p99 5.480 ms, 2652.9 QPS (1000/QPS 0.377 ms).",
        "Pass exact after default@8: 2026-10-05T03:41:50.922Z to 2026-10-05T03:42:50.923Z (60.0 s), 47,574 searches, 0 failed, p50 1.238 ms, mean 1.259 ms, p99 1.744 ms, 792.9 QPS (1000/QPS 1.261 ms).",
        "Passes in the order run: default@1, default@8, exact; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 9,681 sent, 0 failed (warmupErrors). Index after the searches: NOT ready, 0 of 524 indexed (NO HNSW GRAPH, searches scan all 524 vectors: 1 segment(s), 524 vectors, total_vex_size_bytes 0 (_stats dense_vector), index_options hnsw m=16 ef_construction=128; Lucene builds no graph for a segment this small (measured at 1,024 dimensions: 1,042 vectors none, 1,043 vectors a graph), so default search equals exact search).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-elasticsearch (a4082cc82c30) on network engines_default at container-ip:9200, not through docker-proxy localhost:9200. Open after the passes: container-ip:9200 x8 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-elasticsearch: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-elasticsearch: 74 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.11 during, client CPU 0.466 ms per search; default@8 3492/3492 MHz, performance, outside load 0.11 before the warm-up, 0.11 during, client CPU 0.490 ms per search; exact 3492/3492 MHz, performance, outside load 0.11 before the warm-up, 0.11 during, client CPU 0.461 ms per search."
      ]
    },
    {
      "name": "sql-diskann",
      "engine": "Microsoft SQL Server 2025 (RTM-CU9) (KB5122048) - 17.0.5005.3 (X64), Enterprise Developer Edition (64-bit), in container gvb-mssql (image mcr.microsoft.com/mssql/server:2025-CU9-ubuntu-24.04@sha256:2b5b581621126574f3d1f75e78d3eebe8d05aedb59ad0cfdf9aa42cb0634d726; cpuset 2-3,6-7 from its creation; SQL Server counts 4 CPU(s) and runs 4 visible scheduler(s), affinity AUTO)",
      "index": "DiskANN (preview) via VECTOR_SEARCH, cosine, build {\u0022StartId\u0022:\u0022306\u0022, \u0022L\u0022:\u002248\u0022, \u0022M\u0022:\u00228\u0022, \u0022R\u0022:\u002248\u0022}; the exact mode scans the same table",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.8558761,
        "rowsPerSecond": 612.2381498910881,
        "countMatchSeconds": 0.0044117,
        "indexSeconds": 4.0079747,
        "indexNote": "copied 524 rows to dbo.gvb_gvbbench_eshoponweb_ann (INT key) and built DiskANN, parameters {\u0022StartId\u0022:\u0022306\u0022, \u0022L\u0022:\u002248\u0022, \u0022M\u0022:\u00228\u0022, \u0022R\u0022:\u002248\u0022}, graph covers 524 rows"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 5511,
        "p50Ms": 3.564,
        "p95Ms": 4.01535,
        "p99Ms": 5.138239999999999,
        "qps": {
          "8": 694.8365913635115,
          "1": 275.54179574303174
        },
        "recall": 0.9650000000000002,
        "ndcg": 0.5256995680516536,
        "errors": 0,
        "exactQueries": 16349,
        "exactP50Ms": 3.5707,
        "exactP95Ms": 4.127779999999999,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "8": 1.0994,
          "1": 1.029
        }
      },
      "ram": {
        "bytes": 555954995,
        "text": "530.2 MiB (docker stats)"
      },
      "disk": {
        "bytes": 4734976,
        "text": "4.52 MiB (table and its indexes, reserved pages)"
      },
      "passOrder": [
        "default@8",
        "exact",
        "default@1"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "DiskANN index built and used. sys.vector_indexes: vix_gvb_gvbbench_eshoponweb on dbo.gvb_gvbbench_eshoponweb_ann in GvbBenchDiskAnn, DiskANN, COSINE, enabled, build {\u0022StartId\u0022:\u0022306\u0022, \u0022L\u0022:\u002248\u0022, \u0022M\u0022:\u00228\u0022, \u0022R\u0022:\u002248\u0022}; graph table rows 524 of 524 table rows. Real VECTOR_SEARCH plan: Vector Index Seek on index vix_gvb_gvbbench_eshoponweb of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann (IndexKind DiskANN), 10 rows returned, 10 hits. The exact mode searches the SAME table (dbo.gvb_gvbbench_eshoponweb_ann, database GvbBenchDiskAnn) and its real plan is: Clustered Index Scan of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann through PK_gvb_gvbbench_eshoponweb_ann (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "DiskANN index built and used. sys.vector_indexes: vix_gvb_gvbbench_eshoponweb on dbo.gvb_gvbbench_eshoponweb_ann in GvbBenchDiskAnn, DiskANN, COSINE, enabled, build {\u0022StartId\u0022:\u0022306\u0022, \u0022L\u0022:\u002248\u0022, \u0022M\u0022:\u00228\u0022, \u0022R\u0022:\u002248\u0022}; graph table rows 524 of 524 table rows. Real VECTOR_SEARCH plan: Vector Index Seek on index vix_gvb_gvbbench_eshoponweb of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann (IndexKind DiskANN), 10 rows returned, 10 hits. The exact mode searches the SAME table (dbo.gvb_gvbbench_eshoponweb_ann, database GvbBenchDiskAnn) and its real plan is: Clustered Index Scan of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann through PK_gvb_gvbbench_eshoponweb_ann (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits"
        }
      },
      "durability": "A commit returns after its transaction-log records are written to disk (SQL Server write-ahead logging; delayed durability is DISABLED); a database created here copies the model database: recovery model FULL, page_verify CHECKSUM; no global trace flags are enabled; mssql.conf of container gvb-mssql (/var/opt/mssql/mssql.conf, on the host at ~/gvb-data/engines/mssql/mssql.conf) does not exist, so it sets: nothing; it has no [control] or [traceflag] entry, so SQL Server\u0027s own Linux defaults for flushing writes apply (Microsoft\u0027s Linux performance guide names trace flag 3982 as that default; read from the guide, not tested here). Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked. Container settings from its environment (names only): MSSQL_AGENT_ENABLED, MSSQL_MEMORY_LIMIT_MB, MSSQL_PID, MSSQL_RPC_PORT, MSSQL_SA_PASSWORD.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started mssql.compose.yaml with every container created on CPUs 2-3,6-7: gvb-mssql cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (DiskANN index built and used. sys.vector_indexes: vix_gvb_gvbbench_eshoponweb on dbo.gvb_gvbbench_eshoponweb_ann in GvbBenchDiskAnn, DiskANN, COSINE, enabled, build {\u0022StartId\u0022:\u0022306\u0022, \u0022L\u0022:\u002248\u0022, \u0022M\u0022:\u00228\u0022, \u0022R\u0022:\u002248\u0022}; graph table rows 524 of 524 table rows. Real VECTOR_SEARCH plan: Vector Index Seek on index vix_gvb_gvbbench_eshoponweb of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann (IndexKind DiskANN), 10 rows returned, 10 hits. The exact mode searches the SAME table (dbo.gvb_gvbbench_eshoponweb_ann, database GvbBenchDiskAnn) and its real plan is: Clustered Index Scan of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann through PK_gvb_gvbbench_eshoponweb_ann (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits). Durability: A commit returns after its transaction-log records are written to disk (SQL Server write-ahead logging; delayed durability is DISABLED); a database created here copies the model database: recovery model FULL, page_verify CHECKSUM; no global trace flags are enabled; mssql.conf of container gvb-mssql (/var/opt/mssql/mssql.conf, on the host at ~/gvb-data/engines/mssql/mssql.conf) does not exist, so it sets: nothing; it has no [control] or [traceflag] entry, so SQL Server\u0027s own Linux defaults for flushing writes apply (Microsoft\u0027s Linux performance guide names trace flag 3982 as that default; read from the guide, not tested here). Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked. Container settings from its environment (names only): MSSQL_AGENT_ENABLED, MSSQL_MEMORY_LIMIT_MB, MSSQL_PID, MSSQL_RPC_PORT, MSSQL_SA_PASSWORD..",
        "Load average 2.14 2.51 2.67 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@8 3,083 searches in 5.0 s, exact 1,374 searches in 5.0 s, default@1 1,404 searches in 5.0 s.",
        "Settle: settled after 1.1 s and 300 searches (0 failed); p50 of the last windows of 100: 3.51, 3.54, 3.54 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 560 searches in 2.0 s: p50 3.550 ms against the settled p50 3.537 ms, 0% apart (limit 15%).",
        "Pass default@8 after settle: 2026-10-05T03:43:25.569Z to 2026-10-05T03:43:45.576Z (20.0 s), 13,901 searches, 0 failed, p50 11.305 ms, mean 11.509 ms, p99 19.009 ms, 694.8 QPS (1000/QPS 1.439 ms).",
        "Pass exact after default@8: 2026-10-05T03:43:45.653Z to 2026-10-05T03:44:45.656Z (60.0 s), 16,349 searches, 0 failed, p50 3.571 ms, mean 3.667 ms, p99 5.349 ms, 272.5 QPS (1000/QPS 3.670 ms).",
        "Pass default@1 after exact: 2026-10-05T03:44:45.742Z to 2026-10-05T03:45:05.742Z (20.0 s), 5,511 searches, 0 failed, p50 3.564 ms, mean 3.627 ms, p99 5.138 ms, 275.5 QPS (1000/QPS 3.629 ms).",
        "Passes in the order run: default@8, exact, default@1; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 6,781 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (DiskANN index built and used. sys.vector_indexes: vix_gvb_gvbbench_eshoponweb on dbo.gvb_gvbbench_eshoponweb_ann in GvbBenchDiskAnn, DiskANN, COSINE, enabled, build {\u0022StartId\u0022:\u0022306\u0022, \u0022L\u0022:\u002248\u0022, \u0022M\u0022:\u00228\u0022, \u0022R\u0022:\u002248\u0022}; graph table rows 524 of 524 table rows. Real VECTOR_SEARCH plan: Vector Index Seek on index vix_gvb_gvbbench_eshoponweb of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann (IndexKind DiskANN), 10 rows returned, 10 hits. The exact mode searches the SAME table (dbo.gvb_gvbbench_eshoponweb_ann, database GvbBenchDiskAnn) and its real plan is: Clustered Index Scan of GvbBenchDiskAnn.gvb_gvbbench_eshoponweb_ann through PK_gvb_gvbbench_eshoponweb_ann (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-mssql (0149acfffd7d) on network gvb-mssql_default at container-ip:1433, not through docker-proxy localhost:14330. Open after the passes: container-ip:1433 x9 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-mssql: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-mssql: 85 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@8 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.09 during, client CPU 1.099 ms per search; exact 3503/3493 MHz, performance, outside load 0.10 before the warm-up, 0.12 during, client CPU 1.168 ms per search; default@1 3496/3494 MHz, performance, outside load 0.12 before the warm-up, 0.13 during, client CPU 1.029 ms per search."
      ]
    },
    {
      "name": "pgvector",
      "engine": "PostgreSQL 17 \u002B pgvector 0.8.7",
      "index": "HNSW vector_cosine_ops m=16 ef_construction=128, hnsw.ef_search=100 per query, float32 vector(n), cosine; exact mode = same query with index scans off (sequential scan)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.857313,
        "rowsPerSecond": 611.212007749795,
        "countMatchSeconds": 0.0115715,
        "indexSeconds": 0.027136,
        "indexNote": "HNSW is maintained inside every insert, nothing to build; confirmed in 0.0 s: pg_indexes lists gvb_gvbbench_eshoponweb_hnsw (USING hnsw (embedding vector_cosine_ops) WITH (m=\u002716\u0027, ef_construction=\u0027128\u0027)), pg_index valid and ready = True, EXPLAIN of the default search uses Index Scan on it = True, that search returned 10 of 10 rows; PostgreSQL keeps no entry count for an HNSW index, so indexed vectors are not reported"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 23165,
        "p50Ms": 0.8455,
        "p95Ms": 0.99608,
        "p99Ms": 1.269912000000001,
        "qps": {
          "8": 4102.037322205115,
          "1": 1158.225393501515
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 26830,
        "exactP50Ms": 2.1917,
        "exactP95Ms": 2.4402749999999997,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "8": 0.5428,
          "1": 0.6831
        }
      },
      "ram": {
        "bytes": 105591603,
        "text": "100.7 MiB (docker stats)"
      },
      "disk": {
        "bytes": 7962624,
        "text": "7.59 MiB added by this load (454.6 MiB (whole engine data folder), 447.01 MiB before)"
      },
      "passOrder": [
        "default@8",
        "default@1",
        "exact"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "totalVectors": 524,
          "detail": "pg_indexes lists gvb_gvbbench_eshoponweb_hnsw (USING hnsw (embedding vector_cosine_ops) WITH (m=\u002716\u0027, ef_construction=\u0027128\u0027)), pg_index valid and ready = True, EXPLAIN of the default search uses Index Scan on it = True, that search returned 10 of 10 rows; PostgreSQL keeps no entry count for an HNSW index, so indexed vectors are not reported"
        },
        "afterSearch": {
          "ready": true,
          "totalVectors": 524,
          "detail": "pg_indexes lists gvb_gvbbench_eshoponweb_hnsw (USING hnsw (embedding vector_cosine_ops) WITH (m=\u002716\u0027, ef_construction=\u0027128\u0027)), pg_index valid and ready = True, EXPLAIN of the default search uses Index Scan on it = True, that search returned 10 of 10 rows; PostgreSQL keeps no entry count for an HNSW index, so indexed vectors are not reported"
        }
      },
      "durability": "fsync on, synchronous_commit on, full_page_writes on, wal_sync_method fdatasync (PostgreSQL defaults; pgvector.compose.yaml sets only shared_buffers, maintenance_work_mem and max_wal_size): every commit is flushed to the write-ahead log before it returns and HNSW index changes are WAL-logged, so a crash loses no committed row (max_wal_size 4GB only spaces out checkpoints; measured with docker kill, which is SIGKILL, right after a 2,000-vector load and a restart: all 2,000 rows were there and the HNSW index was valid and used by the default search)",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started pgvector.compose.yaml with every container created on CPUs 2-3,6-7: gvb-pgvector cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, ? of 524 indexed (pg_indexes lists gvb_gvbbench_eshoponweb_hnsw (USING hnsw (embedding vector_cosine_ops) WITH (m=\u002716\u0027, ef_construction=\u0027128\u0027)), pg_index valid and ready = True, EXPLAIN of the default search uses Index Scan on it = True, that search returned 10 of 10 rows; PostgreSQL keeps no entry count for an HNSW index, so indexed vectors are not reported). Durability: fsync on, synchronous_commit on, full_page_writes on, wal_sync_method fdatasync (PostgreSQL defaults; pgvector.compose.yaml sets only shared_buffers, maintenance_work_mem and max_wal_size): every commit is flushed to the write-ahead log before it returns and HNSW index changes are WAL-logged, so a crash loses no committed row (max_wal_size 4GB only spaces out checkpoints; measured with docker kill, which is SIGKILL, right after a 2,000-vector load and a restart: all 2,000 rows were there and the HNSW index was valid and used by the default search).",
        "Load average 1.71 2.36 2.60 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@8 19,668 searches in 5.0 s, default@1 5,899 searches in 5.0 s, exact 2,229 searches in 5.0 s.",
        "Settle: settled after 0.2 s and 300 searches (0 failed); p50 of the last windows of 100: 0.83, 0.81, 0.80 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 2,357 searches in 2.0 s: p50 0.832 ms against the settled p50 0.811 ms, 3% apart (limit 15%).",
        "Pass default@8 after settle: 2026-10-05T03:45:32.507Z to 2026-10-05T03:45:52.508Z (20.0 s), 82,047 searches, 0 failed, p50 1.905 ms, mean 1.948 ms, p99 3.448 ms, 4102.0 QPS (1000/QPS 0.244 ms).",
        "Pass default@1 after default@8: 2026-10-05T03:45:52.567Z to 2026-10-05T03:46:12.568Z (20.0 s), 23,165 searches, 0 failed, p50 0.846 ms, mean 0.861 ms, p99 1.270 ms, 1158.2 QPS (1000/QPS 0.863 ms).",
        "Pass exact after default@1: 2026-10-05T03:46:12.634Z to 2026-10-05T03:47:12.636Z (60.0 s), 26,830 searches, 0 failed, p50 2.192 ms, mean 2.234 ms, p99 3.529 ms, 447.2 QPS (1000/QPS 2.236 ms).",
        "Passes in the order run: default@8, default@1, exact; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 30,513 sent, 0 failed (warmupErrors). Index after the searches: ready, ? of 524 indexed (pg_indexes lists gvb_gvbbench_eshoponweb_hnsw (USING hnsw (embedding vector_cosine_ops) WITH (m=\u002716\u0027, ef_construction=\u0027128\u0027)), pg_index valid and ready = True, EXPLAIN of the default search uses Index Scan on it = True, that search returned 10 of 10 rows; PostgreSQL keeps no entry count for an HNSW index, so indexed vectors are not reported).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-pgvector (4c5c52ca06c5) on network gvb-pgvector_default at container-ip:5432, not through docker-proxy localhost:5432. Open after the passes: container-ip:5432 x8 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-pgvector: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-pgvector: 6 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@8 3492/3492 MHz, performance, outside load 0.13 before the warm-up, 0.12 during, client CPU 0.543 ms per search; default@1 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.11 during, client CPU 0.683 ms per search; exact 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.11 during, client CPU 0.693 ms per search."
      ]
    },
    {
      "name": "sql",
      "engine": "Microsoft SQL Server 2025 (RTM-CU9) (KB5122048) - 17.0.5005.3 (X64), Enterprise Developer Edition (64-bit), in container gvb-mssql (image mcr.microsoft.com/mssql/server:2025-CU9-ubuntu-24.04@sha256:2b5b581621126574f3d1f75e78d3eebe8d05aedb59ad0cfdf9aa42cb0634d726; cpuset 2-3,6-7 from its creation; SQL Server counts 4 CPU(s) and runs 4 visible scheduler(s), affinity AUTO)",
      "index": "exact VECTOR_DISTANCE cosine, no vector index (full scan)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.8231203,
        "rowsPerSecond": 636.6019645002073,
        "countMatchSeconds": 0.0040067
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 5070,
        "p50Ms": 3.8535,
        "p95Ms": 4.43823,
        "p99Ms": 5.806785000000029,
        "qps": {
          "1": 253.45692372852773,
          "8": 618.2060610579305
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 0,
        "clientCpuMsPerSearch": {
          "1": 1.2245,
          "8": 1.2093
        }
      },
      "ram": {
        "bytes": 552914124,
        "text": "527.3 MiB (docker stats)"
      },
      "disk": {
        "bytes": 5398528,
        "text": "5.15 MiB (table and its indexes, reserved pages)"
      },
      "passOrder": [
        "default@1",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 0,
          "totalVectors": 524,
          "detail": "no index used, exact scan by design: dbo.gvb_gvbbench_eshoponweb in GvbBench holds 524 rows; sys.vector_indexes lists no index on the table; indexes: PK_gvb_gvbbench_eshoponweb CLUSTERED, IX_gvb_gvbbench_eshoponweb_DocKey NONCLUSTERED; a real search under SET STATISTICS XML ON ran: Clustered Index Scan of GvbBench.gvb_gvbbench_eshoponweb through PK_gvb_gvbbench_eshoponweb (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 0,
          "totalVectors": 524,
          "detail": "no index used, exact scan by design: dbo.gvb_gvbbench_eshoponweb in GvbBench holds 524 rows; sys.vector_indexes lists no index on the table; indexes: PK_gvb_gvbbench_eshoponweb CLUSTERED, IX_gvb_gvbbench_eshoponweb_DocKey NONCLUSTERED; a real search under SET STATISTICS XML ON ran: Clustered Index Scan of GvbBench.gvb_gvbbench_eshoponweb through PK_gvb_gvbbench_eshoponweb (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits"
        }
      },
      "durability": "A commit returns after its transaction-log records are written to disk (SQL Server write-ahead logging; delayed durability is DISABLED); a database created here copies the model database: recovery model FULL, page_verify CHECKSUM; no global trace flags are enabled; mssql.conf of container gvb-mssql (/var/opt/mssql/mssql.conf, on the host at ~/gvb-data/engines/mssql/mssql.conf) does not exist, so it sets: nothing; it has no [control] or [traceflag] entry, so SQL Server\u0027s own Linux defaults for flushing writes apply (Microsoft\u0027s Linux performance guide names trace flag 3982 as that default; read from the guide, not tested here). Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked. Container settings from its environment (names only): MSSQL_AGENT_ENABLED, MSSQL_MEMORY_LIMIT_MB, MSSQL_PID, MSSQL_RPC_PORT, MSSQL_SA_PASSWORD.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started mssql.compose.yaml with every container created on CPUs 2-3,6-7: gvb-mssql cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 0 of 524 indexed (no index used, exact scan by design: dbo.gvb_gvbbench_eshoponweb in GvbBench holds 524 rows; sys.vector_indexes lists no index on the table; indexes: PK_gvb_gvbbench_eshoponweb CLUSTERED, IX_gvb_gvbbench_eshoponweb_DocKey NONCLUSTERED; a real search under SET STATISTICS XML ON ran: Clustered Index Scan of GvbBench.gvb_gvbbench_eshoponweb through PK_gvb_gvbbench_eshoponweb (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits). Durability: A commit returns after its transaction-log records are written to disk (SQL Server write-ahead logging; delayed durability is DISABLED); a database created here copies the model database: recovery model FULL, page_verify CHECKSUM; no global trace flags are enabled; mssql.conf of container gvb-mssql (/var/opt/mssql/mssql.conf, on the host at ~/gvb-data/engines/mssql/mssql.conf) does not exist, so it sets: nothing; it has no [control] or [traceflag] entry, so SQL Server\u0027s own Linux defaults for flushing writes apply (Microsoft\u0027s Linux performance guide names trace flag 3982 as that default; read from the guide, not tested here). Not tested by cutting power; whether the disk\u0027s own write cache reaches the media was not checked. Container settings from its environment (names only): MSSQL_AGENT_ENABLED, MSSQL_MEMORY_LIMIT_MB, MSSQL_PID, MSSQL_RPC_PORT, MSSQL_SA_PASSWORD..",
        "Load average 1.77 2.47 2.63 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 1,278 searches in 5.0 s, default@8 2,813 searches in 5.0 s.",
        "Settle: settled after 1.2 s and 300 searches (0 failed); p50 of the last windows of 100: 3.82, 3.85, 3.88 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 511 searches in 2.0 s: p50 3.847 ms against the settled p50 3.846 ms, 0% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:47:37.978Z to 2026-10-05T03:47:57.982Z (20.0 s), 5,070 searches, 0 failed, p50 3.854 ms, mean 3.942 ms, p99 5.807 ms, 253.5 QPS (1000/QPS 3.945 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:47:58.020Z to 2026-10-05T03:48:18.031Z (20.0 s), 12,371 searches, 0 failed, p50 12.371 ms, mean 12.934 ms, p99 25.341 ms, 618.2 QPS (1000/QPS 1.618 ms).",
        "Passes in the order run: default@1, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 4,942 sent, 0 failed (warmupErrors). Index after the searches: ready, 0 of 524 indexed (no index used, exact scan by design: dbo.gvb_gvbbench_eshoponweb in GvbBench holds 524 rows; sys.vector_indexes lists no index on the table; indexes: PK_gvb_gvbbench_eshoponweb CLUSTERED, IX_gvb_gvbbench_eshoponweb_DocKey NONCLUSTERED; a real search under SET STATISTICS XML ON ran: Clustered Index Scan of GvbBench.gvb_gvbbench_eshoponweb through PK_gvb_gvbbench_eshoponweb (IndexKind Clustered), 524 rows read, no vector index operator, 10 hits).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-mssql (7ac14f562e0d) on network gvb-mssql_default at container-ip:1433, not through docker-proxy localhost:14330. Open after the passes: container-ip:1433 x9 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-mssql: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-mssql: 85 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3510/3494 MHz, performance, outside load 0.13 before the warm-up, 0.13 during, client CPU 1.225 ms per search; default@8 3492/3492 MHz, performance, outside load 0.13 before the warm-up, 0.11 during, client CPU 1.209 ms per search."
      ]
    },
    {
      "name": "milvus",
      "engine": "Milvus 2.6.25 (standalone, embedded etcd, local storage, REST API v2)",
      "index": "HNSW M=16 efConstruction=128, ef=100, metric COSINE, Strong consistency searches; approximate only (no exact mode)",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.4435535,
        "rowsPerSecond": 1181.3682002283829,
        "countMatchSeconds": 1.6797796,
        "indexSeconds": 138.835344,
        "indexNote": "index Finished, type HNSW (COSINE, {\u0022M\u0022:16,\u0022efConstruction\u0022:128}), indexedRows 524 of 524 sealed rows, pendingRows 0; stored rows 524; LoadStateLoaded; query node: 1 sealed segment(s) with the index loaded covering 524 rows against 524 stored rows, 0 sealed without it, 0 rows in growing segments; datacoord: 1 live segment(s), 1 flushed and indexed covering 524 rows, 0 delete-log (L0) segment(s) waiting for a compaction, 3 segment(s) compacted away so far; flush, index build and load took 14.7 s, then compaction: 1 job(s) accepted by Milvus, layout ready and unchanged for 75 s, 124.1 s for the whole step; search ledger started, later state reads count the searches against the query node\u0027s own counters"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 8633,
        "p50Ms": 2.2104,
        "p95Ms": 2.737659999999999,
        "p99Ms": 3.5903720000000083,
        "qps": {
          "1": 431.6201405186789,
          "8": 1275.7095507570095
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 0,
        "clientCpuMsPerSearch": {
          "1": 0.5441,
          "8": 0.6327
        }
      },
      "ram": {
        "bytes": 232993587,
        "text": "222.2 MiB (docker stats)"
      },
      "disk": {
        "bytes": 11390890,
        "text": "10.86 MiB added by this load (157.93 MiB (whole engine data folder), 147.06 MiB before)"
      },
      "passOrder": [
        "default@1",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "index Finished, type HNSW (COSINE, {\u0022M\u0022:16,\u0022efConstruction\u0022:128}), indexedRows 524 of 524 sealed rows, pendingRows 0; stored rows 524; LoadStateLoaded; query node: 1 sealed segment(s) with the index loaded covering 524 rows against 524 stored rows, 0 sealed without it, 0 rows in growing segments; datacoord: 1 live segment(s), 1 flushed and indexed covering 524 rows, 0 delete-log (L0) segment(s) waiting for a compaction, 3 segment(s) compacted away so far; search ledger since the index finished: the sink sent 0 searches (searchParams.params.ef=100, Strong consistency), the query node counted 0 search requests for this collection, segment searches Sealed \u002B0 and Growing \u002B0, the same sealed segments with the same loaded index builds at both readings, segments compacted away \u002B0"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "index Finished, type HNSW (COSINE, {\u0022M\u0022:16,\u0022efConstruction\u0022:128}), indexedRows 524 of 524 sealed rows, pendingRows 0; stored rows 524; LoadStateLoaded; query node: 1 sealed segment(s) with the index loaded covering 524 rows against 524 stored rows, 0 sealed without it, 0 rows in growing segments; datacoord: 1 live segment(s), 1 flushed and indexed covering 524 rows, 0 delete-log (L0) segment(s) waiting for a compaction, 3 segment(s) compacted away so far; search ledger since the index finished: the sink sent 43784 searches (searchParams.params.ef=100, Strong consistency), the query node counted 43784 search requests for this collection, segment searches Sealed \u002B43011 and Growing \u002B0, the same sealed segments with the same loaded index builds at both readings, segments compacted away \u002B0"
        }
      },
      "durability": "Writes are not fsynced. Standalone uses the default message queue rocksmq (RocksDB, /var/lib/milvus/rdb_data, mq.type default) and flushed segments go to local-disk object storage (COMMON_STORAGETYPE=local in milvus.compose.yaml). Measured 2026-10-04 with strace over 30 acknowledged single-row upserts and one flush: fdatasync ran only on the embedded etcd files (member/wal, member/snap/db), never on rdb_data or the segment files. A host power loss or kernel crash can lose acknowledged rows that are still in the OS page cache; a Milvus process crash alone should not (inferred, not tested). Metadata in embedded etcd is fdatasynced on every commit.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started milvus.compose.yaml with every container created on CPUs 2-3,6-7: gvb-milvus cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (index Finished, type HNSW (COSINE, {\u0022M\u0022:16,\u0022efConstruction\u0022:128}), indexedRows 524 of 524 sealed rows, pendingRows 0; stored rows 524; LoadStateLoaded; query node: 1 sealed segment(s) with the index loaded covering 524 rows against 524 stored rows, 0 sealed without it, 0 rows in growing segments; datacoord: 1 live segment(s), 1 flushed and indexed covering 524 rows, 0 delete-log (L0) segment(s) waiting for a compaction, 3 segment(s) compacted away so far; search ledger since the index finished: the sink sent 0 searches (searchParams.params.ef=100, Strong consistency), the query node counted 0 search requests for this collection, segment searches Sealed \u002B0 and Growing \u002B0, the same sealed segments with the same loaded index builds at both readings, segments compacted away \u002B0). Durability: Writes are not fsynced. Standalone uses the default message queue rocksmq (RocksDB, /var/lib/milvus/rdb_data, mq.type default) and flushed segments go to local-disk object storage (COMMON_STORAGETYPE=local in milvus.compose.yaml). Measured 2026-10-04 with strace over 30 acknowledged single-row upserts and one flush: fdatasync ran only on the embedded etcd files (member/wal, member/snap/db), never on rdb_data or the segment files. A host power loss or kernel crash can lose acknowledged rows that are still in the OS page cache; a Milvus process crash alone should not (inferred, not tested). Metadata in embedded etcd is fdatasynced on every commit..",
        "Load average 0.52 1.72 2.33 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 2,119 searches in 5.0 s, default@8 6,311 searches in 5.0 s.",
        "Settle: settled after 0.7 s and 300 searches (0 failed); p50 of the last windows of 100: 2.21, 2.20, 2.20 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 864 searches in 2.0 s: p50 2.210 ms against the settled p50 2.199 ms, 1% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:51:02.727Z to 2026-10-05T03:51:22.729Z (20.0 s), 8,633 searches, 0 failed, p50 2.210 ms, mean 2.314 ms, p99 3.590 ms, 431.6 QPS (1000/QPS 2.317 ms).",
        "Pass default@8 after default@1: 2026-10-05T03:51:22.753Z to 2026-10-05T03:51:42.755Z (20.0 s), 25,517 searches, 0 failed, p50 5.740 ms, mean 6.268 ms, p99 14.261 ms, 1275.7 QPS (1000/QPS 0.784 ms).",
        "Passes in the order run: default@1, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 9,634 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (index Finished, type HNSW (COSINE, {\u0022M\u0022:16,\u0022efConstruction\u0022:128}), indexedRows 524 of 524 sealed rows, pendingRows 0; stored rows 524; LoadStateLoaded; query node: 1 sealed segment(s) with the index loaded covering 524 rows against 524 stored rows, 0 sealed without it, 0 rows in growing segments; datacoord: 1 live segment(s), 1 flushed and indexed covering 524 rows, 0 delete-log (L0) segment(s) waiting for a compaction, 3 segment(s) compacted away so far; search ledger since the index finished: the sink sent 43784 searches (searchParams.params.ef=100, Strong consistency), the query node counted 43784 search requests for this collection, segment searches Sealed \u002B43011 and Growing \u002B0, the same sealed segments with the same loaded index builds at both readings, segments compacted away \u002B0).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-milvus (c5d1652f4efe) on network gvb-milvus_default at container-ip:19530, not through docker-proxy localhost:19530; container gvb-milvus (c5d1652f4efe) on network gvb-milvus_default at container-ip:9091, not through docker-proxy localhost:9091. Open after the passes: container-ip:19530 x8 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-milvus: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-milvus: 24 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3541/3504 MHz, performance, outside load 0.16 before the warm-up, 0.10 during, client CPU 0.544 ms per search; default@8 3493/3493 MHz, performance, outside load 0.14 before the warm-up, 0.17 during, client CPU 0.633 ms per search."
      ]
    },
    {
      "name": "clickhouse",
      "engine": "ClickHouse 26.3.39.7 (MergeTree \u002B vector_similarity index)",
      "index": "vector_similarity HNSW cosineDistance, quantization bf16, M=16 ef_construction=128, hnsw_candidate_list_size_for_search=256, rescoring off; exact mode = full scan with skip indexes off",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 0.2231253,
        "rowsPerSecond": 2348.456226165298,
        "countMatchSeconds": 0.0025088,
        "indexSeconds": 6.1989823,
        "indexNote": "1 data part(s), index files on 1 of them, 524 of 524 live rows in indexed parts; 0 merge(s) running, 0 unfinished mutation(s); plan of the default search uses the Skip index vec_idx on 1 of 1 parts; wait took 6.2 s"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 4083,
        "p50Ms": 4.7282,
        "p95Ms": 5.630029999999997,
        "p99Ms": 7.412633999999999,
        "qps": {
          "8": 427.15520820614364,
          "1": 204.1025175903078
        },
        "recall": 0.9850000000000001,
        "ndcg": 0.5322548803349592,
        "errors": 0,
        "exactQueries": 8954,
        "exactP50Ms": 6.42605,
        "exactP95Ms": 9.231,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "8": 1.0502,
          "1": 0.827
        }
      },
      "ram": {
        "bytes": 763573043,
        "text": "728.2 MiB (docker stats)"
      },
      "disk": {
        "bytes": 950649750,
        "text": "906.61 MiB added by this load (3.52 GiB (whole engine data folder), 2.64 GiB before)"
      },
      "passOrder": [
        "default@8",
        "exact",
        "default@1"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "1 data part(s), index files on 1 of them, 524 of 524 live rows in indexed parts; 0 merge(s) running, 0 unfinished mutation(s); plan of the default search uses the Skip index vec_idx on 1 of 1 parts"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "1 data part(s), index files on 1 of them, 524 of 524 live rows in indexed parts; 0 merge(s) running, 0 unfinished mutation(s); plan of the default search uses the Skip index vec_idx on 1 of 1 parts"
        }
      },
      "durability": "Acknowledged inserts are not fsynced. The sink creates plain MergeTree tables, so the MergeTree settings are the defaults: fsync_after_insert 0 and fsync_part_directory 0 (system.merge_tree_settings), and async_insert 1 with wait_for_async_insert 1 is the server default for the gvb login (system.settings), so an insert is acknowledged once its part is written, not once it is on disk. Measured 2026-10-04 with strace over 30 acknowledged single-row inserts (30 Ok rows in system.asynchronous_insert_log): zero fsync, fdatasync or sync_file_range calls, while the control, a table created with fsync_after_insert=1, made 61 fdatasync calls for 5 inserts. A host power loss or kernel crash can lose acknowledged rows that are still in the OS page cache; a ClickHouse process crash alone should not (inferred, not tested).",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started clickhouse.compose.yaml with every container created on CPUs 2-3,6-7: gvb-clickhouse cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (1 data part(s), index files on 1 of them, 524 of 524 live rows in indexed parts; 0 merge(s) running, 0 unfinished mutation(s); plan of the default search uses the Skip index vec_idx on 1 of 1 parts). Durability: Acknowledged inserts are not fsynced. The sink creates plain MergeTree tables, so the MergeTree settings are the defaults: fsync_after_insert 0 and fsync_part_directory 0 (system.merge_tree_settings), and async_insert 1 with wait_for_async_insert 1 is the server default for the gvb login (system.settings), so an insert is acknowledged once its part is written, not once it is on disk. Measured 2026-10-04 with strace over 30 acknowledged single-row inserts (30 Ok rows in system.asynchronous_insert_log): zero fsync, fdatasync or sync_file_range calls, while the control, a table created with fsync_after_insert=1, made 61 fdatasync calls for 5 inserts. A host power loss or kernel crash can lose acknowledged rows that are still in the OS page cache; a ClickHouse process crash alone should not (inferred, not tested)..",
        "Load average 3.93 2.55 2.57 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@8 2,231 searches in 5.0 s, exact 773 searches in 5.0 s, default@1 935 searches in 5.0 s.",
        "Settle: settled after 1.4 s and 300 searches (0 failed); p50 of the last windows of 100: 4.68, 4.66, 4.68 ms, within 5% across 3 windows; confirmed by a trial right before the first timed pass of 412 searches in 2.0 s: p50 4.719 ms against the settled p50 4.675 ms, 1% apart (limit 15%).",
        "Pass default@8 after settle: 2026-10-05T03:52:20.574Z to 2026-10-05T03:52:40.593Z (20.0 s), 8,551 searches, 0 failed, p50 18.084 ms, mean 18.716 ms, p99 35.495 ms, 427.2 QPS (1000/QPS 2.341 ms).",
        "Pass exact after default@8: 2026-10-05T03:52:40.802Z to 2026-10-05T03:53:40.807Z (60.0 s), 8,954 searches, 0 failed, p50 6.426 ms, mean 6.697 ms, p99 10.047 ms, 149.2 QPS (1000/QPS 6.701 ms).",
        "Pass default@1 after exact: 2026-10-05T03:53:40.909Z to 2026-10-05T03:54:00.913Z (20.0 s), 4,083 searches, 0 failed, p50 4.728 ms, mean 4.896 ms, p99 7.413 ms, 204.1 QPS (1000/QPS 4.899 ms).",
        "Passes in the order run: default@8, exact, default@1; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 4,711 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (1 data part(s), index files on 1 of them, 524 of 524 live rows in indexed parts; 0 merge(s) running, 0 unfinished mutation(s); plan of the default search uses the Skip index vec_idx on 1 of 1 parts).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-clickhouse (e462fe3eb825) on network gvb-clickhouse_default at container-ip:8123, not through docker-proxy localhost:8123. Open after the passes: container-ip:8123 x1 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-clickhouse: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-clickhouse: 723 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@8 3523/3551 MHz, performance, outside load 0.15 before the warm-up, 0.12 during, client CPU 1.050 ms per search; exact 3592/3592 MHz, performance, outside load 0.13 before the warm-up, 0.13 during, client CPU 0.867 ms per search; default@1 3591/3591 MHz, performance, outside load 0.13 before the warm-up, 0.15 during, client CPU 0.827 ms per search."
      ]
    },
    {
      "name": "opensearch",
      "engine": "OpenSearch 3.9.0 (k-NN plugin, faiss)",
      "index": "faiss HNSW float32, no compression, m=16, ef_construction=128, cosinesimil; search k=top, ef_search=100; 1 shard, 0 replicas; graph built at any segment size (approximate_threshold=0); force-merged to one segment after the load",
      "hosting": "compose",
      "load": {
        "rows": 524,
        "batch": 1000,
        "upsertSeconds": 1.2818334,
        "rowsPerSecond": 408.78947295334945,
        "countMatchSeconds": 0.1191037,
        "indexSeconds": 0.5098074,
        "indexNote": "force-merged to one segment, graph ready after 0.5 s: every segment searched through its HNSW graph, covering 524 of 524 vectors: 1 segment(s), 0 merge(s) running, profiled probe search: ann_search_count 1 (segments tried through a graph), exact_search_count 0 (of those, scanned instead), approximate_threshold 0; force-merged to one segment on purpose, so one graph answers every search"
      },
      "search": {
        "countInTarget": 524,
        "latencySamples": 9726,
        "p50Ms": 2.0157499999999997,
        "p95Ms": 2.229175,
        "p99Ms": 2.7103,
        "qps": {
          "1": 486.2713537545504,
          "8": 1479.1824677936977
        },
        "recall": 1,
        "ndcg": 0.5181699774768911,
        "errors": 0,
        "exactQueries": 22691,
        "exactP50Ms": 2.5998,
        "exactP95Ms": 2.9402999999999997,
        "exactRecall": 1,
        "clientCpuMsPerSearch": {
          "1": 0.4677,
          "8": 0.5035
        }
      },
      "ram": {
        "bytes": 2794949967,
        "text": "2.6 GiB (docker stats)"
      },
      "disk": {
        "bytes": 9933555,
        "text": "9.47 MiB added by this load (10.2 MiB (whole engine data folder), 739.68 KiB before)"
      },
      "passOrder": [
        "default@1",
        "exact",
        "default@8"
      ],
      "warmupErrors": 0,
      "indexState": {
        "afterLoad": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "every segment searched through its HNSW graph, covering 524 of 524 vectors: 1 segment(s), 0 merge(s) running, profiled probe search: ann_search_count 1 (segments tried through a graph), exact_search_count 0 (of those, scanned instead), approximate_threshold 0; force-merged to one segment on purpose, so one graph answers every search"
        },
        "afterSearch": {
          "ready": true,
          "indexedVectors": 524,
          "totalVectors": 524,
          "detail": "every segment searched through its HNSW graph, covering 524 of 524 vectors: 1 segment(s), 0 merge(s) running, profiled probe search: ann_search_count 1 (segments tried through a graph), exact_search_count 0 (of those, scanned instead), approximate_threshold 0; force-merged to one segment on purpose, so one graph answers every search"
        }
      },
      "durability": "Every acknowledged bulk request is fsynced to the translog before the answer: index.translog.durability=request, the OpenSearch default, which neither this sink nor opensearch.compose.yaml overrides (OpenSearchReadinessTests reads it back from the live index). By that setting a process crash or power loss loses no acknowledged write; this is read from the setting, not shown by pulling power. One node and no replicas, so a lost disk loses the data.",
      "notes": [
        "Started by run-all for this measurement with every container created on CPUs 2-3,6-7 (started opensearch.compose.yaml with every container created on CPUs 2-3,6-7: gvb-opensearch cpuset 2-3,6-7 (read back from docker inspect)); stopped afterwards.",
        "Index after the load: ready, 524 of 524 indexed (every segment searched through its HNSW graph, covering 524 of 524 vectors: 1 segment(s), 0 merge(s) running, profiled probe search: ann_search_count 1 (segments tried through a graph), exact_search_count 0 (of those, scanned instead), approximate_threshold 0; force-merged to one segment on purpose, so one graph answers every search). Durability: Every acknowledged bulk request is fsynced to the translog before the answer: index.translog.durability=request, the OpenSearch default, which neither this sink nor opensearch.compose.yaml overrides (OpenSearchReadinessTests reads it back from the live index). By that setting a process crash or power loss loses no acknowledged write; this is read from the setting, not shown by pulling power. One node and no replicas, so a lost disk loses the data..",
        "Load average 3.40 3.28 2.88 (1/5/15 min) when searching began.",
        "Rehearsal before any timed pass, untimed, every pass type for at least 5 s through the same code the timed passes use: default@1 1,049 searches in 5.0 s, exact 1,266 searches in 5.0 s, default@8 4,044 searches in 5.0 s.",
        "Settle: settled after the one extension. First settle 1.2 s and 300 searches (0 failed); p50 of the last windows of 100: 4.15, 4.19, 4.13 ms, within 5% across 3 windows; trial right before the first timed pass of 675 searches in 2.0 s: p50 2.747 ms against the settled p50 4.152 ms, 51% apart (limit 15%), so the settle was extended once (30.0 s and 13,697 searches (0 failed); p50 of the last windows of 100: 2.03, 2.00, 2.00 ms); second trial of 959 searches in 2.0 s: p50 2.020 ms against the settled p50 1.999 ms, 1% apart (limit 15%).",
        "Pass default@1 after settle: 2026-10-05T03:55:27.312Z to 2026-10-05T03:55:47.314Z (20.0 s), 9,726 searches, 0 failed, p50 2.016 ms, mean 2.055 ms, p99 2.710 ms, 486.3 QPS (1000/QPS 2.056 ms).",
        "Pass exact after default@1: 2026-10-05T03:55:47.379Z to 2026-10-05T03:56:47.381Z (60.0 s), 22,691 searches, 0 failed, p50 2.600 ms, mean 2.642 ms, p99 3.539 ms, 378.2 QPS (1000/QPS 2.644 ms).",
        "Pass default@8 after exact: 2026-10-05T03:56:47.416Z to 2026-10-05T03:57:07.418Z (20.0 s), 29,587 searches, 0 failed, p50 5.207 ms, mean 5.406 ms, p99 10.577 ms, 1479.2 QPS (1000/QPS 0.676 ms).",
        "Passes in the order run: default@1, exact, default@8; each after its own warm-up. Untimed searches (rehearsal, settle, settle check and per-pass warm-ups): 22,070 sent, 0 failed (warmupErrors). Index after the searches: ready, 524 of 524 indexed (every segment searched through its HNSW graph, covering 524 of 524 vectors: 1 segment(s), 0 merge(s) running, profiled probe search: ann_search_count 1 (segments tried through a graph), exact_search_count 0 (of those, scanned instead), approximate_threshold 0; force-merged to one segment on purpose, so one graph answers every search).",
        "Benchmark copy gvbbench_eshoponweb dropped afterwards.",
        "Connection: container address on its Docker network, not the published port (no docker-proxy): container gvb-opensearch (b26c4fc723bd) on network engines_default at container-ip:9200, not through docker-proxy localhost:9201. Open after the passes: container-ip:9200 x8 (this target).",
        "CPU pinning: cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which), CPUs 2-3,6-7. Changed: container gvb-opensearch: already on CPUs 2-3,6-7 (its cpuset since creation), not changed. Read back: container gvb-opensearch: 55 thread(s) on CPUs 2-3,6-7 (every thread of the container).",
        "Clock per pass (median MHz of engine CPUs / client CPUs, governor, CPUs busy outside the benchmark, client CPU per search): default@1 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.12 during, client CPU 0.468 ms per search; exact 3492/3492 MHz, performance, outside load 0.12 before the warm-up, 0.11 during, client CPU 0.466 ms per search; default@8 3492/3492 MHz, performance, outside load 0.11 before the warm-up, 0.08 during, client CPU 0.504 ms per search."
      ]
    }
  ],
  "conditions": {
    "buildConfiguration": "Release",
    "jitOptimizerDisabled": false,
    "dotNet": ".NET 10.0.12",
    "runtimeVersion": "10.0.12",
    "serverGc": false,
    "machineControl": "on",
    "governor": "performance",
    "governorBefore": "schedutil",
    "governorAtEnd": "performance",
    "governorAfterRestore": "schedutil",
    "logicalCpus": 8,
    "threadSiblings": [
      "0,4",
      "1,5",
      "2,6",
      "3,7"
    ],
    "clientCpus": "0-1,4-5",
    "engineCpus": "2-3,6-7",
    "clientPinning": "client pid 1993757: 22 thread(s) on CPUs 0-1,4-5",
    "warmupSearches": 20,
    "exactSeconds": 60,
    "search": {
      "top": 10,
      "queries": "golden",
      "concurrency": [
        1,
        8
      ],
      "secondsPerLevel": 20,
      "warmupSearches": 20,
      "exactSeconds": 60,
      "searchTimeoutSeconds": 120,
      "batch": 1000,
      "seed": 502
    },
    "busyRule": "right before each pass\u0027s warm-up the run waits, up to 10 min, while processes outside the benchmark (everything but this client and the engine under test\u0027s cgroups) use more than 0.3 CPUs on average over the last 60 s or the last 5 s, neither window reaching back past the start of the target or of its engine (so the engine\u0027s own start-up is not outside work); if the box does not clear the pass runs anyway, flagged \u0027busy box\u0027, as is a pass whose own outside load is above the limit",
    "engines": [
      {
        "target": "mariadb",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvbbench-mariadb: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvbbench-mariadb: 14 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of mariadb-bench.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "weaviate",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-weaviate: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-weaviate: 10 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of weaviate.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "redis",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-redis: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-redis: 6 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of redis.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "sqlitevec",
        "hosting": "embedded",
        "method": "none: an embedded engine runs inside the benchmark client process, so it shares the client CPUs",
        "cpus": "0-1,4-5",
        "changes": [],
        "verified": [],
        "problems": [],
        "restored": []
      },
      {
        "target": "qdrant",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-qdrant: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-qdrant: 24 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of qdrant.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "oracle",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-oracle: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-oracle: 86 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of oracle.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "mongodb",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-mongodb: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-mongodb: 208 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of mongodb.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "vespa",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-vespa: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-vespa: 214 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of vespa.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "qdrant-hnsw",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-qdrant: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-qdrant: 24 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of qdrant.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "typesense",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-typesense: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-typesense: 303 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of typesense.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "chroma",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-chroma: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-chroma: 9 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of chroma.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "duckdb",
        "hosting": "embedded",
        "method": "none: an embedded engine runs inside the benchmark client process, so it shares the client CPUs",
        "cpus": "0-1,4-5",
        "changes": [],
        "verified": [],
        "problems": [],
        "restored": []
      },
      {
        "target": "elasticsearch",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-elasticsearch: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-elasticsearch: 74 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of elasticsearch.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "sql-diskann",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-mssql: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-mssql: 85 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of mssql.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "pgvector",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-pgvector: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-pgvector: 6 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of pgvector.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "sql",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-mssql: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-mssql: 85 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of mssql.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "milvus",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-milvus: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-milvus: 24 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of milvus.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "clickhouse",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-clickhouse: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-clickhouse: 723 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of clickhouse.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      },
      {
        "target": "opensearch",
        "hosting": "compose",
        "method": "cpuset from the container\u0027s creation when run-all started it on the engine CPUs, else docker update --cpuset-cpus (each container\u0027s change line says which)",
        "cpus": "2-3,6-7",
        "changes": [
          "container gvb-opensearch: already on CPUs 2-3,6-7 (its cpuset since creation), not changed"
        ],
        "verified": [
          "container gvb-opensearch: 55 thread(s) on CPUs 2-3,6-7 (every thread of the container)"
        ],
        "problems": [],
        "restored": [
          "no container of opensearch.compose.yaml is left on CPUs 2-3,6-7; nothing to put back"
        ]
      }
    ],
    "passes": [
      {
        "target": "mariadb",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:16:23.745Z",
        "endUtc": "2026-10-05T03:16:43.859Z",
        "seconds": 20.114,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3433,
            "median": 3492,
            "max": 3494
          },
          {
            "cpu": 1,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3432,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3489,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3488,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:16:21.717Z",
        "quietCheckLeadSeconds": 2.027,
        "outsideWindowFromUtc": "2026-10-05T03:16:05.170Z",
        "outsideLoadAtStart": 0.123,
        "outsideLoadRecentAtStart": 0.016,
        "outsideLoadDuring": 0.129,
        "accountingMismatch": false,
        "searches": 31456,
        "clientCpuSeconds": 15.1998,
        "clientCpuMsPerSearch": 0.4832,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:16:23.746Z to 2026-10-05T03:16:43.747Z, 80 samples, divided by the pass\u0027s 31456 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "mariadb",
        "pass": "exact",
        "startUtc": "2026-10-05T03:16:43.899Z",
        "endUtc": "2026-10-05T03:17:43.934Z",
        "seconds": 60.035,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3592,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3588,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3532,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3587,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3590,
            "median": 3592,
            "max": 3604
          },
          {
            "cpu": 5,
            "min": 3574,
            "median": 3592,
            "max": 3603
          },
          {
            "cpu": 6,
            "min": 3588,
            "median": 3592,
            "max": 3605
          },
          {
            "cpu": 7,
            "min": 3583,
            "median": 3592,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:16:43.867Z",
        "quietCheckLeadSeconds": 0.033,
        "outsideWindowFromUtc": "2026-10-05T03:16:05.170Z",
        "outsideLoadAtStart": 0.124,
        "outsideLoadRecentAtStart": 0.09,
        "outsideLoadDuring": 0.12,
        "accountingMismatch": false,
        "searches": 37291,
        "clientCpuSeconds": 18.7169,
        "clientCpuMsPerSearch": 0.5019,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:16:43.899Z to 2026-10-05T03:17:43.900Z, 240 samples, divided by the pass\u0027s 37291 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "mariadb",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:17:43.940Z",
        "endUtc": "2026-10-05T03:18:03.981Z",
        "seconds": 20.041,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 1,
            "min": 3489,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3505
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 4,
            "min": 3490,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3504
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:17:43.935Z",
        "quietCheckLeadSeconds": 0.005,
        "outsideWindowFromUtc": "2026-10-05T03:16:43.935Z",
        "outsideLoadAtStart": 0.12,
        "outsideLoadRecentAtStart": 0.104,
        "outsideLoadDuring": 0.062,
        "accountingMismatch": false,
        "searches": 119398,
        "clientCpuSeconds": 45.5593,
        "clientCpuMsPerSearch": 0.3816,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:17:43.940Z to 2026-10-05T03:18:03.941Z, 80 samples, divided by the pass\u0027s 119398 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "weaviate",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:18:42.105Z",
        "endUtc": "2026-10-05T03:19:02.111Z",
        "seconds": 20.006,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3587,
        "clientMhzMedian": 3565,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3492,
            "median": 3569,
            "max": 3602
          },
          {
            "cpu": 1,
            "min": 3493,
            "median": 3561,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3491,
            "median": 3574,
            "max": 3595
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3591,
            "max": 3598
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3551,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3573,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3585,
            "max": 3596
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3589,
            "max": 3595
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:18:39.986Z",
        "quietCheckLeadSeconds": 2.119,
        "outsideWindowFromUtc": "2026-10-05T03:18:27.039Z",
        "outsideLoadAtStart": 0.111,
        "outsideLoadRecentAtStart": 0.109,
        "outsideLoadDuring": 0.111,
        "accountingMismatch": false,
        "searches": 3474,
        "clientCpuSeconds": 1.9585,
        "clientCpuMsPerSearch": 0.5638,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:18:42.105Z to 2026-10-05T03:19:02.107Z, 80 samples, divided by the pass\u0027s 3474 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "weaviate",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:19:02.181Z",
        "endUtc": "2026-10-05T03:19:22.197Z",
        "seconds": 20.016,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3564,
        "clientMhzMedian": 3565,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3492,
            "median": 3579,
            "max": 3597
          },
          {
            "cpu": 1,
            "min": 3492,
            "median": 3556,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3566,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3564,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3571,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3559,
            "max": 3601
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3564,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3564,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:19:02.111Z",
        "quietCheckLeadSeconds": 0.069,
        "outsideWindowFromUtc": "2026-10-05T03:18:27.039Z",
        "outsideLoadAtStart": 0.109,
        "outsideLoadRecentAtStart": 0.097,
        "outsideLoadDuring": 0.11,
        "accountingMismatch": false,
        "searches": 6319,
        "clientCpuSeconds": 3.8009,
        "clientCpuMsPerSearch": 0.6015,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:19:02.181Z to 2026-10-05T03:19:22.195Z, 80 samples, divided by the pass\u0027s 6319 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "redis",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:19:47.864Z",
        "endUtc": "2026-10-05T03:20:07.925Z",
        "seconds": 20.062,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3490,
            "median": 3492,
            "max": 3503
          },
          {
            "cpu": 1,
            "min": 3491,
            "median": 3492,
            "max": 3496
          },
          {
            "cpu": 2,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3488,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:19:45.852Z",
        "quietCheckLeadSeconds": 2.011,
        "outsideWindowFromUtc": "2026-10-05T03:19:30.328Z",
        "outsideLoadAtStart": 0.091,
        "outsideLoadRecentAtStart": 0.086,
        "outsideLoadDuring": 0.101,
        "accountingMismatch": false,
        "searches": 53586,
        "clientCpuSeconds": 28.3062,
        "clientCpuMsPerSearch": 0.5282,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:19:47.864Z to 2026-10-05T03:20:07.864Z, 80 samples, divided by the pass\u0027s 53586 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "redis",
        "pass": "exact",
        "startUtc": "2026-10-05T03:20:07.934Z",
        "endUtc": "2026-10-05T03:21:08.102Z",
        "seconds": 60.168,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 241,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3486,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 2,
            "min": 3486,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3486,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3489,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:20:07.926Z",
        "quietCheckLeadSeconds": 0.009,
        "outsideWindowFromUtc": "2026-10-05T03:19:30.328Z",
        "outsideLoadAtStart": 0.094,
        "outsideLoadRecentAtStart": 0.074,
        "outsideLoadDuring": 0.102,
        "accountingMismatch": false,
        "searches": 176574,
        "clientCpuSeconds": 90.2377,
        "clientCpuMsPerSearch": 0.511,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:20:07.934Z to 2026-10-05T03:21:07.934Z, 240 samples, divided by the pass\u0027s 176574 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "redis",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:21:08.107Z",
        "endUtc": "2026-10-05T03:21:28.142Z",
        "seconds": 20.034,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3490,
            "median": 3492,
            "max": 3495
          },
          {
            "cpu": 1,
            "min": 3491,
            "median": 3492,
            "max": 3492
          },
          {
            "cpu": 2,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3497
          },
          {
            "cpu": 5,
            "min": 3489,
            "median": 3492,
            "max": 3495
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3481,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:21:08.103Z",
        "quietCheckLeadSeconds": 0.005,
        "outsideWindowFromUtc": "2026-10-05T03:20:08.103Z",
        "outsideLoadAtStart": 0.103,
        "outsideLoadRecentAtStart": 0.103,
        "outsideLoadDuring": 0.08,
        "accountingMismatch": false,
        "searches": 101797,
        "clientCpuSeconds": 36.3097,
        "clientCpuMsPerSearch": 0.3567,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:21:08.107Z to 2026-10-05T03:21:28.109Z, 80 samples, divided by the pass\u0027s 101797 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sqlitevec",
        "pass": "exact",
        "startUtc": "2026-10-05T03:21:47.489Z",
        "endUtc": "2026-10-05T03:22:47.519Z",
        "seconds": 60.03,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3600,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3589,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3583,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3586,
            "median": 3600,
            "max": 3656
          },
          {
            "cpu": 3,
            "min": 3588,
            "median": 3600,
            "max": 3620
          },
          {
            "cpu": 4,
            "min": 3589,
            "median": 3592,
            "max": 3678
          },
          {
            "cpu": 5,
            "min": 3587,
            "median": 3592,
            "max": 3603
          },
          {
            "cpu": 6,
            "min": 3586,
            "median": 3600,
            "max": 3630
          },
          {
            "cpu": 7,
            "min": 3542,
            "median": 3600,
            "max": 3604
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:21:45.451Z",
        "quietCheckLeadSeconds": 2.038,
        "outsideWindowFromUtc": "2026-10-05T03:21:29.732Z",
        "outsideLoadAtStart": 0.126,
        "outsideLoadRecentAtStart": 0.128,
        "outsideLoadDuring": 0.12,
        "accountingMismatch": false,
        "searches": 32665,
        "clientCpuSeconds": 63.1117,
        "clientCpuMsPerSearch": 1.9321,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:21:47.489Z to 2026-10-05T03:22:47.490Z, 240 samples, divided by the pass\u0027s 32665 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sqlitevec",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:22:47.557Z",
        "endUtc": "2026-10-05T03:23:07.568Z",
        "seconds": 20.011,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3598,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3590,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3550,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3522,
            "median": 3597,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3591,
            "median": 3599,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3590,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3561,
            "median": 3600,
            "max": 3662
          },
          {
            "cpu": 7,
            "min": 3588,
            "median": 3597,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:22:47.519Z",
        "quietCheckLeadSeconds": 0.038,
        "outsideWindowFromUtc": "2026-10-05T03:21:47.519Z",
        "outsideLoadAtStart": 0.12,
        "outsideLoadRecentAtStart": 0.12,
        "outsideLoadDuring": 0.116,
        "accountingMismatch": false,
        "searches": 10906,
        "clientCpuSeconds": 21.0616,
        "clientCpuMsPerSearch": 1.9312,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:22:47.558Z to 2026-10-05T03:23:07.559Z, 80 samples, divided by the pass\u0027s 10906 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sqlitevec",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:23:07.607Z",
        "endUtc": "2026-10-05T03:23:27.624Z",
        "seconds": 20.018,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3598,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3589,
            "median": 3595,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3589,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3564,
            "median": 3600,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3564,
            "median": 3600,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:23:07.568Z",
        "quietCheckLeadSeconds": 0.038,
        "outsideWindowFromUtc": "2026-10-05T03:22:07.568Z",
        "outsideLoadAtStart": 0.12,
        "outsideLoadRecentAtStart": 0.097,
        "outsideLoadDuring": 0.121,
        "accountingMismatch": false,
        "searches": 10597,
        "clientCpuSeconds": 21.0601,
        "clientCpuMsPerSearch": 1.9874,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:23:07.607Z to 2026-10-05T03:23:27.621Z, 80 samples, divided by the pass\u0027s 10597 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "qdrant",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:23:47.676Z",
        "endUtc": "2026-10-05T03:24:07.698Z",
        "seconds": 20.021,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3492,
            "max": 3549
          },
          {
            "cpu": 1,
            "min": 3490,
            "median": 3492,
            "max": 3543
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3567
          },
          {
            "cpu": 3,
            "min": 3491,
            "median": 3492,
            "max": 3536
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3556
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3573
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3540
          },
          {
            "cpu": 7,
            "min": 3452,
            "median": 3492,
            "max": 3580
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:23:45.658Z",
        "quietCheckLeadSeconds": 2.019,
        "outsideWindowFromUtc": "2026-10-05T03:23:33.963Z",
        "outsideLoadAtStart": 0.096,
        "outsideLoadRecentAtStart": 0.046,
        "outsideLoadDuring": 0.091,
        "accountingMismatch": false,
        "searches": 22354,
        "clientCpuSeconds": 16.4212,
        "clientCpuMsPerSearch": 0.7346,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:23:47.676Z to 2026-10-05T03:24:07.677Z, 80 samples, divided by the pass\u0027s 22354 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "qdrant",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:24:07.706Z",
        "endUtc": "2026-10-05T03:24:27.726Z",
        "seconds": 20.02,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3492,
            "median": 3492,
            "max": 3497
          },
          {
            "cpu": 1,
            "min": 3492,
            "median": 3492,
            "max": 3497
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3495
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3495
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3495
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3498
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3492
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3494
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:24:07.698Z",
        "quietCheckLeadSeconds": 0.008,
        "outsideWindowFromUtc": "2026-10-05T03:23:33.963Z",
        "outsideLoadAtStart": 0.094,
        "outsideLoadRecentAtStart": 0.072,
        "outsideLoadDuring": 0.07,
        "accountingMismatch": false,
        "searches": 65689,
        "clientCpuSeconds": 35.7412,
        "clientCpuMsPerSearch": 0.5441,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:24:07.706Z to 2026-10-05T03:24:27.707Z, 80 samples, divided by the pass\u0027s 65689 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "oracle",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:25:04.348Z",
        "endUtc": "2026-10-05T03:25:24.369Z",
        "seconds": 20.021,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 1197,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 1194,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 1192,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 1197,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 1197,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 1194,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 1198,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 1197,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:25:02.341Z",
        "quietCheckLeadSeconds": 2.007,
        "outsideWindowFromUtc": "2026-10-05T03:24:41.292Z",
        "outsideLoadAtStart": 0.149,
        "outsideLoadRecentAtStart": 0.131,
        "outsideLoadDuring": 0.118,
        "accountingMismatch": false,
        "searches": 63115,
        "clientCpuSeconds": 40.7465,
        "clientCpuMsPerSearch": 0.6456,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:25:04.348Z to 2026-10-05T03:25:24.349Z, 80 samples, divided by the pass\u0027s 63115 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "oracle",
        "pass": "exact",
        "startUtc": "2026-10-05T03:25:24.421Z",
        "endUtc": "2026-10-05T03:26:24.440Z",
        "seconds": 60.019,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3487,
            "median": 3492,
            "max": 3573
          },
          {
            "cpu": 1,
            "min": 3083,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3486,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3388,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3484,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:25:24.369Z",
        "quietCheckLeadSeconds": 0.052,
        "outsideWindowFromUtc": "2026-10-05T03:24:41.292Z",
        "outsideLoadAtStart": 0.132,
        "outsideLoadRecentAtStart": 0.077,
        "outsideLoadDuring": 0.116,
        "accountingMismatch": false,
        "searches": 24057,
        "clientCpuSeconds": 22.8933,
        "clientCpuMsPerSearch": 0.9516,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:25:24.421Z to 2026-10-05T03:26:24.422Z, 240 samples, divided by the pass\u0027s 24057 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "oracle",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:26:24.460Z",
        "endUtc": "2026-10-05T03:26:44.479Z",
        "seconds": 20.019,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3488,
            "median": 3492,
            "max": 3503
          },
          {
            "cpu": 1,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3487,
            "median": 3492,
            "max": 3583
          },
          {
            "cpu": 3,
            "min": 3491,
            "median": 3492,
            "max": 3506
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3487,
            "median": 3492,
            "max": 3519
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:26:24.441Z",
        "quietCheckLeadSeconds": 0.019,
        "outsideWindowFromUtc": "2026-10-05T03:25:24.441Z",
        "outsideLoadAtStart": 0.116,
        "outsideLoadRecentAtStart": 0.101,
        "outsideLoadDuring": 0.107,
        "accountingMismatch": false,
        "searches": 21772,
        "clientCpuSeconds": 19.1395,
        "clientCpuMsPerSearch": 0.8791,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:26:24.460Z to 2026-10-05T03:26:44.460Z, 80 samples, divided by the pass\u0027s 21772 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "mongodb",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:27:16.700Z",
        "endUtc": "2026-10-05T03:27:36.712Z",
        "seconds": 20.012,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3470,
            "median": 3492,
            "max": 3530
          },
          {
            "cpu": 1,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3468,
            "median": 3492,
            "max": 3515
          },
          {
            "cpu": 5,
            "min": 3485,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3486,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3470,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:27:14.670Z",
        "quietCheckLeadSeconds": 2.029,
        "outsideWindowFromUtc": "2026-10-05T03:26:54.301Z",
        "outsideLoadAtStart": 0.167,
        "outsideLoadRecentAtStart": 0.203,
        "outsideLoadDuring": 0.256,
        "accountingMismatch": false,
        "searches": 13982,
        "clientCpuSeconds": 4.4014,
        "clientCpuMsPerSearch": 0.3148,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:27:16.700Z to 2026-10-05T03:27:36.700Z, 80 samples, divided by the pass\u0027s 13982 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "mongodb",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:27:36.723Z",
        "endUtc": "2026-10-05T03:27:56.738Z",
        "seconds": 20.014,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 76,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3490,
            "median": 3492,
            "max": 3586
          },
          {
            "cpu": 1,
            "min": 3491,
            "median": 3492,
            "max": 3591
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3557
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3582
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3492,
            "max": 3570
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3591
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3557
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3553
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:27:36.712Z",
        "quietCheckLeadSeconds": 0.011,
        "outsideWindowFromUtc": "2026-10-05T03:26:54.301Z",
        "outsideLoadAtStart": 0.212,
        "outsideLoadRecentAtStart": 0.226,
        "outsideLoadDuring": 0.18,
        "accountingMismatch": false,
        "searches": 41275,
        "clientCpuSeconds": 11.7143,
        "clientCpuMsPerSearch": 0.2838,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:27:36.724Z to 2026-10-05T03:27:56.727Z, 76 samples, divided by the pass\u0027s 41275 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "mongodb",
        "pass": "exact",
        "startUtc": "2026-10-05T03:27:56.764Z",
        "endUtc": "2026-10-05T03:28:56.805Z",
        "seconds": 60.042,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 241,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3490,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 1,
            "min": 3378,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3448,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3441,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3208,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3490,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:27:56.738Z",
        "quietCheckLeadSeconds": 0.026,
        "outsideWindowFromUtc": "2026-10-05T03:26:56.738Z",
        "outsideLoadAtStart": 0.199,
        "outsideLoadRecentAtStart": 0.185,
        "outsideLoadDuring": 0.212,
        "accountingMismatch": false,
        "searches": 48020,
        "clientCpuSeconds": 14.7514,
        "clientCpuMsPerSearch": 0.3072,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:27:56.764Z to 2026-10-05T03:28:56.764Z, 240 samples, divided by the pass\u0027s 48020 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "vespa",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:31:10.589Z",
        "endUtc": "2026-10-05T03:31:30.599Z",
        "seconds": 20.01,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3501,
        "clientMhzMedian": 3497,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3497,
            "max": 3597
          },
          {
            "cpu": 1,
            "min": 3492,
            "median": 3494,
            "max": 3592
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3501,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3501,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3496,
            "max": 3650
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3498,
            "max": 3594
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3504,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3501,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:31:08.564Z",
        "quietCheckLeadSeconds": 2.024,
        "outsideWindowFromUtc": "2026-10-05T03:30:14.709Z",
        "outsideLoadAtStart": 0.138,
        "outsideLoadRecentAtStart": 0.086,
        "outsideLoadDuring": 0.164,
        "accountingMismatch": false,
        "searches": 18298,
        "clientCpuSeconds": 17.387,
        "clientCpuMsPerSearch": 0.9502,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:31:10.589Z to 2026-10-05T03:31:30.594Z, 80 samples, divided by the pass\u0027s 18298 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "vespa",
        "pass": "exact",
        "startUtc": "2026-10-05T03:31:30.671Z",
        "endUtc": "2026-10-05T03:32:30.698Z",
        "seconds": 60.027,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3516,
        "clientMhzMedian": 3496,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3489,
            "median": 3496,
            "max": 3593
          },
          {
            "cpu": 1,
            "min": 3484,
            "median": 3496,
            "max": 3588
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3516,
            "max": 3591
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3517,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3495,
            "max": 3590
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3496,
            "max": 3588
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3515,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3515,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:31:30.599Z",
        "quietCheckLeadSeconds": 0.072,
        "outsideWindowFromUtc": "2026-10-05T03:30:30.599Z",
        "outsideLoadAtStart": 0.147,
        "outsideLoadRecentAtStart": 0.15,
        "outsideLoadDuring": 0.079,
        "accountingMismatch": false,
        "searches": 30680,
        "clientCpuSeconds": 29.6605,
        "clientCpuMsPerSearch": 0.9668,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:31:30.671Z to 2026-10-05T03:32:30.672Z, 240 samples, divided by the pass\u0027s 30680 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "vespa",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:32:30.738Z",
        "endUtc": "2026-10-05T03:32:50.747Z",
        "seconds": 20.01,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3510,
        "clientMhzMedian": 3495,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3496,
            "max": 3586
          },
          {
            "cpu": 1,
            "min": 3491,
            "median": 3493,
            "max": 3573
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3510,
            "max": 3576
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3512,
            "max": 3566
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3495,
            "max": 3582
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3494,
            "max": 3578
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3508,
            "max": 3587
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3510,
            "max": 3584
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:32:30.699Z",
        "quietCheckLeadSeconds": 0.039,
        "outsideWindowFromUtc": "2026-10-05T03:31:30.699Z",
        "outsideLoadAtStart": 0.079,
        "outsideLoadRecentAtStart": 0.059,
        "outsideLoadDuring": 0.083,
        "accountingMismatch": false,
        "searches": 10320,
        "clientCpuSeconds": 9.9004,
        "clientCpuMsPerSearch": 0.9593,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:32:30.738Z to 2026-10-05T03:32:50.738Z, 80 samples, divided by the pass\u0027s 10320 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "qdrant-hnsw",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:33:26.568Z",
        "endUtc": "2026-10-05T03:33:46.588Z",
        "seconds": 20.019,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3492,
            "max": 3509
          },
          {
            "cpu": 1,
            "min": 3424,
            "median": 3492,
            "max": 3560
          },
          {
            "cpu": 2,
            "min": 3491,
            "median": 3492,
            "max": 3503
          },
          {
            "cpu": 3,
            "min": 3491,
            "median": 3492,
            "max": 3559
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3554
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3511
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3502
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:33:24.549Z",
        "quietCheckLeadSeconds": 2.019,
        "outsideWindowFromUtc": "2026-10-05T03:33:07.014Z",
        "outsideLoadAtStart": 0.092,
        "outsideLoadRecentAtStart": 0.124,
        "outsideLoadDuring": 0.058,
        "accountingMismatch": false,
        "searches": 21578,
        "clientCpuSeconds": 16.0218,
        "clientCpuMsPerSearch": 0.7425,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:33:26.568Z to 2026-10-05T03:33:46.568Z, 80 samples, divided by the pass\u0027s 21578 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "qdrant-hnsw",
        "pass": "exact",
        "startUtc": "2026-10-05T03:33:46.607Z",
        "endUtc": "2026-10-05T03:34:46.669Z",
        "seconds": 60.062,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3470,
            "median": 3492,
            "max": 3544
          },
          {
            "cpu": 1,
            "min": 3426,
            "median": 3492,
            "max": 3575
          },
          {
            "cpu": 2,
            "min": 3491,
            "median": 3492,
            "max": 3566
          },
          {
            "cpu": 3,
            "min": 3491,
            "median": 3492,
            "max": 3516
          },
          {
            "cpu": 4,
            "min": 3425,
            "median": 3492,
            "max": 3569
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3586
          },
          {
            "cpu": 6,
            "min": 3491,
            "median": 3492,
            "max": 3564
          },
          {
            "cpu": 7,
            "min": 3491,
            "median": 3492,
            "max": 3565
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:33:46.588Z",
        "quietCheckLeadSeconds": 0.019,
        "outsideWindowFromUtc": "2026-10-05T03:33:07.014Z",
        "outsideLoadAtStart": 0.076,
        "outsideLoadRecentAtStart": 0.047,
        "outsideLoadDuring": 0.079,
        "accountingMismatch": false,
        "searches": 66473,
        "clientCpuSeconds": 48.7954,
        "clientCpuMsPerSearch": 0.7341,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:33:46.607Z to 2026-10-05T03:34:46.607Z, 240 samples, divided by the pass\u0027s 66473 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "qdrant-hnsw",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:34:46.677Z",
        "endUtc": "2026-10-05T03:35:06.698Z",
        "seconds": 20.022,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3492,
            "median": 3492,
            "max": 3566
          },
          {
            "cpu": 1,
            "min": 3492,
            "median": 3492,
            "max": 3531
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3520
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3534
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3492,
            "max": 3517
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3519
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3514
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:34:46.670Z",
        "quietCheckLeadSeconds": 0.007,
        "outsideWindowFromUtc": "2026-10-05T03:33:46.670Z",
        "outsideLoadAtStart": 0.079,
        "outsideLoadRecentAtStart": 0.06,
        "outsideLoadDuring": 0.118,
        "accountingMismatch": false,
        "searches": 69142,
        "clientCpuSeconds": 36.0424,
        "clientCpuMsPerSearch": 0.5213,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:34:46.677Z to 2026-10-05T03:35:06.679Z, 80 samples, divided by the pass\u0027s 69142 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "typesense",
        "pass": "exact",
        "startUtc": "2026-10-05T03:35:35.727Z",
        "endUtc": "2026-10-05T03:36:35.736Z",
        "seconds": 60.008,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3592,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3586,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3590,
            "median": 3592,
            "max": 3611
          },
          {
            "cpu": 2,
            "min": 3585,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3589,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3537,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3590,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3584,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3587,
            "median": 3592,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:35:33.615Z",
        "quietCheckLeadSeconds": 2.113,
        "outsideWindowFromUtc": "2026-10-05T03:35:14.599Z",
        "outsideLoadAtStart": 0.072,
        "outsideLoadRecentAtStart": -0.057,
        "outsideLoadDuring": 0.123,
        "accountingMismatch": true,
        "accountingMismatchReason": "outside load over the last few seconds before the warm-up was -0.057 CPUs, below -0.05",
        "searches": 10880,
        "clientCpuSeconds": 5.7002,
        "clientCpuMsPerSearch": 0.5239,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:35:35.727Z to 2026-10-05T03:36:35.728Z, 240 samples, divided by the pass\u0027s 10880 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "typesense",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:36:35.817Z",
        "endUtc": "2026-10-05T03:36:55.823Z",
        "seconds": 20.006,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3592,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3588,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3590,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3591,
            "median": 3592,
            "max": 3601
          },
          {
            "cpu": 3,
            "min": 3586,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3589,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3589,
            "median": 3593,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3589,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3585,
            "median": 3592,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:36:35.736Z",
        "quietCheckLeadSeconds": 0.081,
        "outsideWindowFromUtc": "2026-10-05T03:35:35.736Z",
        "outsideLoadAtStart": 0.123,
        "outsideLoadRecentAtStart": 0.13,
        "outsideLoadDuring": 0.116,
        "accountingMismatch": false,
        "searches": 4907,
        "clientCpuSeconds": 2.5144,
        "clientCpuMsPerSearch": 0.5124,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:36:35.817Z to 2026-10-05T03:36:55.819Z, 80 samples, divided by the pass\u0027s 4907 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "typesense",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:36:55.859Z",
        "endUtc": "2026-10-05T03:37:15.872Z",
        "seconds": 20.013,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3592,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3590,
            "median": 3592,
            "max": 3597
          },
          {
            "cpu": 1,
            "min": 3589,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3592,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3592,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3591,
            "median": 3592,
            "max": 3599
          },
          {
            "cpu": 5,
            "min": 3590,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3591,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3592,
            "median": 3592,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:36:55.823Z",
        "quietCheckLeadSeconds": 0.036,
        "outsideWindowFromUtc": "2026-10-05T03:35:55.823Z",
        "outsideLoadAtStart": 0.119,
        "outsideLoadRecentAtStart": 0.126,
        "outsideLoadDuring": -0.06,
        "accountingMismatch": true,
        "accountingMismatchReason": "outside load during the pass was -0.060 CPUs, below -0.05",
        "searches": 11770,
        "clientCpuSeconds": 6.7637,
        "clientCpuMsPerSearch": 0.5747,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:36:55.859Z to 2026-10-05T03:37:15.870Z, 80 samples, divided by the pass\u0027s 11770 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "chroma",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:37:38.069Z",
        "endUtc": "2026-10-05T03:37:58.080Z",
        "seconds": 20.011,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3592,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3590,
            "median": 3592,
            "max": 3602
          },
          {
            "cpu": 1,
            "min": 3591,
            "median": 3592,
            "max": 3597
          },
          {
            "cpu": 2,
            "min": 3592,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3591,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3588,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3588,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3591,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3592,
            "median": 3592,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:37:36.042Z",
        "quietCheckLeadSeconds": 2.026,
        "outsideWindowFromUtc": "2026-10-05T03:37:24.744Z",
        "outsideLoadAtStart": 0.087,
        "outsideLoadRecentAtStart": 0.1,
        "outsideLoadDuring": 0.066,
        "accountingMismatch": false,
        "searches": 16106,
        "clientCpuSeconds": 7.3979,
        "clientCpuMsPerSearch": 0.4593,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:37:38.069Z to 2026-10-05T03:37:58.076Z, 80 samples, divided by the pass\u0027s 16106 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "chroma",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:37:58.123Z",
        "endUtc": "2026-10-05T03:38:18.132Z",
        "seconds": 20.009,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3592,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3590,
            "median": 3592,
            "max": 3596
          },
          {
            "cpu": 1,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3529,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3560,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3572,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3522,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3540,
            "median": 3592,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3580,
            "median": 3592,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:37:58.081Z",
        "quietCheckLeadSeconds": 0.042,
        "outsideWindowFromUtc": "2026-10-05T03:37:24.744Z",
        "outsideLoadAtStart": 0.072,
        "outsideLoadRecentAtStart": 0.081,
        "outsideLoadDuring": 0.07,
        "accountingMismatch": false,
        "searches": 9758,
        "clientCpuSeconds": 4.5117,
        "clientCpuMsPerSearch": 0.4624,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:37:58.123Z to 2026-10-05T03:38:18.123Z, 80 samples, divided by the pass\u0027s 9758 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "duckdb",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:38:38.457Z",
        "endUtc": "2026-10-05T03:38:58.464Z",
        "seconds": 20.007,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3593,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3588,
            "median": 3592,
            "max": 3599
          },
          {
            "cpu": 1,
            "min": 3591,
            "median": 3592,
            "max": 3593
          },
          {
            "cpu": 2,
            "min": 3591,
            "median": 3599,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3591,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3591,
            "median": 3592,
            "max": 3603
          },
          {
            "cpu": 5,
            "min": 3587,
            "median": 3592,
            "max": 3596
          },
          {
            "cpu": 6,
            "min": 3590,
            "median": 3593,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3591,
            "median": 3593,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:38:36.384Z",
        "quietCheckLeadSeconds": 2.073,
        "outsideWindowFromUtc": "2026-10-05T03:38:19.786Z",
        "outsideLoadAtStart": 0.102,
        "outsideLoadRecentAtStart": 0.131,
        "outsideLoadDuring": 0.091,
        "accountingMismatch": false,
        "searches": 5678,
        "clientCpuSeconds": 27.3129,
        "clientCpuMsPerSearch": 4.8103,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:38:38.457Z to 2026-10-05T03:38:58.460Z, 80 samples, divided by the pass\u0027s 5678 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "duckdb",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:38:58.541Z",
        "endUtc": "2026-10-05T03:39:18.571Z",
        "seconds": 20.03,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3597,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3590,
            "median": 3592,
            "max": 3593
          },
          {
            "cpu": 1,
            "min": 3590,
            "median": 3592,
            "max": 3594
          },
          {
            "cpu": 2,
            "min": 3589,
            "median": 3595,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3590,
            "median": 3594,
            "max": 3624
          },
          {
            "cpu": 4,
            "min": 3591,
            "median": 3592,
            "max": 3599
          },
          {
            "cpu": 5,
            "min": 3590,
            "median": 3592,
            "max": 3603
          },
          {
            "cpu": 6,
            "min": 3591,
            "median": 3598,
            "max": 3601
          },
          {
            "cpu": 7,
            "min": 3591,
            "median": 3600,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:38:58.465Z",
        "quietCheckLeadSeconds": 0.076,
        "outsideWindowFromUtc": "2026-10-05T03:38:19.786Z",
        "outsideLoadAtStart": 0.096,
        "outsideLoadRecentAtStart": 0.101,
        "outsideLoadDuring": 0.081,
        "accountingMismatch": false,
        "searches": 5597,
        "clientCpuSeconds": 27.6772,
        "clientCpuMsPerSearch": 4.945,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:38:58.541Z to 2026-10-05T03:39:18.570Z, 80 samples, divided by the pass\u0027s 5597 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "duckdb",
        "pass": "exact",
        "startUtc": "2026-10-05T03:39:18.657Z",
        "endUtc": "2026-10-05T03:40:18.670Z",
        "seconds": 60.013,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3593,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3588,
            "median": 3592,
            "max": 3607
          },
          {
            "cpu": 1,
            "min": 3589,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3525,
            "median": 3593,
            "max": 3608
          },
          {
            "cpu": 3,
            "min": 3548,
            "median": 3594,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3591,
            "median": 3592,
            "max": 3603
          },
          {
            "cpu": 5,
            "min": 3590,
            "median": 3592,
            "max": 3599
          },
          {
            "cpu": 6,
            "min": 3487,
            "median": 3593,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3540,
            "median": 3593,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:39:18.571Z",
        "quietCheckLeadSeconds": 0.085,
        "outsideWindowFromUtc": "2026-10-05T03:38:19.786Z",
        "outsideLoadAtStart": 0.093,
        "outsideLoadRecentAtStart": 0.093,
        "outsideLoadDuring": 0.115,
        "accountingMismatch": false,
        "searches": 14672,
        "clientCpuSeconds": 88.5572,
        "clientCpuMsPerSearch": 6.0358,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:39:18.657Z to 2026-10-05T03:40:18.659Z, 240 samples, divided by the pass\u0027s 14672 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "elasticsearch",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:41:10.855Z",
        "endUtc": "2026-10-05T03:41:30.868Z",
        "seconds": 20.014,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3489,
            "median": 3492,
            "max": 3591
          },
          {
            "cpu": 1,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3438,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3491,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:41:08.810Z",
        "quietCheckLeadSeconds": 2.044,
        "outsideWindowFromUtc": "2026-10-05T03:40:50.559Z",
        "outsideLoadAtStart": 0.115,
        "outsideLoadRecentAtStart": 0.129,
        "outsideLoadDuring": 0.111,
        "accountingMismatch": false,
        "searches": 14320,
        "clientCpuSeconds": 6.6764,
        "clientCpuMsPerSearch": 0.4662,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:41:10.855Z to 2026-10-05T03:41:30.856Z, 80 samples, divided by the pass\u0027s 14320 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "elasticsearch",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:41:30.878Z",
        "endUtc": "2026-10-05T03:41:50.895Z",
        "seconds": 20.018,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3489,
            "median": 3492,
            "max": 3494
          },
          {
            "cpu": 1,
            "min": 3491,
            "median": 3492,
            "max": 3494
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3492
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3492
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3492,
            "max": 3497
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3500
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3492
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3492
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:41:30.869Z",
        "quietCheckLeadSeconds": 0.009,
        "outsideWindowFromUtc": "2026-10-05T03:40:50.559Z",
        "outsideLoadAtStart": 0.114,
        "outsideLoadRecentAtStart": 0.109,
        "outsideLoadDuring": 0.112,
        "accountingMismatch": false,
        "searches": 53064,
        "clientCpuSeconds": 25.9942,
        "clientCpuMsPerSearch": 0.4899,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:41:30.878Z to 2026-10-05T03:41:50.880Z, 80 samples, divided by the pass\u0027s 53064 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "elasticsearch",
        "pass": "exact",
        "startUtc": "2026-10-05T03:41:50.922Z",
        "endUtc": "2026-10-05T03:42:50.963Z",
        "seconds": 60.04,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3458,
            "median": 3492,
            "max": 3496
          },
          {
            "cpu": 1,
            "min": 3313,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3431,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3472,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3476,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:41:50.896Z",
        "quietCheckLeadSeconds": 0.027,
        "outsideWindowFromUtc": "2026-10-05T03:40:50.896Z",
        "outsideLoadAtStart": 0.113,
        "outsideLoadRecentAtStart": 0.101,
        "outsideLoadDuring": 0.113,
        "accountingMismatch": false,
        "searches": 47574,
        "clientCpuSeconds": 21.911,
        "clientCpuMsPerSearch": 0.4606,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:41:50.922Z to 2026-10-05T03:42:50.923Z, 240 samples, divided by the pass\u0027s 47574 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sql-diskann",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:43:25.569Z",
        "endUtc": "2026-10-05T03:43:45.579Z",
        "seconds": 20.009,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3483,
            "median": 3492,
            "max": 3500
          },
          {
            "cpu": 1,
            "min": 3490,
            "median": 3492,
            "max": 3504
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3530
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3530
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3492,
            "max": 3516
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3508
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3530
          },
          {
            "cpu": 7,
            "min": 3491,
            "median": 3492,
            "max": 3530
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:43:23.537Z",
        "quietCheckLeadSeconds": 2.033,
        "outsideWindowFromUtc": "2026-10-05T03:43:01.839Z",
        "outsideLoadAtStart": 0.115,
        "outsideLoadRecentAtStart": 0.118,
        "outsideLoadDuring": 0.09,
        "accountingMismatch": false,
        "searches": 13901,
        "clientCpuSeconds": 15.2831,
        "clientCpuMsPerSearch": 1.0994,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:43:25.569Z to 2026-10-05T03:43:45.576Z, 80 samples, divided by the pass\u0027s 13901 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sql-diskann",
        "pass": "exact",
        "startUtc": "2026-10-05T03:43:45.653Z",
        "endUtc": "2026-10-05T03:44:45.668Z",
        "seconds": 60.015,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3503,
        "clientMhzMedian": 3493,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3490,
            "median": 3494,
            "max": 3592
          },
          {
            "cpu": 1,
            "min": 3485,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3487,
            "median": 3503,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3490,
            "median": 3504,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3422,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3487,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3487,
            "median": 3503,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3488,
            "median": 3501,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:43:45.579Z",
        "quietCheckLeadSeconds": 0.074,
        "outsideWindowFromUtc": "2026-10-05T03:43:01.839Z",
        "outsideLoadAtStart": 0.103,
        "outsideLoadRecentAtStart": 0.069,
        "outsideLoadDuring": 0.117,
        "accountingMismatch": false,
        "searches": 16349,
        "clientCpuSeconds": 19.1003,
        "clientCpuMsPerSearch": 1.1683,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:43:45.653Z to 2026-10-05T03:44:45.656Z, 240 samples, divided by the pass\u0027s 16349 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sql-diskann",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:44:45.741Z",
        "endUtc": "2026-10-05T03:45:05.747Z",
        "seconds": 20.006,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3496,
        "clientMhzMedian": 3494,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3494,
            "max": 3590
          },
          {
            "cpu": 1,
            "min": 3490,
            "median": 3493,
            "max": 3588
          },
          {
            "cpu": 2,
            "min": 3488,
            "median": 3495,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3491,
            "median": 3495,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3490,
            "median": 3494,
            "max": 3594
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3497,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3490,
            "median": 3506,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:44:45.668Z",
        "quietCheckLeadSeconds": 0.073,
        "outsideWindowFromUtc": "2026-10-05T03:43:45.668Z",
        "outsideLoadAtStart": 0.117,
        "outsideLoadRecentAtStart": 0.094,
        "outsideLoadDuring": 0.129,
        "accountingMismatch": false,
        "searches": 5511,
        "clientCpuSeconds": 5.671,
        "clientCpuMsPerSearch": 1.029,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:44:45.742Z to 2026-10-05T03:45:05.742Z, 80 samples, divided by the pass\u0027s 5511 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "pgvector",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:45:32.507Z",
        "endUtc": "2026-10-05T03:45:52.543Z",
        "seconds": 20.036,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 81,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3492,
            "median": 3492,
            "max": 3587
          },
          {
            "cpu": 1,
            "min": 3492,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3591
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3492,
            "max": 3591
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3590
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3593
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:45:30.501Z",
        "quietCheckLeadSeconds": 2.006,
        "outsideWindowFromUtc": "2026-10-05T03:45:13.966Z",
        "outsideLoadAtStart": 0.134,
        "outsideLoadRecentAtStart": 0.112,
        "outsideLoadDuring": 0.118,
        "accountingMismatch": false,
        "searches": 82047,
        "clientCpuSeconds": 44.5372,
        "clientCpuMsPerSearch": 0.5428,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:45:32.507Z to 2026-10-05T03:45:52.508Z, 80 samples, divided by the pass\u0027s 82047 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "pgvector",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:45:52.567Z",
        "endUtc": "2026-10-05T03:46:12.589Z",
        "seconds": 20.022,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3492,
            "max": 3494
          },
          {
            "cpu": 1,
            "min": 3490,
            "median": 3492,
            "max": 3493
          },
          {
            "cpu": 2,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3497
          },
          {
            "cpu": 6,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3486,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:45:52.543Z",
        "quietCheckLeadSeconds": 0.024,
        "outsideWindowFromUtc": "2026-10-05T03:45:13.966Z",
        "outsideLoadAtStart": 0.122,
        "outsideLoadRecentAtStart": 0.114,
        "outsideLoadDuring": 0.114,
        "accountingMismatch": false,
        "searches": 23165,
        "clientCpuSeconds": 15.8229,
        "clientCpuMsPerSearch": 0.6831,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:45:52.567Z to 2026-10-05T03:46:12.568Z, 80 samples, divided by the pass\u0027s 23165 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "pgvector",
        "pass": "exact",
        "startUtc": "2026-10-05T03:46:12.634Z",
        "endUtc": "2026-10-05T03:47:12.657Z",
        "seconds": 60.023,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3488,
            "median": 3492,
            "max": 3502
          },
          {
            "cpu": 1,
            "min": 3487,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3459,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3490,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3465,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3479,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3488,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:46:12.589Z",
        "quietCheckLeadSeconds": 0.045,
        "outsideWindowFromUtc": "2026-10-05T03:45:13.966Z",
        "outsideLoadAtStart": 0.12,
        "outsideLoadRecentAtStart": 0.111,
        "outsideLoadDuring": 0.109,
        "accountingMismatch": false,
        "searches": 26830,
        "clientCpuSeconds": 18.5823,
        "clientCpuMsPerSearch": 0.6926,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:46:12.634Z to 2026-10-05T03:47:12.636Z, 240 samples, divided by the pass\u0027s 26830 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sql",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:47:37.978Z",
        "endUtc": "2026-10-05T03:47:57.986Z",
        "seconds": 20.008,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3510,
        "clientMhzMedian": 3494,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3494,
            "max": 3592
          },
          {
            "cpu": 1,
            "min": 3488,
            "median": 3493,
            "max": 3582
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3512,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3490,
            "median": 3509,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3494,
            "max": 3579
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3469,
            "median": 3507,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3510,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:47:35.880Z",
        "quietCheckLeadSeconds": 2.099,
        "outsideWindowFromUtc": "2026-10-05T03:47:22.002Z",
        "outsideLoadAtStart": 0.128,
        "outsideLoadRecentAtStart": 0.157,
        "outsideLoadDuring": 0.133,
        "accountingMismatch": false,
        "searches": 5070,
        "clientCpuSeconds": 6.2084,
        "clientCpuMsPerSearch": 1.2245,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:47:37.978Z to 2026-10-05T03:47:57.982Z, 80 samples, divided by the pass\u0027s 5070 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "sql",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:47:58.020Z",
        "endUtc": "2026-10-05T03:48:18.034Z",
        "seconds": 20.014,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3489,
            "median": 3492,
            "max": 3502
          },
          {
            "cpu": 1,
            "min": 3487,
            "median": 3492,
            "max": 3509
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3550
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3551
          },
          {
            "cpu": 4,
            "min": 3490,
            "median": 3492,
            "max": 3507
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3569
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3550
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3551
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:47:57.987Z",
        "quietCheckLeadSeconds": 0.033,
        "outsideWindowFromUtc": "2026-10-05T03:47:22.002Z",
        "outsideLoadAtStart": 0.134,
        "outsideLoadRecentAtStart": 0.163,
        "outsideLoadDuring": 0.108,
        "accountingMismatch": false,
        "searches": 12371,
        "clientCpuSeconds": 14.9604,
        "clientCpuMsPerSearch": 1.2093,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:47:58.020Z to 2026-10-05T03:48:18.031Z, 80 samples, divided by the pass\u0027s 12371 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "milvus",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:51:02.727Z",
        "endUtc": "2026-10-05T03:51:22.736Z",
        "seconds": 20.008,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3541,
        "clientMhzMedian": 3504,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3506,
            "max": 3591
          },
          {
            "cpu": 1,
            "min": 3492,
            "median": 3501,
            "max": 3592
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3536,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3546,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3501,
            "max": 3593
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3507,
            "max": 3592
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3540,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3541,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:51:00.677Z",
        "quietCheckLeadSeconds": 2.05,
        "outsideWindowFromUtc": "2026-10-05T03:50:00.677Z",
        "outsideLoadAtStart": 0.155,
        "outsideLoadRecentAtStart": 0.202,
        "outsideLoadDuring": 0.097,
        "accountingMismatch": false,
        "searches": 8633,
        "clientCpuSeconds": 4.6974,
        "clientCpuMsPerSearch": 0.5441,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:51:02.727Z to 2026-10-05T03:51:22.729Z, 80 samples, divided by the pass\u0027s 8633 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "milvus",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:51:22.753Z",
        "endUtc": "2026-10-05T03:51:42.761Z",
        "seconds": 20.008,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3493,
        "clientMhzMedian": 3493,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3491,
            "median": 3493,
            "max": 3595
          },
          {
            "cpu": 1,
            "min": 3088,
            "median": 3493,
            "max": 3596
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3494,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 1198,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3492,
            "median": 3493,
            "max": 3601
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3494,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3494,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:51:22.736Z",
        "quietCheckLeadSeconds": 0.017,
        "outsideWindowFromUtc": "2026-10-05T03:50:22.736Z",
        "outsideLoadAtStart": 0.141,
        "outsideLoadRecentAtStart": 0.102,
        "outsideLoadDuring": 0.165,
        "accountingMismatch": false,
        "searches": 25517,
        "clientCpuSeconds": 16.1449,
        "clientCpuMsPerSearch": 0.6327,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:51:22.753Z to 2026-10-05T03:51:42.755Z, 80 samples, divided by the pass\u0027s 25517 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "clickhouse",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:52:20.574Z",
        "endUtc": "2026-10-05T03:52:40.595Z",
        "seconds": 20.02,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3523,
        "clientMhzMedian": 3551,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3490,
            "median": 3540,
            "max": 3594
          },
          {
            "cpu": 1,
            "min": 3492,
            "median": 3577,
            "max": 3635
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3523,
            "max": 3592
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3523,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3491,
            "median": 3548,
            "max": 3595
          },
          {
            "cpu": 5,
            "min": 3492,
            "median": 3554,
            "max": 3596
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3526,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3521,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:52:18.525Z",
        "quietCheckLeadSeconds": 2.049,
        "outsideWindowFromUtc": "2026-10-05T03:51:55.539Z",
        "outsideLoadAtStart": 0.148,
        "outsideLoadRecentAtStart": 0.175,
        "outsideLoadDuring": 0.117,
        "accountingMismatch": false,
        "searches": 8551,
        "clientCpuSeconds": 8.9798,
        "clientCpuMsPerSearch": 1.0502,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:52:20.574Z to 2026-10-05T03:52:40.593Z, 80 samples, divided by the pass\u0027s 8551 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "clickhouse",
        "pass": "exact",
        "startUtc": "2026-10-05T03:52:40.802Z",
        "endUtc": "2026-10-05T03:53:40.813Z",
        "seconds": 60.011,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3592,
        "clientMhzMedian": 3592,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3557,
            "median": 3592,
            "max": 3599
          },
          {
            "cpu": 1,
            "min": 3590,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3591,
            "median": 3592,
            "max": 3607
          },
          {
            "cpu": 3,
            "min": 3582,
            "median": 3592,
            "max": 3599
          },
          {
            "cpu": 4,
            "min": 3587,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3539,
            "median": 3592,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3587,
            "median": 3592,
            "max": 3601
          },
          {
            "cpu": 7,
            "min": 3590,
            "median": 3592,
            "max": 3598
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:52:40.595Z",
        "quietCheckLeadSeconds": 0.207,
        "outsideWindowFromUtc": "2026-10-05T03:51:55.539Z",
        "outsideLoadAtStart": 0.131,
        "outsideLoadRecentAtStart": 0.137,
        "outsideLoadDuring": 0.13,
        "accountingMismatch": false,
        "searches": 8954,
        "clientCpuSeconds": 7.7636,
        "clientCpuMsPerSearch": 0.8671,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:52:40.802Z to 2026-10-05T03:53:40.807Z, 240 samples, divided by the pass\u0027s 8954 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "clickhouse",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:53:40.909Z",
        "endUtc": "2026-10-05T03:54:00.917Z",
        "seconds": 20.008,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3591,
        "clientMhzMedian": 3591,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3492,
            "median": 3586,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3491,
            "median": 3591,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3591,
            "max": 3595
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3591,
            "max": 3594
          },
          {
            "cpu": 4,
            "min": 3527,
            "median": 3591,
            "max": 3628
          },
          {
            "cpu": 5,
            "min": 3523,
            "median": 3591,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3591,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3591,
            "max": 3593
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:53:40.813Z",
        "quietCheckLeadSeconds": 0.095,
        "outsideWindowFromUtc": "2026-10-05T03:52:40.813Z",
        "outsideLoadAtStart": 0.13,
        "outsideLoadRecentAtStart": 0.143,
        "outsideLoadDuring": 0.145,
        "accountingMismatch": false,
        "searches": 4083,
        "clientCpuSeconds": 3.3767,
        "clientCpuMsPerSearch": 0.827,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:53:40.909Z to 2026-10-05T03:54:00.913Z, 80 samples, divided by the pass\u0027s 4083 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "opensearch",
        "pass": "default@1",
        "startUtc": "2026-10-05T03:55:27.312Z",
        "endUtc": "2026-10-05T03:55:47.322Z",
        "seconds": 20.01,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3489,
            "median": 3492,
            "max": 3593
          },
          {
            "cpu": 1,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3491,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 4,
            "min": 3489,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3483,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3491,
            "median": 3492,
            "max": 3592
          },
          {
            "cpu": 7,
            "min": 3491,
            "median": 3492,
            "max": 3592
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:55:27.272Z",
        "quietCheckLeadSeconds": 0.041,
        "outsideWindowFromUtc": "2026-10-05T03:54:34.791Z",
        "outsideLoadAtStart": 0.12,
        "outsideLoadRecentAtStart": 0.104,
        "outsideLoadDuring": 0.119,
        "accountingMismatch": false,
        "searches": 9726,
        "clientCpuSeconds": 4.5487,
        "clientCpuMsPerSearch": 0.4677,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:55:27.312Z to 2026-10-05T03:55:47.314Z, 80 samples, divided by the pass\u0027s 9726 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "opensearch",
        "pass": "exact",
        "startUtc": "2026-10-05T03:55:47.379Z",
        "endUtc": "2026-10-05T03:56:47.398Z",
        "seconds": 60.019,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 240,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3420,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 1,
            "min": 3402,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 2,
            "min": 3488,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 3,
            "min": 3486,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 4,
            "min": 3489,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 5,
            "min": 3487,
            "median": 3493,
            "max": 3600
          },
          {
            "cpu": 6,
            "min": 3486,
            "median": 3492,
            "max": 3600
          },
          {
            "cpu": 7,
            "min": 3487,
            "median": 3492,
            "max": 3600
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:55:47.322Z",
        "quietCheckLeadSeconds": 0.056,
        "outsideWindowFromUtc": "2026-10-05T03:54:47.322Z",
        "outsideLoadAtStart": 0.119,
        "outsideLoadRecentAtStart": 0.104,
        "outsideLoadDuring": 0.112,
        "accountingMismatch": false,
        "searches": 22691,
        "clientCpuSeconds": 10.5619,
        "clientCpuMsPerSearch": 0.4655,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:55:47.379Z to 2026-10-05T03:56:47.381Z, 240 samples, divided by the pass\u0027s 22691 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      },
      {
        "target": "opensearch",
        "pass": "default@8",
        "startUtc": "2026-10-05T03:56:47.416Z",
        "endUtc": "2026-10-05T03:57:07.426Z",
        "seconds": 20.01,
        "endedBy": "result line",
        "governor": "performance",
        "frequencySamples": 80,
        "nearestSample": false,
        "engineMhzMedian": 3492,
        "clientMhzMedian": 3492,
        "cpuMhz": [
          {
            "cpu": 0,
            "min": 3489,
            "median": 3492,
            "max": 3500
          },
          {
            "cpu": 1,
            "min": 3487,
            "median": 3492,
            "max": 3516
          },
          {
            "cpu": 2,
            "min": 3492,
            "median": 3492,
            "max": 3521
          },
          {
            "cpu": 3,
            "min": 3492,
            "median": 3492,
            "max": 3505
          },
          {
            "cpu": 4,
            "min": 3489,
            "median": 3492,
            "max": 3529
          },
          {
            "cpu": 5,
            "min": 3491,
            "median": 3492,
            "max": 3499
          },
          {
            "cpu": 6,
            "min": 3492,
            "median": 3492,
            "max": 3528
          },
          {
            "cpu": 7,
            "min": 3492,
            "median": 3492,
            "max": 3522
          }
        ],
        "quietCheckBefore": "warm-up",
        "quietCheckUtc": "2026-10-05T03:56:47.398Z",
        "quietCheckLeadSeconds": 0.018,
        "outsideWindowFromUtc": "2026-10-05T03:55:47.398Z",
        "outsideLoadAtStart": 0.112,
        "outsideLoadRecentAtStart": 0.101,
        "outsideLoadDuring": 0.08,
        "accountingMismatch": false,
        "searches": 29587,
        "clientCpuSeconds": 14.897,
        "clientCpuMsPerSearch": 0.5035,
        "clientCpuBasis": "user \u002B system CPU time of this process\u0027s threads (not its finished children; includes the 4 Hz sampler thread and the kernel network time spent on this process\u0027s behalf) from 2026-10-05T03:56:47.416Z to 2026-10-05T03:57:07.418Z, 80 samples, divided by the pass\u0027s 29587 completed searches",
        "waitedSeconds": 0,
        "busyBox": false
      }
    ],
    "cpuIdle": {
      "driver": "intel_idle",
      "governor": "menu",
      "intelIdleMaxCstate": "9",
      "states": [
        {
          "index": 0,
          "name": "POLL",
          "latencyUs": 0,
          "residencyUs": 0,
          "disabledOn": "",
          "defaultStatus": "enabled"
        },
        {
          "index": 1,
          "name": "C1",
          "latencyUs": 2,
          "residencyUs": 2,
          "disabledOn": "",
          "defaultStatus": "enabled"
        },
        {
          "index": 2,
          "name": "C1E",
          "latencyUs": 10,
          "residencyUs": 20,
          "disabledOn": "",
          "defaultStatus": "enabled"
        },
        {
          "index": 3,
          "name": "C3",
          "latencyUs": 33,
          "residencyUs": 100,
          "disabledOn": "0-7",
          "defaultStatus": "disabled"
        },
        {
          "index": 4,
          "name": "C6",
          "latencyUs": 133,
          "residencyUs": 400,
          "disabledOn": "",
          "defaultStatus": "enabled"
        }
      ]
    },
    "cpuIdleAtEnd": {
      "driver": "intel_idle",
      "governor": "menu",
      "intelIdleMaxCstate": "9",
      "states": [
        {
          "index": 0,
          "name": "POLL",
          "latencyUs": 0,
          "residencyUs": 0,
          "disabledOn": "",
          "defaultStatus": "enabled"
        },
        {
          "index": 1,
          "name": "C1",
          "latencyUs": 2,
          "residencyUs": 2,
          "disabledOn": "",
          "defaultStatus": "enabled"
        },
        {
          "index": 2,
          "name": "C1E",
          "latencyUs": 10,
          "residencyUs": 20,
          "disabledOn": "",
          "defaultStatus": "enabled"
        },
        {
          "index": 3,
          "name": "C3",
          "latencyUs": 33,
          "residencyUs": 100,
          "disabledOn": "0-7",
          "defaultStatus": "disabled"
        },
        {
          "index": 4,
          "name": "C6",
          "latencyUs": 133,
          "residencyUs": 400,
          "disabledOn": "",
          "defaultStatus": "enabled"
        }
      ]
    },
    "connections": [
      {
        "target": "mariadb",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvbbench-mariadb",
            "address": "container-ip",
            "port": 3306,
            "containerId": "d78c2651a20a",
            "network": "gvbbench-mariadb_default",
            "notUsed": "localhost:13306"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 3306,
            "sockets": 8,
            "kind": "this target"
          },
          {
            "address": "localhost",
            "port": 1433,
            "sockets": 2,
            "kind": "not this target"
          }
        ],
        "observedUtc": "2026-10-05T03:18:03.982Z"
      },
      {
        "target": "weaviate",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-weaviate",
            "address": "container-ip",
            "port": 8080,
            "containerId": "16135b2cb6ff",
            "network": "gvb-weaviate_default",
            "notUsed": "localhost:8085"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 8080,
            "sockets": 8,
            "kind": "this target"
          },
          {
            "address": "localhost",
            "port": 1433,
            "sockets": 2,
            "kind": "not this target"
          }
        ],
        "observedUtc": "2026-10-05T03:19:22.197Z"
      },
      {
        "target": "redis",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-redis",
            "address": "container-ip",
            "port": 6379,
            "containerId": "989f19e9cdad",
            "network": "gvb-redis_default",
            "notUsed": "localhost:6379"
          }
        ],
        "observed": [
          {
            "address": "localhost",
            "port": 1433,
            "sockets": 2,
            "kind": "not this target"
          },
          {
            "address": "container-ip",
            "port": 6379,
            "sockets": 1,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:21:28.142Z"
      },
      {
        "target": "sqlitevec",
        "hosting": "embedded",
        "route": "in this process (embedded), no network",
        "endpoints": [],
        "observed": [],
        "observedUtc": "2026-10-05T03:23:27.624Z",
        "problem": "no open TCP connection was found"
      },
      {
        "target": "qdrant",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-qdrant",
            "address": "container-ip",
            "port": 6334,
            "containerId": "87511a708990",
            "network": "gvb-qdrant_default",
            "notUsed": "localhost:16334"
          },
          {
            "what": "container gvb-qdrant",
            "address": "container-ip",
            "port": 6333,
            "containerId": "87511a708990",
            "network": "gvb-qdrant_default",
            "notUsed": "localhost:16333"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 6334,
            "sockets": 1,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:24:27.726Z"
      },
      {
        "target": "oracle",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-oracle",
            "address": "container-ip",
            "port": 1521,
            "containerId": "1d59e41e9fe6",
            "network": "gvb-oracle_default",
            "notUsed": "localhost:1521"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 1521,
            "sockets": 15,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:26:44.479Z"
      },
      {
        "target": "mongodb",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-mongodb",
            "address": "container-ip",
            "port": 27017,
            "containerId": "55a23265ddaf",
            "network": "gvb-mongodb_default",
            "notUsed": "localhost:27017"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 27017,
            "sockets": 10,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:28:56.806Z"
      },
      {
        "target": "vespa",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-vespa",
            "address": "container-ip",
            "port": 8080,
            "containerId": "7957d927b8f3",
            "network": "engines_default",
            "notUsed": "localhost:8090"
          },
          {
            "what": "container gvb-vespa",
            "address": "container-ip",
            "port": 19071,
            "containerId": "7957d927b8f3",
            "network": "engines_default",
            "notUsed": "localhost:19071"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 8080,
            "sockets": 1,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:32:50.748Z"
      },
      {
        "target": "qdrant-hnsw",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-qdrant",
            "address": "container-ip",
            "port": 6334,
            "containerId": "82613f71f1d7",
            "network": "gvb-qdrant_default",
            "notUsed": "localhost:16334"
          },
          {
            "what": "container gvb-qdrant",
            "address": "container-ip",
            "port": 6333,
            "containerId": "82613f71f1d7",
            "network": "gvb-qdrant_default",
            "notUsed": "localhost:16333"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 6334,
            "sockets": 1,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:35:06.698Z"
      },
      {
        "target": "typesense",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-typesense",
            "address": "container-ip",
            "port": 8108,
            "containerId": "5d83a5073e5d",
            "network": "engines_default",
            "notUsed": "localhost:8108"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 8108,
            "sockets": 8,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:37:15.872Z"
      },
      {
        "target": "chroma",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-chroma",
            "address": "container-ip",
            "port": 8000,
            "containerId": "df84d63d7e2b",
            "network": "gvb-chroma_default",
            "notUsed": "localhost:8000"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 8000,
            "sockets": 8,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:38:18.132Z"
      },
      {
        "target": "duckdb",
        "hosting": "embedded",
        "route": "in this process (embedded), no network",
        "endpoints": [],
        "observed": [],
        "observedUtc": "2026-10-05T03:40:18.670Z",
        "problem": "no open TCP connection was found"
      },
      {
        "target": "elasticsearch",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-elasticsearch",
            "address": "container-ip",
            "port": 9200,
            "containerId": "a4082cc82c30",
            "network": "engines_default",
            "notUsed": "localhost:9200"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 9200,
            "sockets": 8,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:42:50.963Z"
      },
      {
        "target": "sql-diskann",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-mssql",
            "address": "container-ip",
            "port": 1433,
            "containerId": "0149acfffd7d",
            "network": "gvb-mssql_default",
            "notUsed": "localhost:14330"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 1433,
            "sockets": 9,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:45:05.747Z"
      },
      {
        "target": "pgvector",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-pgvector",
            "address": "container-ip",
            "port": 5432,
            "containerId": "4c5c52ca06c5",
            "network": "gvb-pgvector_default",
            "notUsed": "localhost:5432"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 5432,
            "sockets": 8,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:47:12.657Z"
      },
      {
        "target": "sql",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-mssql",
            "address": "container-ip",
            "port": 1433,
            "containerId": "7ac14f562e0d",
            "network": "gvb-mssql_default",
            "notUsed": "localhost:14330"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 1433,
            "sockets": 9,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:48:18.034Z"
      },
      {
        "target": "milvus",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-milvus",
            "address": "container-ip",
            "port": 19530,
            "containerId": "c5d1652f4efe",
            "network": "gvb-milvus_default",
            "notUsed": "localhost:19530"
          },
          {
            "what": "container gvb-milvus",
            "address": "container-ip",
            "port": 9091,
            "containerId": "c5d1652f4efe",
            "network": "gvb-milvus_default",
            "notUsed": "localhost:9091"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 19530,
            "sockets": 8,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:51:42.761Z"
      },
      {
        "target": "clickhouse",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-clickhouse",
            "address": "container-ip",
            "port": 8123,
            "containerId": "e462fe3eb825",
            "network": "gvb-clickhouse_default",
            "notUsed": "localhost:8123"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 8123,
            "sockets": 1,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:54:00.917Z"
      },
      {
        "target": "opensearch",
        "hosting": "compose",
        "route": "container address on its Docker network, not the published port (no docker-proxy)",
        "endpoints": [
          {
            "what": "container gvb-opensearch",
            "address": "container-ip",
            "port": 9200,
            "containerId": "b26c4fc723bd",
            "network": "engines_default",
            "notUsed": "localhost:9201"
          }
        ],
        "observed": [
          {
            "address": "container-ip",
            "port": 9200,
            "sockets": 8,
            "kind": "this target"
          }
        ],
        "observedUtc": "2026-10-05T03:57:07.426Z"
      }
    ],
    "cpuAccounting": "busy = user \u002B nice \u002B system \u002B irq \u002B softirq \u002B steal (guest time is already in user); CONFIG_IRQ_TIME_ACCOUNTING is not set, so task and cgroup run time include the interrupt and softirq time that hit them and it is added; CONFIG_PARAVIRT_TIME_ACCOUNTING is not set, so steal is added (/boot/config-6.8.0-142-generic)",
    "loadAverageEnd": "4.11 3.20 2.89",
    "stateFile": "~/gvb-work/bench-machine-state.json",
    "restored": [
      "client affinity back to 0-7",
      "governor back to schedutil on CPUs 0-7"
    ],
    "restoreProblems": [],
    "flags": [
      "sqlitevec is embedded: it ran inside the client process on the client CPUs 0-1,4-5, sharing them with the client.",
      "duckdb is embedded: it ran inside the client process on the client CPUs 0-1,4-5, sharing them with the client.",
      "WARNING: accounting mismatch in typesense exact: outside load over the last few seconds before the warm-up was -0.057 CPUs, below -0.05; the kernel\u0027s busy time minus this process minus the engine\u0027s cgroups came out negative, so the outside-load figures of this pass cannot be trusted.",
      "WARNING: accounting mismatch in typesense default@8: outside load during the pass was -0.060 CPUs, below -0.05; the kernel\u0027s busy time minus this process minus the engine\u0027s cgroups came out negative, so the outside-load figures of this pass cannot be trusted."
    ]
  }
}