【问题标题】:How to measure characteristics of file (hard-disk) I/O?如何测量文件(硬盘)I/O 的特性?
【发布时间】:2011-01-28 20:26:27
【问题描述】:

如何测量文件(硬盘)I/O 的特性?例如,在具有硬盘(速度 X)和 cpu i7(或任何数量的内核)和 Y 数量的 ram(使用 Z Hz BIOS)的机器上(在 Windows 操作系统上):

  • 可以并行写入 HD 的最佳文件数?
  • 可以从 HD 并行读取的最佳文件数?
  • 文件系统功能有助于加快写入速度。 (例如:是否有一个功能或工具可以让您在不同扇区(或硬盘)上写入批量二进制数据,然后将它们绑定为一个文件?我对操作系统中的底层文件 I/O 了解不多。但它会拥有这样的工具是合理的!)
  • 如果之前有part这样的工具,.NET中也有吗?

我想尽可能快(并且尽可能并行)编写大文件(通过网络或其他来源流式传输)!我正在用 C# 编写代码。它就像一个下载管理器;所以如果流媒体被中断,它可以在以后继续。

【问题讨论】:

    标签: c# .net windows file-io


    【解决方案1】:

    答案(通常)取决于您的使用情况。整个操作系统是不同使用场景之间的一大权衡。对于 NTFS 文件系统,可以提到设置为 4k 的块大小、NTFS 存储的文件小于 MTF 中的块大小、文件大小、文件数量、碎片等。

    如果您打算写入大文件,那么 64k 的块大小可能会很好。也就是说,如果您打算读取大量数据。如果您读取的数据量较小,那么较小的数据量是好的。操作系统在 4k 页面中工作,所以 4k 很好。压缩(和加密?)以及 SQL 和 Exchange 仅适用于 4k 页面 (iirc)。

    如果您编写小文件 (O&O Defrag这样的实时碎片整理程序。

    Windows 几乎将二进制流直接映射到磁盘上的物理位置,因此使用不同的读/写方法不会产生与其他因素一样多的性能提升。要获得最高速度的程序,请使用 technieue 将内存直接映射到磁盘。见http://en.wikipedia.org/wiki/Memory-mapped_file

    Windows 中有一个选项(在设备管理器、硬盘下)可以增加磁盘上的缓存。这是危险的,因为如果计算机蓝屏或断电,ut 可能会损坏文件系统,但在写入较小的文件(以及所有写入)时会大大提高性能。如果磁盘很忙,这尤其有价值,因为寻道时间会减少。 Windows 使用所谓的电梯算法,这基本上意味着它在表面上来回移动硬盘磁头,为它移动方向上的任何应用程序提供服务。

    希望这会有所帮助。 :)

    【讨论】:

    • 谢谢!我想尽可能快(并且尽可能并行)编写大文件(通过网络或其他来源流式传输)!我正在用 C# 编写代码。
    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2010-12-04
    • 2018-10-16
    • 2011-10-26
    相关资源
    最近更新 更多