1

在诸如 Google Cloud Dataflow(或者甚至 Apache Spark 或 Kubernetes 集群等)之类的集群高性能计算框架中,我认为拥有更少的真正 BIG 机器类型而不是许多小型机器类型的性能要高得多,对吧? 例如,拥有 10 个 n1-highcpu-96 而不是说 120 个 n1-highcpu-8 机器类型的性能更高,因为

  • cpu 可以使用共享内存,这比网络通信快得多
  • 如果单个线程需要访问大量内存以进行单线程操作(例如排序),则它可以访问 BIG 机器中更大的内存,而不是较小的机器

既然价格相同(例如 10 个 n1-highcpu-96 的成本与 120 个 n1-highcpu-8 机器类型相同),为什么会有人选择更小的机器类型?

同样,我有一种预感,对于 n1-highcpu-96 机器类型,我们会占用整个主机,所以我们不需要担心来自另一个谷歌云客户的另一个虚拟机对主机的竞争需求(例如CPU缓存或主板带宽等的争用),对吧?

最后,虽然我不认为 google 计算 VM 正确报告主机系统的“真实”CPU 拓扑,但如果我们选择 n1-highcpu-96 机器类型,报告的 CPU 拓扑可能更接近“真相”,因为据推测 VM 正在用完整个主机,因此报告的 CPU 拓扑更接近真相,因此在该 VM 上运行的任何程序(例如 Java 中的“NUMA”感知选项?)都可能试图占用拓扑的优势有更好的机会做出“正确的决定”。

4

1 回答 1

0

如果您要选择许多具有较小机器类型的实例或一些具有较大机器类型的实例,这将取决于许多因素。

VM 的大小不仅在内核和 RAM 数量方面有所不同,而且在网络 I/O 性能方面也有所不同。具有小型机器类型的实例在 CPU 和 I/O 能力方面受到限制,不足以应对繁重的工作负载。

此外,如果您计划增长和扩展,最好在多个实例中设计和开发您的应用程序。拥有小型虚拟机让您有更好的机会将它们分布在数据中心的物理服务器上,这些物理服务器在配置机器时资源状况最好。

拥有少量实例有助于隔离故障域。如果您的一个小节点崩溃,那只会影响少数进程。如果一个大节点崩溃,多个进程就会宕机。

它还取决于您在集群上运行的应用程序和工作负载。我还建议您通过此链接查看实例的大小建议。

于 2018-11-28T21:25:29.183 回答