CPU 状态:

这里显示了不同模式下的所占CPU时间的百分比。这些不同的CPU时间表示:
- us, user: 运行(未调整优先级的) 用户进程的CPU时间
- sy,system: 运行内核进程的CPU时间
- ni,niced:运行已调整优先级的用户进程的CPU时间
- id,idle:空闲CPU时间
- wa,IO wait: 用于等待IO完成的CPU时间
- hi:处理硬件中断的CPU时间
- si: 处理软件中断的CPU时间
- st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
us占比高
1、SQL索引没有利用好,用到全表扫描或者全索引扫描
us使用率高案例:http://keithlan.github.io/2018/07/25/sys_high_cpu_mysql/ tcmalloc 来替换 malloc , 用以获得更好的并发,tcmalloc 在小内存分配管理上更加优秀 简单的SQL模型意味着更高的QPS,SQL越简单越好,复杂的业务逻辑可以放在程序端处理
sy占比高
1、sql出现系统调用,在有timestamp的场景下,如果MySQL的time_zone=system,会调用linux的时区函数,从而内核态的cpu使用率高
ni占比高
wa占比高
1、说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,
2、可能磁盘出现瓶颈。
hi占比高
si占比高
st占比高
查看某个进程下的线程
top -H -p 1748
