模拟文件系统访问

我正在设计用户空间中的文件系统,需要对其进行测试。 我不想使用可用的基准测试工具,因为我的要求不同。 因此,为了测试文件系统,我希望模拟文件访问操作。 为此,我首先使用ftw()函数遍历现有文件系统(实验)并列出文件中的所有文件和目录。

然后我调用一个模拟器来模拟许多进程的文件访问。 因此,模拟器随机启动一个过程,即它分叉一个执行真正过程所做的事情的线程。 线程随机选择文件操作(读,写,重命名等)从列表中选择此操作的参数(由ftw()生成)。 该线程执行许多此类文件操作,然后退出标记进程的结束。 模拟器继续产生线程; 线程执行可以像实际进程那样重叠。 现在,由于操作由线程执行,文件将被插入,删除,重命名,并在文件列表中更新。

我还没有开始编码。 这个计划看起来很健全吗? 我也不确定如何编码模拟器…它将如何在一段时间内产生线程。 我应该使用一些随机延迟来做到这一点。

谢谢

是的,这对我来说似乎相当合理。 我会考虑尝试对您的文件操作(以及对特定文件的访问)施加统计分布,该分布与您的预期工作负载相匹配。 您可能能够找到有关典型文件系统工作负载的一些统计信息作为起点。

对于一个体面的测试案例而言,这听起来恰到好处,以确保它正常运行。 你可以使用sleep()在产生线程之间等待,或者只是一次产生它们然后让它们做一个操作然后稍等一下,然后做另一个操作等等… IMO如果你用很多请求点击它并且它工作,那么你的文件系统可能会做得很好。 以PostMark为例,它所做的就是疯狂地添加到不同的文件和其他基准测试中,这些基准测试在不同位置进行随机访问读/写,以确保必须从磁盘读取页面。