批量仿真调优
仿真服务可以提供基于云资源的大规模并行仿真。仿真过程中,涉及资源配置与调度。合理配置任务的资源占用,可以尽可能的提高资源利用率,进而提高仿真测试并行度,增加算法测试的里程数。
获取并配置算法实际资源占用
创建仿真算法时,需要填写算法镜像占用的CPU以及内存。这个将影响批量仿真子任务的资源调度,在相同资源情况下,算法资源配置越高,同时运行的任务数越少,因此尽可能配置实际资源占用,可以提高集群的利用效率。
先在本地启动算法容器,等算法全部启动运行后,使用以下方法估计资源占用情况:
docker stats my_container
其中my_container是运行容器的名称。
假设输出如下:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS b5ecde01ad2d my_container 25.00% 256MiB / 500MiB 25.00% 1.2kB / 1.2kB 0B / 0B 71
观察并记录容器的CPU以及MEM占用情况,假设最大占用情况为:
- CPU:25.00%
- MEM USAGE:256MiB
根据上述信息,可以稍有余量的设置CPU和内存:
- CPU:25%的CPU使用率意味着容器使用了0.25个CPU核心,因此可以设置CPU为0.3核。
- 内存:256MiB,因此可以设置内存值为300MiB。
这样可以尽可能减小单个任务的资源占用,从而提高并行任务数量,提升批量仿真性能。
注意:如果算法容器的值超过了前端界面提示的最大值,那么需要考虑提升集群节点的CPU或者内存配置。例如:图1显示CPU最大12.19,如果算法占用15核,那么当前集群是无法满足调度的,需要提升集群节点配置。
并行仿真任务资源利用说明
当前批量仿真任务同一用户仅允许同时运行一个批量仿真任务。假设有一个4节点的集群,某个任务只有一个场景,那么仿真会创建一个子任务,此时,任务只会被调度到一个节点上,示意图如图2所示。
这样某一台机器工作,其他3台机器资源会空闲,造成资源浪费。因此建议批量仿真时,尽量增大批量仿真的子任务数(与被测场景数量有关),使得集群节点内的所有机器资源被充分利用,减少机器空闲状态。