更新时间:2024-10-30 GMT+08:00
分享

批量仿真调优

仿真服务可以提供基于云资源的大规模并行仿真。仿真过程中,涉及资源配置与调度。合理配置任务的资源占用,可以尽可能的提高资源利用率,进而提高仿真测试并行度,增加算法测试的里程数。

获取并配置算法实际资源占用

创建仿真算法时,需要填写算法镜像占用的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核,那么当前集群是无法满足调度的,需要提升集群节点配置。

图1 创建仿真算法

并行仿真任务资源利用说明

当前批量仿真任务同一用户仅允许同时运行一个批量仿真任务。假设有一个4节点的集群,某个任务只有一个场景,那么仿真会创建一个子任务,此时,任务只会被调度到一个节点上,示意图如图2所示。

图2 调度节点

这样某一台机器工作,其他3台机器资源会空闲,造成资源浪费。因此建议批量仿真时,尽量增大批量仿真的子任务数(与被测场景数量有关),使得集群节点内的所有机器资源被充分利用,减少机器空闲状态。

相关文档