Benchmark 和 Profile

本文详细介绍了Benchmark在计算机领域的应用,特别是在大数据环境下的性能测试。Benchmark通过数据集、工作负载和度量指标三个核心组成部分,帮助评估系统性能。文章还列举了多种Benchmark工具,如Hibench、BerkeleyBigDataBench和TPC-DS,适用于不同场景的大数据性能测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:https://www.cnblogs.com/sddai/p/7642738.html

一、Benchmark简介
Benchmark是一个评价方式,在整个计算机领域有着长期的应用。正如维基百科上的解释“As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, tests were developed that allowed comparison of different architectures.”Benchmark在计算机领域应用最成功的就是性能测试,主要测试负载的执行时间、传输速度、吞吐量、资源占用率等。
性能调优的两大利器是Benchmark和profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而profile工具最大限度地呈现系统的运行状态和性能指标,方便用户诊断性能问题和进行调优。
二、Benchmark的组成
Benchmark的核心由3部分组成:数据集、 工作负载、度量指标。
1、数据集
数据类型分为结构化数据、半结构化数据和非结构化数据。由于大数据环境下的数据类型复杂,负载多样,所以大数据Benchmark需要生成3种类型的数据和对应负载。
1)结构化数据:传统的关系数据模型,可用二维表结构表示。典型场景有电商交易、财务系统、医疗HIS数据库、政务信息化系统等等;
2)半结构化数据:类似XML、HTML之类,自描述,数据结构和内容混杂在一起。典型应用场景有邮件系统、Web搜索引擎存储、教学资源库、档案系统等等,可以考虑使用Hbase等典型的KeyValue存储;
3)非结构化数据:各种文档、图片、视频和音频等。典型的应用有视频网站、图片相册、交通视频监控等等。
2、工作负载
互联网领域数据庞大,用户量大,成为大数据问题产生的天然土壤。对工作负载理解和设计可以从以下几个维度来看
1)密集计算类型:CPU密集型计算、IO密集型计算、网络密集型计算;
2)计算范式:SQL、批处理、流计算、图计算、机器学习;
3)计算延迟:在线计算、离线计算、实时计算;
4)应用领域:搜索引擎、社交网络、电子商务、地理位置、媒体、游戏。
3、度量指标
性能高估的两大利器就是Benchmark和Profile工具。Benchmark用压力测试挖掘整个系统的性能状况,而Profile工具最大限度地呈现系统的运行时状态和性能指标,方便用户诊断性能问题和进行调优。
1)工具的使用
a)在架构层面:perf、nmon等工具和命令;
b)在JVM层面:btrace、Jconsole、JVisualVM、JMap、JStack等工具和命令;
c)在Spark层面:web ui、console log,也可以修改Spark源码打印日志进行性能监控。
2)度量指标
a)从架构角度度量:浮点型操作密度、整数型操作密度、指令中断、cache命中率、TLB命中;
b)从Spark系统执行时间和吞吐的角度度量:Job作业执行时间、Job吞吐量、Stage执行时间、Stage吞吐量、Task执行时间、Task吞吐量;
c)从Spark系统资源利用率的角度度量:CPU在指定时间段的利用率、内存在指定时间段的利用率、磁盘在指定时间段的利用率、网络带宽在指定时间段的利用率;
d)从扩展性的角度度量:数据量扩展、集群节点数据扩展(scale out)、单机性能扩展(scale up)。
三、Benchmark的运用
1、Hibench:由Intel开发的针对Hadoop的基准测试工具,开源的,用户可以到Github库中下载
2、Berkeley BigDataBench:随着Spark的推出,由AMPLab开发的一套大数据基准测试工具,官网介绍
3、Hadoop GridMix:Hadoop自带的Benchmark,作为Hadoop自带的测试工具使用方便、负载经典,应用广泛
4、Bigbench:由Teradata、多伦多大学、InfoSizing、Oracle开发,其设计思想和利用扩展具有研究价值,可以参阅论文Bigbench:Towards an industry standard benchmark for big data analytics。
5、BigDataBenchmark:由中科院研发,官方介绍
6、TPC-DS:广泛应用于SQL on Hadoop的产品评测
7、其他的Benchmark:Malstone、Cloud Harmony、YCSB、SWIM、LinkBench、DFSIO、Hive performance Benchmark(Pavlo)等等

### 关于 NCNN Benchmark 性能测试 NCNN 是腾讯开源的一个高性能神经网络推理框架,广泛应用于移动端设备上的深度学习任务。其基准测试工具 `benchncnn` 提供了一种简单有效的方法来评估神经网络的推理性能。 #### 基准测试概述 `benchncnn` 工具主要用于测量 NN 推理性能[^1]。它仅需提供网络定义文件(即 `.param` 文件),无需实际加载大尺寸的权重文件(`.bin`)。为了模拟真实环境下的运行情况,该工具会自动生成随机数据作为输入来进行速度测试。这种机制使得开发者可以在不依赖具体模型的情况下快速验证不同架构的性能表现。 #### 构建与执行流程 要启用并构建 `benchncnn` 测试程序,请按照以下步骤操作: 1. **编辑 CMake 配置**: 打开 `<ncnn-root-dir>/CMakeLists.txt` 文件,在其中取消注释 `add_subdirectory(benchmark)` 行。 2. **编译项目**: 进入已配置好的构建目录,并运行命令 `$ make -j4` 完成编译过程。 3. **定位可执行文件**: 编译完成后,可在路径 `<ncnn-root-dir>/<your-build-dir>/benchmark/` 下找到名为 `benchncnn` 的二进制文件。 此工具支持多种参数选项以灵活调整测试条件,例如线程数、目标硬件平台等设置均可通过命令行指定。 #### 自定义时间统计功能 如果希望进一步细化每层运算的具体耗时,则可以扩展源码实现更精确的时间记录逻辑。一种常见做法是在 `ncnn::Extractor` 类内部修改 `extract()` 方法,增加如下代码片段: ```cpp #if NCNN_BENCHMARK if (net->profile) { net->profiler["iter"]++; } #endif // NCNN_BENCHMARK ``` 上述改动允许我们在每次调用提取器时更新迭代计数器,从而便于后续分析各阶段的实际消耗情况[^4]。 #### 对比其他框架的表现 除了 NCNN 外,还有诸如 Intel OpenVINO Toolkit 等专注于加速 AI 推理工作的解决方案可供选择[^2]。然而值得注意的是,不同的优化策略可能会导致最终结果存在差异。例如有研究表明当采用特定的空间约束而非传统 IoU 计算方法时,某些检测算法如 RetinaNet FCOS 能够取得相近甚至更好的精度指标[^3]。 综上所述,利用 NCNN 内置的 benchmark 功能可以帮助我们高效完成初步性能评测工作;而对于更加深入的研究需求,则可能需要结合额外手段获取详尽的数据支撑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值