Agent 远端操作对比实验(agent_remote_bench_20261011)¶
日期:2026-10-11 执行人:rain(Agent) 环境:真实 slurm 集群 6 台(.16/.17/.18/.19/.20/.28) 目的:实测「Agent 手动 ssh 直连」与「写脚本复用共享库」在效率与成本上的差异,并回答连接能否复用。 性质:只读探测,不改任何远端状态。
1. 方法¶
同一场景:对 6 台各取 4 个只读事实(hostname、内核、根分区、slurmd 状态)。
- A 组(手动直连):单条命令内串行 6 次
ssh root@<host> '<4 条命令用 ; 拼>'(每条 ssh 一次建连、一次往返)。 - B 组(共享库脚本):
bench_sharedlib.py,BaseModule.probe_per_host=run_per_host(主机间并发)+_kv_script(主机内拼一段 shell)。
2. 实测数据¶
| 维度 | A 手动 ssh 直连 | B 共享库脚本 | 比值 |
|---|---|---|---|
| 远端执行墙钟 | 5.472 s(串行 6 台累加) | 0.927 s(6 台并发) | 约 5.9 倍 |
| SSH 建连数 | 6(每台一次,独立进程) | 6(池内每台一次) | 相同 |
| 往返数 | 6(每台一条 shell) | 6(每台一条 shell) | 相同 |
| Agent 工具轮次 | 6(逐台各发一次) | 1 | 6 倍 |
| 结果等价性 | 6 台 4 项一致 | 6 台 4 项一致 | 等价 |
补充:若 A 组不把主机内 4 条命令合并(即每台发 4 次 ssh),则往返与建连各为 24,差距进一步放大。
3. 结论¶
- 墙钟差在「主机间并发」:6 台同一串只读探测,串行是各台累加,共享库脚本降到「最慢那一台」的量级(5.47 s → 0.93 s)。
- 成本差在「Agent 轮次」:手动逐台要 6 次工具调用,脚本只要 1 次;轮次是成本乘数。
- 往返与建连:本场景两者相同,因 A 已把主机内 4 条命令合并为一条 shell。共享库的额外价值是主机内合并由
_kv_script自动完成,不靠人手工拼。
4. 连接能否复用(回答提问)¶
- 跨 RunCommand 调用:不能复用。 每次 RunCommand 是一个新进程,共享库的连接池是进程内状态,脚本一退出连接即释放,下次调用重新建连。
- 单次脚本进程内:可复用。 同一台的多条操作走同一个
connection_pool连接(每台仅 1 次建连,见CONNECT_COUNT=6)。 - 要跨轮复用,只有
ssh的ControlMaster/ControlPersist(把一条 TCP 连接多路复用给多条 ssh 命令)或常驻进程;共享库连接池做不到跨进程。 - 现状:Agent 每次需要脚本时就新建脚本、新建连接,无跨轮复用。
5. 理想态¶
- 触发点:一轮内远端操作达阈值(多条
ssh,或跨多台)时,改走「写一次性脚本 + 复用共享库」。 - 脚本形态:
connection_pool设默认凭据(密钥认证可省密码),probe_per_host做「主机间并发 + 主机内一次往返」。 - 边界:单次一两条远端命令不必写脚本(写脚本的固定开销反而更贵);按规模触发。
6. 附带发现(本次实验暴露)¶
- 已有相关 Hook:跑 A 组时被
连接复用提醒拦到(提示「单条命令里出现 6 次 ssh:应合并为一次 ssh 会话」)。这是提醒级,覆盖「单条命令内多次 ssh」,不覆盖「该写共享库脚本 / 跨轮轮次」。 - 规则侧:
ops-execution-efficiency有往返/并发原则,但写在「部署器工程实现」语境下,未针对 Agent 临场远端操作。 - 遮蔽 vs 重复实现:遮蔽有验证(
shadow-check-guard);「不同名重复实现」只有规则判据(上移判据),无自动验证。
7. 交付物¶
| 文件 | 说明 |
|---|---|
bench_sharedlib.py |
B 组共享库脚本(只读探测) |
README.md |
本文件 |
来源:
/home/rain/Documents/slurm/slurm_ins/agent_remote_bench_20261011/README.md| 最后更新:2026-10-11 21:43(由build/sync.py同步,请勿在站点侧修改)