查看和修改CPU拓扑结构

您可以查看并修改ECS实例的CPU拓扑结构来提高性能、提升并行性以及优化资源分配,以满足您在虚拟化环境、多线程编程、高性能计算等不同场景下的需求。本文介绍如何通过OpenAPI查看和修改实例的CPU拓扑结构。

背景信息

什么是CPU 拓扑

CPU拓扑是多核处理器中物理核心与逻辑核心之间的连接方式。通常情况下,每个物理核心都包含一个或多个逻辑核心,而物理核心直接通过总线或互联网络连接,拓扑结构的不同将直接影响多核处理器的性能和能效。

目前阿里云部分实例规格族支持HT连续模式(ContinuousCoreToHTMapping)和HT离散模式(DiscreteCoreToHTMapping)两种不同的拓扑结构。具体说明如下:

  • HT连续模式:逻辑核心连续分配给物理核心,有助于减少线程之间的通信和竞争。适用于需要较低的访存延迟和更接近物理核心的计算任务,例如科学计算、数据分析、高性能计算等对内存访问和核心计算敏感的应用。

  • HT离散模式:逻辑核心分散分配给物理核心,可以有助于减少多线程环境中的资源争夺,并提供更好的性能隔离。适用于工作负载中分配给各线程的任务相对独立,或者对单线程性能要求较高的场景。

说明

本文以一台8 vCPU的X86架构的实例规格为例,两种CPU拓扑结构的说明如下所示。

CPU拓扑结构如下图所示:

HT连续模式

image.png

逻辑核心与物理核心的关系如下所示:

  • HT 0HT 1属于一个核心CORE 0

  • HT 2HT 3属于一个核心CORE 1

  • HT 4HT 5属于一个核心CORE 2

  • HT 6HT 7属于一个核心CORE 3

HT离散模式

image.png

逻辑核心与物理核心的关系如下所示:

  • HT 0HT 4属于一个核心CORE 0

  • HT 1HT 5属于一个核心CORE 1

  • HT 2HT 6属于一个核心CORE 2

  • HT 3HT 7属于一个核心CORE 3

使用限制

仅以下实例规格族支持修改CPU拓扑结构:

  • ecs.g8i、ecs.c8i、ecs.r8i

  • ecs.g7、ecs.c7、ecs.r7

  • ecs.g7a、ecs.c7a、ecs.r7a

  • ecs.hfg8i、ecs.hfc8i、ecs.hfr8i

  • ecs.hfg7、ecs.hfc7、ecs.hfr7

  • ecs.g6、ecs.c6、ecs.r6

  • ecs.g6e、ecs.c6e、ecs.r6e

更多信息,请参见实例规格族

查看CPU拓扑结构

您可以通过调用DescribeInstances接口,填写请求参数AdditionalAttributes,查看对应返回参数信息,确认当前实例的CPU拓扑类型。更多信息,请参见DescribeInstances

返回参数的可能值如下:

  • HT连续模式:ContinuousCoreToHTMapping

  • HT离散模式:DiscreteCoreToHTMapping

  • 不支持修改:空

修改CPU拓扑结构

重要

如果您因业务需求需要修改CPU拓扑结构,建议您在修改之前进行一些基准测试和性能评估,以确定哪种模式最适合您的工作负载。

您可以通过调用OpenAPI并设置不同的参数来修改实例的CPU拓扑结构。

  • 创建实例时

    调用RunInstances接口,填写请求参数CpuOptions.TopologyType的取值来修改CPU拓扑结构。更多信息,请参见RunInstances

  • 已创建实例

    说明

    通过调用API接口修改ECS实例的CPU拓扑结构时,请确保实例处于已停止状态。

    调用ModifyInstanceAttribute接口,填写请求参数CpuOptions.TopologyType的取值来修改CPU拓扑结构。更多信息,请参见ModifyInstanceAttribute

请求参数CpuOptions.TopologyType的取值范围如下:

  • HT连续模式:ContinuousCoreToHTMapping

  • HT离散模式:DiscreteCoreToHTMapping