【发布时间】:2011-05-02 14:59:26
【问题描述】:
磁盘基准测试通常有一个图表,显示 I/O 吞吐量随着队列深度的增加而增加。我假设在硬件级别发生的事情是磁盘控制器正在重新排序请求以与磁头恰好所在的位置一致。但是如何在我自己的 I/O 繁重的应用程序中增加队列深度呢?我将使用 C#,但与语言无关的答案可能也会有所帮助。
我想到的一个(未经测试的)方法是将我的磁盘访问拆分为多个文件并在多个线程中发出 I/O。但肯定有一种方法可以做到这一点,而无需为每个并行 I/O 使用一个线程。而且我还假设不需要拆分为多个文件,因为数据库通常是一个文件。
【问题讨论】:
-
是否像打开 FileStream 并进行多次 BeginRead() 调用一样简单?还是他们会在进入磁盘队列之前在 FrameWork 队列中排队?
-
是的,这里靠近顶部的文字似乎表明它就是这么简单:msdn.microsoft.com/en-us/library/kztecsys(VS.80).aspx
-
不确定您在支持该理论的页面上阅读的内容。
-
“当许多 I/O 请求同时挂起时,异步 I/O 可以提供更好的性能”
标签: c# io parallel-processing disk