使用 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) 内存中读取缓存兼容。 对于使用未缓冲 I/O 访问 VHD 或 VHDX 文件的应用程序(如 Hyper-V),使用系统内存缓存读取可以性能。 (未缓冲 I/O 是未由 Windows 缓存管理器缓存的任何操作。)
由于内存中缓存是服务器本地缓存,因此它改进了数据本地性。 最近读取会缓存在运行虚拟机 (VM) 的相同主机上的内存中,从而减少通过网络进行读取的频率。 这可实现更低的延迟和更好的存储性能。
请注意,CSV 内存中读取缓存与存储池缓存不同。
规划注意事项
内存中读取缓存对于读取密集型工作负载(如虚拟桌面基础结构 (VDI))最有效。 相反,如果工作负载是极端的写入密集型,则缓存引入的开销可能会高于获得的价值,因此应禁用。
可以将多达 80% 的总物理内存用于 CSV 内存中读取缓存。 请注意为 VM 留出足够的内存!
注意
某些微基准工具(如 DISKSPD 和 VM Fleet)在启用了 CSV 内存中读取缓存时得到的结果可能比未启用时更差。 默认情况下,VM Fleet 会为每个 VM 创建一个 10 GiB VHDX(100 个 VM 总共将近 1 TiB),然后对它们执行均匀随机读取和写入。 与实际工作负载不同,读取不遵循任何可预测或重复的模式,因此内存中缓存不起作用,只会产生开销。
配置内存中读取缓存
CSV 内存中读取缓存在具有相同功能的 Azure Stack HCI、Windows Server 2019 和 Windows Server 2016 中可用。 在 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
}
后续步骤
如需相关信息,另请参阅: