使用 CSV 内存中读取缓存

适用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016

本主题介绍如何使用系统内存通过缓存频繁读取来提升 Azure Stack HCI 和 Windows Server 的性能。 写入内容不能缓存在内存中。

Azure Stack HCI 和 Windows Server 与群集共享卷(CSV)内存中读取缓存兼容。 使用系统内存来缓存读取可以提高 Hyper-V 等应用程序的性能,这些应用程序使用未缓冲的 I/O 来访问 VHD 或 VHDX 文件。 未缓冲的 I/O 是指不被 Windows 缓存管理器缓存的任何操作。

由于内存缓存是服务器本地的,因此可改善数据的局部性。 最近的读取将缓存在运行虚拟机(VM)的同一主机上的内存中,从而减少通过网络读取的频率。 这会产生较低的延迟和更好的存储性能。

请注意,CSV 内存中读取缓存不同于 存储池缓存

规划注意事项

内存中读取缓存对于读取密集型工作负荷(如虚拟桌面基础结构(VDI)最为有效。 相反,如果工作负荷是非常写入密集型的,缓存可能会引入比它所带来的价值更大的开销,因此应禁用。

可以将多达 80% 的总物理内存用于 CSV 内存中读取缓存。 请小心为 VM 留出足够的内存!

Note

某些微基准测试工具(如 DISKSPD 和 VM 机群)可能会产生的结果比未启用 CSV 内存读取缓存时更差。 默认情况下,VM 机群为每个 VM 创建一个 10 GiB 的 VHDX(总计大约 1 TiB),然后对其执行统一随机读取和写入。 与实际工作负荷不同,读取不遵循任何可预测或重复模式,因此内存中缓存无效,只会产生开销。

配置内存中读取缓存

AZURE Stack HCI、Windows Server 2019 和 Windows Server 2016 中提供 CSV 内存中读取缓存,其功能相同。 在 Azure Stack HCI 和 Windows Server 2019 中,该功能默认开启,并分配了 1 GiB(千兆字节)。 在 Windows Server 2016 中,默认处于关闭状态。

OS 版本 默认 CSV 缓存大小
Azure Stack HCI 1 GiB
Windows Server 2019 1 GiB
Windows Server 2016 0 (已禁用)

使用 Windows Admin Center 配置缓存

若要使用 Windows Admin Center 配置缓存,请执行以下作:

  1. 在 Windows Admin Center 中,连接到群集,然后从左侧的“工具”窗格中选择“设置”。
  2. “设置”窗格的“存储”下选择内存中缓存
  3. 在右窗格中,复选框启用或禁用缓存,还可以指定要分配给缓存的每个服务器的最大内存。
  4. 完成后,选择“ 保存”。

在 Windows Admin Center 中,复选框启用或禁用缓存。还可以指定要分配给缓存的每个服务器的最大内存。

使用 PowerShell 配置缓存

若要查看使用 PowerShell 分配多少内存,请以管理员身份运行以下命令:

(Get-Cluster).BlockCacheSize

返回的值以每台服务器的兆二进制字节(MiB)为单位。 例如,1024 表示 1 GiB。

若要更改分配的内存量,请使用 PowerShell 修改此值。 例如,若要为每个服务器分配 2 GiB,请运行:

(Get-Cluster).BlockCacheSize = 2048

若要使更改立即生效,请暂停,然后恢复 CSV 卷,或在服务器之间移动它们。 例如,使用此 PowerShell 片段将每个 CSV 移到另一个服务器节点,然后再次返回:

Get-ClusterSharedVolume | ForEach {
    $Owner = $_.OwnerNode
    $_ | Move-ClusterSharedVolume
    $_ | Move-ClusterSharedVolume -Node $Owner
}

后续步骤

有关相关信息,另请参阅: