CPU:
- us(user) 用户进程占用CPU时间比例
- sy(system) 系统占用CPU时间比例 - id(idel) CPU空闲时间比 - wa(iowait) IO等待时间比(IO等待高时,可能是磁盘性能有问题了) - st(steal) steal timevmstat procs(processor) r(Running or Runnable):就绪队列的长度,也就是正在运行和等待 CPU 的进程数。 b(Blocked):处于不可中断睡眠状态的进程数。 memory free:剩余的物理内存 buff: cache: swap - si 从磁盘交换的内存大小 - so 交换到磁盘的内存大小 io bi:从块设备接收的块(block/s) bo:发送给块设备的块(block/s).如果这个值长期不为0,说明内存可能有问题,因为没有使用到缓存(当然,不排除直接I/O的情况,但是一般很少有直接I/O的) system - in 每秒的中断次数,包括时钟中断(各类型终中断次数统计:# watch -d cat /proc/interrupts) - cs 每秒进程上下文切换次数(查看每个进程的上下文切换次数:# pidstat -w -t 1 ) 关于# pidstat -w -t 1
cswch:自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。
nvcswch:非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。
1.情况一:cpu load值高、cpu的wa值偏高,如图
观察机器中top数据,发现内存使用率正常,但wa值很高,%wa指CPU等待磁盘写入完成的时间,怀疑磁盘性能负载过高导致
wa(iowait):显示用于等待I/O操作占用 CPU 总时间的百分比。 排查分析: 1.通过iotop命令查看对磁盘有操作的进程, #iotop -o -d 5 (# -o: 只显示实际执行I/O的进程或线程。-d:刷新间隔,如图通过iotop过滤到占用磁盘ID非常高的线程ID(TID),其实这里已经可以看到进程信息了,再通过 PS命令过滤线程ID确认业务进程,kill 掉进程后CPU负载降下来了。
#ps -eLf |grep TID #kill PID