【问题标题】:FIO generating empty files when run through subprocessFIO通过子进程运行时生成空文件
【发布时间】:2020-05-19 17:21:55
【问题描述】:

我在通过子进程运行 FIO 时遇到问题。

当使用选项 --bandwidth-log 运行 FIO 时,当命令通过子进程运行时,创建的文件 (agg-read_bw.log) 为空。FIO 命令使用以下子进程调用运行:

cmd_stat = subprocess.check_output(cmd, shell=True)

如果我通过命令提示符运行确切的字符串,则文件会正确生成和填充。在这两种情况下,FIO 作业都成功完成。

这是在 Ubuntu 18.04、python 2.7.17、FIO 版本 3.16 上。

编辑:在 Python 3.6 上尝试过,结果相同

以下是展示此行为的命令示例: fio --filename=/dev/sda2 --readwrite=read --size=1g --name=bw_test --bandwidth-log

【问题讨论】:

  • 当您手动运行和通过 python 运行时,了解您的作业运行需要多长时间会有所帮助。如果由于某种原因缓存失效没有成功(也许你已经安装了/dev/sda2 的文件系统锁定页面,在这种情况下请小心 - 对包含数据的块设备进行 fio 测试,你不能承担被破坏是有风险的,不推荐作为一次失误,数据是不可挽回的)你可能会发现自己正在执行内核缓存满足的读取操作,并且这些操作可以非常快速完成......
  • 您好,下面的回答是否说明了您的情况?如果可以,你能接受吗?谢谢!

标签: python-2.7 subprocess


【解决方案1】:

使用--bandwidth-log 选项在bwavgtime 指定的时间段内对I/O 进行采样,该时间段默认为500 毫秒(奇怪的是,--bandwidth-log 是命令行选项,而bwavgtime 是每个作业选项)。鉴于您没有设置bwavgtime,如果您的作业至少有半秒钟没有运行,那么到它退出时,将不会采集任何“带宽日志”样本,并且带宽日志文件将为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2017-03-14
    • 2021-01-31
    • 1970-01-01
    相关资源
    最近更新 更多