写在前面:
由于之前在开发分布式系统中由于云服务器性能原因,导致系统总是断连等错误。但是之前一般只是简单gdb调试一下,定位错误异常艰难,所以决定开设此专栏,系统的记录我学习Linux 性能优化的历程。
也是非常感谢极客时间的倪朋飞老师分享这些学习资源。
作者邮箱:2107810343@qq.com
时间:2021/04/29 16:11
实现环境:Linux
系统:ubuntu 18.04
CPU性能指标
最先想到的,也是最常见的,肯定就是CPU使用率
第二个容易想到的就是平均负载
第三个就是进程上下文切换
除了上面的三个,还有一个重要的指标,也就是CPU缓存的命中率。由于CPU和内存在速度上的巨大差距,才在CPU核心中引入了缓存的概念。
CPU缓存的速度介于CPU和内存之间,缓存的是热点的内存数据。从上图可以看到,L1~L3 三级缓存的大小依次增大,响应的,性能依次降低。而它们的命中率,衡量的是CPU缓存的复用情况,命中率越高表示性能越好。
针对CPU指标使用性能工具排查
- 平均负载:我们可以先使用uptime,查看系统的平均负载;而在平均负载升高后,使用mpstat和pidstat,分别观察每个CPU和每个进程CPU的使用情况,进而找出导致平均负载升高的进程。
- 上下文切换:先使用vmstat,查看系统的上下文切换次数和中断次数;然后通过pidstat,观察了进程的自愿上下文切换和非自愿上下文切换情况,最后通过pidstat,观察进程自愿上下文切换和非自愿上下文切换情况;最后通过pidstat,观察线程的上下文切换情况,找出上下文切换次数增多的根源。
- CPU使用率:可以先用top观察系统CPU升高,然后可以使用pidstat对怀疑进程进行排查,或者使用pref工具对短时的系统数据进行排查
以下是倪朋飞老师整理的图:
但是呢,这些工具之间也是有联系的,我们可以先用几个工具先去缩小范围,然后再用其他工具去具体排查,具体的使用流程如下:
参考文献
[1] 倪朋飞.Linux性能优化实战.极客时间