我尝试模拟应用程序负载以测量应用程序性能。数十个客户端向服务器发送请求,请求处理的重要部分是从HDD加载的随机数据(随机文件,随机文件偏移)。
我在400个文件中使用15 Gb。
HDD尽力缓存读取操作,因此从运行到运行(+/- 5..10%),整体性能非常不稳定。
为了最大限度地减少HDD内部优化,我想将数据放到专用的物理硬盘上,在每次测试运行之前创建随机文件,使用相同的随机文件访问顺序(文件序列和偏移量),然后运行测试和最后格式化硬盘。我想它将清除所有内部HDD缓存和文件访问预测。
如何最大限度地降低性能结果分散?它有一种更简单(或可能更合适)的方式来获得稳定的性能结果吗?
提前谢谢!
答案 0 :(得分:2)
基本上所有现代硬盘做都包含缓存。在我看来,没有缓存的结果可能更加统一,但一律无意义。
在任何情况下,都有命令禁用大多数驱动器上的缓存(但是,如果内存服务,它们可能是扩展,不是标准的一部分,因此您必须专门为特定目标驱动器实现它们)
OTOH,考虑到你想要模拟的东西不是真正的硬盘(通常)是如何工作的,我会考虑把它写成一个完整的软件模拟 - 例如,有一些类型的硬盘驱动器类保持“当前轨道”,具有读取和写入数据的命令,寻找另一轨道等。该类将跟踪诸如每个操作所消耗的(虚拟)时间量之类的事情。