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 文件来分析具体的中断类型。
  • 相关阅读:
    写在读ng之前的基础知识----笔记
    angularJS中-$route路由-$http(ajax)的使用
    angular学习-入门基础
    grunt使用watch和livereload的Gruntfile.js的配置
    jQuery1.4源码解读
    Handlebars的使用方法文档整理(Handlebars.js)
    zepto源代码解读
    CentOS 安装rz和sz命令
    Linux下*.tar.gz文件解压缩命令
    Linux下用rm删除的文件的恢复方法
  • 原文地址:https://www.cnblogs.com/agilestyle/p/11484624.html
Copyright © 2011-2022 走看看