一.负载
而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。比如:
- CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
- I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
- 大量等待 CPU 的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。
安装
yum -y install perf
查看使用最多的函数
perf top
分别是采样数(Samples)、事件类型(event)和事件总数量(Event count)
第一列 Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表示
第二列 Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等
第三列 Object ,是动态共享对象的类型。比如 [.]表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间
最后一列 Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示
1.持续采样,按 Ctrl C 终止采样
perf record
2.示类似于 perf top的报告
perf report
-g展开调用关系,-p指定进程
perf top -g -p 21515
只熬到占用率最多的函数,对函数在源码进行grep,找到有问题的部分。