1.在top里输出loadaverage aa bb cc或者 cat /proc/loadavg,在一定时间内进程平均等待时间,如果这个参数值高,说明系能负载高.
2.进程为什么会等待执行?
多任务的OS,进程执行都是分时被调度 A-B-内核-A 过程
进程的状态(ps auxw) 1.TASK_RUN(可被调度运行) ,2.可中断等待(长期时间等待IO),3.不可中断IO(如读取
磁盘数据) 4.暂停(不回复不可被调度),5.僵尸进程,
只有1和3可以被内核调度到cpu运行, loadaverage里的等待也只跟1,3有关
这样就可以看出 负载高---->进程等待多---->有大量1,3两个状态进程导致---->1是等待cup,3是等待io
---->当cup负载或者IO负载会造成系统负载高,造成系统瓶颈
3. 什么导致cup和io高,那些进程cup消耗高
1.ps(ps aux | sort -k3nr | head -n 5)和top命令
top查找到使用cup(%cup列)最高的进程
top -H -p 14094 (-p监控指定进程 -H查看进程里各个线程状态) 14870
ps -efL
2.vmstat 判断是cup还是io的负载
b列高,说明等待的进程多
swap列频繁变化说明内存不足
io列变动频繁问起高说明IO可能是瓶颈 ,可在分析bi(磁盘读),bo(磁盘写)
3.可使用iostat分析io是否为瓶颈 ,可查看%idle列,如果该列很小,说明io很频繁,可能为io的瓶颈
4.如果分析瓶颈是cup还是io
如果io,swap,memory都比较小,cup负载高说明在密集计算下cup的逻辑计算能力不足
如果在vmstat里free很小,si,so值很大,说明系统能存不够
如果cup使用率低,vmstat的b列值比较大,iostat里%idle比较小,说明是io的瓶颈
5.代码级的分析,分析热点函数调用测试,每次调用花费时间
使用工具gpref