问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

stress-ng工具详解:如何通过CPU和内存加压测试模型性能

创作时间:
作者:
@小白创作中心

stress-ng工具详解:如何通过CPU和内存加压测试模型性能

引用
1
来源
1.
https://www.cnblogs.com/horizondeveloper/p/18561781

在实际应用中,当多个应用程序同时运行时,可能会对算法的资源占用产生影响,进而影响模型性能。因此,在项目早期进行板端验证时,可以使用一些工具对CPU和内存进行加压,以模拟实车测试的情况,得到模型在硬件资源受限时的性能数据。本文将介绍stress-ng工具,并探究该工具是否能明显影响模型的性能表现。

stress-ng工具简介

Stress-ng是一款可以在Linux上产生系统负载的工具,可以加压CPU、内存、磁盘IO等,且有多种加压策略,比如浮点运算、整数运算、矩阵运算、压缩、解压缩等,可以用来测试系统在高负载的状况下的稳定性。

stress-ng工具的使用方法

编译说明

  1. 首先进入stress-ng的GitHub页面,下载源码到x86服务器上
  2. 接下来进行源码编译。由于加压测试环境是arm开发板,需要配置环境变量来设置交叉编译器,以编译出可在开发板运行的二进制文件
  3. 编译完成后,会在源码所在的文件夹下生成可执行文件stress-ng,将其复制到开发板上的/userdata路径即可

主要参数介绍

  • --cpu N:让N个CPU满载,N=0会让所有CPU满载
  • --cpu-load M:搭配--cpu使用,占用N个核各自M%的CPU负载
  • --vm N:启用N个进程占用内存,不断释放和分配
  • --vm-bytes N:所有vm进程共占用N字节的内存大小,可带单位,如1M 1G
  • --vm-keep:vm进程一直占用内存不释放
  • --timeout N:加压时长N秒,可带单位,如1s 1m 1h 1d,不配置则为1d

CPU和内存共同加压方法(推荐)

执行以下命令可让CPU和内存共同被加压:

stress-ng --vm 2 --vm-bytes 2G --vm-keep

vm为2会让2个CPU核满载运行,vm-bytes为2G则会占用2G的内存(和vm数量无关),添加vm-keep会让内存一直占据不被释放。这个命令可以同时为CPU和内存加压,是比较推荐的一种方式。

模型性能评测工具介绍

hrt_model_exec是地平线算法工具链提供的模型执行工具,可以使用该工具的perf功能在开发板上评测模型的推理性能。评测模型单帧延时的参考命令如下:

hrt_model_exec perf --model_file ./model.bin --frame_count 1000

frame_count默认为200,这里设置为1000,为的是让评估的数值更加准确。

实验部分

实验思路

本文分别使用一大一小两个模型分析CPU和内存加压对单帧延时的影响,计算平台为征程5。

大模型使用CenterPoint(来自OE包ddk/samples/model_zoo/runtime/ai_benchmark/qat/centerpoint_pointpillar_nuscenes),小模型使用Resnet18(OE包ddk/samples/ai_toolchain/horizon_model_convert_sample/03_classification/03_resnet18以O3编译)。加压手段采用本文2.3.3“CPU和内存共同加压方法”,比较两个模型的单帧延时受影响程度。

实验结果展示

实验数据总表:

实验1为不加压时,分别单独运行CenterPoint和Resnet18得到的单帧延时数据;
实验2-8为1个CPU核满载时,内存占用依次提升的单帧延时数据;
实验9-15为4个CPU核满载时,内存占用依次提升的单帧延时数据;
实验16-22为全部CPU核满载时,内存占用依次提升的单帧延时数据;
CenterPoint和Resnet18分开测试,不会同时运行。

CenterPoint折线图:

图中蓝色圆点代表不加压时,CenterPoint的性能数据,绿色折线表示单核满载时内存占用依次提升的性能数据,黄色折线表示4核满载时内存占用依次提升的性能数据,红色折线表示8核满载时内存占用依次提升的性能数据。

Resnet18折线图的阅读方法同Centerpoint。由于在8核满载(红色折线)时,模型性能下降尤为严重,因此额外提供了下图,可方便地看出单核满载(绿色折线)和4核满载(黄色折线)下的性能变化情况。

实验结论

  1. stress-ng工具对CPU和内存的占用,可以显著影响模型性能
  2. 内存加压对模型单帧延时的影响相对较小,CPU加压影响较大
  3. 在内存占用相同时,CPU占用越高,模型单帧延时越高
  4. 在CPU负载相同时,随着内存占用的提升,模型的单帧延时有上升趋势
  5. 在CPU全部核满载时,小模型的单帧延时上升情况比大模型严重很多

结论

本文重点介绍了stress-ng工具,并通过实验证明了stress-ng对CPU和内存的加压可以明显影响模型的性能表现,该工具可方便开发者验证模型在资源受限时的实际运行性能。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号