Linux系统的性能指标

之前被问到过的一个问题,也能够答上来一些,但可能因为没有接触过真实的线上生产环境,只是自己在自己的虚拟机/VPS上运行的时候查看着玩一玩,对性能指标、系统性能监控没有什么特别深刻、直观的认识,闲着的时候想想这个问题(对于一台Linux机器来说,如何监控它的CPU,内存,磁盘,网络等的使用情况;怎样算高负载,具体的依据是什么?)可能还是得总结一下,说不定什么时候就再用得上呢?

一、CPU的使用情况

CPU使用率反映的是当前CPU的繁忙程度,忽高忽低的原因在于占用CPU处理时间的进程可能处于I/O等待状态但却还未释放进入wait。

平均负载(load average)是指某段时间内占用CPU时间的进程和等待CPU时间的进程数,这里等待CPU时间的进程是指等待被唤醒的进程,不包括处于wait状态进程。

CPU良好状态的指标
  • CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%。
  • 上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的。
  • 可运行队列:每个处理器的可运行队列<=3个线程。
常用监控工具/命令有:
  • mpstat: mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。
  • vmstat:查看所有CPU的平均信息。
  • iostat: 只能查看所有CPU的平均信息。
  • sar: 与 mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。
  • top: 显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。
二、Memory的使用情况
Memory的良好状态指标

swap in (si) == 0,swap out (so) == 0
应用程序可用内存/系统物理内存 <= 70%

常用监控工具/命令:
  • vmstat
  • free
三、磁盘的使用情况(磁盘I/O)
磁盘使用率的良好状态指标
  • iowait % < 20%
  • 提高命中率的一个简单方式就是增大文件缓存区面积,缓存区越大预存的页面就越多,命中率也越高。
  • Linux 内核希望能尽可能产生次缺页中断(从文件缓存区读),并且能尽可能避免主缺页中断(从硬盘读),这样随着次缺页中断的增多,文件缓存区也逐步增大,直到系统只有少量可用物理内存的时候 Linux 才开始释放一些不用的页。

常用监控工具/命令:

  • iostat
  • sar
  • df
  • iotop
四、网络状况(网络I/O)

如何判断网络状态是否良好这个暂时还真不清楚o(╯□╰)o

常用监控工具/命令:
  • iftop
  • nload
  • iptraf
  • nethogs
  • netstat
  • sar
  • dstat
  • tcpdump
  • mtr
五、其它

文件、进程、端口等的使用情况(第5部分的内容其实和上面的4个分类有重叠,也可以算是上面4个分类的一种微观表现吧)

  • lsof
  • htop
  • w
  • vnstat
  • ps
  • pgrep

 

参考/扩展链接:

声明: 除非注明,CrazyOf.me文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://crazyof.me/blog/archives/870.html