Files
Andrey VasnetsovandClaude Opus 5.5 aefcb71b0f Meter remote requests and expose IO statistics to edge shard users (#10769)
* Meter remote requests and expose IO statistics to edge shard users

Generalize the disk cache statistics from #10637 into a shared OpStats
primitive and add a second layer counting every remote request issued
through BlobFs and BlobFile, reads and writes alike. One helper at each
call site drives the uio_trace request and the stats guard together, so
the trace also gains the write operations.

CachedBlobFs exposes both halves through stats(), DiskCacheFs exposes
its remote filesystem, and both edge shards expose their filesystem, so
an application can read cumulative totals. shard_update logs the IO
counters moved by each phase; shard_query prints the combined dump.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* Drop DiskCacheStats in favor of remote request stats

Every disk-cache fetch is exactly one BlobFile read already metered by
RemoteIoStats, so the cache half duplicated the remote Read/ReadFrom
counters. CachedBlobFs::stats() now returns RemoteIoStats directly.

The remote stats dump now includes per-op latency histograms, which
were previously only printed for cache fetches.

edge-shard-query and edge-shard-update initialize serverless_compatible
feature flags instead of running with uninitialized ones.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Sample uio-trace CPU usage every 10ms instead of 2ms

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Address review: not-found bucket, empty-tail reads, strum Op

- OpStats counts "not found" answers separately from errors, and the
  trace records them as a `not_found` outcome, so length and existence
  probes of absent objects no longer read as failures.
- A read_from tail at or past EOF is settled after the len probe and
  counts as a completed empty read; a not-found error skips the probe,
  which could only repeat the answer.
- Op derives strum EnumCount/EnumIter/IntoStaticStr instead of a
  hand-maintained ALL array.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-25 13:57:30 +02:00
..
2026-07-22 14:34:33 +00:00