top
键盘上敲1:显示CPU的核数,总共多少个CPU核Cpu(s)
- us:用户总的CPU占用率 高于80%就需要进行分析了
- sy:系统总的CPU
- ni:改变过优先级的进程占用CPU的百分比
- id:空闲CPU百分比 (一般us+ni+id应该接近于100%)
- wait:IO等待占用CPU的百分比
- hi&si:处理中断消耗的时间。硬中断占用CPU的百分比;软中断占用CPU的百分比
- wa:CPU等待的一个百分比
每个ID具体的CPU、内存、时间、命令的占用情况
vmstat 可以分析内存、磁盘IO、cpu 参数: 第一个参数:时间间隔,单位是秒 第二个参数:采样次数 vmstat 2 10 以下表示每隔2s采集一次状态,共采集10次 -a:memory下的buff和cache会变成inact和active
- procs 使用内存IO的进程统计
- r:获取了IO资源而等待cpu运行的进程数目,如果这个值持续较高,说明可能cpu资源不足
- b:处于不可中断状态,cpu已经运行完,等待IO资源在阻塞队列中的进程数目,如果这个值长时间大于1,则需要关注一下
- memory 内存大小相关统计,单位是k
- swpd:交换区被用掉的大小,也就是被用掉的虚拟内存大小
- free:空闲的内存大小,剩下的完全没有被分配的内存大小。这个值比较小不一定会有问题,会释放buff/cache。还需要看swpd,内存不够的时候会开始用swpd,如果swpd不为0或者还比较大,但是swap的si so长期为0,也不会影响性能
- buff:被用作buffer缓冲区的大小,即将写入磁盘的缓冲区大小,比如write系统调用的时候,系统不会马上写入磁盘,会先缓冲到buffer中然后在合适的时候写入磁盘
- cache:被用作cache文件系统缓存的大小,从磁盘中读取的缓存大小
- inact:非活跃的内存大小,被标明可回收的内存。系统可以使用的内存大小为free+inact,如果这个和持续下降,需要考虑是不是有内存泄漏的情况
- active:活跃的内存大小
- swap 交换分区的使用情况
- si:每秒从交换区写入内存的大小,单位是kB/s
- so:每秒从内存中写入交换区的大小,单位是kB/s
- io 块设备IO统计(磁盘属于块设备)
- bi:每秒从块设备读入内存的大小(从磁盘读),单位是kB/s
- bo:每秒从内存中写入块设备的大小(写磁盘),单位是kB/s
- system 操作系统中断和上下文切换统计
- in:操作的系统每秒触发的中断数目
- cs:操作系统每秒上下文切换次数(用户态和系统态或者系统态到用户态的切换)
- cpu cpu的相关统计
- us:用户态代码执行占用的cpu时间
- sy:系统态代码执行占用的cpu时间
- id:cpu空闲时间,也就是执行系统idle的时间,cpu是不允许停机的
- wa:耗费在等待IO上的时间
- st:其他的等待时间
- 场景1:swpd大小不断变化,si/so持续变化,说明内存在频繁进行交换,内存不足,磁盘IO和cpu都会被消
- 场景2:如果cpu的id较高,但是free非常低,再加上-a参数free+inact非常低,内存可能被耗尽了
- 场景3:wa较高,b也高,可能IO阻塞
- 场景4:如果r经常大于4,且id经常少于40,表示cpu负荷比较重
- 场景5:如果r大于cpu个数的4倍,可能cpu资源不足,或者cpu的速率低,导致多数进程在等待cpu,造成系统进程运行过慢
- 场景6:如果id持续为0且sy是us的两倍,则可能cpu资源不足
- 场景7:wa建议<25%,如果超过了之后可以用iostat再进行查看,可能磁盘系统的原因