写caching标志困惑

我期望通过启用写入caching来最大限度地提高硬盘的性能。 我明白这样做的风险,但相信他们将如何使用它是微不足道的。

在Windows中的HD属性选项卡上,最后两个选项有点混乱:

Enable write caching on device – 好的,但是如何与前一个选项一起使用? 它重写窗口caching或与之一起工作吗?

Turn off Windows write cache – 好吧,但为什么我会这样做。 如果我勾选这个框,那么更好的性能选项仍然被选中,自相矛盾。

有人可以帮助清楚这些标志究竟做了什么以及它们如何影响/相互依赖。

在这里输入图像说明

您必须了解数据如何写入磁盘。

在将stream程中的数据写入物理磁盘的过程中,您有几个子系统。

通常这些进程是要求内核(操作系统)写入磁盘的东西。 内核本身也可以将一些数据写入磁盘,例如作为换出操作。

需要写入磁盘的内存页面保存在称为文件系统caching的物理内存区域中,称为脏页面,如果其中一个条件为真,则会将其写入磁盘:

  • 该进程要求内核使用FlushFileBuffers调用将数据写入磁盘
  • 在最后一次写入磁盘之后的一段时间之后
  • 如果文件系统caching没有空闲内存(如果内核丢弃非脏页面,则写入磁盘脏内存,交换不活动的内存页面等,这是内核做出的复杂决定)

现在数据将进入磁盘,但是磁盘子系统有两个组件,这对此解释很重要:

  • 磁盘控制器,它是磁盘上的电子板
  • 可以是磁盘或闪存的永久存储器

现代磁盘控制器有一些称为磁盘缓冲区的内存模块。 如果激活了,那么刷新到磁盘子系统的数据将被写入到磁盘缓冲区中,操作将被OS和程序视为完成,但数据还没有在磁盘上。 这个问题是,如果你重新启动你的机器,你很有可能丢失数据。 您可能没有注意到这一点,直到您有文件系统损坏或数据库损坏。

以下是进程或操作系统需要将数据刷新到磁盘的一些原因:

  • 他们拥有像数据库或文件系统这样的交易系统的日志 ,他们需要强制写入磁盘的数据的一致性和完整性。
  • 他们完成了一个重要的操作,比如创build一个文件和磁盘缓冲区,他们要确保整个文件在磁盘上
  • 糟糕的编程

除非您有UPS(不间断电源),否则目前的configuration是性能和安全之间的最佳平衡。

第二种select不是像你所说的“windowscaching”,而是禁止“刷新”系统调用: Turn off Windows write cache buffer flushing

此选项将禁用某些应用程序(以及机器closures)调用的flush命令,其目的是有效地将磁盘caching写入磁盘。

它不会禁用写入caching。

您可以尝试启用此选项,但存在数据丢失的风险,但取决于您的上下文,性能增益可能不明显。

真正的差异在删除政策中突出显示。 这看起来像一个类似的问题: https : //superuser.com/questions/215372/what-does-write-cache-buffer-flushing-mean