#663·winfsp

将 ReadAheadGranularity/ReadAheadGranularityEx 和 DirtyPageThreshold 添加到 VolumeParams

作者: cooladj创建于 2026年4月10日更新于 2026年5月18日

I'm building一个网络文件系统基于QUIC,针对广域网使用场景。目前没有办法从用户模式控制缓存管理器的前进读取粒度或脏页阈值。ReadAheadGranularity (CcSetReadAheadGranularity) (https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntifs-ccsetreadaheadgranularity): 允许控制前进读取块大小将有利于网络文件系统,因为可以减少在高延迟连接上连续读取时的往返次数。ReadAheadGranularityEx 也很不错,但可能是不必要的,因为可以在应用程序级别控制块化。DirtyPageThreshold (CcSetDirtyPageThreshold) (https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/nf-ntifs-ccsetdirtypagethreshold): 允许控制每个文件的脏页阈值将有利于网络文件系统,因为可以让更多写入累积,然后缓存管理器才会向写入应用程序施加反压。这将减少在通过慢连接进行突发写入时的停滞。两者都可以作为 FSP_FSCTL_VOLUME_PARAMS 中的新字段,默认值与当前行为相匹配,以实现向下兼容性。如果不为零,则将在 CcInitializeCacheMap 之后执行一次调用。