https://blog.csdn.net/qq_33801641/article/details/107552310
上下文切换
vmstat 使用 vmstat 这个工具,来查询系统的上下文切换情况 vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数
每秒上下文切换多少次才算正常? 这个数值其实取决于系统本身的 CPU 性能 如果系统的上下文切换次数比较稳定,那么数百到一万以内,都是正常的 但当上下文切换次数超过一万次,或者切换次数出现数量级的增长时,就很可能已经出现了性能问题
深入分析 根据上下文切换的类型,具体分析
自愿上下文切换多了,说明进程都在等待资源,有可能发生了 I/O 等其他问题 非自愿上下文切换多了,说明进程都在被强制调度,也就是都在争抢 CPU,说明 CPU 的确成了瓶颈 中断次数变多了,说明 CPU 被中断处理程序占用,还需要通过 /pro/interrupts 文件来分析具体的中断类型
全文总结-如何查看分析上下文切换 通过 vmstat 确认系统的当前的上下文切换(cs)、中断次数(in)、就绪队列(r)、CPU 使用率(us、sy) 若上下文切换次数和 CPU 使用率过高,通过 pidstat 查看是哪个进程或线程的切换次数过高,CPU 使用率过高 然后确认是自愿上下文切换还是非自愿上下文切换,从而深入分析是否存在其他系统瓶颈问题 若中断次数过高,通过 /proc/interrupts 分析是哪种中断类型
LoadAverage
Load Average是 CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
一般来说,Load Average是与机器内核数有关的。以一个单核的机器为例,load=0.5表示CPU还有一半的资源可以处理其他的线程请求,load=1表示CPU所有的资源都在处理请求,没有剩余的资源可以利用了,而load=2则表示CPU已经超负荷运作,另外还有一倍的线程正在等待处理。所以,对于单核机器来说,理想状态下,Load Average要小于1。同理,对于双核处理器来说,Load Average要小于2。结论是:多核处理器中,你的Load Average不应该高于处理器核心的总数量。
对于cpu负载的理解,首先需要搞清楚下面几个问题:
1)系统load高不一定是性能有问题。 因为Load高也许是因为在进行cpu密集型的计算
2)系统Load高不一定是CPU能力问题或数量不够。 因为Load高只是代表需要运行的队列累计过多了。但队列中的任务实际可能是耗Cpu的,也可能是耗i/0奶子其他因素的。
3)系统长期Load高,解决办法不是一味地首先增加CPU 因为Load只是表象,不是实质。增加CPU个别情况下会临时看到Load下降,但治标不治本。
4)在Load average 高的情况下需要鉴别系统瓶颈到底是CPU不足,还是io不够快造成或是内存不足造成的。
https://blog.csdn.net/duzilonglove/article/details/80111753
文档信息
- 本文作者:Jessica
- 本文链接:https://jessica0530.github.io/2020/10/11/Linux-%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5%E7%9B%B8%E5%85%B3/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)