如何限制所选程序的HDD写入速度


23

我的硬盘速度为5400RPM,并且在处理10GB大小的文件时无法使用计算机,直到大文件重新创建新的副本/合并/写入/等为止。取决于进程,问题是它消耗了所有HDD的速度,并且在此进程运行期间无法使用其他程序。

所以我在想,也许我可以限制所用程序的HDD写入速度,以便在处理大文件时保留免费的HDD剩余速度用于浏览Internet或播放mp3。


2
我从来没有听说过Windows中的节制HDD IO,至少是本地的。您是否尝试过设置流程优先级?:wmic process where name="calc.exe" CALL setpriority "idle"
Marcelo 2014年

@Marcelo Priority指示CPU时间,而不是磁盘。处理大文件时,磁盘是使计算机(而不是CPU)运行缓慢的原因。
凯尔塔里(Keltari)2014年


@Keltari是的,我知道。我只是认为也许修改CPU的优先级可能会对问题的最终目标产生一些影响。
Marcelo 2014年

2
如果在复制大文件时计算机“不可用”,是否有可能忘记了启用DMA?正常情况下,磁盘是否忙碌几乎没有什么区别,因为这不需要太多(或任何)CPU干预。
戴蒙2014年

Answers:


13

不幸的是,你不能那样做。硬件是从应用程序甚至操作系统的一部分中抽象出来的。本质上,应用程序说“将其写入磁盘”,然后操作系统将对其进行处理。该应用程序无法处理如何甚至何时写入。所有这些都是在驱动程序和内核级别处理的,没有真正的方法可以更改它。

即使可以做到这一点,事实是您使用的是旋转磁盘-磁盘速度慢-您不会看到太多收益。驱动器不断旋转,磁头沿着磁盘移动。即使您较少写入文件,磁盘也会不断地在磁盘上寻找正确的区域以进​​行读/写操作。

最好的办法是让另一个驱动器,做该驱动器上你的工作,让你的第一个驱动器为您的互联网,MP3等

PS:您没有提到有多少RAM。交换可能是速度慢的一个因素。根据您有多少RAM,增加更多内存只会有所帮助。


2
Windows版本的Linux ionice难道不是一个答案吗?
丹尼尔·贝克

@DanielBeck可能有可行的软件。但是,谁知道使用它会带来哪些并发症呢?这将是如此,只是巴掌更容易在另一个驱动器,在这个问题来完成。
Keltari 2014年

1

1
对于为何无法限制应用程序,我没有看到任何原则性的论点。这是一个非常简单的调节器:每秒将过程暂停1秒。这使IO减少了约50%,并使其他进程可以使用磁盘。寻道时间约为10毫秒。
usr

@usr:取决于I / O的类型和频率。您的方法在某些情况下有效,但在其他情况下则不行-例如,如果I / O完全在内核模式下进行,我认为您不能总是通过暂停用户模式进程来暂停它。
Mehrdad 2014年

9

进程套索允许您确定I / O的优先级。从他们的常见问题解答中:

Process Lasso是v4.1(v4.09 beta)中的新增功能,具有明确的当前和默认I / O优先级设置,可用于需要它们的人员。这仅适用于NT6 +(Vista,Win7等)。

但是,Vista的I / O优先级基于执行I / O的线程的优先级,而优先级取决于执行I / O的进程的优先级。实际上,应用程序只能使用两个级别的优先级:“正常”和“非常低”。尽管从技术上讲有5个,但是只有这两个可以由流程实现或使用。

因此,线程优先级的调整将传播到该线程的I / O。这样,进程套索已经对I / O进行了优先排序。Microsoft建议应用程序通过设置调用线程的优先级(直接或通过调整进程优先级基类)来调整其I / O优先级。

另请参阅Microsoft关于I / O优先级的论文


1

当我有一个进程在Windows上不断消耗所有磁盘I / O时,该怎么办,就是启动Process Explorer并暂停有问题的进程。在完成我的业务并准备稍等片刻后,我会恢复它。这绝对不是最有效的方法,因为它是控制磁盘I / O的全有或全无的方法,您的进程在使用计算机时将不得不等待,但是到目前为止,还没有更好的选择。

另一方面,如果可以在Cygwin上进行处理,则可以安装pv在计算机上,并将其用作第一步或最后一步,并带有一个选项(我认为它是-r)来限制PV的输出速率。

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.