为虚拟机实例指定最低要求 CPU 平台


本页面介绍如何创建或更新虚拟机 (VM) 实例以使用最低要求 CPU 平台(而非默认平台)。 Google 数据中心提供 Intel 和 AMD CPU 处理器

如果您的工作负载需要一代特定处理器提供的性能提升,则指定满足最低要求的 CPU 平台会非常有用。不过,指定最低要求 CPU 平台可能会限制可在其中创建虚拟机的可用区。

每个 CPU 平台都支持增量功能,例如高级矢量扩展,例如 AVX2 和 AVX-512。一些与基本系统相关的功能,如时钟速度和存储设备存取寻道时间可能因 CPU 平台而异。

准备工作

何时选择最低要求 CPU 平台

您很可能无需选择最低要求 CPU 平台。每个 Compute Engine 可用区均有一个默认的 CPU 平台,该平台偶尔会由 Google 弃用或更新。如果您创建的虚拟机没有最低要求 CPU 规范,则该虚拟机将获得默认的 CPU 平台。

Google 建议您仅在显著提升工作负载性能或提供代码所用的 AVX2 或 AVX-512 等功能时选择最低要求 CPU 平台。为您的虚拟机选择最低要求 CPU 平台会引入一些限制,这些限制会影响您在某些 CPU 平台供应有限的可用区中启动虚拟机的能力。

选择最低要求 CPU 平台后的工作方式

在指定最低要求 CPU 平台时,请注意以下事项:

  • Compute Engine 总是尽可能使用最低要求 CPU 平台。
  • 如果 Google 弃用或更新某个可用区中的 CPU 平台,如果您的虚拟机停止并重启,则您的虚拟机可以继续在该可用区中可用的较新 CPU 平台上运行。弃用 CPU 平台的情况很少见。Google 会在弃用或更新 CPU 平台之前通知您。

为虚拟机选择满足最低要求的 CPU 平台后,会出现以下行为:

  • 除非您停止虚拟机并更改 CPU 平台,否则您的虚拟机将使用此 CPU 平台。
  • 在实时迁移期间,您的虚拟机会保留所选的 CPU 平台。

弃用或升级默认 CPU 平台

有时,Google 会停用 CPU 平台或更新特定区域中的默认 CPU 平台。原因如下:

  • 随着时间推移,可用区容量会不断增加,且在平台可用时主动切换到较新的 CPU 平台。
  • 每 3-5 年,Google 就会用较新的 CPU 平台替换较旧的平台,并将默认 CPU 平台更新为该可用区中可用的下一最新平台。

不管任何时候,新的区域或可用区建立时,其将使用最新的 CPU 平台。

当某个可用区被弃用或可用区的默认 CPU 平台发生变化时,Google 会通知受影响的客户,并提供转换到较新平台的详细时间表和具体说明。

虚拟机使用的平台绝对不会早于您指定的最低要求 CPU 平台。如果 Compute Engine 将您的虚拟机转换到较新的平台上,则虚拟机的费用不会改变。

限制

CPU 平台的可用性

CPU 平台的可用性因可用区而异,并且取决于每个可用区提供的硬件和机器系列。以下列表显示了支持的最低要求 CPU 平台和每个平台的有效语法:

  • 第 3 代:Intel Xeon (Ice Lake) 处理器:预览版 "Intel Ice Lake"
  • 第 2 代:Intel Xeon (Cascade Lake) 处理器:"Intel Cascade Lake"
  • 第 1 代:Intel Xeon (Skylake) 处理器:"Intel Skylake"
  • Intel Xeon E5 v4 (Broadwell) 处理器:"Intel Broadwell"
  • Intel Xeon E5 v3 (Haswell) 处理器:"Intel Haswell"
  • Intel Xeon E5 v2 (Ivy Bridge) 处理器:"Intel Ivy Bridge"
  • Intel Xeon E5 (Sandy Bridge) 处理器:"Intel Sandy Bridge"
  • AMD EPYC Rome 处理器:Amd Epyc Rome"

请考虑以下事项:

  • 只有特定可用区包含多个 CPU 平台且可用于最低要求 CPU 平台选择。您可以使用 gcloud compute zones describe 命令或通过向 API 发出请求来查看特定可用区支持的平台列表。
  • 如果您使用的是单租户节点,每个节点都会使用与您在节点模板中定义的节点类型对应的 CPU 平台。因此,您无法为使用单租户节点的虚拟机指定最低要求 CPU 平台。

gcloud

  • 如需查看您可用区中可用的 CPU 平台,请使用 gcloud compute zones describe 命令

    gcloud compute zones describe ZONE
    

    ZONE 替换为要检查可用 CPU 平台的可用区名称,例如 us-west1-a

    此命令的以下输出列出了 us-west1-a 可用区的 CPU 平台:

    gcloud compute zones describe us-west1-a
    availableCpuPlatforms:
    - Intel Skylake
    - Intel Broadwell
    ...
    

