跳转至

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. 结论

  1. 墙钟差在「主机间并发」:6 台同一串只读探测,串行是各台累加,共享库脚本降到「最慢那一台」的量级(5.47 s → 0.93 s)。
  2. 成本差在「Agent 轮次」:手动逐台要 6 次工具调用,脚本只要 1 次;轮次是成本乘数。
  3. 往返与建连:本场景两者相同,因 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 同步,请勿在站点侧修改)