本方案是企业内训课程《华为昇腾智算中心深度技术研修》的一部分授课课件的样例。方案内容中详细阐述了华为昇腾环境下智算中心的测试方案和标准,以确保硬件和软件系统在实际部署和运行中的高效性和稳定性。主要内容包括集群硬件清单、节点拓扑配置以及环境配置。硬件部分涵盖了CPU、GPU、内存、存储和网络等组件的具体型号、规格、性能指标和测试目标,如CPU的单核/多核性能、GPU的AI加速能力、内存的读写带宽、存储的IOPS等。
测试方案针对各组件及其组合进行了全面的基线测试和功能测试,涉及单节点及多节点的多种性能指标,包括计算能力、网络通信效率、存储系统性能等。同时,提供了测试工具的使用方法和流程,如sysbench、fio、iperf等,帮助用户准确评估系统性能,识别潜在瓶颈和优化空间。
此外,文件还详细介绍了如何通过配置集群管理工具(如Slurm和Kubernetes)来实现任务调度和负载均衡,确保系统资源的高效利用。整体方案全面覆盖了从基础设施搭建到性能优化的各个环节,提供了系统性的测试框架和参考标准,为构建高效、安全的智算中心提供了重要依据。
智算集群整体测试方案
a.硬件测试的基本流程
硬件清单和测试目标内容
- 集群硬件清单:主要记录集群中的各类硬件组件,如CPU、GPU、内存、存储、网络设备等。这张表着重于每个硬件的规格、性能基线和测试目标。
- 集群节点拓扑与配置清单:记录集群的整体架构,包括节点的数量、类型、硬件配置,以及它们的角色和网络拓扑结构。这张表主要用于分析和测试集群中各节点的布局、连接方式以及它们在分布式系统中的协同工作效率。
表1:集群硬件清单
用于列出每个硬件的具体型号、测试目标以及厂商提供的性能基线。适用于单个节点或组件的详细测试。(根据实际环境会进行调整,这里举个例子)
硬件组件 | 型号/规格 | 测试目标 | 厂商提供的基线 | 其他重要指标 | 备注 |
CPU | 华为鲲鹏920 | - 测试单核/多核性能 | - 单核性能:1,200 SPECint | - 指令集执行效率 | 厂商提供的SPEC CPU测试结果为参考 |
GPU | 华为昇腾910 | - 测试AI模型加速性能 | - AI加速:150 TFLOPS | - GPU温度与散热能力 | 基于MindSpore或TensorFlow框架的AI基线测试 |
内存 | 512GB DDR4 2933MHz | - 测试内存读写速度、带宽 | - 带宽:45 GB/s | - 内存利用率 | 使用STREAM测试带宽,延迟基于厂商数据 |
网络 | 华为100Gbps 高速以太网卡 | - 测试跨节点网络带宽 | - 带宽:98 Gbps | - 数据包丢失率 | 使用iperf/netperf测试网络带宽与延迟 |
存储 | 华为OceanStor存储系统 | - 测试存储读写性能 | - IOPS:350,000 | - 读写延迟 | 使用fio测试存储系统IOPS和吞吐量 |
GPU加速卡 | 华为Atlas 300 (昇腾310) | - 测试推理性能 | - 推理速度:64 TOPS | - GPU通信带宽 | 推理加速基线基于NVIDIA NCCL等通信库测试 |
存储(SSD) | 2TB NVMe SSD | - 测试读写速度 | - 顺序读写:3.5 GB/s | - SSD耐久性(TBW) | 使用fio测试读写性能 |
表2:集群节点拓扑与配置清单( 参考数据,以实际环境为准)
用于记录集群中每个节点的角色、硬件配置和网络拓扑。适用于评估集群的整体布局和节点间的协同工作。
节点类型 | 节点数量 | 节点硬件配置 | 角色 | 网络拓扑结构 | 其他重要信息 |
计算节点 | 10 | CPU: 华为鲲鹏920 | - 主要用于计算任务,运行AI模型 | 星形结构,通过高速网络交换机连接 | - 各节点通信带宽 |
存储节点 | 3 | 存储: 华为OceanStor | - 主要用于存储数据集 | 与所有计算节点连接 | - 存储IOPS |
管理节点 | 2 | CPU: 华为鲲鹏920 | - 管理整个集群任务调度 | 环形结构,管理所有计算节点 | - 集群资源调度效率 |
网络节点 | 1 | Mellanox 100Gbps 高速网络设备 | - 负责跨节点通信与负载均衡 | 树形结构 | - 网络延迟 |
环境配置说明:
智算中心环境配置表格(实际环境搭建后修改配置清单)
配置项 | 配置内容 | 版本/规格 | 配置工具/方法 | 备注 |
操作系统 | Linux 发行版(如Ubuntu, CentOS, EulerOS) | Ubuntu 20.04 / CentOS 8 / EulerOS | 操作系统安装光盘或网络安装包 | 确保与硬件、驱动、AI框架兼容 |
CPU驱动 | 安装和配置CPU相关驱动 | 针对华为鲲鹏920的最新驱动 | 系统自带工具或厂商提供的驱动程序 | 确保多核CPU性能正常,支持多线程并行 |
GPU驱动 | 安装GPU的驱动程序 | 昇腾910/310 GPU驱动 | Ascend Driver Installation (CANN) | 支持深度学习和GPU加速的驱动程序,确保GPU正常工作 |
AI框架 | 安装AI框架(如TensorFlow, PyTorch, MindSpore) | TensorFlow 2.6 / PyTorch 1.9 / MindSpore 1.3 | 通过pip或conda安装 | 确保AI框架与GPU和计算资源兼容 |
集群管理工具 | 集群调度和管理工具 | Slurm / Kubernetes | 通过apt、yum等包管理工具安装 | 确保任务调度与负载均衡功能正常 |
网络配置 | 配置节点间的网络连接,优化网络带宽和延迟 | Mellanox 100Gbps 网络接口卡 | 使用网络配置工具,如ifconfig, iperf | 确保节点间网络带宽最大化,延迟最小化 |
存储系统 | 配置分布式存储系统,确保高IOPS和低延迟 | 华为OceanStor / Ceph | Ceph部署工具,或厂商提供的配置工具 | 确保存储系统支持并发读写和大数据存储 |
硬盘分区与挂载 | 配置NVMe SSD和分布式存储的分区与挂载点 | NVMe 2TB SSD 分区 | 使用fdisk、mkfs等工具进行分区挂载 | 确保存储系统被正确挂载,支持大数据访问 |
文件系统 | 文件系统的格式化与优化配置 | Ext4 / XFS / CephFS | mkfs工具进行文件系统格式化 | 根据需求选择最优的文件系统,支持高效读写 |
安全配置 | 安装和配置防火墙、权限控制等安全机制 | Firewalld / iptables / SELinux | 通过操作系统或独立安全工具配置 | 确保智算中心在进行测试时有安全的网络和访问控制 |
软件依赖环境 | 安装各种开发包、编译工具及测试所需依赖的库 | gcc, g++, OpenMPI, CUDA等 | 通过apt、yum、pip等安装 | 确保所有依赖包和编译环境正确安装和配置 |
监控工具 | 安装监控工具,实时监控硬件资源和任务运行状态 | Grafana / Prometheus / NVIDIA-SMI | 通过包管理工具安装和配置 | 确保系统在运行时,能够监控CPU、GPU、内存等状态 |
系统时钟同步 | 确保集群中所有节点时钟同步 | NTP / Chrony | 通过系统时钟同步工具进行配置 | 保证分布式任务中各节点的时钟同步 |
配置项说明:
- 操作系统:智算中心通常基于Linux操作系统(如Ubuntu、CentOS或EulerOS)。选择的操作系统版本需要和硬件兼容,尤其是CPU、GPU和存储系统。
- CPU驱动:确保多核CPU的性能发挥正常,安装和配置合适的CPU驱动程序,特别是对于华为鲲鹏等高性能CPU。
- GPU驱动:确保安装最新的GPU驱动程序(如华为昇腾910/310),支持深度学习模型的加速训练。常用工具如Ascend Driver或CANN(Compute Architecture for Neural Networks)。
- AI框架:安装AI框架(TensorFlow、PyTorch或MindSpore),用于模型训练和推理。确保框架版本和硬件、操作系统兼容,安装时可以通过pip、conda等包管理工具。
- 集群管理工具:用于任务调度、负载均衡和集群管理。常用工具如Slurm和Kubernetes,确保所有节点任务调度和资源分配有效。
- 网络配置:配置智算中心的网络,使节点之间的通信效率最大化,确保数据传输带宽和延迟优化。测试工具如iperf等用于网络优化测试。
- 存储系统:配置分布式存储系统(如Ceph或华为OceanStor),确保高并发访问、大数据存储以及读写性能。
- 硬盘分区与挂载:配置NVMe SSD的分区与挂载点,确保存储系统能够快速访问和写入数据,特别是在高IOPS需求下。
- 文件系统:根据系统需求配置合适的文件系统(如Ext4、XFS、CephFS),确保支持高效的大数据读写操作。
- 安全配置:设置操作系统的安全防护(如防火墙、防病毒、SELinux等),确保测试环境的网络和数据安全。
- 软件依赖环境:安装各种依赖包和开发工具(如编译器、OpenMPI、CUDA等),确保智算中心在测试时拥有所需的软件支持。
- 监控工具:通过安装Grafana、Prometheus等监控工具,实时监控系统硬件资源(CPU、GPU、内存等)和任务运行状态,确保在测试时能够及时发现问题。
- 系统时钟同步:使用NTP或Chrony确保集群中各个节点的时钟同步,避免分布式任务由于时间不同步而出现问题。
基础功能测试清单表格
测试项目 | 测试目的 | 测试内容 | 测试工具 | 预期结果 |
操作系统健康检查 | 检查操作系统是否正常运行 | - 操作系统版本检查 | uname, top, free | 操作系统正常运行,资源使用无异常 |
CPU基本功能测试 | 确保CPU能够正常运行,且多核、多线程功能有效 | - 检查CPU核数、线程 | lscpu, sysbench | CPU正常检测,所有核心和线程都能工作,多核性能正常 |
GPU基本功能测试 | 检查GPU的硬件状态并确保GPU驱动安装成功 | - 确认GPU驱动是否正确安装 | nvidia-smi, Ascend Toolkit (CANN) | GPU驱动正确安装,硬件状态良好,GPU可被识别和正常使用 |
内存基本功能测试 | 确保内存读写功能正常,避免内存硬件故障 | - 内存检测与读写测试 | memtest86, free, vmstat | 内存读写无错误,内存分配和使用情况正常 |
存储设备检测 | 确认存储设备能够正确连接并识别,文件系统工作正常 | - 检查存储设备挂载状态 | fdisk, lsblk, dd, fio | 存储设备被正确识别并正常挂载,读写操作无错误 |
网络连接测试 | 确保集群内节点之间的网络连接正常,且带宽和延迟在合理范围内 | - 测试节点间的网络连通性 | ping, iperf | 节点间网络连通性正常,带宽和延迟符合预期 |
文件系统功能测试 | 检查文件系统是否正常工作并支持大文件的读写 | - 检查文件系统状态 | df, du, dd | 文件系统正常挂载,支持大数据读写,读写性能无异常 |
硬盘分区和挂载 | 确认所有存储硬盘正确分区并挂载,文件系统格式化正常 | - 检查分区状态 | fdisk, mkfs, dd | 所有硬盘分区正确,挂载状态良好,基础读写无问题 |
存储IO功能测试 | 确保存储设备在并发访问时性能稳定,支持大数据量的读写 | - 检查IO性能 | fio, dd | IO性能稳定,支持并发读写操作,无明显性能下降 |
集群节点健康检查 | 确保所有节点均能正常启动和运行,硬件状态良好 | - 检查所有节点的健康状态 | ping, top, free | 所有节点状态正常,硬件资源(CPU、内存)使用无异常 |
集群管理工具功能 | 确保集群管理工具(如Slurm、Kubernetes)能够正常运行,任务分配正常 | - 检查管理工具的状态 | Slurm, Kubernetes, squeue, kubectl | 管理工具运行正常,任务分配无误,调度系统工作正常 |
时钟同步功能测试 | 确保集群中各节点的系统时钟同步,避免分布式任务时钟不一致 | - 检查节点的时钟同步状态 | ntpstat, chrony | 所有节点时钟同步,时间偏差在可接受范围内 |
安全与防火墙检查 | 检查安全配置,确保防火墙、SELinux等安全机制正确运行 | - 检查防火墙状态 | firewall-cmd, sestatus | 防火墙和SELinux运行正常,安全配置合理,无不必要的开放端口 |
测试项目说明:
- 操作系统健康检查:验证操作系统是否正常运行,包括系统资源(CPU、内存等)使用情况是否异常,确保系统稳定。
- CPU基本功能测试:通过查看CPU的核心数和线程情况,确保CPU的多核、多线程功能有效,并通过基础的计算任务验证其运行正常。
- GPU基本功能测试:检查GPU是否正确安装和可用,验证GPU的基本状态和利用率是否正常,确保GPU能够支持深度学习和计算加速任务。
- 内存基本功能测试:使用memtest86等工具检查内存硬件是否有问题,确保内存的读写能力正常,避免内存模块损坏或安装不当导致的错误。
- 存储设备检测:验证所有存储设备是否能够正确识别并挂载,确保磁盘读写操作无误。可以通过查看分区和挂载状态确认设备连接是否正常。
- 网络连接测试:通过测试节点间的连通性(如使用ping)和带宽、延迟等网络性能(如使用iperf),确保集群内节点之间的网络连接正常。
- 文件系统功能测试:检查文件系统是否正常工作,支持大文件的读写,确保在后续的大数据存储和处理任务中,文件系统能够提供足够的性能。
- 硬盘分区和挂载:验证所有硬盘是否已正确分区和挂载,检查文件系统是否被正确格式化,并通过基础读写测试确认其正常工作。
- 存储IO功能测试:使用fio等工具对存储设备进行IO性能测试,验证存储系统在并发访问时的读写性能是否稳定,确保数据密集型任务能够顺利进行。
- 集群节点健康检查:确保所有集群节点能够正常启动、工作,硬件资源状态良好,所有节点的CPU、内存等资源使用无异常。
- 集群管理工具功能:检查集群管理工具(如Slurm、Kubernetes)是否运行正常,提交简单任务测试集群的任务调度和负载均衡功能。
- 时钟同步功能测试:确保集群中所有节点的系统时钟同步,避免在分布式任务中因为时钟不同步导致的问题。通过NTP或Chrony工具进行检查。
- 安全与防火墙检查:检查集群的安全配置,包括防火墙、SELinux、用户权限等,确保系统安全配置合理,无不必要的端口暴露。
基线测试(重点核心)
基线测试的目的是为集群硬件和系统设定一个性能参考标准,以便在后续的性能测试中有一个对比基准。通过基线测试,确保硬件和软件在正常情况下能够达到预期的性能标准,并为压力测试、扩展性测试等提供参考。基线测试不仅关注单个组件的性能,还可以涉及整个集群的综合性能,确保系统在不同负载下的正常表现。
基线测试清单表格
测试项目 | 测试目的 | 测试内容 | 测试工具 | 基线预期值 | 备注 |
CPU基线测试 | 测试CPU的单核和多核性能,确定计算能力基线 | - 单核与多核性能测试 | SPEC CPU, sysbench | - 单核:1,200 SPECint | 基于厂商提供的基准数据 |
GPU基线测试 | 确定GPU的浮点运算能力和AI模型训练加速能力 | - 测试GPU计算能力(FLOPS) | TensorFlow Benchmark, PyTorch | - AI加速:150 TFLOPS | 使用标准模型和数据集进行测试 |
内存基线测试 | 确保内存的读写带宽和延迟在预期范围内 | - 测试内存带宽和延迟 | STREAM, memtest86 | - 带宽:45 GB/s | 基于硬件规格和预期性能 |
存储基线测试 | 确定存储系统的IOPS、吞吐量和读写延迟,确保数据存取性能 | - 测试存储IOPS | fio, IOzone | - IOPS:350,000 | 存储系统在单节点与多节点下的表现对比 |
网络基线测试 | 确定节点间网络带宽和延迟,确保通信效率和稳定性 | - 测试节点间带宽 | iperf, netperf, PingPlotter | - 带宽:98 Gbps | 针对多节点的跨节点通信进行基线测试 |
存储并发访问测试 | 确保存储在多节点并发访问下的稳定性,确定并发处理能力 | - 并发读写性能测试 | fio, Ceph Benchmarks | - 并发IOPS:300,000 | 确保存储在高并发下性能稳定 |
分布式训练基线测试 | 测试多节点的分布式训练性能,确保分布式计算的加速比和通信效率 | - 测试分布式训练的通信延迟 | NCCL, Horovod | - 加速比接近线性增长 | 基于多GPU节点的模型训练进行测试 |
任务调度基线测试 | 确保集群任务调度系统(如Slurm)的任务分配效率和负载均衡效果 | - 测试任务分配效率 | Slurm, Kubernetes, squeue, kubectl | - 任务延迟在可接受范围内 | 多任务并发情况下的调度表现 |
系统扩展性基线测试 | 测试增加节点后的性能扩展性,确保系统扩展性能线性增长 | - 增加节点后的性能提升 | Linpack, MPI Benchmarks | - 性能扩展比接近线性 | 验证系统在增加节点时的性能扩展效果 |
系统能效基线测试 | 确保系统在不同负载下的能效比,优化功耗与计算能力的平衡 | - 不同负载下的功耗与性能测试 | lm-sensors, PowerTOP | - 在高负载下能效比优化 | 根据负载优化能效表现,确保功耗合理 |
测试项目说明:
- CPU基线测试:通过SPEC CPU或sysbench测试CPU的单核与多核性能,确保系统的计算能力达到预期。基线数据可以参考厂商提供的CPU性能规格,或通过历史测试结果设定。
- GPU基线测试:针对深度学习或计算密集型任务,测试GPU的浮点运算性能(FLOPS)和AI任务加速能力。使用TensorFlow Benchmark或PyTorch进行标准模型的训练测试,确保GPU的利用率和加速效果符合预期。
- 内存基线测试:通过STREAM或memtest86测试内存的读写带宽和延迟,确保内存模块的读写性能符合硬件预期,特别是在多任务并发的情况下,确保延迟不会增加。
- 存储基线测试:使用fio或IOzone工具测试存储设备的顺序和随机读写性能,确保IOPS、吞吐量和延迟符合预期。存储系统在高IOPS需求下,必须保持稳定的性能。
- 网络基线测试:通过iperf等工具测试节点间的网络带宽、延迟、抖动和丢包率,确保多节点集群在分布式任务中的通信效率达到要求。带宽和延迟的基线设定通常基于网络硬件的规格。
- 存储并发访问测试:评估在多节点并发访问时,存储系统的IO性能是否能够稳定提供高吞吐量,测试并发下的IOPS和延迟,确保存储系统在高负载下能够保持性能。
- 分布式训练基线测试:针对深度学习任务的分布式训练,测试多节点、多GPU的分布式训练性能,确保加速比接近线性增长,通信延迟最小化。
- 任务调度基线测试:通过Slurm或Kubernetes测试任务调度和负载均衡的效率,确保集群中的任务能够均衡分配,避免资源浪费或单一节点过载。
- 系统扩展性基线测试:测试系统的扩展性能,通过增加节点,验证集群是否能够线性扩展计算能力,并且确保负载均衡在扩展后保持稳定。
- 系统能效基线测试:通过测试不同负载下的系统功耗与性能,确保系统在高负载下仍能保持合理的能效比,优化计算能力与功耗的平衡。
测试工具的使用和流程
免费开源的基线测试工具清单(附下载链接)
昇腾环境优化的基线测试工具清单
测试项目 | 测试目的 | 测试内容 | 测试工具 | 工具说明 | 下载链接 |
CPU基线测试 | 测试鲲鹏CPU的单核和多核性能 | - 单核与多核性能测试 | 1. sysbench | - sysbench:适用于鲲鹏CPU的基线测试工具 | sysbench GitHub |
GPU基线测试 | 测试昇腾AI处理器的性能和AI训练加速能力 | - 测试GPU(昇腾)计算能力 | 1. CANN Profiler | - CANN Profiler:华为昇腾专用性能分析工具 | CANN下载 |
内存基线测试 | 测试系统内存的带宽和延迟 | - 内存带宽和延迟测试 | 1. STREAM | - STREAM:内存带宽测试工具,适配鲲鹏CPU | STREAM |
存储基线测试 | 测试存储系统的IOPS、吞吐量和延迟 | - 测试存储IOPS | 1. fio | - fio:适用于存储设备的基准测试工具 | fio |
网络基线测试 | 测试集群节点间网络的带宽和延迟 | - 测试节点间网络带宽 | 1. iperf | - iperf:测试网络带宽和延迟的标准工具 | iperf下载 |
存储并发访问测试 | 测试存储系统在多节点并发访问下的稳定性和性能 | - 并发读写性能测试 | 1. fio | - fio:适用于并发IO测试的开源工具 | fio |
分布式训练基线测试 | 测试昇腾AI处理器在多节点下的分布式训练性能 | - 测试分布式训练的通信延迟 | 1. CANN Profiler | - CANN Profiler:分析昇腾AI处理器的多节点分布式训练性能 | CANN下载 |
任务调度基线测试 | 测试集群任务调度系统(如Slurm)的任务分配效率和负载均衡 | - 测试任务分配效率 | 1. Slurm | - Slurm:适用于集群管理的开源任务调度工具 | Slurm下载 |
系统扩展性基线测试 | 测试增加节点后的系统扩展性能,确保系统扩展性良好 | - 测试系统扩展性 | 1. Linpack | - Linpack:高性能计算基准测试工具,适合扩展性测试 | Linpack |
系统能效基线测试 | 确保系统在不同负载下的能效比,优化功耗与计算能力的平衡 | - 不同负载下的功耗与性能测试 | 1. lm-sensors | - lm-sensors:监控硬件温度与功耗 | lm-sensors |
工具说明与适配性
- sysbench:适合用于鲲鹏CPU的基线测试,包括单核、多核性能的测试。但不适合直接测试昇腾AI处理器,建议使用CANN工具链来分析昇腾硬件。
- KML(Kunpeng Math Library):华为鲲鹏的数学库,适合数值计算任务的优化与性能分析。推荐在鲲鹏CPU环境下使用。
- CANN Profiler:这是华为昇腾AI芯片的专用性能分析工具,强烈推荐在任何与昇腾AI加速相关的基线测试中使用,包括模型训练、推理和多节点分布式任务。
- MindSpore:华为的AI框架,完全适配昇腾AI硬件,并支持多节点分布式训练。适用于代替TensorFlow或PyTorch在昇腾环境中的使用。
- STREAM:适用于鲲鹏CPU的内存带宽测试工具,可以帮助检测内存性能瓶颈,建议与CANN结合,分析AI训练任务中的显存和内存带宽。
- fio:适用于测试存储系统的IOPS和吞吐量,适配SATA、NVMe等存储设备。可以与华为OceanStor存储系统结合使用。
- iperf:标准的网络带宽和延迟测试工具,适合用于集群中节点间的网络测试,与华为CloudEngine交换机管理工具结合使用效果更好。
- Slurm:用于集群管理和任务调度,但针对昇腾AI任务,建议结合华为AI集群管理工具,以优化AI加速任务的调度。
- Linpack 和 MPI Benchmarks:适用于高性能计算中的扩展性测试,能够检测多节点的负载分布和通信效率。
免费开源基线测试工具的核心指标、参数页面和测试方法
1. sysbench
核心指标:
- 单核/多核性能:每秒处理的事件数(events per second)以及CPU的响应时间。
- 线程并发性能:多线程任务的并行执行能力。
- 内存性能:内存的读写速度和延迟。
关键参数页面:
- --threads=N:设置并发线程数,N为指定的线程数(如--threads=8用于测试多核性能)。
- --cpu-max-prime=N:设置用于计算的最大素数,N越大,计算量越大,适用于CPU的浮点运算测试。
- --test=cpu/memory:选择测试项,cpu用于CPU测试,memory用于内存测试。
测试方法:
- 单核/多核性能测试:
- --test=cpu --cpu-max-prime=20000 --threads=1 run # 单核
sysbench --test=cpu --cpu-max-prime=20000 --threads=8 run # 多核
- events/sec)和执行时间,评估CPU性能。
- 内存性能测试:
- --test=memory --memory-block-size=4K --memory-total-size=1G run
2. KML(Kunpeng Math Library)
核心指标:
- 数值计算性能:评估鲲鹏CPU的数值计算效率。
- 矩阵计算性能:测试大规模矩阵运算中的加速比和性能瓶颈。
- 多线程性能:在多核场景下的并发计算能力。
关键参数页面:
- -i [number]:设置计算的迭代次数。
- -t [threads]:指定线程数量,测试多线程并发性能。
- -m:指定数学运算类型(如矩阵乘法)。
测试方法:
- 矩阵运算性能测试:
- -i 1000 -t 8 -m matrix_mul
- 8个线程测试矩阵乘法运算的性能,分析鲲鹏CPU在高并发场景下的性能表现。
3. CANN Profiler
核心指标:
- AI核利用率:AI处理器的利用率,关键性能指标为AI Core Utilization。
- 显存利用率:分析显存的使用情况,避免显存瓶颈。
- 训练吞吐量:每秒处理的样本数(samples/sec)是衡量模型训练速度的重要指标。
- 通信延迟:在多卡或多节点训练中,通信延迟会影响训练的整体性能。
关键参数页面:
- --batch_size:指定批处理大小,通常用于测试模型训练吞吐量。
- --num_cards:指定使用的GPU或昇腾AI卡数量,测试单卡和多卡加速效果。
- --model:指定模型类型(如resnet50、bert等)。
测试方法:
- 模型训练性能测试:
- start --model=resnet50 --batch_size=32 --num_cards=4
- CANN Profiler分析训练性能,查看AI核的利用率、显存使用情况和通信延迟,评估多卡训练效果。
4. MindSpore Benchmark
核心指标:
- 每秒处理样本数(Samples/Second):用于衡量模型训练或推理的效率。
- 推理延迟:模型推理所需时间,通常以毫秒(ms)为单位。
- 加速比:在多节点或多GPU/多AI卡的场景下,分析加速效果。
关键参数页面:
- --arch:选择模型架构(如resnet50、bert)。
- --batch_size:设置批次大小,影响训练速度和显存占用。
- --device_num:设置使用的设备数量,测试分布式训练时的性能。
测试方法:
- 单设备模型训练性能测试:
- mindspore_benchmark.py --arch=resnet50 --batch_size=32 --epochs=1
- 多设备分布式训练测试:
- -n 4 python mindspore_benchmark.py --arch=resnet50 --batch_size=64 --epochs=1 --device_num=4
5. STREAM
核心指标:
- 内存带宽:以GB/s为单位,测量内存的读写带宽。
- 内存延迟:测试内存的访问延迟,通常以纳秒(ns)为单位。
关键参数页面:
- STREAM_ARRAY_SIZE:设置测试的数组大小,越大越能反映系统的内存性能。
- NTIMES:设置测试的重复次数,通常设置为10次。
测试方法:
- 内存带宽测试:
编译并运行STREAM:
- -O2 stream.c -o stream && ./stream
- GB/s),并评估内存延迟。
6. fio
核心指标:
- IOPS:每秒输入输出操作次数,用于衡量存储系统的读写能力。
- 吞吐量:存储设备的顺序或随机读写性能,单位为MB/s。
- 延迟:存储设备的响应延迟,以毫秒(ms)为单位。
关键参数页面:
- --rw=read/write/randread/randwrite:设置读写模式(顺序或随机)。
- --bs=[block size]:设置块大小,常用4K、8K等。
- --iodepth=N:指定并发深度,用于测试并发IO性能。
测试方法:
- 随机读写测试:
- --name=test --size=4G --rw=randread --bs=4k --iodepth=64
- IOPS和延迟情况。
- 顺序写入测试:
- --name=test --size=4G --rw=write --bs=1M
7. iperf
核心指标:
- 网络带宽:两个节点之间的最大带宽,以Gbps为单位。
- 网络延迟:数据包的往返延迟,通常以毫秒(ms)表示。
- 数据包丢失率:测试网络通信的可靠性。
关键参数页面:
- -c:指定客户端的IP地址。
- -P:设置并发连接数,模拟高并发网络环境。
- -t:测试时长,以秒为单位。
测试方法:
- 网络带宽测试:
在服务器节点运行iperf -s,在客户端运行:
- -c <server_ip> -P 4 -t 30
8. Slurm
核心指标:
- 任务等待时间:任务从提交到执行的延迟时间。
- 资源利用率:集群中各节点CPU、GPU等资源的利用率。
- 负载均衡:集群中任务的分配均匀性,评估各节点的负载。
关键参数页面:
- sbatch:用于提交批量任务。
- squeue:查看任务队列和执行状态。
- sinfo:监控集群节点的状态和资源利用情况。
测试方法:
- 批量任务提交测试:
提交批量任务,监控任务调度情况:
- my
重点问题:
在进行软件基线测试时,我们需要重点注意的事项:
1. sysbench
重点发现的问题:
- 多核性能不均衡:
- 观察点:检查各核心的负载是否均衡,是否存在某些核心负载过重或过轻的情况。
- 注意事项:在进行多核测试时,监控CPU核心利用率,避免其他后台任务影响测试结果。
- 内存带宽瓶颈:
- 观察点:监测内存读写性能,特别是在高并发情况下是否出现带宽瓶颈。
- 注意事项:注意内存带宽的上下限,避免因内存带宽限制导致测试结果偏低。
2. KML(Kunpeng Math Library)
重点发现的问题:
- 优化库兼容性:
- 观察点:检查KML库是否与其他数学库或应用程序兼容,是否出现计算错误或性能下降。
- 注意事项:在测试前确认KML库的版本,并确保其与系统和其他软件兼容。
- 测试覆盖范围不足:
- 观察点:测试是否覆盖了多种计算任务,包括复杂的数学运算。
- 注意事项:扩展测试用例,确保测试结果能够反映实际应用中的复杂计算需求。
3. CANN Profiler
重点发现的问题:
- 性能瓶颈定位困难:
- 观察点:在多节点或多卡训练时,注意性能瓶颈的定位是否困难,是否有明显的性能下降点。
- 注意事项:综合分析AI核利用率、显存使用情况等多个指标,查看性能瓶颈的表现。
- 数据采集与分析延迟:
- 观察点:监控数据采集和分析是否导致额外的开销,是否影响测试的准确性。
- 注意事项:注意测试过程中数据采集的频率和延迟对整体测试结果的影响。
4. MindSpore Benchmark
重点发现的问题:
- 分布式训练性能不稳定:
- 观察点:观察分布式训练过程中的性能波动,特别是在不同节点和不同卡上训练时的稳定性。
- 注意事项:监控训练过程中各节点的负载情况,注意性能的不稳定现象。
- 环境配置影响:
- 观察点:测试环境中的硬件和软件配置是否影响训练性能,特别是在不同配置下的测试结果。
- 注意事项:记录和比较不同配置下的测试数据,评估环境对性能的影响。
5. STREAM
重点发现的问题:
- 测试数据量不足:
- 观察点:检查数据集大小是否足够,是否能够充分测试内存带宽。
- 注意事项:使用大规模数据集进行测试,以确保带宽测试结果的准确性。
- 系统干扰:
- 观察点:监控系统中是否有其他任务干扰内存带宽测试。
- 注意事项:确保测试期间系统负载最低,避免其他任务影响测试结果。
6. fio
重点发现的问题:
- 存储设备性能不稳定:
- 观察点:在高负载条件下,监测存储设备性能的波动情况。
- 注意事项:记录存储设备在不同负载下的表现,特别是在高并发读写操作中的稳定性。
- 配置参数影响:
- 观察点:检查不同fio配置参数对测试结果的影响,如块大小和IO深度。
- 注意事项:根据实际应用场景选择合适的参数,观察测试结果的变化。
7. iperf
重点发现的问题:
- 网络带宽测试不准确:
- 观察点:监测网络带宽测试中的实际带宽和理论带宽是否一致。
- 注意事项:注意网络环境的稳定性,确保测试结果能够准确反映网络性能。
- 丢包和延迟影响:
- 观察点:在测试过程中观察数据包丢失率和延迟情况。
- 注意事项:记录网络丢包率和延迟,综合分析网络性能的真实表现。
8. Slurm
重点发现的问题:
- 任务调度延迟:
- 观察点:监测任务调度的延迟时间,是否存在较长的等待时间。
- 注意事项:记录调度延迟的时间,分析是否影响集群资源的有效利用。
- 资源利用不均:
- 观察点:观察集群中资源的分配和使用情况,是否存在资源利用不均的问题。
- 注意事项:监控节点的负载情况,查看是否有资源闲置或过载现象。