E-HPC集群的每个计算节点都是一台ECS实例,默认情况下,ECS实例均已开启CPU超线程。在部分HPC场景下,需要关闭CPU超线程以获得更好的性能表现。本文介绍如何关闭计算节点的CPU超线程。
背景信息
CPU是中央处理器,一个CPU可以包含若干个物理核,通过超线程HT(Hyper-Threading)技术可以将一个物理核变成两个逻辑处理核。ECS的超线程基于HT技术,允许在一个物理核上并发地运行两个线程(Thread),一个线程可以视为一个vCPU,vCPU是ECS实例的虚拟处理核。在部分HPC场景下,需要关闭计算节点的CPU超线程,使得计算节点获得更好的性能表现。
注意事项
各类型实例规格是否支持关闭超线程如下:
仅部分企业级x86计算规格的ECS实例支持关闭超线程,具体请参见规格限制。
弹性裸金属服务器不支持直接关闭超线程,但可以从软件层面关闭超线程。
超级计算集群SCC默认已关闭超线程。
企业级x86计算规格实例关闭超线程
创建集群后,如果需要扩容计算节点,可以配置扩容的计算节点是否开启超线程。
对于企业级x86计算规格的ECS实例,创建后不支持关闭超线程。
手动扩容
自动伸缩
弹性裸金属服务器关闭超线程
弹性裸金属服务器可以在实例创建后在软件层面(GuestOS内部)关闭超线程,包括设置nr_cpus和改变vCPU状态两种方式。GuestOS内部要关闭HT,实际上是要模拟一个物理核上对应一个逻辑核,所以将每个物理核上的对应一个逻辑核关闭,保留一个物理核对应一个逻辑核就能达到关闭超线程的效果,可以理解为offline一半的vCPU,且这些vCPU均一一分布在对应的物理核上。
对于裸金属服务器,实际需要在主板BIOS上关闭超线程,这涉及到硬件重启,链路较长且相对较慢,无法保证SLA。因此提供设置两种软件层面的方式,可以实现类似关闭超线程的效果。
方式 | 优点 | 缺点 |
设置nr_cpu |
|
|
改变vCPU状态 | 通过命令改变vCPU状态时无需重启实例。配置后可以使用 |
|
由于实际生产业务多样,阿里云无法真实模拟上述两种方式是否会对业务产生影响。在实际生产环境中使用两种软件层面的方式关闭超线程时,请您务必做好测试,确认是否对您的业务有所影响。