刻录 CD 或 DVD 时硬盘如何成为瓶颈?

Syn*_*ech 4 performance hard-drive burning optical-drive

我一直想知道为什么人们在刻录 CD 或 DVD 时总是指责硬盘驱动器导致缓冲区不足。我\xe2\x80\x99读过很多人说要使用更快的硬盘驱动器或确保在刻录之前对其进行碎片整理或类似操作。

\n\n

这对我来说毫无意义。我不关心你刻录光盘的速度有多快,硬盘驱动器的速度和数据吞吐量总是任何光盘驱动器都要快。(我\xe2\x80\x99m谈论旋转驱动器,我们\xe2\x80\x99甚至不会打扰SSD!)

\n\n

例如,以 52x 刻录 CD 需要 7.6MBps 的数据流。即使是慢速硬盘 (PIO2) 也应该能够跟上 (8.3MBps),更不用说任何可以轻松提供稳定数据流的 UDMA 驱动器(UDMA0 可以管理 16.7MBps)。

\n\n

即使以当前最快的 24 倍速刻录 DVD 也只需要大约 32MBps,但是具有这种驱动器的系统肯定会拥有速度更快的硬盘驱动器(SATA1 可以达到 150MBps,因此即使是碎片化的驱动器应该足够快)。

\n\n

即使是蓝光光盘也只需要 54MBps,即使是一个微不足道的 ATA66 IDE 硬盘也可以提供。

\n\n

这些光驱速度是最佳读取速度;实际燃烧速度通常会慢一些!

\n\n

好吧,我\xe2\x80\x99ll承认寻道时间发挥了作用,并且碎片增加了访问时间,但即便如此,除非驱动器的额定速度仅高于正在刻录的光盘的速度(例如PIO2\xe2\x80 \x99s 8.3MBps 超过 52x CD-R\xe2\x80\x99s 7.6MPbs = 仅 716.8KBps 更快),那么差异应该足够大,甚至访问时间也无关紧要(例如 SATA1 驱动器\xe2\x80\x99s 150MPbs超过 24x DVD\xe2\x80\x99s 32MPbs = 118MBps 更快!)

\n\n

那么\xe2\x80\x99 是怎么回事呢?为什么人们总是暗示硬盘是刻录光盘的瓶颈?可能是什么原因导致了这个问题?为什么一旦刻录软件开始读取硬盘驱动器,驱动器活动 LED 总是稳定亮起,尽管传输大文件通常只会导致其闪烁?

\n

Mok*_*bai 5

有许多关键因素表明硬盘驱动器可能是缓冲区不足的原因。

  1. 硬盘驱动器过去使用 IDE 电缆,这可能意味着您可以通过一根电缆从硬盘驱动器复制数据,然后将其写入 CD/DVD 驱动器。这将有效地将每个设备的可用带宽减半。虽然 SATA 改变了这种情况,但 SATA 总线控制器中仍然存在争用。这引出了我的第二点

  2. 可能有一些程序试图同时执行某些操作,另一个程序读取或写入任何大量数据可能会以与第一点类似的方式再次限制任一设备的带宽。过大的顺序读取很可能会完全阻塞硬盘驱动器 I/O 数秒或更长时间。

  3. 操作系统内存不足意味着它需要将其他程序调入磁盘或调出磁盘,从而导致对页面文件进行大量连续读取或写入,从而阻塞 I/O,如第 2 点所示。

所有这些都意味着您认为拥有的理论峰值带宽并不总是可用。

当您的 CD 刻录机绝对必须保证硬盘驱动器和 CD-ROM 之间的带宽时,问题就出现了,如果该带宽不足一两秒(CD 刻录机上的典型缓冲区大小),则缓冲区下溢会发生。需要使用硬盘驱动器的程序或操作系统足以中断流向 CD 刻录机的数据流足够长的时间,从而导致这种情况发生。

我们建议使用速度更快的硬盘来防止缓冲区不足的主要原因是,速度更快的硬盘能够更快地通过阻塞 I/O 并返回到读取要发送到 CD 的数据的任务 -作家。

-=编辑=-

您说得对,许多没有经验的用户会拥有大量“帮助”应用程序(RealPlayer、quickstarters 和其他各种近乎恶意软件的应用程序),这意味着可用内存较少。较旧的家庭用户系统通常只有足够的内存可供操作系统和一两个程序轻松运行,再加上所有无用的垃圾程序和 CD 写入软件需要自己的大缓冲区和“舒适”的内存量变得明显不舒服。

另请注意,防病毒软件也会对硬盘带宽产生影响,因为它们必须扫描来自硬盘的每一位数据。通过关闭这些程序和清理系统来释放资源通常可以让 CD 刻录机继续其工作。

实际上,要不惜一切代价避免欠载运行的主要原因是 CD 刻录机实际写入驱动器的方式。激光在写入时是愚蠢的:“我缓冲区中有数据,我写入数据”。

它不是逐块写入的,即使 CD 是按扇区写入的,写入过程也是作为一个长磁道完成的,并且激光器只是将缓冲区中的内容输出到磁盘上的扇区。如果 CD 刻录机上的缓冲区突然没有更新新数据(因为系统正在执行其他操作),则缓冲区中的相同数据将被写入多次,而控制软件没有任何迹象表明它应该停止很久以前就写入数据,最终磁盘上会留下垃圾。它可能是几百兆字节的垃圾,也可能只是几千字节,无论哪种方式,磁盘现在都毫无价值,因为无法分辨好数据在哪里结束,坏数据在哪里开始。

从正在写入的垃圾中恢复是很困难的,因为您无法判断写入的数据中有多少确实是垃圾,以及其中有多少确实是要重复的。如果我们能够首先阻止垃圾被写入,那就更好了,这就是欠载保护正在做的事情,它监视缓冲区,当缓冲区接近空时,它会告诉激光器停止写入,等待新数据出现后再继续。