deepseek-harness/.agents/notes/implemented/architecture/2026-08-25-persistence-latency-and-page-size.zh.md

3.8 KiB
Raw Blame History

Agent Note: JSONL 持久化压缩延迟

Status: implemented

English | 中文

问题

物理持久化优化需要减少保留存储,同时不能把不成比例的工作转移到完整写入、读取或 Session fork。原有的 105-Session 语料显示,JSONL level-19 压缩会让完整写入与 fork 耗时增加一倍以上。

该决策需要来自更多样会话的证据,包括长事件流与原语料之外的 payload。扩展后的语料包含 501 个真实会话、16,153,332 个逻辑事件与 2,002,145,570 字节序列化事件数据。

决策

存储编码保持为物理层行为并可独立解码

JSONL 把严格递增的 sourceEventSeqs 存为标量值与闭区间的混合数组,其他顺序保持原样。读取时会在暴露事件前还原原始 number[]。

JSONL 使用 Zstandard 标准级别

JSONL 写入方继续为每个持久 append 批次写入一个带 checksum 的 Zstandard frame,但使用压缩器的标准级别。无损 sourceEventSeqs 区间编码继续生效。各 frame 仍可独立解码,以支持后缀读取与撕裂尾部恢复;只移除昂贵的 level-19 搜索。

扩展基准

每个候选方案都从同一份 501 会话语料独立重建五次,每个 append 批次包含 512 个事件。各轮轮换执行顺序,使每个候选方案在每个运行位置各出现一次。每次重建执行三轮完整读取与后缀读取。下表中的每项指标都去掉最高与最低的一次重建,再平均其余三次。完整读取与后缀读取耗时覆盖对全部会话的一轮扫描,fork 耗时覆盖全部 501 个会话。

后端 存储大小 完整写入 完整读取 后缀读取 Fork
JSONL master 172.43 MB 200.902 s 8.033 s 24.479 s 72.670 s
JSONL + 来源区间 148.15 MB (-14.1%) 197.281 s (-1.8%) 7.799 s (-2.9%) 24.582 s (+0.4%) 72.308 s (-0.5%)
JSONL + 来源区间 + level 19 130.22 MB (-24.5%) 329.442 s (+64.0%) 7.764 s (-3.3%) 24.454 s (-0.1%) 166.177 s (+128.7%)

相对使用来源区间的标准级别 frame,level 19 可再减少 12.1% 的 JSONL 字节,但会让完整写入增加 67.0%、fork 增加 129.8%;完整读取与后缀读取分别变化 -0.4% 与 -0.5%。因此,更深入的搜索只改善保留体积,无法通过延迟敏感操作的收益抵消反复付出的编码成本。

考虑过的替代方案

保留 JSONL level 19。 不予采用。在扩展语料上,它相对默认级别 frame 可再减少 12.1%,却让完整写入增加 67.0%、fork 增加 129.8%,而完整读取与后缀读取的差异都不足 1%。默认级别 frame 配合来源区间后,相对 master 仍能缩小 14.1%,且没有实质性延迟退化。

把整份 JSONL 日志压成单个 frame。 不予采用。该方案可改善跨批次压缩,但后缀读取必须从头解压,也会失去按批次恢复撕裂尾部的能力。

对事件内容去重。 不予采用。消息复述与工具参数只能在依赖重建假设时删除,而 compaction、重试和修剪可能让这些假设失效。物理压缩保留每个事件,不增加重建语义。

后果

JSONL 保留低成本来源优化,同时避开 level-19 的写入与 fork 代价。扩展语料显示,来源区间让保留体积缩小 14.1%,且没有实质性延迟退化。

相关资料