开启延迟写入后是否需要关闭 Windows 写入缓存?

不需要。Windows 的写入缓存位于文件系统层级,而 PrimoCache 的延时写入功能位于磁盘扇区层级,所以 Windows 的写入缓存会先于 PrimoCache 处理写入请求。Windows 将数据存储到其缓存后,即可通知应用程序写入请求已经完成,应用程序随即可以进行下一步的操作。之后 Windows 在一定延时后才会将这些数据转换成相应的磁盘扇区写入指令,发送到 PrimoCache 进行处理。如果 Windows 写入缓存关闭,则需要等到 PrimoCache 接收到 Windows 磁盘扇区写入指令后才可以通知应用程序写入请求完成,此时对于应用程序来说,写入响应时间就会变长,相应地,写入性能也会不如前者。

那么 PrimoCache 的 写入缓存(延时写入)和 Windows 的写入缓存相比有什么优势呢?

  1. Windows 写入缓存延时时间固定为 2 秒,且没有任何参数可以进行调整。而 PrimoCache 则可以根据需要灵活配置延时写入的时间和写入模式等各项参数。
  2. Windows 仅可使用内存作为缓存介质,而 PrimoCache 则可以使用内存和 SSD 作为缓存介质。
  3. 因为 PrimoCache 在磁盘扇区层级运行,直接处理磁盘扇区, 因此可以更有效地将随机写入整合成顺序写入,从而获得更好的写入性能。
  4. 应用程序可以绕过 Windows 写入缓存,但不能绕过 PrimoCache,因为 PrimoCache 在磁盘扇区层级运行。
  5. Windows 缓存空间是所有逻辑卷共享的,因此任何一个逻辑卷上的读或写操作都可能导致整个缓存空间填满数据而需要将之前的缓写数据紧急刷入硬盘。此外 Windows 缓存空间使用的是当前系统剩余可用内存,其容量是动态变化的。如果应用程序请求使用更多的内存,那么 Windows 缓存空间就需要释放相应大小的空间,导致这部分空间的缓存数据也会被释放。因此其缓存行为具有更多的不可控性,相应地,缓存效果也更具不可预测性。PrimoCache 则可以设置仅对需要的逻辑卷进行缓存。在同等缓存容量下,后者将更具目标性,缓存效果也更好。并且缓存空间是预先分配好的,不会因为应用程序需要更多内存而释放已经缓存的数据。
标签