使用 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 留出足够的内存!
注意
某些微基准测试工具(如 DISKSPD 和 VM Fleet)可能会产生比在未启用 CSV 内存读取缓存时更差的结果。 默认情况下,VM 机群为每个 VM 创建一个 10 GiB 的 VHDX(对于 100 个 VM,总计约 1 TiB),然后对这些 VHDX 执行 均匀随机的 读取和写入操作。 与实际工作负荷不同,读取不遵循任何可预测或重复模式,因此内存中缓存无效,只会产生开销。
配置内存中读取缓存
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 配置缓存,请执行以下作:
- 在 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
}
后续步骤
有关相关信息,另请参阅: