···8484The operations are matched to Tranquil's metastore bench: write one record, look
8585up one record CID, and list records from a seeded repo.
86868787-Summary: Tranquil is faster on CID lookups, by about 1.6x at 10 callers and
8888-1.6x at 100 callers. ZDS is slower on 10-caller writes, at about 0.7x
8989-Tranquil's throughput, but faster on 100-caller writes, at about 1.6x
9090-Tranquil's throughput. ZDS is faster on list-record reads in these runs, by
9191-about 1.4x at both 10 and 100 callers. The next read-path question is why
9292-Tranquil's CID lookup is still ahead while ZDS's list path is already ahead.
8787+Summary: Tranquil is faster on the read rows after ZDS moved record materialize
8888+paths to decode DAG-CBOR from `repo_blocks`: about 1.5-1.8x faster for CID
8989+lookup and about 1.6x faster for list records. Tranquil is also faster on
9090+10-caller writes, by about 2.8x. ZDS is faster on the 100-caller write row, by
9191+about 1.3x, which is the main sign that the sharded write lane is helping under
9292+contention.
93939494| operation | callers | ops | zds | tranquil |
9595|---|---:|---:|---:|---:|
9696-| apply/write | 10 | 10000 | 299 ops/s, p95 84 ms | 436 ops/s, p95 36.0 ms |
9797-| apply/write | 100 | 20000 | 1502 ops/s, p95 56 ms | 944 ops/s, p95 119 ms |
9898-| get record CID | 10 | 10000 | 355k ops/s, p95 5 us | 571k ops/s, p95 31 us |
9999-| get record CID | 100 | 20000 | 349k ops/s, p95 6 us | 571k ops/s, p95 244 us |
100100-| list records | 10 | 10000 | 52k ops/s, p95 20 us | 38k ops/s, p95 309 us |
101101-| list records | 100 | 20000 | 51k ops/s, p95 22 us | 37k ops/s, p95 3.0 ms |
9696+| apply/write | 10 | 10000 | 282 ops/s, p95 93.8 ms | 780 ops/s, p95 14.1 ms |
9797+| apply/write | 100 | 20000 | 1357 ops/s, p95 66.7 ms | 1007 ops/s, p95 109 ms |
9898+| get record CID | 10 | 10000 | 296k ops/s, p95 6 us | 455k ops/s, p95 43 us |
9999+| get record CID | 100 | 20000 | 294k ops/s, p95 405 us | 537k ops/s, p95 233 us |
100100+| list records | 10 | 10000 | 22k ops/s, p95 52 us | 36k ops/s, p95 310 us |
101101+| list records | 100 | 20000 | 23k ops/s, p95 49 us | 36k ops/s, p95 2.9 ms |
102102103103Tranquil's read row is `get_record_cid`, so ZDS reports `get-cid` for that
104104comparison. Full `com.atproto.repo.getRecord` is a separate local probe because
105105-it materializes record JSON and response fields that Tranquil's metastore bench
106106-does not request.
105105+it joins the record index to `repo_blocks`, decodes DAG-CBOR, and renders the
106106+XRPC JSON response shape. Tranquil's metastore bench intentionally measures a
107107+metadata lookup for the current CID, not record body materialization.
107108108109## local probes
109110···111112112113| operation | callers | ops | zds |
113114|---|---:|---:|---:|
114114-| full getRecord | 10 | 10000 | 56k ops/s, p95 65 us |
115115-| full getRecord | 100 | 20000 | 52k ops/s, p95 7.2 ms |
115115+| full getRecord | 10 | 10000 | 40k ops/s, p95 352 us |
116116+| full getRecord | 100 | 20000 | 39k ops/s, p95 8.2 ms |
116117117118## write profile
118119