Windows文件系统与缓存管理机制解析
写入节流机制
在计算机系统中,文件系统和缓存管理器需判断缓存写入请求是否影响系统性能,并安排延迟写入。具体流程如下:
1.请求评估:文件系统通过CcCanIWrite函数询问缓存管理器,当前写入一定字节数是否会影响性能,必要时会阻塞写入。
2.回调设置:若当前无法写入,文件系统调用CcDeferWrite设置回调,待允许写入时自动写入。
3.缓存检查:缓存管理器收到写入操作通知后,检查缓存中的脏页数量和可用物理内存。若可用物理页少,会暂时阻塞请求写入的文件系统线程。
4.脏页刷新:缓存管理器的惰性写入器将部分脏页刷新到磁盘,再允许被阻塞的线程继续。
写入节流可防止因文件系统或网络服务器的大量写入操作导致内存不足,进而避免系统性能下降。需注意,写入节流影响全局,若对慢速设备的大量写入触发该机制,对其他设备的写入也会受影响。
脏页阈值是指系统缓存允许的脏页数量,超过该值会对缓存写入器进行节流。此值在系统初始化时计算,取决于物理内存大小和注册表LargeSystemCache的值。计算脏页阈值的算法如下表所示:
| 系统内存大小 | 脏页阈值 |
| — | — |
| 小 | 物理页数 / 8 |
| 中 | 物理页数 / 4 |
| 大 | 上述两个值的总和 |
但如