超线程技术能够在很大程度上帮助系统管理员提升处理器性能表现,但是管理员还是应该注意使用这种技术的最终结果可能难以预测。
问题:使用超线程技术可能对系统造成哪些负面影响?
新手系统管理员最常犯的错误之一就是认为使用超线程技术与添加一个全新内核是一样的——但实际情况并非如此。超线程技术并不会为处理器内核增加任何额外计算资源,只是允许不同任务共享内核的现有计算资源而已。如果处理器使用率相对较低,拥有充足的空闲时间,那么这种方式能够大幅度提升系统的性能表现。新增加的线程通过运行额外任务能够有效利用内核空闲时间,这样处理器——以及整个系统——就能够在同样的时间段内完成更多的任务。
但是超线程技术并非总是能够起到帮助作用。比如,超线程技术的成功需要依赖于合适的调度系统,只有Windows Server 2016这样的全新一代操作系统才具有这种特性。即便底层硬件处理器能够支持超线程,并且在系统BIOS中已经启用这种特性,但是像Windows Server 2013这样的操作系统并不能识别超线程。此外,超线程技术能够带来的性能提升会随着内核数量的增加而逐渐降低。比如,借助于超线程技术,单核系统最多能够实现30%的性能提升,而双核系统通常最多只能实现15%的性能提升。而四核——或者更多核心——的处理器需要在启用和关闭超线程的情况下分别进行测试,才能够最终确定性能表现。但是既然已经拥有了多个物理内核,那么同时使用多个内核比使用超线程技术要更加高效。
在hypervisor中启用CPU affinity特性也需要十分小心。如果启用超线程技术,hypervisor能够在系统的物理和逻辑核心之间提供良好的线程调度和自动负载均衡功能。启用CPU affinity特性将会对hypervisor的调度和负载均衡能力造成影响,导致系统不能提供最好的性能表现。CPU affinity特性还会对CPU针对特定虚拟机进行资源预留的能力造成影响。即便CPU affinity特性在当前服务器上能够发挥其作用,如果将虚拟机迁移到不同处理器数量的其他服务器上,也会对CPU affinity特性造成严重影响,因此最好让hypervisor或者操作系统自动进行配置。
最后,不要忽略负载自身的特性。使用多个逻辑处理器并不会对单线程负载带来任何帮助作用,因此超线程技术无法提升这些负载的性能表现。此外,需要占用大量计算资源以及需要和内存进行大量数据传输——也就是占用大量内存I/O——的负载也无法受益于超线程技术。因此需要在了解常驻内存负载的特性之后再决定是否使用超线程技术,或者将负载迁移到其他启用(未启用)超线程技术的系统上。
超线程技术允许不同任务共享处理器内核的空闲计算资源。使用这种方式,管理员无需购买或者添加/升级处理器,使用现有处理器就能够完成更多的任务。但是这种技术并非适用于任何硬件或者负载。在评估全新负载的性能和迁移特性过程中,考虑超线程技术所带来的影响,并且在必要的时候禁用超线程技术。
本文转自d1net(转载)