如果需要X速度,如何计算硬盘驱动器上的最大写入线程数?


0

我正在尝试建立硬盘驱动器可以处理的最大写入线程,例如,如果每个线程所需的速度是20KB /秒,我怎样才能在驱动器节流之前测试最大同时写入并变慢,让我们假设操作系统,文件系统或应用程序不是瓶颈。

每个用户写入的文件都不同。

我确实读过另一个用户发布的硬盘上达到最大写入速度但这个问题在哪里不同的另一个问题是基于每秒有多少文件是基于X KB /秒的多少文件。

我使用HD Tune和CrystalDiskMark进行了测试,但遗憾的是我认为这仅涵盖单线程传输或者我不知道如何读取结果并从中进行计算。

这是CrystalDiskMark的结果,我不确定这是否有用。

在此输入图像描述

问题(S)

  • 如何测试硬盘驱动器并根据设置的最小速度100KB /秒计算出驱动器可以处理的同时磁盘写入次数

1
为什么不投入SSD并绕过问题 - SSD不会明显受到顺序与随机读取差异的影响,并且全面快得多。(意思是答案变得更加接近速度/用户)
davidgo

Answers:


1

这完全取决于您是在进行顺序还是随机I / O,以及您需要/需要刷新到磁盘的频率......

对于今天的硬件,20 KB / s和100 KB / s都可以忽略不计。从CrystalDiskMark屏幕截图和您的担忧我怀疑您正在处理旋转磁盘......为什么不使用SSD?


在驱动器节流之前最大同时写入并变慢

这不是驱动器节流的问题,而是头部的物理运动需要时间来完成。对于随机I / O,随着每个写入块的大小缩小,写入之间的寻道时间增加,这会加剧。

让我们假设操作系统,文件系统或应用程序不是瓶颈的一部分

如果不知道文件系统在碎片和可用空间方面的状态,你就不能假设这一点,你肯定不能在产品或安装的整个生命周期中承担它。


如果您遇到性能问题,那么您将需要使用缓冲的I / O - 即:在将较大的块一次写入磁盘之前,写入文件实际上会将数据收集到缓冲区中。

写入100 KB / s持续10秒的时间可以作为以下任何一个(或更宽)呈现给存储器:

  • 每10毫秒一块1 KB
  • 每100毫秒一块10 KB
  • 每1秒100 KB的块
  • 每10秒一块1,000 KB

我们是在讨论常规(红色)还是不常见(绿色)?每种颜色将在同一时间帧内“ 写入 ”相同数量的数据。

以不同的块大小写入吞吐量

一次编写更大的块将有助于吞吐量和文件系统碎片,但需要考虑权衡。

  • 更少写入更大的块 - 将提高吞吐量,但需要更多RAM,并且在断电或崩溃的情况下,大部分数据将丢失
  • 更频繁地编写更小的块 - 将降低吞吐量,但需要更少的RAM,并且在易失性存储器中保存的数据更少。

文件系统或操作系统可能会规定有关文件高速缓存写入磁盘的频率的规则,因此您可能需要在应用程序中管理此高速缓存...首先使用缓冲的I / O,如果不切断它,请查看情况。


让我们假装有1,000个用户以20KB /秒的速度上传1GB文件

用户可以在大约14.5小时内上传1 GB文件吗?所有问题都会导致失败(即:从头开始重新上传)。


对不起,随机IO,每个用户的新文件。
Simon Hayter

基本上用户将上传文件,它们的大小不一,但它们被认为可以接受大约20KB /秒,显然,每个用户20KB /秒的机械驱动器和数千个用户会因磁盘头弹跳而导致延迟来回,这是我要衡量的部分。所以,理想情况下,我想估计这个硬盘可以处理250个用户,但我知道它并不像这样容易,因为那时你得到了用户和磁盘之间的响应时间,但我想把它计算到估算中。
Simon Hayter

是不是在Powershell或应用程序中有一个我可以运行的工具,例如激活1000个写线程?
Simon Hayter

除非您正在处理需要以20 KB /秒的速度实时捕获的数据流,否则这真的是一个问题吗?即便如此,我希望您的应用程序/操作系统缓存一大块上传,并立即写一个大块(如图中的绿色)。填充缓存并触发写入磁盘可能需要几秒钟,具体取决于配置。
Attie

是的,可能有一个应用程序可以对此进行基准测试,但我不相信这对您的用例来说无论如何都是有用的信息...
Attie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.