- 每秒钟触发 250 次时间中断
- grep 'CONFIG_HZ=' /boot/config-$(uname -r)
- CONFIG_HZ=250 #代表每秒250次中断
- uname -r #输出内核版本号
-
-
- 只保留各个 CPU 的数据
- cat /proc/stat | grep ^cpu
-
- 默认每 3 秒刷新一次
- top
- 只需要按下数字 1 ,就可以切换到每个 CPU 的使用率了
-
-
- GDB 调试程序的过程会中断程序运行,这在线上环境往往是不允许的。
- 所以,GDB 只适合用在性能分析的后期,当你找到了出问题的大致函数后,线下再借助它来进一步调试函数内部的问题。
-
- perf 是 Linux 2.6.31 以后内置的性能分析工具
- 安装perf
- apt install linux-tools-common
- apt install linux-tools-4.15.0-128-generic
- apt install linux-cloud-tools-4.15.0-128-generic
-
-
- perf top
-
第一列 Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表示。
-
第二列 Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。
-
第三列 Object ,是动态共享对象的类型。比如 [.] 表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间。
-
最后一列 Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示
-
-
perf record 和 perf report
-
https://github.com/feiskyer/linux-perf-examples/blob/master/nginx-high-cpu/README.md
-
# 并发 10 个请求测试 Nginx 性能,总共测试 100 个请求
-
ab -c 10 -n 100 http://10.241.132.213:10000/
-
-
# -g 开启调用关系分析,-p 指定 php-fpm 的进程号 21515
-
perf top -g -p 21515
-