一、各参数的含义
1.1 procs
- r:可运行队列的线程数,这些线程都是可运行状态,只不过 CPU 暂时不可用;
- b:被 blocked 的进程数,正在等待 IO 请求;
1.2 memory
- swpd:已使用的 SWAP 空间大小,KB 为单位;
- free:可用的物理内存大小,KB 为单位;
- buff:物理内存用来缓存读写操作的 buffer 大小,KB 为单位;
- cache:物理内存用来缓存进程地址空间的 cache 大小,KB 为单位;
1.3 swap
- si:数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位;
- so:数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位;
1.4 io
- bi:磁盘块从文件系统或 SWAP 读取到 RAM(blocks in)的大小,block 为单位;
- bo:磁盘块从 RAM 写到文件系统或 SWAP(blocks out)的大小,block 为单位;
1.5 system
- in:被处理过的中断数
- cs:系统上正在做上下文切换的数目
1.6 cpu
- us:用户占用 CPU 的百分比;
- sy:内核和中断占用 CPU 的百分比
- id:CPU 完全空闲的百分比
- wa:所有可运行的线程被 blocked 以后都在等待 IO,这时候 CPU 空闲的百分比;
- st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown. 来自于虚拟机偷取的CPU所占的百分比
二、简单分析
2.1 procs r
运行的进程比较多,系统很繁忙,展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
2.2 swap
如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
si,so
这两个值越大,会看到由内核消耗的cpu时间会越多。注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
2.3 io
bi/bo
:磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常cpu us
:us的值比较高时,说明用户进程消耗的cpu时间多,如果持续大于50%,服务高峰期可以接受, 如果长期大于50 ,可以考虑优化cpu sy
:现实内核进程所占的百分比,sys的值过高时,说明系统内核消耗的cpu资源多,这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。cpu wa
:列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。cpu id
:CPU 空闲时所占百分比 平常持续小于50,服务高峰期可以接受
2.4 常见问题处理
2.4.1 CPU问题现象
- 如果r经常大于4,且id经常少于40,表示cpu的负荷很重。
- 如果bi,bo长期不等于0,表示内存不足。
- 如果disk经常不等于0,且在b中的队列大于3,表示io性能不好。
- 如果在processes中运行的序列(process r)是连续的大于在系统中的CPU的个数表示系统现在运行比较慢,有多数的进程等待CPU。
- 如果r的输出数大于系统中可用CPU个数的4倍的话,则系统面临着CPU短缺的问题,或者是CPU的速率过低,系统中有多数的进程在等待CPU,造成系统中进程运行过慢。
- 如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us)系统则面临着CPU资源的短缺。
2.4.1.1 解决办法
当发生以上问题的时候请先调整应用程序对CPU的占用情况.使得应用程序能够更有效的使用CPU.同时可以考虑增加更多的CPU. 关于CPU的使用情况还可以结合mpstat, ps aux top prstat –a等等一些相应的命令来综合考虑关于具体的CPU的使用情况,和那些进程在占用大量的CPU时间.一般情况下,应用程序的问题会比较大一些.比如一些sql语句不合理等等都会造成这样的现象.
2.4.2 内存问题现象
内存的瓶颈是由scan rate (sr)来决定的.scan rate是通过每秒的始终算法来进行页扫描的.如果scan rate(sr)连续的大于每秒200页则表示可能存在内存缺陷.同样的如果page项中的pi和po这两栏表示每秒页面的调入的页数和每秒调出的页数.如果该值经常为非零值,也有可能存在内存的瓶颈,当然,如果个别的时候不为0的话,属于正常的页面调度这个是虚拟内存的主要原理.
2.4.2.1 解决办法
- 调节applications & servers使得对内存和cache的使用更加有效.
- 增加系统的内存.
关于内存的使用情况还可以结ps aux top prstat –a等等一些相应的命令来综合考虑关于具体的内存的使用情况,和那些进程在占用大量的内存.一般情况下,如果内存的占用率比较高,但是,CPU的占用很低的时候,可以考虑是有很多的应用程序占用了内存没有释放,但是,并没有占用CPU时间,可以考虑应用程序,对于未占用CPU时间和一些后台的程序,释放内存的占用。
评论区