软件性能工程师、算法优化人员、数据库内核开发者及高性能计算应用开发人员。
掌握 CPU 性能分析工具(perf、VTune)的使用方法与性能瓶颈识别。
理解微架构级性能优化技巧(缓存优化、分支预测优化、指令级并行)。
能够针对特定应用进行系统级性能调优。
性能分析基础:性能指标的定义(吞吐量、延迟、CPU 利用率、CPI);性能分析的标准流程;Amdahl 定律与 Gustafson 定律。
性能分析工具链:Linux perf 工具的使用(perf stat、perf record、perf report);Intel VTune Profiler 的功能模块;热点分析与调用图生成。
自上而下的微架构分析:前端瓶颈(Front-End Bound);后端瓶颈(Back-End Bound);退役瓶颈(Retiring);分支预测错误(Bad Speculation)。
缓存优化:缓存命中率的重要性;数据布局优化(结构体拆分、数组结构体 vs 结构体数组);缓存行对齐与填充;预取指令的使用。
内存访问优化:NUMA 感知编程(内存绑定、CPU 绑定);大页(Huge Pages)的配置与使用;避免 TLB 抖动。
分支预测优化:分支预测失败的代价;使用 likely/unlikely 提示编译器;无分支编程技巧(条件移动指令)。
指令级并行:循环展开(Loop Unrolling);软件流水;减少数据依赖;利用指令级并行度。
向量化优化:自动向量化与编译器指导;SIMD 指令集(SSE、AVX、NEON)的手动优化;使用编译器内建函数与 intrinsic。
浮点运算优化:浮点运算的性能代价;使用单精度代替双精度;避免浮点异常与舍入模式切换。
多线程与并发优化:线程亲和性(CPU Affinity);锁的优化(无锁数据结构、读写锁、自旋锁);避免伪共享(False Sharing)。
编译器优化:编译选项的选择(-O2、-O3、-Ofast);链接时优化(LTO);反馈导向优化(PGO)的流程。
综合实战项目:选取典型计算密集型应用(如矩阵乘法、图像处理算法),通过性能分析工具定位瓶颈,应用缓存优化、向量化等手段进行加速。