API

  • 在 Compute Engine API 中,向您正在考虑的可用区发出 GET 请求

    GET https://compute.googleapis.com/compute/v1/projects/myproject/zones/ZONE
    

    ZONE 替换为要检查可用 CPU 平台的可用区名称。

    此命令的以下输出列出了可用区支持的 CPU 平台:

    {
      "kind": "compute#zone",
      "id": "2210",
      "creationTimestamp": "2016-06-10T09:30:55.189-07:00",
      "name": "us-west1-a",
      "description": "us-west1-a",
      "status": "UP",
      "region": "https://www.googleapis.com/compute/v1/projects/myproject/regions/us-west1",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-west1-a",
      "availableCpuPlatforms": [
       "Intel Broadwell",
       "Intel Haswell"
      ]
     }

为新的虚拟机选择最低要求 CPU 平台

您可以在实例创建期间指定最低要求 CPU 平台。

控制台

  1. 在 Google Cloud Console 中,转到创建实例页面。

    转到“创建实例”

  2. 机器配置部分中,展开 CPU 平台和 GPU 部分,然后执行以下操作:

    1. CPU 平台列表中,选择虚拟机 CPU 的平台。
  3. 继续完成虚拟机创建过程的剩余部分。

gcloud

  • 如需创建使用最低要求 CPU 平台的新虚拟机,请使用 gcloud compute instances create 命令并提供 --min-cpu-platform 标志:

    gcloud compute instances create INSTANCE \
        --zone=ZONE \
        --min-cpu-platform="PLATFORM"

    请替换以下内容:

    • INSTANCE:您要创建的实例的名称。
    • ZONE:要在其中创建实例的可用区的名称,例如 europe-west1-b
    • PLATFORM:您希望实例使用的最低要求 CPU 平台的易记名称,例如 Intel Sandy Bridge

      如果要清除最低要求 CPU 平台规范,请将 PLATFORM 替换为 AUTOMATIC

      请参考可用可用区部分来确定每个可用区有哪些平台可供使用。

API

  • 在 Compute Engine API 中,请将 minCpuPlatform 属性作为请求正文的一部分。

    例如,请求正文可能如下所示:

    "name": "INSTANCE",
    "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
    "minCpuPlatform": "PLATFORM",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT"
       }],
      "network": "global/networks/default"
    }],
    "disks": [{
       "autoDelete": "true",
       "boot": "true",
       "type": "PERSISTENT",
       "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
       }
     }]

    请替换以下内容:

    • INSTANCE:新实例的名称。
    • ZONE:要在其中创建虚拟机的可用区的名称,例如 europe-west1-b
    • MACHINE_TYPE:新虚拟机的机器类型
    • PLATFORM:您希望实例使用的最低要求 CPU 平台的易记名称,例如 Intel Ivy Bridge

      如果要清除最低要求 CPU 平台规范,请将 PLATFORM 替换为 AUTOMATIC

    • IMAGE_PROJECT:映像系列所属的映像项目

    • IMAGE_FAMILY:要用于创建虚拟机的映像所属的映像系列

为现有虚拟机设置最低要求 CPU 平台

您可以为现有实例设置最低要求 CPU 平台。首先停止实例,然后设置最低要求 CPU 平台。

控制台

  1. 转到虚拟机实例页面。

    转到虚拟机实例

  2. 如果出现提示,请选择您的项目并点击继续

  3. 选择要更改的虚拟机。

  4. 点击停止 (Stop)。

  5. 如需修改实例,请点击修改

  6. 机器配置部分中,点击 CPU 平台和 GPU

  7. CPU 平台下拉菜单中,选择一个选项。

  8. 保存更改。

  9. 选择已更改的虚拟机。

  10. 点击启动/恢复

gcloud

  1. 如需停止虚拟机,请使用 gcloud compute instances stop 命令

    gcloud compute instances stop INSTANCE
    

    INSTANCE 替换为您要为其指定最低要求 CPU 平台的实例名称。

  2. 如需指定最低要求 CPU 平台,请使用 gcloud compute instances update 命令,并提供 --min-cpu-platform 标志:

    gcloud compute instances update INSTANCE \
        --min-cpu-platform="PLATFORM"

    PLATFORM 替换为您希望实例使用的最低要求 CPU 平台的易记名称,例如 Intel Cascade Lake

  3. 如需启动更新后的虚拟机,请使用 gcloud compute instances start 命令

    gcloud compute instances start INSTANCE
    

