先区分资源与调度
下面四类设置解决的问题不同:
例如,Docker 的
cpus: 2 表示每个容器最多使用 2 核;--task-concurrency 8 表示最多可以同时处理 8 个任务。两者不能互相替代。
任务 Environment 与验证 Environment 也按实例分别计算资源。需要新建验证 Environment 时,AgentCompass 通常会先关闭任务 Environment,再创建验证 Environment。只有使用 --keep-environment 保留任务 Environment 时,两者才可能同时占用资源。
并发、创建速率和 --keep-environment 的完整说明见运行控制。
provider 能力与单位
不同 provider 的 API 和计量方式不同,因此资源字段无法统一为同一种格式。
运行下面的命令,可以查看当前安装版本接受的准确字段和默认值:
设置资源
下面用同一个任务比较 Docker、Daytona 和 Modal 的资源参数写法。三个示例都通过sample_ids 只运行一个任务,并为每个 Environment 设置 2 核 CPU 和 6 GiB 内存;这些数值只用于说明格式,不代表 Benchmark 的推荐配置。
以下以 agentcompass run 为例。配置文件、Python SDK 和 launch 编排文件的写法见配置 Environment。
Docker
memory_swap 与 memory 相同表示不提供额外 swap。字段格式见 Docker 的资源参数。
Daytona
resources.memory 以 GiB 为单位。该组合的 Recipe 会选择任务镜像,因此资源请求会用于基于镜像创建的 sandbox;显式改用 snapshot 时,Daytona 不会应用 resources。字段格式见 Daytona 的资源参数。
Modal
resources 对象;示例使用更直接的顶层写法。字段格式见 Modal 的资源参数。
Docker 的存储上限只有在存储驱动支持单容器大小限制时才会生效。远程 provider 也可能因为账号配额、区域容量或不提供所选规格而拒绝创建实例。
Recipe 资源设置与显式覆盖
部分 Recipe 会读取 Benchmark 中的任务资源要求,再转换成所选 provider 的字段和单位。例如,同一个内存要求在 Daytona 中可能以 GiB 表示,在 Modal 中则需要转换为其接受的格式。 内置 Recipe 通常会保留兼容的显式资源值,但具体适配仍以对应 Recipe 和 Benchmark 说明为准。因此:- 想复现 Benchmark 的资源条件时,优先使用其 Recipe 提供的默认值;
- 想比较另一种资源配置时,再显式覆盖,并在结果说明中记录修改。
估算总资源需求
可以按以下步骤估算:- 从 Benchmark 或 Recipe 给出的资源要求开始。
- 先运行一个有代表性的任务,观察内存峰值、CPU 使用率、磁盘增长和验证阶段的资源需求。
- 为安装依赖、编译和缓存保留余量。
- 根据单实例资源和实际并发估算总量,再调整任务并发与 provider 限制。
- 逐步提高并发;出现 OOM、创建失败或明显排队时及时降低。
--env-open-qps 只改变新实例的创建速度,不限制同时运行的实例数。
排查资源问题
其他运行错误见评测故障排查。
