打开文档导航

等待、暂停与恢复不是同一种机制

一句话

Pysolate 有三种不同的“等一下”:approval 保留同一次 pending call,workflow 保存显式逻辑 State 后用 fresh Guest 恢复,cold-I/O continuation 则暂时降低同一运行 slot 的内存驻留;它们不能统称为 checkpoint/restore。

先看一个例子

一个数据分析 Agent 可能遇到三种等待:

  1. 准备访问敏感数据,等负责人批准;
  2. 完成第一阶段后等明天的新输入,再继续工作流;
  3. 正在等一个较慢的 Host call,希望等待期间少占一些物理内存。

三件事看起来都像“程序暂停”,实际需要保留的状态完全不同。第一种要保住当前调用关系,第二种应当把进度写成明确记录,第三种只是在同一次执行中给内存降温。

真实机制

机制谁拥有等待状态保留什么怎样继续
Approval suspensionHost Approval Controller 与 Broker仅限 bounded ApprovalLease、live-only playback 且无 pre-dispatch 的 capability;保留同一 Guest 中 pending ABI call、RequestID、参数 digest 和 leaseapprove/reject 后,同一 call 返回或终结
Workflow resumeHost workflow evaluator 与显式 Stategraph digest、node records、WaitNodeID、authority envelope 等逻辑数据销毁旧 Guest;校验 State 后创建 fresh Guest
Cold-I/O continuation当前 Wazero module/slot 与 Host policy仅限 Linux PreparedRuntime + MemoryCOW 和显式 bounded ColdIOPolicy;保留同一 call、private mapping 和 bounded evidenceHost call 返回后恢复当前 slot;Linux 可尝试 MADV_COLD/PAGEOUT

Approval 的线性化点仍是 BeginDispatch。等待批准期间 handler 没有启动;批准后才可能执行。这个等待不是可跨进程携带的 continuation token。

Workflow 到达 Wait 时会关闭 Guest。State 不包含 Python frame、heap、globals、文件描述符或 WASM memory。Resume 会校验 graph、roots、privacy 和当前 authority,必要时让依赖旧 authority 的记录失效,然后创建新 execution identity 和 fresh Guest。当前 Suspended State 没有内置 consumed/one-shot marker;调用方必须自行防止重复 Resume

Cold-I/O continuation 不销毁 Guest,也不序列化逻辑 State。它保留当前 slot,在等待时给私有内存页提供回收建议;建议可能失败,恢复时还会付出 page fault 成本。

普通 cancel 或 timeout 若不处于这些明确协议中,只会 abort 当前执行。Approval suspension 和 cold-I/O 也不是任意 Host call 或任意 Guest 都能调用的通用暂停 API。当前实现没有一个能恢复任意 Python 程序的通用 token。

为什么重要

技术上: 每种等待都有明确 owner 和恢复语义。系统不会把“重新计算后续节点”“返回 pending Host call”和“恢复同一内存 slot”混成一种不可靠的 snapshot 机制。

产品和业务上: 长工作流可以释放旧 Guest,审批操作可以保留用户正在批准的那一次请求,内存紧张时又能单独选择 cold tier。团队可以按等待时长和资源成本选机制,而不是长期保留所有解释器状态。

不能推出什么

  • 当前没有通用 Python frame、heap 或 WASM stack checkpoint/restore。
  • Approval/cold continuation 不是 crash-safe、跨进程或无限期恢复机制。
  • Workflow State 是显式逻辑记录,不是 bearer capability;恢复时仍要重新检查当前 authority。

术语卡

  • Approval suspension:同一受控调用等待 Host 决策。
  • Workflow State:可校验的显式逻辑进度记录。
  • Resume:用 State 和当前 authority 创建 fresh execution。
  • Cold-I/O continuation:同一 slot 等待 Host I/O 时的内存 tiering。
  • Checkpoint/restore:保存并恢复完整执行状态;当前 Pysolate 不提供通用实现。

继续阅读