Parent research epic: #39
背景
系统论文必须解释延迟来自哪里,而不仅是给出端到端时间。当前 tracing 日志适合调试,但缺少稳定事件 schema、跨 workspace 关联、缓存层级、队列等待、远端字节数和可重放 trace。
目标
建立一个默认关闭、低开销、版本化的观测层,能够回答:
- 哪些 FUSE 请求进入了 daemon;
- 请求命中了 upper、CL、Dicfuse memory、disk cache 还是 remote;
- metadata 和 blob 请求各消耗多少时间;
- 不同 workspace/snapshot 之间有多少重复请求;
- mount、ready、refresh、unmount 各阶段耗时;
- 预取命中、浪费和取消情况;
- changed-path 查询是否触发了递归扫描。
设计建议
新增统一上下文:
struct WorkspaceContext {
workspace_id: WorkspaceId,
snapshot_id: Option<SnapshotId>,
generation: u64,
request_id: Option<RequestId>,
}
定义版本化事件:
enum FsEvent {
FuseOp,
DirectoryFetch,
BlobFetch,
CacheLookup,
CopyUp,
Whiteout,
MountTransition,
PrefetchDecision,
QueueWait,
}
每个事件至少包含:
schema_version
timestamp
workspace_id
snapshot_id / generation
operation
latency_us
queue_delay_us
result
bytes
data_source = upper | cl | memory | disk_cas | remote
path_id / path_class
object_id (可配置脱敏)
注意:内核缓存命中不会进入 daemon,不能伪装成 daemon 事件。可额外采集 FUSE/kernel 统计或 eBPF/perf 数据,用“请求未进入 daemon”的方式估算。
Tasks
Acceptance Criteria
论文产出
- FUSE operation breakdown;
- metadata/blob stall breakdown;
- cache hit-rate;
- cross-workspace duplicate ratio;
- prefetch accuracy/waste;
- telemetry overhead 图。
Relevant Files
src/dicfuse/async_io.rs
src/dicfuse/store.rs
src/daemon/antares.rs
src/antares/fuse.rs
src/util/logging.rs
Dependencies
无。应与 Issue 2 并行开始。
Parent research epic: #39
背景
系统论文必须解释延迟来自哪里,而不仅是给出端到端时间。当前 tracing 日志适合调试,但缺少稳定事件 schema、跨 workspace 关联、缓存层级、队列等待、远端字节数和可重放 trace。
目标
建立一个默认关闭、低开销、版本化的观测层,能够回答:
设计建议
新增统一上下文:
定义版本化事件:
每个事件至少包含:
注意:内核缓存命中不会进入 daemon,不能伪装成 daemon 事件。可额外采集 FUSE/kernel 统计或 eBPF/perf 数据,用“请求未进入 daemon”的方式估算。
Tasks
src/telemetry/,定义稳定、带版本号的事件 schema;lookup/getattr/opendir/readdir/readdirplus/open/read增加埋点;Acceptance Criteria
论文产出
Relevant Files
Dependencies
无。应与 Issue 2 并行开始。