性能考虑因素

本页面介绍了如何配置 Google Cloud Managed Lustre 环境以获得最佳性能。

如需查看每个效果层级的具体效果数据,请参阅效果层级

增加容量后的性能

增加现有实例的存储空间容量会提高其最大吞吐量和 IOPS,还可能会提高其元数据性能。

随着新数据写入并重新分布到额外的存储空间中,读取吞吐量性能会逐渐提高。写入吞吐量性能立即提升。

容量利用率高

当实例的存储空间容量利用率达到 90% 时,实例的性能可能会降低。请考虑增加 Managed Lustre 实例的容量。 在扩展之前,您可能需要申请额外的配额

如果您看到 No space left on device 错误,但实例显示有剩余容量,请参阅No space left on device 错误

VPC 网络最大传输单元 (MTU)

创建 VPC 网络时,将 mtu(最大传输单元,即可在此网络上传输的最大 IP 数据包的大小)的值设置为允许的最大值 8896 后,性能可提高多达 10%(与默认值 1460 字节相比)。

您可以使用以下命令查看网络的当前 MTU 值:

gcloud compute networks describe NETWORK_NAME --format="value(mtu)"

网络创建后,可以更新网络的 MTU 值,但需要注意一些重要事项。如需了解详情,请参阅更改网络的 MTU

Compute Engine 机器类型

网络吞吐量可能会受到所选机器类型的影响。一般来说,为了获得最佳吞吐量:

  • 增加 vCPU 数量。每个实例的最大出站流量带宽通常为每个 vCPU 2 Gbps,最高可达机器类型上限。
  • 选择支持更高入站和出站流量限制的机器系列。例如,使用 Tier_1 网络的 C2 实例支持高达 100 Gbps 的出站流量带宽。使用 Tier_1 网络的 C3 实例支持高达 200 Gbps 的带宽。
  • 使用更大的机器类型来启用每个虚拟机的 Tier_1 网络性能
  • 使用 Google 虚拟 NIC (gVNIC)。对于第 3 代及更新的机器类型,gVNIC 是唯一选择。使用 Tier_1 网络时,必须使用 gVNIC。

如需了解详情,请参阅网络带宽

多 NIC 配置

通过使用 Lustre 的内置多轨道功能,客户端可以将网络流量条带化到多个网络接口卡(多 NIC)。这样可以聚合带宽,使高容量的 Managed Lustre 实例达到饱和状态。

如需配置多 NIC,您必须执行以下操作:

  • 选择具有多个物理 NIC 的机器类型。
  • 为每个 NIC 创建一个子网,并将每个 NIC 分配给其子网。
  • Compute EngineGKE 连接时,请按照多 NIC 步骤操作。

验证流量均衡

配置多网卡后,请验证数据是否已正确分流。

Compute Engine

通过以下方式直接在虚拟机上验证数据平衡:使用 nload 监控配置的网络接口(例如 eth0eth1),同时生成到 Managed Lustre 后端的流量:

nload -m eth0 eth1

在成功的多 NIC 配置中,所有已配置接口的传出比特率应大致相当。

GKE

通过将临时网络调试器 Pod 部署到工作负载所调度的节点,确认工作负载的网络流量在多个网卡之间是否均衡:

  1. 确定工作负载调度到的节点:

    kubectl get pod POD_NAME -o wide
    

    POD_NAME 替换为您的 Pod 名称。在命令输出中,记下 NODE 列中的名称。

  2. 在该节点上启动网络调试器:

    kubectl run multi-nic-debug --rm -i --tty --image=nicolaka/netshoot \
      --overrides='{"spec": {"hostNetwork": true, "nodeSelector": {"kubernetes.io/hostname": "NODE_NAME"}, "tolerations": [{"key": "nvidia.com/gpu", "operator": "Exists", "effect": "NoSchedule"}]}}' \
      -- /bin/bash -c "apk update && apk add nload && nload -m eth0 eth1"
    

    NODE_NAME 替换为上一步中的节点名称。

  3. 在输出中,分析 eth0eth1出站列比特率。如果配置成功,比特率大致相当。输出类似于以下内容:

    Device eth0 [10.1.0.50] (1/2):
    ==========================================================================
    Incoming:                               Outgoing:
    Curr: 1.63 MBit/s                       Curr: 1.46 GBit/s
    Avg: 1.60 MBit/s                        Avg: 1.44 GBit/s
    Min: 1.40 MBit/s                        Min: 1.25 GBit/s
    Max: 1.64 MBit/s                        Max: 1.47 GBit/s
    Ttl: 590.94 GByte                       Ttl: 405.19 GByte
    
    Device eth1 [172.16.15.5] (2/2):
    ==========================================================================
    Incoming:                               Outgoing:
    Curr: 1.64 MBit/s                       Curr: 1.47 GBit/s
    Avg: 1.62 MBit/s                        Avg: 1.44 GBit/s
    Min: 1.42 MBit/s                        Min: 1.26 GBit/s
    Max: 1.66 MBit/s                        Max: 1.47 GBit/s
    Ttl: 587.68 GByte                       Ttl: 406.36 GByte
    
  4. Ctrl+C 退出调试器。

衡量单客户端性能

如需测试单个 Compute Engine 客户端的读取和写入性能,请使用 fio灵活的 I/O 测试工具)命令行工具。

  1. 安装 fio:

    Rocky 8

    sudo dnf install fio -y
    

    Ubuntu 20.04 和 22.04

    sudo apt update
    sudo install fio
    
  2. 运行以下命令:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/lustre --buffer_compress_percentage=50 \
    --name=read --blocksize=1m --iodepth=64 --readwrite=read
    

测试大约需要 5 分钟才能完成。完成后,系统会显示结果。根据您的配置,您可以获得高达虚拟机的最大网络速度的吞吐量,以及每 TiB 数千 IOPS。