性能与内存分析:结果诊断与可信度验证
把墙钟时间拆成线性求解、外迭代组装、I/O 写盘与通信四块,用加速比与并行效率反推串行占比,并给出场数据与 LDU 矩阵的内存占用量级估算方法。
性能与内存分析:结果诊断与可信度验证
性能分析的起点是把墙钟时间拆成可归因的几块:线性求解、外迭代组装、I/O 写盘与并行通信。OpenFOAM 日志已经给出大部分数据,关键是用一致口径把它们算成加速比、效率与内存占用,再判断瓶颈在哪一层。
日志里可直接读到的计时
grep -E "ExecutionTime|ClockTime|Solving for" log.foamRun | tail -40
tail -20 log.foamRun
日志末尾会打印:
ExecutionTime = 842.3 s ClockTime = 851 s
ExecutionTime 是各进程 CPU 时间之和,ClockTime 是墙钟时间。并行时二者比值近似等于核数;若远小于核数,说明存在大量串行段或等待。
加速比与并行效率
某算例单核 3600 s,32 核 240 s:
效率 46.9% 偏低。用 Amdahl 定律反推串行占比,设可并行部分比例为 :
解得 ,即约 4.6% 的时间是串行的。对 32 核来说,这 4.6% 把理论上限压到 。要再提升,必须减少串行 I/O 与全局归约。
内存占用量级
以单元数 、每单元场数 、双精度 8 字节估算场数据:
末乘 2 是因为线性系统还需要一份工作数组。、 时:
这还没算 LDU 矩阵(约 乘系数个数乘 8 字节)与 AMG 的粗化层级。经验上 GAMG 的峰值内存是场数据的 3~6 倍,即 1.0~1.9 GB。32 核分摊后每核约 32~60 MB,远小于节点内存,说明该算例是计算受限而非内存受限。
I/O 与写盘频率
写盘是典型串行段。若每 100 步写一次、每次 96 MB、共 100 次写盘合计 9.6 GB,在 200 MB/s 的磁盘上需 48 s,占 240 s 墙钟的 20%。把写盘间隔提到 500 步可降到 4%,用 writeControl timeStep; writeInterval 500; 或改用二进制格式。
分区均衡与每核负载
decomposePar 默认按单元数均衡,但计算量还取决于局部迭代数。以 100 万单元、32 核为例,理想每核 31250 单元;若某核因几何集中拿到 45000 单元,负载比达 。墙钟时间由最慢的核决定,因此整体效率至少损失 30%。用 decomposePar -cellDist 导出分区分布,在 ParaView 里看每核单元数的极差;超过 10% 就应换分解方法或手工加权。
定位瓶颈的判定顺序
- 看
ExecutionTime/ClockTime比值与核数是否匹配。 - 看线性求解器迭代次数是否随核数增加——并行 GAMG 的粗化层通信会放大迭代数。
- 看写盘时刻的
ClockTime是否出现台阶。 - 用
top/ps采样内存,确认是否发生换页。
失败模式
| 现象 | 根因 | 判定试验 |
|---|---|---|
| 核数翻倍时间不变 | 串行段主导(I/O 或全局归约) | 关掉写盘重跑,若时间骤降即为 I/O |
| 加速比随核数下降 | 每核单元数过少、通信占比上升 | 固定总网格,从 8 核增到 32 核画加速比曲线 |
| 内存随迭代缓慢增长 | 场或矩阵未释放、平均统计累积 | 用 top 观察 RSS 是否单调上升 |
| 求解器迭代数随核数上升 | 分区边界增大、GAMG 粗化通信变差 | 换 scotch/hierarchical 分解方法对比 |
| 计算节点突然变慢 | 磁盘写满或内存换页 | 查磁盘余量与 vmstat 的换页计数 |
参考文献
- G. M. Amdahl, “Validity of the single processor approach to achieving large scale computing capabilities”, AFIPS Spring Joint Computer Conference, 1967.
- G. H. Golub, C. F. Van Loan, Matrix Computations, 4th ed., Johns Hopkins University Press, 2013.
- W. Gropp, E. Lusk, A. Skjellum, Using MPI, 3rd ed., MIT Press, 2014.
- U. Trottenberg, C. Oosterlee, A. Schüller, Multigrid, Academic Press, 2001.
- OpenFOAM Foundation, OpenFOAM User Guide, §“Parallel performance and decomposition”.