本章总结
- 不能充分利用现代多核 CPU 的应用程序将落后于竞争对手。让软件能够随着 CPU 核心数量的增长而良好扩展,对于应用程序的未来成功至关重要。
- 在处理单线程应用程序时,优化程序的某一部分通常会带来正向的性能提升。然而,对于多线程应用程序来说,情况并非如此。这种效应广为人知,即阿姆达尔定律(Amdahl's law),它指出并行程序的加速比受其串行部分的限制。
- 如通用可扩展性定律(Universal Scalability Law)所解释的,线程通信可能导致加速比倒退。这对多线程程序调优提出了额外的挑战。
- 正如我们在线程数案例研究中所看到的,频率降速、内存带宽饱和以及其他问题可能导致较差的性能扩展。
- 在混合处理器上进行任务调度极具挑战性。注意次优的作业调度,在不必要时不要限制 OS 调度器。
- 优化多线程应用程序的性能还涉及检测和缓解缓存一致性的影响,如真共享和假共享。
- 在过去几年中,新工具的出现弥补了传统分析器在分析多线程应用程序性能方面的空白。我们介绍了 Coz 和 GAPP,它们具有独特的功能集。