优化性能

本页详细介绍了如何优化 Google Cloud NetApp Volumes 的性能。

准备工作

在更改音量以优化效果之前,请先查看效果注意事项

调整音量设置

您可以通过调整以下音量设置来优化性能:

  • 增加卷容量:您可以增加 Premium、Extreme 或 Standard 服务等级卷的容量,以提高可实现的最大卷吞吐量。对于服务等级为 Flex 的卷,请改为增加存储池容量。

  • 升级服务等级:您可以将优质服务等级的卷升级为极致服务等级,以提高吞吐量。我们建议您将该卷分配给具有不同服务级别的其他存储池。

增加卷容量和升级服务级别都不会中断卷上正在处理的 I/O 工作负载,也不会以任何方式影响对卷的访问。

调整客户端

您可以通过调整客户端上的以下设置来提升性能:

  • 将客户端放置在同一位置:延迟时间结果会直接受到客户端功能和位置的影响。为获得最佳结果,请将客户端放置在与音箱位于同一区域或尽可能靠近该区域的位置。通过测试每个可用区中客户端的延迟时间来测试可用区的影响,并使用延迟时间最短的可用区。

  • 配置 Compute Engine 网络带宽:Compute Engine 虚拟机的网络功能取决于所使用的实例类型。通常,实例越大,网络吞吐量就越高。我们建议您选择具有适当网络带宽功能的客户端虚拟机,选择 Google 虚拟 NIC (gVNIC) 网络接口,并启用 Tier_1 性能。如需了解详情,请参阅 Compute Engine 文档中的网络带宽部分。

  • 打开多个 TCP 会话:如果您的应用需要高吞吐量,您最终可能会使正常 NFS 和 SMB 会话的基础单个传输控制协议 (TCP) 会话饱和。对于此类情况,请增加 NFS 和 SMB 连接使用的 TCP 会话数。

    根据客户端类型,使用以下任一标签页调整客户端:

    Linux

    传统上,NFS 客户端会针对共享存储端点的所有 NFS 已装载文件系统使用单个 TCP 会话。使用 nconnect 装载选项可增加支持的 TCP 会话数量,最多可达 16 个。

    我们建议您遵循以下最佳实践来调整 Linux 客户端类型,以充分利用 nconnect

    • 使用 nconnect 增加 TCP 会话数量:每个额外的 TCP 会话都会为 128 个待处理请求添加一个队列,从而提高潜在并发性。

    • 设置 sunrpc.max_tcp_slot_table_entries 参数sunrpc.max_tcp_slot_table_entries 是一个连接级调整参数,您可以对其进行修改以控制性能。我们建议将 sunrpc.max_tpc_slot_table_enteries 设置为 128 个请求或每个连接,并且对于连接到 NetApp 卷的单个项目中的所有 NFS 客户端,槽数不应超过 10,000 个。如需设置 sunrpc.max_tcp_slot_table_entries 参数,请将该参数添加到 /etc/sysctl.conf 文件中,然后使用 sysctl -p 命令重新加载参数文件。

    • 将每个会话支持的最大值调整为 180:与 NFSv3 不同,NFSv4.1 客户端在会话中定义客户端与服务器之间的关系。虽然 NetApp 卷支持使用 NFSv3 时每个连接最多有 128 个待处理请求,但 NFSv4.1 限制为每个会话最多有 180 个待处理请求。Linux NFSv4.1 客户端默认为每个会话设置 64 max_session_slots,但您可以根据需要调整此值。我们建议将每个会话支持的最大值更改为 180。

      如需调整 max_session_slots,请在 /etc/modprobe.d 下创建配置文件。确保没有出现任何引号(“”)。否则,该选项将不会生效。

      $ echo "options nfs max_session_slots=180" > /etc/modprobe/d/nfsclient/conf
      $ reboot
      
      Use the systool -v -m nfs command to see the current maximum in use
      by the client. For the command to work, at least one NFSv4.1 mount
      must be in place.
      
      $ systool -v -v nfs
      {
      Module = "nfs"
      
      Parameters:
      
      Max_session_slots = "63" <-
      
      }
      

    以下 NFS nconnect 对比图展示了使用 nconnect 配置对 NFS 工作负载的影响。此信息是使用以下设置通过 Fio 捕获的:

    • 100% 读取工作负载

    • 针对单个卷的 8 KiB 块大小

    • 使用 Red Hat 9 OS 的 n2-standard-32 虚拟机

    • 6 TiB 工作集

    使用 nconnect 值 16 后,性能提升了 5 倍。

    使用单个 Red Hat 9 虚拟机(块大小为 8 KiB)进行的 NFS nconnect 比较。

    Windows

    对于基于 Windows 的客户端,客户端可以将 SMB 多通道与接收端缩放 (RSS) 结合使用,以打开多个 TCP 连接。若要实现此配置,您的虚拟机必须具有支持 RSS 的已分配网络适配器。我们建议将 RSS 设置为 4 或 8 个值,不过,任何大于 1 的值都应会提高吞吐量。

    下图显示了使用 RSS 配置对 SMB 工作负载的影响。此信息是使用 Fio 捕获的,具体设置如下:

    • 100% 读取工作负载

    • 针对单个卷的 8 KiB 块大小

    • 运行 Windows 2022 操作系统的单个 n2-standard-32 虚拟机

    • 6 TiB 工作集

    我们运行了 8 个作业,在测试执行期间,只有 SMB 客户端 RSS 选项发生了变化。与使用值 1 相比,使用 RSS 值 4、8 和 16 可将性能提高一倍。每个 RSS 实例都运行了 9 次,numjobs 参数为 8。每次执行时,iodepth 参数都会增加 5,直到达到最大吞吐量。

    单个 Windows 2022 虚拟机的 SMB RSS 比较(块大小为 8 KiB)

后续步骤

了解存储池