我目前正在执行各种开发任务,由于 IO 性能的原因,这些任务在我当前的系统上速度很慢。
有没有办法在执行 IO 消耗任务时记录磁盘操作,包括性能信息(写入/秒、读取/秒等),然后在新系统上重播它们以查看性能情况(无需对同一组数据重新运行相同的命令)?
会块跟踪,块解析或者菲奥在这种情况下帮助我吗?
例如:假设在我的系统上我想对一个
find -name "*.php" | xargs grep -r "test_string"
在包含 50 000 个文件的文件夹中(当然是多个级别)
我想捕获所有磁盘操作,包括统计信息,然后在另一个没有 50 000 个文件夹的系统上重播它们。基本上,只是模拟操作并检查它们是否完成得更快。
我尝试使用捕获磁盘样本
blktrace -d /dev/sda -o myfile.blk
但我不知道如何尝试重播它们菲奥。
这可能吗?
谢谢
答案1
不可以。如果您想查看相同的任务在不同的硬件上需要多长时间,那么您需要在新的硬件上运行相同的任务。
如果您想模拟该任务,那么除了尝试读/写相同的磁盘扇区之外,您还需要想出一种方法来模拟读取数据后任务对数据所做的任何工作。
答案2
要使用 fio 播放blktrace
文件,您需要先将其转换为blkparse
二进制数据文件 - 请参阅菲奥的read_iolog
选择了解更多信息 (replay_redirect
也可能有用)。
笔记:使用 fio 重新运行包含写入的重放 破坏重放的文件/磁盘中的数据所以要小心!