zoukankan      html  css  js  c++  java
  • Linux disk 100% busy,谁造成的?

    disk 100% busy,谁造成的?

    iostat等命令看到的是系统级的统计,比如下例中我们看到/dev/sdb很忙,如果要追查是哪个进程导致的I/O繁忙,应该怎么办?

    进程的内核数据结构中包含了I/O数量的统计:

    可以直接在 /proc/<pid>/io 中看到:

    我们关心的是实际发生的物理I/O,从上面的注释可知,应该关注 read_bytes 和 write_bytes。请注意这都是历史累计值,从进程开始执行之初就一直累加。如果要观察动态变化情况,可以使用 pidstat 命令,它就是利用了/proc/<pid>/io 中的原始数据计算单位时间内的增量:

    另外还有一个常用的命令 iotop 也可以观察进程的动态I/O:

    pidstat 和 iotop 也有不足之处,它们无法具体到某个硬盘设备,如果系统中有很多硬盘设备,都在忙,而我们只想看某一个特定的硬盘的I/O来自哪些进程,这两个命令就帮不上忙了。怎么办呢?可以用上万能工具SystemTap。比如:我们希望找出访问/dev/sdb的进程,可以用下列脚本,它的原理是对submit_bio下探针:

    这个脚本需要在命令行参数中指定需要监控的硬盘设备号,得到这个设备号的方法如下:

    执行脚本,我们看到:

    结果很令人满意,我们看到是进程号为31202的dd命令在对/dev/sdb进行读操作。

    转载自:

    linuxperf.com/?cat=11

  • 相关阅读:
    ANT安装
    MAVEN配置教程
    闲笔
    js系列
    微信小程序系列_require
    c++复习系列
    codeblocks系列
    mysql系列
    Google Developer Tools
    数学建模算法(三):神经网络
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11096514.html
Copyright © 2011-2022 走看看