如何防止硬盘写入缓冲区错误?

时间:2011-11-03 11:27:10

标签: c# windows performance

我写了一些将实时视频流写入磁盘的软件。在某个时刻(4个1024x768流,10fps),程序死了 - 它不是RAM而且不是CPU - 所以我猜测它是硬盘不能足够快地写入数据(没有错误) ,它只是停止工作)。基本上有一种方法可以确定硬盘是否即将崩溃(写入缓冲区已满)?

1 个答案:

答案 0 :(得分:2)

嗯,这不是磁盘写入错误。对于你看到的内容有一个简单的解释,你实际上已经没有RAM了。

在Windows中,文件写入通常非常。内存到内存的副本,它将文件数据写入文件系统缓存。然后,将数据写入慢速硬盘驱动器的过程非常愉快。它还优化了对磁盘的写入,以柱面顺序写入它们,以便优化磁盘写入磁头移动。

这非常有效。除非你无情地写出这么多文件数据,否则缓存就会填满容量。写入速度然后从悬崖上掉下来。从大约每秒5千兆字节到每秒50兆字节。或者更少,取决于驱动器的碎片程度。磁头寻道速度也是一个因素,但驱动器之间没有太大的可变性,这在很大程度上取决于磁盘盘片的旋转速度。 10,000 rpm驱动器的性能优于7,200 rpm驱动器,因为它不需要等待正确的扇区到达写头。

文件系统缓存的大小取决于计算机中的RAM量。哪个需要与其他进程所需的RAM共享。与RAM磁盘相同的想法,但更聪明。在32位操作系统上,大约一千兆字节是典型的。获得更多需要安装了足够RAM的64位操作系统。

但是更多RAM可能无法解决您的问题,填充缓存只需要更长时间。在某些时候,您需要更智能的视频流编码器,以便更好地压缩数据。或者更快的硬盘。在superuser.com上询问这个问题