【问题标题】:FIO latency percentile changes over timeFIO 延迟百分位随时间变化
【发布时间】:2017-10-31 10:08:41
【问题描述】:

我想测量和绘制 SSD 的延迟百分位随时间变化。如果有人做过类似的事情,请分享您可能有的任何建议。我对如何运行 FIO 以及如何处理结果都很感兴趣。

我将首先描述我想使用的测试方法,然后描述我到目前为止所做的(并且工作不完美),最后问几个问题。

目标:

  • 我想随着时间的推移跟踪平均延迟和 95%、99%、99.9% 的延迟百分位数。显然,这些度量是在我希望能够设置为 10-60 秒间隔的时间窗口内隐式定义的。

  • 我想比较当我在恒定设备负载下改变 IO 模式时这些延迟百分位数如何变化。我需要能够控制总负载(发送到设备的数据量)以确保百分位数实际上具有可比性。一个简单的例子是:a) 有一个以 200MB/s 顺序写入的线程与 b) 2 个写入 100MB/s 的线程。如果两个实验之间的总吞吐量不同,那么比较百分位数将毫无意义。

到目前为止我尝试了什么:

  • 自定义版本的 FIO 可提高延迟直方图的分辨率。这可能不需要。

  • 我打开了 json+ 输出,以便获得漂亮的延迟直方图。但是,这些直方图汇总了整个 FIO 运行,因此我无法测量延迟随时间的变化。

  • 为了让延迟随时间发生变化,我想到了一个接一个地启动许多小型 FIO 作业。例如,如果我想获得超过 1 小时的延迟,我会启动 120 次 30 秒的 FIO 运行并将每个输出保存到不同的文件中。每个输出都会给我超过 30 秒的延迟百分位数。但是,这种方法存在两个问题:

    1. FIO 启动需要很长时间(大约 15-20 秒),这使得 SSD 可以执行 GC 和修复写入性能。

    2. 对于顺序写入,写入偏移量在每个 FIO 作业开始时重置。这意味着新的 FIO 运行实际上不会继续按顺序写入,更糟糕的是,设备的某些部分可能根本不会被写入。

问题:

  • 有没有一种方法可以使用 FIO 来跟踪延迟随时间的变化。如果有,能否举个例子?

  • 对于顺序写入,如何提高吞吐量?默认情况下,顺序写入的 FIO 使用 iodepth 1(队列深度 1)。我没有看到增加吞吐量的明确方法。增加 iodepth 似乎没有帮助。

  • 我看到 FIO git repo 中有一些用于绘图的 python 脚本。这些会有用吗?谁能指出一些类似于我想做的例子?

【问题讨论】:

    标签: linux io benchmarking


    【解决方案1】:

    @Radu - 你是在错误的网站上问这个问题(堆栈溢出更多是用于编程问题)。 ServerfaultSuper User 可能更合适。无论如何,我会试一试(但答案可能质量很差,因为你同时问了很多问题,所以我有时间回答):

    FIO启动需要很长时间

    当 fio 启动时,如果您要对其执行 I/O 的文件不存在(至少大小合适),则 fio 必须创建它。 fio 所做的另一件事(如果您的平台支持)是invalidate the cache of the file。如果您一直在排队等待大量尚未发送到磁盘的缓存写入,则刷新这些写入和删除缓存可能需要一些时间。由于我看不到你的工作档案,我真的不能说更多......

    有没有一种方法可以使用 FIO 来跟踪延迟随时间的变化。如果有,能否举个例子?

    正如您所发现的 fio's summary output is cumulative,所以它在您的情况下没有那么有用。但是,您可以只使用fio's latency loggingrecord latency periodically(默认情况下,fio 会为每个 I/O 创建一个条目,因此还可以查看log_avg_msec 选项和Log File Formats section)并稍后自己进行后处理(您甚至可能会可以使用fiologparser_hist.py)。

    对于顺序写入,如何提高吞吐量?

    这本身就是一个巨大的话题,我在这里无法做到公正。不过为您提供一些起点:尝试切换到像 libaio 这样的异步 ioengine 并增加 iodepth(例如到 32)并设置 direct=1。更大的block size(例如 512k 而不是 4k)通常也有助于吞吐量(but don't make it too large)。请重新阅读帮助页面/HOWTO,即使它很大,因为其中描述了您遇到的一些问题(在这种情况下,灵活也意味着复杂......)。

    [FIO git repo 中用于绘图的python 脚本] 中的任何一个有用吗?

    是吗?还有一些基于 shell 的脚本(如 fio2gnuplot)。 http://tfindelkind.com/2015/09/16/fio-flexible-io-tester-part9-fio2gnuplot-to-visualize-the-output/ 举了一个例子。但是,如果您了解创建的延迟文件,您可能会发现在您选择的任何电子表格或统计工具中绘制它们很容易。

    另一个提示 - 尝试确保您使用的是最新版本的 fio(请参阅 https://github.com/axboe/fio/releases 了解版本,一旦您拥有所需的依赖项 - https://github.com/axboe/fio/blob/fio-3.2/README#L130 ,这是一个相当容易的构建)。正在链接的在线 HOWTO 仅适用于最新版本的 fio,并且修复了许多不在旧版本 fio 中的错误...

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 2012-09-21
      • 2013-08-01
      • 2018-05-21
      • 1970-01-01
      相关资源
      最近更新 更多