章节总结
- 在本章中,我们介绍了性能分析中的基本指标,例如已执行/已完成指令、CPU利用率、IPC/CPI、微操作、流水线槽、核心/参考时钟、缓存未命中和分支预测错误。我们展示了如何使用 Linux perf 采集这些指标中的每一个。
- 对于更高级的性能分析,可以收集许多派生指标。例如,MPKI(每千条指令的未命中)、Ip*(每个函数调用、分支、加载等指令)、ILP、MLP 等。本章的案例研究展示了如何通过分析这些指标获得可操作的见解。但是,仅查看汇总数字就得出结论要谨慎。不要陷入“电子表格性能工程”的陷阱,即只收集性能指标而不查看代码。总是寻求第二个数据源(例如,稍后讨论的性能配置文件)来验证您的假设。
- 内存带宽和延迟是当今许多生产软件包性能的关键因素,包括人工智能、高性能计算、数据库和许多通用应用程序。内存带宽取决于 DRAM 速度 (MT/s) 和内存通道数。现代高端服务器平台拥有 8-12 个内存通道,整个系统的带宽可达 500 GB/s,单线程模式下可达 50 GB/s。如今的内存延迟变化不大,事实上,随着新一代 DDR4 和 DDR5 的出现,它还在略微恶化。大多数现代系统的内存访问延迟都在 70-110 纳秒范围内。