您可以查看并修改ECS實例的CPU拓撲結構來提高性能、提升并行性以及優化資源分配,以滿足您在虛擬化環境、多線程編程、高性能計算等不同場景下的需求。本文介紹如何通過OpenAPI查看和修改實例的CPU拓撲結構。
背景信息
什么是CPU 拓撲
CPU拓撲是多核處理器中物理核心與邏輯核心之間的連接方式。通常情況下,每個物理核心都包含一個或多個邏輯核心,而物理核心直接通過總線或互聯網絡連接,拓撲結構的不同將直接影響多核處理器的性能和能效。
目前阿里云部分實例規格族支持HT連續模式
(ContinuousCoreToHTMapping)和HT離散模式
(DiscreteCoreToHTMapping)兩種不同的拓撲結構。具體說明如下:
HT連續模式:邏輯核心連續分配給物理核心,有助于減少線程之間的通信和競爭。適用于需要較低的訪存延遲和更接近物理核心的計算任務,例如科學計算、數據分析、高性能計算等對內存訪問和核心計算敏感的應用。
HT離散模式:邏輯核心分散分配給物理核心,可以有助于減少多線程環境中的資源爭奪,并提供更好的性能隔離。適用于工作負載中分配給各線程的任務相對獨立,或者對單線程性能要求較高的場景。
本文以一臺8 vCPU的X86架構的實例規格為例,兩種CPU拓撲結構的說明如下所示。
CPU拓撲結構如下圖所示:
HT連續模式
邏輯核心與物理核心的關系如下所示:
HT 0
和HT 1
屬于一個核心CORE 0
。HT 2
和HT 3
屬于一個核心CORE 1
。HT 4
和HT 5
屬于一個核心CORE 2
。HT 6
和HT 7
屬于一個核心CORE 3
。
HT離散模式
邏輯核心與物理核心的關系如下所示:
HT 0
和HT 4
屬于一個核心CORE 0
。HT 1
和HT 5
屬于一個核心CORE 1
。HT 2
和HT 6
屬于一個核心CORE 2
。HT 3
和HT 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