我正在尝试确定硬盘可以处理的最大写入线程数,例如,如果所需的速度是每个线程 20KB/秒,那么如何在硬盘速度降低并且变慢之前测试最大同时写入数,并且假设操作系统、文件系统或应用程序不是瓶颈。
每个用户写入的每个文件都是不同的。
我确实读过实现硬盘的最大写入速度由另一个用户发布,但这个问题的不同之处在于,另一个问题关注的是每秒有多少个文件,而我的问题是基于 X KB/秒有多少个文件。
我使用 HD Tune 和 CrystalDiskMark 进行了测试,但遗憾的是,我认为这仅涵盖单线程传输,或者我不知道如何读取结果并从中计算。
这是 CrystalDiskMark 的结果,我不确定这是否有帮助。
问题)
- 如何测试硬盘,并计算出在设置最低速度 100KB/秒的情况下,硬盘可以处理多少个同时写入的磁盘
答案1
这完全取决于您执行的是顺序 I/O 还是随机 I/O,以及您想要/需要多久刷新一次磁盘...
对于当今的硬件来说,20 KB/s 和 100 KB/s 都微不足道。从 CrystalDiskMark 屏幕截图和您的担忧来看,我怀疑您使用的是旋转磁盘……为什么不使用 SSD?
在驱动器节流并变慢之前的最大同时写入量
这不是驱动器节流的问题,而是磁头的物理移动需要时间才能完成。对于随机 I/O,随着每个写入块的大小缩小,写入之间的寻道时间增加,这种情况会更加严重。
假设操作系统、文件系统或应用程序不是瓶颈
如果不知道文件系统的碎片化和可用空间状况,您不能假设这一点,你当然不能在产品或安装的整个生命周期内假设这一点。
如果您遇到性能问题,那么您将需要使用缓冲 I/O - 即:写入文件实际上会将数据收集到缓冲区中,然后再将更大的块一次性写入磁盘。
在 10 秒的时间内以 100 KB/s 的速度写入可以呈现为以下任何一种(或更宽)的存储:
- 每 10ms 生成 1 KB 的块
- 每 100 毫秒生成一个 10 KB 的块
- 每 1 秒生成一个 100 KB 的区块
- 每 10 秒生成一个 1,000 KB 的区块
我们讨论的是常规颜色(红色),还是不常见的颜色(绿色)?每种颜色都会“写“在相同的时间范围内传输相同数量的数据。
一次写入更大的块将有助于提高吞吐量和减少文件系统碎片,但需要考虑一些权衡。
- 更少地写入更大的块- 将提高吞吐量,但需要更多 RAM,并且在断电或崩溃的情况下,将丢失大部分数据
- 更频繁地写入更小的块- 会降低吞吐量,但需要更少的 RAM,并且易失性存储器中保存的数据也更少。
文件系统或操作系统可能会对文件缓存写入磁盘的频率施加规则,因此您可能需要在应用程序内管理此缓存...从使用缓冲 I/O 开始,如果不行,请检查情况。
假设有 1,000 个用户以 20KB/秒的速度上传 1GB 的文件
您能接受用户在 14.5 小时内上传 1 GB 的文件吗?考虑到失败可能引发的所有问题(例如:从头开始重新上传)。