自从使用 Windows 3.1 以来,我总是看到自己在打开程序或开始批处理活动之前等待硬盘活动停止。在那些时候,我相信这很有帮助,您可以清楚地看到同时打开 2 个程序比打开一个程序,然后在完成后打开另一个程序花费的时间要长得多。我还倾向于等待一个程序完全关闭(交换)后再打开另一个程序。
但今天缓存算法和硬盘性能和缓存已经发生了很大的变化。
所以问题是,等待硬盘活动停止是否仍然有益,或者我可以做任何我想做的事而不必担心它?
我问这个问题是因为我的最新联想笔记本没有 HDD 指示灯,所以我不知道它什么时候工作。
顺便说一句,我现在的系统是 Windows 7。
答案1
简短的回答是,这取决于为什么硬盘指示灯亮起。详细答案是:
但今天缓存算法和硬盘性能和缓存已经发生了很大的变化。
是的,这是真的,但这不是你等待硬盘 LED 停止的原因(或者说,这不是你不再注意到性能下降的原因)。硬盘是大型机械设备,只擅长一件事 - 仅正在做一次只能读取/写入一个扇区。因此,尝试同时使用硬盘通常会导致鞭笞。
所以问题是,等待硬盘活动停止是否仍然有益,或者我可以做任何我想做的事而不必担心它?
再次,这取决于硬盘驱动器正在做什么。为什么?好吧,如果你正在将数 GB 的文件传输到硬盘驱动器或从硬盘驱动器传输文件,那么你肯定会遇到磁盘抖动(这也会导致驱动器磁头快速来回移动,缩短驱动器的使用寿命)然而,如果你不知道为什么HDD LED 闪烁,那么它可能是一个后台进程。
大多数后台进程(搜索索引器、磁盘碎片整理程序、.NET 运行时优化器等...)都会不是导致系统抖动的原因有两个。首先,它们以较低的优先级运行,因此操作系统会降低它们的 I/O 请求优先级。其次,大多数后台进程会在您的 CPU 或磁盘使用率达到特定阈值时停止或减少活动,以避免影响您感知到的系统性能(或导致系统抖动)。
我问这个问题是因为我的最新联想笔记本没有 HDD 指示灯,所以我不知道它什么时候工作。
那么就不用担心。Windows 7 中的大多数后台服务都意识到了我上面列出的问题,因此您不会遇到任何速度减慢的情况。除非你尝试同时使用硬盘(即在尝试同时加载多个程序的同时传输大量文件),您不应该遇到任何抖动。
最后,如果你想知道某个进程使用硬盘的传输速率,请参阅问题我如何查看当前硬盘带宽的使用百分比?
最后需要注意的是,固态硬盘完全改变了磁盘抖动游戏。虽然无法完全避免(是的,即使和SSD),相比机械硬盘,固态硬盘的这种影响会小得多(见固态硬盘的优缺点是什么?如果您想了解更多)。
答案2
视情况而定。如果您同时运行两个只进行磁盘 IO 的任务,那么它们会相互拖慢速度,因此最好一次执行一个任务。大多数任务至少需要一些 CPU 时间,在此期间磁盘可以自由地为另一个任务工作,因此您可以看到运行两个这样的任务的整体性能更好,因为当一个任务使用 CPU 时,另一个任务可以进行 IO,反之亦然。
至于写入活动,大多数情况下,写入操作都会在缓存中停留一段时间,然后在后台慢慢刷新到磁盘。等待所有这些后台写入操作完成后再运行新程序是浪费时间,因为在新程序首先加载时,这些写入操作在缓存中停留一段时间不会造成任何影响,然后当该程序处于空闲状态等待您执行某些操作,或者开始执行计算而不是磁盘 IO 时,写入操作就可以完成,使用原本空闲的磁盘时间。
平均而言,大多数时候,您会看到同时做两件事会带来净收益,因此作为一般规则,不,您不应该在做其他事情之前等待磁盘 IO 停止。
答案3
管理读/写请求是硬盘控制器和操作系统的工作,而不是您自己。
是的,在过去,应用程序会在大量 I/O 下冻结。但那是在软件开发的辉煌时期,当时 C 语言和文本编辑器几乎可以编写任何内容。
现在是硬件时代。硬件的发展速度远远超过了软件的发展速度,因此当今的硬件几乎可以 100% 运行,不会出现任何差错。除此之外,开发人员也吸取了教训。越来越多的程序在另一个线程上旋转 UI,从而减轻了去年的“死亡沙漏”/“旋转沙滩球”的无响应问题。
答案4
在任何其他系统上,这都不是问题。但如果同时发生太多事情,Windows 很容易陷入混乱状态(或死锁)。启动后尤其如此。
您不必等待所有活动停止,但通常应该等到系统响应相当正常时再停止。