調(diào)整vCPU配置超線程以提升性能
當(dāng)您通過(guò)RunInstances購(gòu)買實(shí)例時(shí),部分實(shí)例規(guī)格支持自定義設(shè)置CPU選項(xiàng)(CPU選項(xiàng)由CPU物理核心數(shù)和每核線程數(shù)決定)。您可以根據(jù)應(yīng)用的性能需求靈活調(diào)整ECS實(shí)例的物理核心數(shù)和每核線程數(shù)(即調(diào)整ECS實(shí)例的vCPU),以獲得更好的性能表現(xiàn),并有效控制成本。例如,在內(nèi)存密集型業(yè)務(wù)場(chǎng)景中,通過(guò)關(guān)閉超線程減少vCPU數(shù)量,可以提高內(nèi)存配比,并降低軟件許可費(fèi)支出。
CPU與vCPU
CPU是中央處理器,一個(gè)CPU可以包含若干個(gè)物理核,通過(guò)超線程HT(Hyper-Threading)技術(shù)可以將一個(gè)物理核變成兩個(gè)邏輯處理核。vCPU(virtual CPU)是ECS實(shí)例的虛擬處理核。
阿里云ECS的超線程的實(shí)現(xiàn)基于x86平臺(tái)架構(gòu)的HT技術(shù),允許在一個(gè)物理核上并發(fā)地運(yùn)行兩個(gè)線程(Thread),一個(gè)線程可以視為一個(gè)vCPU。
下表從多個(gè)維度對(duì)比了ECS實(shí)例的CPU選項(xiàng)參數(shù)。
CPU選項(xiàng) | API參數(shù) | 作用 | 適用場(chǎng)景 | 適用的實(shí)例規(guī)格 |
CPU物理核心數(shù) | CpuOptions.Core | 決定啟用的CPU物理核心數(shù)。 | 減少啟用的CPU物理核心數(shù),提高內(nèi)存配比,收費(fèi)對(duì)象減少也可以降低軟件許可費(fèi)支出。 | 請(qǐng)參見(jiàn)規(guī)格限制。 |
每核線程數(shù) | CpuOptions.ThreadsPerCore | 決定CPU是否開(kāi)啟超線程。 vCPU數(shù)量=CPU物理核心數(shù)*每核線程數(shù)。 | 通常,ECS實(shí)例規(guī)格能夠應(yīng)對(duì)常見(jiàn)的工作負(fù)載。在以下場(chǎng)景中,您可以考慮關(guān)閉超線程:
| 請(qǐng)參見(jiàn)規(guī)格限制。 |
計(jì)費(fèi)說(shuō)明
自定義CPU選項(xiàng)不會(huì)產(chǎn)生額外費(fèi)用。
規(guī)格限制
支持自定義CPU選項(xiàng)的實(shí)例規(guī)格族如下:
單擊下方鏈接查看各實(shí)例規(guī)格CPU物理核心數(shù)(CpuOptions.Core)與每核線程數(shù)(CpuOptions.ThreadsPerCore)的默認(rèn)值和取值范圍,未列出的實(shí)例規(guī)格不支持自定義CPU選項(xiàng)。
自定義CPU選項(xiàng)
僅支持在創(chuàng)建ECS實(shí)例時(shí)自定義CPU選項(xiàng),成功創(chuàng)建實(shí)例后不允許修改。
一臺(tái)ECS實(shí)例如果已經(jīng)自定義了CPU選項(xiàng),進(jìn)行升降配操作后,這臺(tái)ECS實(shí)例的CPU選項(xiàng)會(huì)被置為默認(rèn)的CPU選項(xiàng)。
您可以通過(guò)RunInstances自定義ECS實(shí)例的CPU選項(xiàng)(CPU物理核心數(shù)和每核線程數(shù)),ECS實(shí)例的vCPU數(shù)量=CPU物理核心數(shù)*每核線程數(shù)。
CPU物理核心數(shù)
一臺(tái)ECS實(shí)例可提供的物理核心數(shù)由實(shí)例規(guī)格決定,您可以在取值范圍內(nèi)設(shè)置啟用的CPU物理核心數(shù)(CpuOptions.Core參數(shù)配置),但不支持自定義取值范圍外的數(shù)值。各實(shí)例規(guī)格的取值范圍,請(qǐng)參見(jiàn)規(guī)格限制。
以ecs.g6.2xlarge為例,CPU物理核心數(shù)取值范圍為2和4。因此,當(dāng)您通過(guò)RunInstances自定義ECS實(shí)例的CPU物理核心數(shù)時(shí),CpuOptions.Core參數(shù)值可以設(shè)置為2,即表示ecs.g6.2xlarge提供的物理核心數(shù)為2。
每核線程數(shù)
ECS實(shí)例的每核線程數(shù)由CpuOptions.ThreadsPerCore參數(shù)決定,您可以在取值范圍內(nèi)設(shè)置每核線程數(shù),但不支持自定義取值范圍外的數(shù)值。各實(shí)例規(guī)格的取值范圍,請(qǐng)參見(jiàn)規(guī)格限制。
CpuOptions.ThreadsPerCore參數(shù)值不為1,即開(kāi)啟超線程配置時(shí),每核線程數(shù)為您設(shè)置的參數(shù)值。
設(shè)置CPU線程數(shù)的阿里云CLI請(qǐng)求示例如下,如果您使用的是SDK,請(qǐng)更新至最新版本。
說(shuō)明ECS實(shí)例默認(rèn)開(kāi)啟超線程配置。
aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 2 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
該請(qǐng)求示例中,ecs.g6.xlarge提供的物理核心數(shù)為2、開(kāi)啟了超線程并且每核線程數(shù)為2,則該實(shí)例創(chuàng)建成功后,實(shí)例將有2*2=4個(gè)vCPU。
CpuOptions.ThreadsPerCore參數(shù)值為1,即關(guān)閉超線程配置時(shí),每核線程數(shù)為1。
關(guān)閉CPU超線程配置的阿里云CLI請(qǐng)求示例如下,如果您使用的是SDK,請(qǐng)更新至最新版本。
aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 1 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
該請(qǐng)求示例中,ecs.g6.xlarge提供的物理核心數(shù)為2,并且關(guān)閉了超線程,即1個(gè)物理核只能運(yùn)行1個(gè)線程,則該實(shí)例創(chuàng)建成功后,實(shí)例的vCPU數(shù)量等于物理核心數(shù),即2個(gè)vCPU。
查看CPU選項(xiàng)
您可以通過(guò)DescribeInstances查看ECS實(shí)例已經(jīng)設(shè)置的CPU選項(xiàng)。如果您使用的是SDK,請(qǐng)更新至最新版本。
例如,通過(guò)阿里云CLI查看CPU相關(guān)選項(xiàng)。請(qǐng)求示例:
aliyun ecs DescribeInstances --InstanceIds '["i-bp19rxmzeocge2z57***"]' --output cols=CpuOptions rows=Instances.Instance[]
返回示例:
CpuOptions
----------
map[CoreCount:1 Numa:ON ThreadsPerCore:2]
其中CoreCount:1
表示CPU物理核心數(shù)為1,ThreadsPerCore:2
表示CPU線程數(shù)為2。
相關(guān)文檔
ECS實(shí)例創(chuàng)建成功后,建議進(jìn)行系統(tǒng)穩(wěn)定性測(cè)試,以確保系統(tǒng)能夠正常運(yùn)行。您可以運(yùn)行一些負(fù)載測(cè)試或應(yīng)用場(chǎng)景測(cè)試,觀察系統(tǒng)的響應(yīng)和性能表現(xiàn)。
ECS實(shí)例創(chuàng)建成功后,您可以監(jiān)測(cè)系統(tǒng)的性能指標(biāo)和資源利用情況,并根據(jù)需要進(jìn)行優(yōu)化。更多信息,請(qǐng)參見(jiàn)查看實(shí)例監(jiān)控信息。
在虛擬化環(huán)境、多線程編程、高性能計(jì)算等不同場(chǎng)景下,您可以修改ECS實(shí)例的CPU拓?fù)浣Y(jié)構(gòu)(
CpuOptions.TopologyType
)來(lái)提高ECS實(shí)例性能、提升并行性以及優(yōu)化資源分配。