课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
性能优化问题是程序员需要长期关注的一个问题,而今天我们就通过案例分析来了解一下,性能优化问题定位包含哪些内容。
1.如何定位CPU瓶颈?
CPU是通常大家先关注的性能指标,宏观维度有核的CPU使用率,微观有函数的CPUcycle数,根据性能的模型,性能规格与CPU使用率是互相关联的,规格越高,CPU使用率越高,但是处理器的性能往往又受到内存带宽、Cache、发热等因素的影响,所以CPU使用率和规格参数之间并不是简单的线性关系,所以性能规格翻倍并不能简单地翻译成我们的CPU使用率要优化一倍。
2.如何定位IO瓶颈?
系统IO的瓶颈可以通过CPU和负载的非线性关系体现出来。当负载增大时,系统吞吐量不能有效增大,CPU不能线性增长,其中一种可能是IO出现阻塞。系统的队列长度特别是发送、写磁盘线程的队列长度也是IO瓶颈的一个间接指标。
3.如何定位IO瓶颈?
应用程序常用的IO有两种:DiskIO和网络IO。判断系统是否存在IO瓶颈可以通过观测系统或进程的CPU的IO等待比例来进行,比如使用mpstat、top命令。系统的队列长度特别是发送、写磁盘线程的队列长度也是IO瓶颈的一个重要指标。
4.如何定位锁的问题?
大家都知道锁会引入额外开销,但锁的开销到底有多大,估计很多人没有实测过,我可以给一个数据,一般单次加解锁100cycles,spinlock或者cas更快一点。使用锁的时候,要注意锁的粒度,但锁的粒度也不是越小越好,太大会增加撞锁的概率,太小会导致代码更难写。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。