我的硬盘速度很慢,只有 5400RPM,当处理 10GB 大小的文件时,无法使用计算机,直到该大文件完成重新创建新的副本/多路复用/写入/等。这取决于过程,问题是它会占用所有硬盘速度,并且在此过程运行时无法使用任何其他程序。
所以我在想也许我可以限制我使用的程序的 HDD 写入速度,这样它就可以保留免费的 HDD 剩余速度来用于在处理大文件时浏览互联网或播放 mp3。
答案1
不幸的是,你做不到这一点。硬件与应用程序甚至操作系统的部分内容是分离的。本质上,应用程序说“将其写入磁盘”,操作系统会处理它。应用程序不处理如何甚至什么时候它被写入。所有这些都是在驱动程序和内核级别处理的,没有真正的方法可以改变这一点。
即使你可以要做到这一点,事实上你正在使用一个旋转的磁盘 - 和一个非常速度很慢 - 你看不到太多的增益。驱动器不断旋转,磁头沿着磁盘移动。即使你写入文件的次数较少,磁盘也会不断寻找磁盘上正确的区域来读取/写入。
你的最好的选择是获取另一个驱动器并在该驱动器上进行工作,而将第一个驱动器用于互联网、MP3 等。
PS 您没有提到您有多少 RAM。交换可能是导致速度变慢的一个因素。根据您的 RAM 数量,添加更多 RAM 只会有所帮助。
答案2
进程套索允许您对 I/O 进行优先级排序。摘自他们的常见问题解答:
在 v4.1(v4.09 beta)中,Process Lasso 具有明确的当前和默认 I/O 优先级设置,可供需要的用户使用。这仅适用于 NT6+(Vista、Win7 等)。
但是,Vista 的 I/O 优先级基于执行 I/O 的线程的优先级,而该优先级又取决于执行 I/O 的进程的优先级类别。实际上,应用程序只能使用两种优先级:正常和极低。虽然技术上来说有 5 种优先级,但只有这两种优先级被实现或可供进程使用。
因此,线程优先级的调整将传播到该线程的 I/O。这样,Process Lasso 已经进行了 I/O 优先级排序。Microsoft 建议应用程序通过设置调用线程的优先级(直接设置或通过调整进程优先级基类)来调整其 I/O 优先级。
也可以看看Microsoft 的 I/O 优先级论文。
答案3
当我在 Windows 上发现某个进程不断消耗我所有的磁盘 I/O 时,我会调出 Process Explorer 并暂停有问题的进程。处理完事务并准备等待一段时间后,我会恢复进程。这绝对不是最有效的方法,因为它是控制磁盘 I/O 的孤注一掷的方法,而且当您使用计算机时,您的进程必须等待,但到目前为止,我还没有看到更好的替代方案。
另一方面,如果您可以在 Cygwin 上完成您的过程,那么您可以pv
在您的计算机上安装它并将其用作第一步或最后一步,并使用一个选项(我认为是 -r)来限制 pv 的输出率。
答案4
使用 Sysinternals“进程资源管理器”将优先级设置为“后台:4(低 I/O 和内存优先级)”
通过右键单击列标题找到使用磁盘 I/O 的进程,并在进程 I/O 下添加列 I/O Delta Writes。然后单击该列按其排序,违规者很可能是排名靠前的进程。无论您使用哪种方式找到该进程,然后右键单击该进程并将其设置为背景:4 优先级。
随后再次右键单击该进程,转到“属性”并查看“性能”选项卡,您应该看到“I/O 优先级”设置为“非常低”。
这相当于在 Linux 下使用 nice 和 ionice。
执行此操作后,您应该会发现系统性能和响应能力有显著改善。重新启动后和/或进程退出并重新启动后,您必须重新执行此操作。