zoukankan      html  css  js  c++  java
  • 常用系统监控命令


    $ vmstat 5
    1

    重点参数含义:

    cs(context switch)是每秒上下文切换的次数。

    in(interrupt)则是每秒中断的次数。

    r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待 CPU 的进程数。

    b(Blocked)则是处于不可中断睡眠状态的进程数。

    可以看到,这个例子中的上下文切换次数 cs 是 9892 次,而系统中断次数 in 则是 124 次,而就绪队列长度 r 和不可中断状态进程数 b 都是 0。

    vmstat 只给出了系统总体的上下文切换情况,要想查看每个进程的详细情况,就需要使用我们前面提到过的 pidstat 了。给它加上 -w 选项,你就可以查看每个进程上下文切换的情况了。

    $ pidstat -w 5
    1

    这个结果中有两列内容是我们的重点关注对象。一个是 cswch ,表示每秒自愿上下文切换(voluntary context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary context switches)的次数。

    这两个概念你一定要牢牢记住,因为它们意味着不同的性能问题:

    1.自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。

    2.非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。

    其中还有一个重要的指标,是查看CPU中断次数,如下:

    $ watch -d cat /proc/interrupts
    1

    一般排查问题基本方法: 登录到服务器,判断系统负载怎么样 。 高的话有三种情况,首先是cpu使用率 ,其次是io使用率 ,之后就是两者都高 。
    cpu 使用率高,可能确实是使用率高, 也的可能实际处理不高而是进程太多切换上下文频繁 , 也可能是进程内线程的上下文切换频繁

    io 使用率高 , 说明 io 请求比较大, 可能是 文件io 、 网络io 。

    工具 :
    系统负载 : uptime ( watch -d uptime)看三个阶段平均负载
    系统整体情况 : mpstat (mpstat -p ALL 3) 查看 每个cpu当前的整体状况,可以重点看用户态、内核态、以及io等待三个参数
    系统整体的平均上下文切换情况 : vmstat (vmstat 3) 可以重点看 r (进行或等待进行的进程)、b (不可中断进程/io进程) 、in (中断次数) 、cs(上下文切换次数)
    查看详细的上下文切换情况 : pidstat (pidstat -w(进程切换指标)/-u(cpu使用指标)/-wt(线程上下文切换指标)) 注意看是自愿上下文切换、还是被动上下文切换
    io使用情况 : iostat
    ————————————————
    版权声明:本文为CSDN博主「维修工人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/bwt1989/article/details/86661008

  • 相关阅读:
    技术杂谈
    常用的shell命令
    Linux网络篇
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    asp.net远程调用WebService的两种方法
    使用C#和Java发送邮件(转载)
    转载:在64位的环境中使用VS建立Web项目进行Oracle连接需要注意WebDev是32位的
    也谈Asp.net 中的身份验证(转载)
    (转)32位win7用尽4g内存的几种解决方式
    64位WIN7下plsql报 ORA-12154:TNS:无法解析指定的连接标志符 错误的解决方法
  • 原文地址:https://www.cnblogs.com/sidesky/p/11810644.html
Copyright © 2011-2022 走看看