【问题标题】:Google Cloud Kubernates nodes bandwidthGoogle Cloud Kubernetes 节点带宽
【发布时间】:2019-08-01 08:04:12
【问题描述】:

我正在 Google Cloud Kubernates 服务上部署我的集群。它已经有几个节点。此外,我需要来自 Google Cloud 的带有 GPU 的服务器才能使其与我的集群一起使用。 GPU 实例持续处理传入的流量(带宽应高达 1Gb/s)并将结果发送到集群节点(带宽应大于传入带宽)。

项目中对我来说最关键的事情:
1) 集群内这些节点之间的带宽;
2)节点与GPU服务器之间的带宽;
3) GPU 服务器与世界之间的带宽;
4) 节点与世界之间的带宽。

下载和上传时,每个节点的最小适当带宽为 1 Gb/s。当我进行速度测试时,它显示同一节点同时下载速度100-680 Mb/s和上传速度67-138 Mb/s(截图如下彼此间隔 30 秒)。所以目前的带宽太小而且不稳定。但我需要从 1 Gb/s 开始的稳定带宽。

我试图在 Google Docs 中找到有关带宽的任何技术规范或定价。但是,技术规范中只有 CPU/GPU/RAM/Disk,没有带宽。并且文档上只有每月流量定价。

TL;DR:
如何为每个集群节点、GPU 实例和任何其他 Google Cloud 虚拟机设置稳定的 1 Gb/s 或更多带宽? Google Cloud 中是否有提供超过 1 Gb/s 带宽的服务? Google Cloud 中是否有任何解决方案/服务如何处理大互联网流量?

附:速度测试通过:

npx speedo-cli

【问题讨论】:

  • 每个虚拟机的带宽随着vCPUs the instance has的数量而增加。还要注意,如果进程需要写入磁盘,那么磁盘网络带宽也是一个限制因素
  • @PatrickW,感谢您的回复。在帖子中的屏幕截图中,您可以看到在具有相同 vCPU 数量的同一 VM 上的不同速度测试结果。带宽不稳定,可能在 12.29 MB/s 到 85.2 MB/s 之间变化。对此有何影响?如何获得稳定的最大带宽?在您发送的链接上,他们说他们给我们每个 vCPU 2 Gbps。但这里甚至低于 1 Gbps。

标签: google-cloud-platform gpu google-kubernetes-engine bandwidth


【解决方案1】:

确实无法保证,尤其是涉及到/来自 GCP 外部网络的流量时。不过,您可以采取以下措施来最大化带宽:

  1. 增加每个实例的CPU核心数

    上限取决于虚拟机实例拥有的 vCPU 数量。每个内核都受制于 2 Gbits/秒 (Gbps) 的峰值性能上限。每个额外的核心都会增加网络上限,每个虚拟机的理论最大值为 16 Gbps。 source

    • 请注意,2 Gbps per vCPU 上限表示使用内部网络的理论限制:

      上限是一个不能超过的限制,并不表示您的出口流量的实际吞吐量。无法保证您的流量将达到最大吞吐量,这取决于除上限之外的许多因素。 source

  2. 如果虚拟机之间存在流量(即问题中的情况 1 和 2),请确保虚拟机位于同一区域并且您使用的是内部 IP

    每当您在虚拟机之间传输数据或进行通信时,您都可以通过始终使用内部 IP 进行通信来实现最大性能。在许多情况下,速度差异可能很大。 source

    • 查看this answer,了解如何使用iperf 测量虚拟机之间的网络带宽。
  3. 对于高级用例,您可以在虚拟机中尝试fine-tuning the TCP window size

最后,one benchmark 观察到 the GCP network throughput is 81x more variable when compared to AWS。当然,这仅反映了一个基准,但您可能会发现自己测试其他提供商是值得的。

【讨论】:

    【解决方案2】:

    自从 Aleksi 的回答以来,每个虚拟机的出口上限/限制发生了一些变化。它仍被计算为 2 Gbit/s * NumberOfvCPUs,但现在最大值为 32 Gbit/s(当使用 Skylake 或更好的 min_cpu_platform 创建 VM 时),对于具有 2 个或更多的 VM,最小值为 10 Gbit/s vCPU。

    我不清楚您的速度测试的端点是什么,但 TCP 连接吞吐量的(许多)限制之一是:

    吞吐量

    人们会期望 GPU 实例和节点彼此靠近,但这个限制可能会在 GPU 实例和节点到世界上发挥作用。

    除此之外,了解可变吞吐量发生了什么可能需要数据包跟踪,肯定是在发送端,最好也是在接收端。在这种情况下,每个数据包的前 96 个字节就足够了。这将是支持组织要求的事情之一。

    【讨论】:

      【解决方案3】:

      我担心您无法在共享基础设施中做出任何带宽承诺。如果您有(大量)现金,则在同一租户上使用单租户[1] 与架构的所有部分可以帮助解决外部寄生虫问题。 但是在这种情况下,网络带宽没有承诺。而且,目前,此解决方案不支持 GPU。

      1:https://cloud.google.com/compute/docs/nodes/

      【讨论】:

        猜你喜欢
        • 2018-05-05
        • 1970-01-01
        • 2021-11-15
        • 2018-08-02
        • 2023-03-03
        • 2019-05-27
        • 2018-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多