OS监控

作者: dhpyy | 来源:发表于2021-03-27 18:41 被阅读0次

全局监控

针对OS,我通常看上图中红⾊计数器的部分,这是OS查看的 第⼀层。有第⼀层就有第⼆层,所以才需要定向的监控。后⾯我们再说定向监控的思路


CPU监控

  • us cpu
    查看⽤⼾态进程消耗的CPU百分⽐。⼤家都知道怎么往下落。这个链就是下⾯这样的


  • wa cpu
    查看I/O读写等待消耗的CPU百分⽐。这个证据链怎么往下落呢?来看⼀下


  • sy cpu
    查看内核消耗的CPU百分⽐。它的分析链路仍然和us?CPU⾼的分析链路差不多,只是这个进程可能不是应⽤的,⽽是系统⾃⼰的。但是,是什么导致内核进程占⽤CPU⾼呢。这可能和应⽤有关,当然也可能和配置有关。


  • si cpu
    查看软中断消耗的CPU百分⽐。什么是软中断呢?CPU运行任务时,突然来了⼀个优先级⾼的,这时就会发⼀个中断信号给CPU。CPU这时候就把⼿头的⼯作现场保存⼀下,⼲这个优先级⾼的活,除⾮这个中断是致命的,不然CPU会在⼲完这个活之后再回去⼲之前的活,这就是⼀次软中断。

这个值,越多就越有问题,关键是它有多少才是有问题呢?不幸的是,它根本没有可以参考的值,在不同的应⽤和硬件环境中,si CPU都会有很⼤差别。


IO监控

⼀个数据要想写到磁盘当中,没那么容易,会经历以下过程


  • iostat



    svctm代表I/O平均响应时间。请注意,这个计数器,有很多⼈还把它当个宝⼀样,实际上在man⼿册中已
    经明确说了,这个数据你爱看就爱,不⼀定准
    w_await表⽰写⼊的平均响应时间;
    r_await表⽰读取的平均响应时间;
    r/s表⽰每秒读取次数;
    w/s表⽰每秒写⼊次数
    IO/s = r/s + w/s = 18.33+114.33 = 132.66
    %util = ( (IO/s * svctm) /1000) * 100% = 100.02564%
    这个%util是⽤svctm算来的,既然svctm都不⼀定准了,那这个值也只能参考了

  • iotop



    这⾥有Total,也有Actual,并且这两个并不相等,为什么呢?
    因为Total的值显⽰的是⽤⼾态进程与内核态进程之间的速度,⽽Actual显⽰的是内核块设备⼦系统与硬件
    之间的速度。⽽在I/O交互中,由于存在cache和在内核中会做I/O排序,因此这两个值并不会相同。那如果你要说磁盘的读写能⼒怎么样,我们应该看的是Actual。这个没啥好说的,因为Total再⼤,不能真实写到硬盘上也是没⽤的。
    在下⾯的线程列表中,通过排序,就可以知道是哪个线程(注意在第⼀列是TID哦)占的I/O⾼了

内存监控

  • free



    total肯定是要优先看的,其次是available,这个值才是系统真正可⽤的内存,⽽不是free
    因为Linux通常都会把⽤的内存给cache,但是不⼀定会⽤,所以free肯定会越来越少,但是available
    是计算了buff和cache中不⽤的内存的,所以只要available多,就表⽰内存够⽤。
    对于内存的分析,你还可以⽤nmon和cat/proc/meminfo看到更多信息。如果你的应⽤是需要⼤⻚处理
    的,特别是⼤数据类的应⽤,需要关注下HugePages相关的计数器。

Network监控

先看⽹络的分析决策链


在判断了瓶颈在⽹络上之后,如果知道某个进程的⽹络流量⼤,⾸先肯定是要考虑减少流量,
当然要在保证业务正常运⾏,TPS也不降低的情况下。

当你看到OS全局监控图中的Network中的Total总流量⽐较⼤时,就要有这样的分析思路(从右向左看)


相关文章

网友评论

      本文标题:OS监控

      本文链接:https://www.haomeiwen.com/subject/elpyhltx.html