【问题标题】:Python library for monitoring /proc/diskstats?用于监控 /proc/diskstats 的 Python 库?
【发布时间】:2011-03-20 17:45:49
【问题描述】:

我想监控来自 python 程序的系统 IO 负载,访问类似于 linux 中/proc/diskstats 中提供的统计信息(尽管显然跨平台库会很棒)。是否有现成的 python 库可用于查询 linux 上的磁盘 IO 统计信息?

【问题讨论】:

    标签: python linux io monitoring


    【解决方案1】:

    如果有人像 Alex 建议的那样尝试使用 Python 解析 /proc/diskstats:

    def diskstats_parse(dev=None):
        file_path = '/proc/diskstats'
        result = {}
    
        # ref: http://lxr.osuosl.org/source/Documentation/iostats.txt
        columns_disk = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors',
                        'ms_reading', 'writes', 'wr_mrg', 'wr_sectors',
                        'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted']
    
        columns_partition = ['m', 'mm', 'dev', 'reads', 'rd_sectors', 'writes', 'wr_sectors']
    
        lines = open(file_path, 'r').readlines()
        for line in lines:
            if line == '': continue
            split = line.split()
            if len(split) == len(columns_disk):
                columns = columns_disk
            elif len(split) == len(columns_partition):
                columns = columns_partition
            else:
                # No match
                continue
    
            data = dict(zip(columns, split))
            if dev != None and dev != data['dev']:
                continue
            for key in data:
                if key != 'dev':
                    data[key] = int(data[key])
            result[data['dev']] = data
    
        return result
    

    【讨论】:

      【解决方案2】:

      PSUtil 提供了许多磁盘和 fs 统计信息,并且也是跨平台的。

      您应该查看psutil.disk_io_counters(perdisk=True),它返回了许多有用的指标:

      read_count:读取次数 write_count:写入次数 read_bytes:读取的字节数 write_bytes:写入的字节数 read_time:从磁盘读取所花费的时间(以毫秒为单位) write_time:写入磁盘所花费的时间(以毫秒为单位)

      这些指标来自/proc/diskstats(在 Linux 上)

      【讨论】:

      • 虽然 psutil 可能使用 /proc/diskstats,但它的指标比原始 /proc/diskstats 少得多。我个人遇到了这个问题,因为我们已经在使用 psutil,但遗憾地错过了一些重要部分。
      【解决方案3】:

      定期阅读 /proc/diskstats 有什么问题,例如使用sched 每分钟重复一次操作还是什么? Linux 的procfs 很好,正是因为它为内核提供了一种向用户态程序提供信息的文本方式,因为文本最容易在多种语言中阅读和使用......!

      【讨论】:

        【解决方案4】:

        我还没有看到库,但您可能想查看名为“dstat”[1] 的 Python 工具,用于读取 Linux 内核统计信息。

        [1] - http://dag.wieers.com/home-made/dstat/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-11-16
          • 2010-12-10
          • 2021-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-20
          相关资源
          最近更新 更多