Skip to content

Commit 39c60b1

Browse files
committed
ops/debug: Amdahl's Law
1 parent ece231c commit 39c60b1

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

docs/ops/debug.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,12 @@ tcpdump -ni eth0 host 8.8.8.8
753753

754754
火焰图按照函数调用栈的方式竖向展示程序的执行情况,底部是调用栈的最外层,每个条的宽度代表对应的函数执行的 CPU 比例。于是,越宽的条就代表了对应的函数(以及其调用的函数)占用的 CPU 时间越多。可以点击感兴趣的函数来「专注」于这个函数内部的调用栈。
755755

756+
!!! note "为什么要分析「热点」?"
757+
758+
阿姆达尔定律(Amdahl's Law)指出,如果某个部分的执行时间占总体的比重大,那么优化这个部分(热点)就能显著提升整体性能;相反,如果某部分所占的时间比例很小,即使优化得再多,对整体性能提升也十分有限。
759+
760+
例如,如果某个程序的 90% 时间都花在了函数 A 上,那么对函数 A 的优化,即使只提升 10% 的性能,也能让整体性能提升 9.9%;但如果函数 B 只占用了 1% 的时间,即使让函数 B 提升了 99% 的性能,整体性能也只能提升不到 1%。
761+
756762
SVG 火焰图由 [Brendan Gregg 的 FlameGraph](https://github.com/brendangregg/FlameGraph) 项目生成,其支持包括 `perf` 在内的多种性能分析工具的输出。以下以 `perf` 为例介绍。
757763

758764
首先 clone FlameGraph 仓库,然后使用 `perf record` 命令对程序采样:

0 commit comments

Comments
 (0)