API

  1. 如需停止虚拟机,请使用 instances.stop 方法构建一个 POST 请求:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE/stop
    

    请替换以下内容:

    • PROJECT_ID:项目的 ID
    • ZONE:虚拟机所在的地区
    • INSTANCE:您要为其指定最低要求 CPU 平台的实例名称
  2. 如需在 API 中设置最低要求 CPU 平台,请向 setMinCpuPlatform 方法发出 POST 请求,并在请求正文中设置 minCpuPlatform 属性。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE/setMinCpuPlatform
    {
      "minCpuPlatform": PLATFORM
    }
    

    PLATFORM 替换为您希望实例使用的最低要求 CPU 平台的易记名称,例如 Intel Skylake

  3. 如需重启虚拟机,请使用 instances.start 方法构建 POST 请求:

    POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE/start
    

移除满足最低要求的 CPU 平台设置

您可以将实例更新为使用默认 CPU 平台而不是使用最低要求 CPU 平台。如果实例正在运行,则必须先停止该实例,然后才能进行更改。

控制台

  1. 转到虚拟机实例页面。

    转到虚拟机实例

  2. 如果出现提示,请选择您的项目并点击继续

  3. 选择要更改的虚拟机。

  4. 点击停止 (Stop)。

  5. 如需修改实例,请点击修改

  6. 机器配置部分中,点击 CPU 平台和 GPU

  7. CPU 平台选项更改为自动

  8. 选择已更改的虚拟机。

  9. 点击启动/恢复

gcloud

  1. 如需停止虚拟机,请使用 gcloud compute instances stop 命令

    gcloud compute instances stop INSTANCE
    

    INSTANCE 替换为您要更改的实例名称。

  2. 如需重置最低要求 CPU 平台,请使用 gcloud compute instances update 命令并将 --min-cpu-platform 标志设置为 AUTOMATIC

    gcloud compute instances update INSTANCE \
        --min-cpu-platform="AUTOMATIC"
    
  3. 如需启动更新后的虚拟机,请使用 gcloud compute instances start 命令

    gcloud compute instances start INSTANCE
    

API

  1. 如需停止虚拟机,请使用 instances.stop 方法构建一个 POST 请求:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE/stop
    

    请替换以下内容:

    • PROJECT_ID:项目的 ID
    • ZONE:虚拟机所在的地区
    • INSTANCE:要更改的实例名称
  2. 如需重置最低要求 CPU 平台,请向 setMinCpuPlatform 方法发出 POST 请求。在请求正文中,将 minCpuPlatform 属性值设置为 AUTOMATIC

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE/setMinCpuPlatform
    {
      "minCpuPlatform": AUTOMATIC
    }
    
  3. 如需启动更新后的虚拟机,请使用 gcloud compute instances start 命令

    gcloud compute instances start INSTANCE
    

在实例模板中指定最低要求 CPU 平台

如果使用了代管式实例组,您可以为代管式实例组中的虚拟机实例指定一个最低要求 CPU 平台。

如需指定最低要求 CPU 平台,请创建一个实例模板(其包含 minCpuPlatform 属性)。

控制台

  1. 转到实例模板页面。

    转到“实例模板”

  2. 如果出现提示,请选择您的项目并点击继续

  3. 点击创建实例模板

  4. 机器配置部分中,点击 CPU 平台和 GPU

  5. CPU 平台下拉菜单中,选择一个选项。

  6. 继续实例模板创建过程。

gcloud

  • 使用 gcloud compute instance-templates create 命令创建实例模板时,请提供 --min-cpu-platform 标志:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --min-cpu-platform="PLATFORM"

    请替换以下内容:

    • TEMPLATE_NAME:实例模板的名称
    • PLATFORM:您希望实例使用的最低要求 CPU 平台的易记名称,例如 Intel Skylake

API

  • 在 API 中,将 minCpuPlatform 添加到您的请求中,以通过 Compute Engine API 创建一个新的实例模板。

    例如,以下实例模板包含了创建新模板所需的最低必填字段,并添加了 minCpuPlatform 属性:

    {
    "name": "example-template",
    "properties": {
      "machineType": "zones/us-central1-a/machineTypes/n1-standard-2",
      "minCpuPlatform": "Intel Haswell",
      "networkInterfaces": [
        {
          "network": "global/networks/default",
          "accessConfigs":
          [
            {
              "type": "PERSISTENT",
              "boot": true,
              "mode": "READ_WRITE",
              "initializeParams":
              {
                "sourceImage": "projects/debian-cloud/global/images/family/debian-10"
              }
            }
          ]
        }
      ],
      "disks":
      [
        {
          "type": "PERSISTENT",
          "boot": true,
          "mode": "READ_WRITE",
          "initializeParams":
          {
            "sourceImage": "projects/debian-cloud/global/images/family/debian-10"
          }
        }
      ]
      }
    }

后续步骤