最近几年做了很多性能优化的事情,但是一直没有形成一套理论,也没有很好的形成一个好的排查问题的流程,每次做优化,大多是经验式的查找,最近看了一下这本书《linux system and performance monitoring》,写的太好了,仔细看了一遍,下面的是读书笔记和个人的一些体会。
1.性能优化
CPU,Memory,IO,Network )之间达到平衡和取舍。
不同子系统之间会相互影响,某一个子系统过高的使用率,会导致问题:
1)大量的页调入请求会填满队列
2)网卡设备上大量的吞吐,会导致CPU load过高
3)管理空闲内存队列也会消耗CPU
4)大量的磁盘写请求,会消耗CPU和IO带宽
2.应用类型
要找到系统瓶颈,应该先了解应用类型:
1)IO密集型
大量消耗内存和存储系统,对CPU和网络(存储系统是基于网络的除外)要求不高。这种应用使用CPU来发起IO请求,然后进入sleep状态。比如数据库。
2)CPU密集型
需要CPU进行批处理和数学计算。比如:web servers,mail servers,rendering server
3.找系统性能瓶颈的方法:
最好的找性能瓶颈的方法,是先对在正常满足性能要求的情况下,统计系统的各个参数,做为baseline.
然后在高压力下,当系统性能满足不了需求时,与baseline进行对比,找到性能问题。
4.常用的性能监控工具: