我想测量并绘制SSD的延迟百分比随时间的变化。如果有人做了类似的事情,请分享你的建议。我对如何运行FIO和如何处理结果都感兴趣。
我将首先描述我想要使用的测试方法,然后描述我到目前为止所做的工作(工作不完善),最后提出几个问题。
目标:
我想跟踪平均延迟和95%,99%,99.9%的延迟百分比。显然,这些度量是在一个时间窗口内隐式定义的,我希望能够将其设置为10-60秒的间隔。
我想比较这些延迟百分比是如何变化的,因为我在一个恒定的设备负载下改变了IO模式。我需要能够控制总负载(发送到设备的数据量),以确保百分位数实际上是可比的。一个简单的例子是:A)有一个按顺序写入200MB/s的线程,而b)有两个按顺序写入100MB/s的线程。如果两个实验之间的总吞吐量不同,比较百分位数将毫无意义。
我到目前为止所做的:
自定义版本的FIO以提高延迟直方图的分辨率。这可能不需要。
我打开了json+输出,这样就得到了很好的延迟直方图。然而,这些直方图聚集了整个FIO运行,因此我无法测量延迟随时间的变化。
为了让延迟随着时间的推移而改变,我想一个接一个地开始许多小的FIO工作。例如,如果我想让延迟超过1小时,我启动120次30秒的FIO运行,并将每个输出保存到不同的文件。每个输出都会给我30秒以上的延迟百分比。但是,这种方法有两个问题:
FIO启动需要很长时间(大约15-20秒),这允许SSD执行GC和修复写性能。
对于顺序写入,写入偏移量在每个FIO作业开始时重置。这意味着新的FIO运行实际上不会继续按顺序写入,更糟糕的是,设备的某些部分可能根本不会被写入。
问题:
有没有一种方法可以使用FIO来跟踪延迟随时间的变化。如果是,你能举个例子吗?
对于顺序写入,如何提高吞吐量?默认情况下,用于顺序写入的FIO使用iodepth 1(队列深度1)。我看不出比这更能提高吞吐量的方法了。增加碘浓度似乎没有帮助。
我在FIO git repo中看到了一些用于绘制的python脚本。有什么有用的吗?有谁能给我举个类似我想做的事情的例子吗?

最佳答案

@你在错误的网站上问这个问题(堆栈溢出更多的是用于编程问题)。服务器故障或超级用户可能更合适。无论如何,我会尝试一下(但答案可能质量不高,因为你同时问了很多问题,所以这是我唯一有时间回答的问题):
FIO启动需要很长时间
当FIO启动时,它必须创建您请求的文件,如果它不存在。fio做的另一件事(如果您的平台支持它)是invalidate the cache of the file如果平台支持它。如果您一直在排队等待大量尚未发送到磁盘的缓存写操作,则可能需要时间来刷新所有写操作并删除缓存。既然我看不到你的工作档案,我真的不能再说了。。。
有没有一种方法可以使用FIO来跟踪延迟随时间的变化。如果是,你能举个例子吗?
正如你发现的那样,这对你的情况没有那么有用。但是,您可以使用fio's summary output is cumulativefio's latency logging(fio默认情况下为每个I/O创建一个条目,因此也可以查看log_avg_msec选项和record latency periodically)并在以后自己进行后期处理(您甚至可以使用Log File Formats section)。
对于顺序写入,如何提高吞吐量?
这本身就是一个巨大的话题,我在这里做不到公正。不过,有些起点是:尝试切换到异步ioengine,比如fiologparser_hist.py,增加libaio(例如,增加到32),并设置iodepth。更大的direct=1(例如64k而不是4k)通常也有助于提高吞吐量。请重新阅读帮助页/block size,即使它是巨大的,因为你所碰到的一些问题被描述在里面(灵活性也意味着在这种情况下是复杂的……)。
FIO git repo中的任何用于绘制的python脚本都有用吗?
对?还有一些基于shell的脚本(比如fio2gnuplot)。HOWTO给出了一个例子。但是,如果您了解创建的延迟文件,您可能会发现很容易在您选择的任何电子表格或统计工具中绘制它们。
另一个提示-尝试确保您使用的是最新版本的fio(请参见http://tfindelkind.com/2015/09/16/fio-flexible-io-tester-part9-fio2gnuplot-to-visualize-the-output/了解版本,一旦您拥有所需的依赖项-https://github.com/axboe/fio/releases,这是一个相当简单的构建)。在线的HOWTO链接只针对最新版本的fio,很多错误都被修复了,这些错误不在fio的陈旧版本中。。。
祝你好运!

关于linux - FIO延迟百分比随时间变化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47032686/

10-10 06:44