性能优化
性能指标
高并发和响应快对应着性能优化的两个核心指标:吞吐和延时
性能问题的本质就是系统资源已经到达瓶颈,但请求的处理还不够快,无法支撑更多的请求。 性能分析实际上就是找出应用或系统的瓶颈,设法去避免或缓解它们。
对于不同的性能问题要选取不同的性能分析工具。 下面是常用的Linux Performance Tools以及对应分析的性能问题类型。
到底应该怎么理解“平均负载”
平均负载:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。它和我们传统意义上理解的CPU使用率并没有直接关系。
其中不可中断进程是正处于内核态关键流程中的进程(如常见的等待设备的I/O响应)。不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
平均负载多少时合理
实际生产环境中将系统的平均负载监控起来,根据历史数据判断负载的变化趋势。当负载存在明显升高趋势时,及时进行分析和调查。 当然也可以当设置阈值(如当平均负载高于CPU数量的70%时)
现实工作中我们会经常混淆平均负载和CPU使用率的概念,其实两者并不完全对等:
-
CPU密集型进程,大量CPU使用会导致平均负载升高,此时两者一致
-
I/O密集型进程,等待I/O也会导致平均负载升高,此时CPU使用率并不一定高
-
大量等待CPU的进程调度会导致平均负载升高,此时CPU使用率也会比较高
平均负载高时可能是CPU密集型进程导致,也可能是I/O繁忙导致。具体分析时可以结合mpstat/pidstat工具辅助分析负载来源
CPU
CPU上下文切换(上)
CPU上下文切换,就是把前一个任务的CPU上下文(CPU寄存器和PC)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的位置,运行新任务。其中,保存下来的上下文会存储在系统内核中,待任务重新调度执行时再加载,保证原来的任务状态不受影响。
按照任务类型,CPU上下文切换分为:
…
近期评论