首页 > 解决方案 > FIO 可重复缓冲区填充

问题描述

是否可以使用 FIO 实现伪随机缓冲区填充模式?即,块的填充模式会将种子+块编号或偏移量合并到伪随机填充生成器中。这样,整个填充数据可以 100% 可重复和可验证,但比--verify=pattern.

我对命令的猜测是这样的:

  1. 以可验证的方式写出伪随机数据
fio --filename=/home/test.bin --direct=1 --rw=write --bs=512 --size=1M --name=verifiable_write --verify=psuedo_rand --verify_psuedo_rand_seed=0xdeadbeef --do_verify=0
  1. 读回伪随机数据并验证
fio --filename=/home/test.bin --direct=1 --rw=read --bs=512 --size=1M --name=verify_written_data --verify=psuedo_rand --verify_psuedo_rand_seed=0xdeadbeef --do_verify=1

显然,我在这里编造了一些选择,但我希望它可以理解这一点。

标签: linuxio

解决方案


(这不是此类问题的正确站点,因为它与编程无关 -超级用户Serverfault看起来更合适)

fio 文档buffer_pattern说您可以选择固定的字符串或数字(以十进制或十六进制给出)。但是,查看您的示例表明您正在进行验证,因此文档verify_pattern是相关的。这表明您可以使用%o它来设置块偏移。然而,一旦你设置了一个固定的模式,就是这样 - 没有更多的变量超出%o. 这意味着如果选择使用固定模式(例如 via )当前的 fioverify_pattern (撰写本文时为 3.17) ,则无法包含可验证的种子随机数据。

如果您不使用固定模式并通过校验和指定验证,那么 fio 实际上将使用种子随机数据,但我认为拆分验证不会检查种子 - 只是写入块中的校验和与其余数据相匹配块。

是否可以使用 FIO 实现伪随机缓冲区填充模式?

如果默认的随机缓冲区填充是可以的,那么可以,但如果你想在旁边包含块偏移和其他附加数据,那么在编写时不可以(除非你修补了 fio 源)。


推荐阅读