zoukankan      html  css  js  c++  java
  • Linux命令行工具之pidstat命令

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11484624.html

    pidstat命令就可以帮助我们监测到具体线程的上下文切换

    通过pidstat -help命令,可以查看到有以下几个常用参数可以监测线程的性能:

    常用参数:

    • -u:默认参数,显示各个进程的cpu使用情况;
    • -r:显示各个进程的内存使用情况;
    • -d:显示各个进程的I/O使用情况;
    • -w:显示每个进程的上下文切换情况;
    • -p:指定进程号;
    • -t:显示进程中线程的统计信息

    首先,通过pidstat -w -p pid 命令行,我们可以查看到进程的上下文切换:

    cswch/s:每秒主动任务上下文切换数量

    nvcswch/s:每秒被动任务上下文切换数量

    之后,通过pidstat -w -p pid -t 命令行,我们可以查看到具体线程的上下文切换:

    Note:

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

    自愿上下文切换 cswch

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

    非自愿上下文切换 nvcswch

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

    每秒上下文切换多少次才算正常呢?

    这个数值其实取决于系统本身的 CPU 性能。如果系统的上下文切换次数比较稳定,那么从数百到一万以内,都应该算是正常的。但当上下文切换次数超过一万次,或者切换次数出现数量级的增长时,就很可能已经出现了性能问题。

    需要根据上下文切换的类型,再做具体分析。比方说:

    • 自愿上下文切换变多了,说明进程都在等待资源,有可能发生了 I/O 等其他问题;
    • 非自愿上下文切换变多了,说明进程都在被强制调度,也就是都在争抢 CPU,说明 CPU 的确成了瓶颈;
    • 中断次数变多了,说明 CPU 被中断处理程序占用,还需要通过查看 /proc/interrupts 文件来分析具体的中断类型。
  • 相关阅读:
    CentOS6.5卸载自带的Mysql软件
    Oracle 监听hang住
    mysql忘记root登录密码
    根据linux自带的JDK,配置JAVA_HOME目录
    nbu还原集群数据库异常问题
    Oracle11g RAC安装
    linux系统安装步骤
    oracle11g安装补丁升级
    linux系统安装Oracle11g详细步骤
    Express之Hello World示例
  • 原文地址:https://www.cnblogs.com/agilestyle/p/11484624.html
Copyright © 2011-2022 走看看