Linux高阶—CPU性能分析vmstat(三)

通过vmstat命令看到的cpu四个状态:sy,us,id,wa和procs状态的r(load avg)结合,基本可以知道cpu的负荷情况。

4d41a874b3464966ab1db5c79341a8e9.png

字段含义如下:

a383ee84d1364ceea5489b1953c5dfc6.png

理解(Load Average使用vmstat 查看r 队列

平均负载,上一分钟同时处于“就绪”状态的平均进程数。

Load这个东西怎么理解呢,就像一条马路,有N个车道,如果N个进程进入车道,那么正好一人一个,再多一辆车就占不到车道,要等有一个车空出车道。

Load Average 的值应该小于“CPU个数 * 核数 *0.7 ” ,否则就高了。

比如:

查看 CPU 核心数:cat /proc/cpuinfo|grep processor|wc -l
1个1核CPU,Load Average < 1 * 1 * 0.7 = 0.7;
1个4核的CPU,Load Average必须 < 1 * 4 * 0.7 = 2.8。

理解(Interrupt),使用vmstat查看的 in 次数

Interrupt Rate中包括内核由于进程的时间片中断。
在 Linux 2.6 中,系统时钟每 1 毫秒中断一次时钟频率,用 HZ 单位表示(即每秒中断 1000 次)。
系统不一样,内核不一样的配置100、250的都有。

内核的时钟频率可以通过如下命令知道: 

cat /boot/config-`uname -r` | grep ‘^CONFIG_HZ=’

CONFIG_HZ=100

每秒总的时钟中断数就是 = cpu个数 * 核数 * CONFIG_HZ

cat /proc/interrupts   可以查看中断的类型以及次数

4363fd1881f140d4b90aac5ee9f30784.png

理解(Context Switch),使用vmstat查看 cs 次数

中断和进程(包括线程)切换,一次中断(Interrupt)会引起一次切换,进程(线程)的创建、激活之类的也会引起一次切换。
统计CPU 上下文切换,可查看哪个服务在做切换,与切换频率。

pidstat -wt 1 |grep -v 0.00

理解CPU使用率,使用vmstat查看id 空闲率可以判断CPU使用情况,然后通过ps 命令,找到对应的PID信息。

统计业务进程数量、占用CPU前20的进程信息。

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -20

统计D进程:得不到IO的响应,进程会进入了uninterruptible sleep状态,所以要想使进程从uninterruptible sleep状态恢复,就得使进程等待的IO恢复,D进程太多,一般只能重启操作系统。

ps -aux | awk '$8 == "D"' |wc -l

查看哪个用户启用线程数最多

ps h -Led -o user | sort | uniq -c | sort -n

查看哪个进程启用线程数最多

ps h -Led -o pid | sort | uniq -c | sort -n

ps -Lef |grep -v PID|sort -rn -k +6 |head -1

找到异常线程后,如果是java线程,可以使用jstack 打印堆栈日志,然后通过日志分析哪一段代码有问题!

上一篇:Linux高阶—磁盘性能分析iostat(二)​​​​​​

下一篇:Linux高阶—接口性能分析fiddler(四)​​​​​​​

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值