缓存和内存管理器改进

本主题介绍 Windows Server 2012 和 2016 中的缓存管理器和内存管理器改进。

Windows Server 2022 中的缓存管理器改进

缓存管理器现在可识别 NUMA,这可确保系统更好地避免跨 NUMA 边界移动数据。 避免从 NUMA 节点访问另一个 NUMA 节点上的内存和其他内核资源会增加大量开销。 通过使缓存管理器识别 NUMA,我们消除了此类跨 NUMA 的跃点,从而优化了在多节点配置上运行的缓存 IO 工作负载。

Windows Server 2019 中的缓存管理器改进

我们添加了对持久性内存 (PMEM) 存储的零副本支持。 有关持久性内存的详细信息,请参阅了解和部署持久性内存。 在直接访问 (DAX) 模式下,PMEM 像内存一样运行以获得最低延迟,其中我们消除了额外的数据副本,并绕过了文件系统迷你筛选器和存储堆栈产生的大量开销。 此模式仅适用于 NTFS 作为文件系统。

Windows Server 2016 中的缓存管理器改进

缓存管理器还添加了对真正异步缓存读取的支持。 如果应用程序严重依赖于异步缓存读取,这可能会提高应用程序的性能。  虽然大多数内置文件系统在一段时间内都支持异步缓存读取,但由于与处理线程池和文件系统内部工作队列相关的各种设计选项,通常存在性能限制。  借助内核支持,缓存管理器现在可从文件系统中隐藏所有线程池和工作队列管理复杂性,从而更高效地处理异步缓存读取。 缓存管理器为每个(系统支持的最大)VHD 嵌套级别提供一组控制数据结构,以最大程度地提高并行度。

Windows Server 2012 中的缓存管理器改进

除了对缓存管理器进行增强,以便为顺序工作负载预读逻辑外,还添加了新的 API CcSetReadAheadGranularityEx,以允许文件系统驱动程序(如 SMB)更改其预读参数。 此 API 通过发送多个小型预读请求(而不是发送单个大型预读请求)为远程文件方案提供更好的吞吐量。 只有内核组件(如文件系统驱动程序)可以按文件以编程方式配置这些值。

Windows Server 2012 中的内存管理器改进

启用页面组合可以减少服务器上的内存使用量,因为这些服务器包含大量具有相同内容的专用可分页页。 例如,运行同一内存密集型应用的多个实例的服务器或处理高度重复数据的单个应用可能适合尝试页面组合。 启用页面组合的缺点是 CPU 使用率增加。

下面是一些服务器角色示例,其中页面组合不太可能带来多大好处:

  • 文件服务器(大部分内存由非专用文件页占用,因此无法组合)

  • 配置为使用 AWE 或大页面的 Microsoft SQL Server(大部分内存是专用的,但不可分页)

页面组合默认处于禁用状态,但可以使用 Enable-MMAgent Windows PowerShell cmdlet 启用。 页面组合已在 Windows Server 2012 中添加。