【问题标题】:Is 1 vCPU on Google Compute Engine basically half of 1 physical CPU core?Google Compute Engine 上的 1 个 vCPU 基本上是 1 个物理 CPU 核心的一半吗?
【发布时间】:2018-02-08 14:29:33
【问题描述】:

Google 的 Machine types page 声明:

对于 n1 系列机器类型,虚拟 CPU 被实现为 2.6 GHz Intel Xeon E5 (Sandy) 上的单硬件超线程 Bridge)、2.5 GHz Intel Xeon E5 v2 (Ivy Bridge)...等

假设a single physical CPU core with hyper-threading appears as two logical CPUs to an operating system,那么如果描述为2个虚拟CPU和7.5 GB内存的n1-standard-2机器,那么这实质上意味着1个CPU内核,对吧?

所以如果我尝试follow hardware recommendations for an InfluxDB instance 推荐 2 个 CPU 内核,那么我应该瞄准具有 4 个 vCPU 的 Google Compute Engine 机器,对吗?

【问题讨论】:

    标签: multithreading google-cloud-platform google-compute-engine cpu-usage vcpu


    【解决方案1】:

    通常,当软件告诉您他们需要多少个内核时,他们不会考虑超线程。请记住,AMD 直到最近才拥有(超线程)。所以 2 个核心意味着 2 个 vCPU。是的,单个 HT CPU 内核在操作系统中显示为 2 个 CPU,但并不能完全作为 2 个真正独立的 CPU 内核执行。

    【讨论】:

    • 那么根据 Google 的解释,1vCPU(也就是 HT CPU 核心的 1 个线程)大约是 1 个物理 CPU 核心性能的 1/2?
    • 换句话说,2vcpu 表示 1 个单物理核心(带超线程)
    【解决方案2】:

    没错,您应该瞄准具有 4 个 vCPU 的 GCE 机器类型...当您从本地环境迁移时,您已经习惯了具有超线程的物理内核。在 GCP 中,这些称为 vCPU 或虚拟 CPU。一个 vCPU 相当于一个超线程内核。因此,如果您在本地有一个单核超线程 CPU,那基本上就是两个虚拟 CPU 到一个物理内核。因此,请始终牢记这一点,因为人们通常会立即进行测试。他们会说,“我有一台四核物理机,我要在云中运行四核”并问“为什么它们的性能不一样?!!!”

    【讨论】:

      【解决方案3】:

      如果 n1-standard-2 机器被描述为 2 个虚拟 CPU 和 7.5 GB 内存,那么这实质上意味着 1 个 CPU 内核,对吗?

      我相信,是的。

      因此,如果我尝试遵循推荐 2 个 CPU 内核的 InfluxDB 实例的硬件建议,那么我应该瞄准具有 4 个 vCPU 的 Google Compute Engine 机器,对吗?

      我认为,它们意味着 2 个物理内核,与超线程 (HT) 无关,因为 HT 的性能并不是一个稳定的参考。 但是IMO,建议还应该包含每个物理核心的速度。 如果软件推荐 2 个 CPU 内核,则 GCP 上需要 4 个 vCPU。

      【讨论】:

      • GCP documentation 中有一点我不明白:“在英特尔至强处理器上,英特尔超线程技术支持在每个物理处理器内核上运行多个应用线程。”
      • 根据这个基准medium.com/data-design/…,如果我们有 4 个 vCPU,我们应该只同时运行 4 个线程。根据上面提到的 GCP 文档,我不确定这在 Xeon 上是否正确?
      【解决方案4】:

      https://cloud.google.com/compute/docs/cpu-platforms 说:

      在 Compute Engine 上,每个虚拟 CPU (vCPU) 都作为一个可用 CPU 处理器上的单个硬件多线程实现。在英特尔至强处理器上,英特尔超线程技术支持在每个物理处理器内核上运行多个应用线程。您可以使用这些多线程中的一个或多个作为 vCPU 配置您的 Compute Engine 虚拟机实例。 VM 实例的具体大小和形状决定了它的 vCPU 数量。

      【讨论】:

        【解决方案5】:

        很久以前,“CPU”(例如在“top”的输出中看到的)、套接字、内核和线程之间存在 1 对 1 的等价关系。 (如果你愿意,也可以选择“处理器”和/或“芯片”。)

        因此,许多人养成了交替使用其中两个或多个术语的习惯。特别是“CPU”和“核心”。

        然后 CPU 设计人员开始将多个内核放在一个芯片/芯片上。所以“插座”或“处理器”或“芯片”不再是单核​​,而“CPU”仍然是与“核”一对一的关系。因此,互换这两个术语仍然“可以”。

        然后 CPU 设计者开始将多个“线程”(例如超线程)放在一个内核中。操作系统会将每个超线程呈现为一个“CPU”,因此“CPU”与“线程”和“核心”之间不再存在一对一的对应关系。

        而且,不同的 CPU 系列每个内核可以有不同数量的线程。

        但是当一个意思是“CPU”时,指的是“核心”。

        【讨论】:

        • OP 已经知道这一点,这绝不会回答最初的问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-23
        相关资源
        最近更新 更多