linux - FIO 可重复缓冲区填充
问题描述
是否可以使用 FIO 实现伪随机缓冲区填充模式?即,块的填充模式会将种子+块编号或偏移量合并到伪随机填充生成器中。这样,整个填充数据可以 100% 可重复和可验证,但比--verify=pattern
.
我对命令的猜测是这样的:
- 以可验证的方式写出伪随机数据
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
- 读回伪随机数据并验证
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
显然,我在这里编造了一些选择,但我希望它可以理解这一点。
解决方案
(这不是此类问题的正确站点,因为它与编程无关 -超级用户或Serverfault看起来更合适)
fio 文档buffer_pattern
说您可以选择固定的字符串或数字(以十进制或十六进制给出)。但是,查看您的示例表明您正在进行验证,因此文档verify_pattern
是相关的。这表明您可以使用%o
它来设置块偏移。然而,一旦你设置了一个固定的模式,就是这样 - 没有更多的变量超出%o
. 这意味着如果选择使用固定模式(例如 via )当前的 fioverify_pattern
(撰写本文时为 3.17) ,则无法包含可验证的种子随机数据。
如果您不使用固定模式并通过校验和指定验证,那么 fio 实际上将使用种子随机数据,但我认为拆分验证不会检查种子 - 只是写入块中的校验和与其余数据相匹配块。
是否可以使用 FIO 实现伪随机缓冲区填充模式?
如果默认的随机缓冲区填充是可以的,那么可以,但如果你想在旁边包含块偏移和其他附加数据,那么在编写时不可以(除非你修补了 fio 源)。
推荐阅读
- c# - 如何删除 C# winforms 中快捷方式图标上的箭头?
- knockout.js - 使用 ko.PureComputed List 作为 Kendo ComboBox 的数据源
- python - 在 Python3 中使用 requests 模块进行网络抓取后获取奇怪的数据
- git - 使 git 在合并冲突时不修改本地文件
- ruby-on-rails - 合并两个活动记录关联轨道
- javascript - 如何根据父节点的类选择复选框?
- google-sheets - 使用 importrange 时如何执行两个计数条件?
- office365 - 获取大于特定数量的用户邮箱文件夹列表
- java - SOAP 代理客户端的 Spring Boot 通用异常处理程序
- html - 无法摆脱 ion-img 图像上的边框