随着新的 Xeon CPU 支持超线程,在 Hyper-V 主机上使用(或不使用)超线程的当前明智之举是什么?
我最初认为在虚拟主机环境中启用它可能会造成不利影响,因为“额外”的 CPU 不是真正的核心。但是,我也读过(未经证实的)评论,内容是 MS 做了一些艰苦的工作,让 Hyper-V 在超线程环境中运行良好。
有人有这方面的可靠信息或经验吗?谢谢!
答案1
Virtual Server 2005 中的超线程技术的一个老问题是,无需过多技术性说明,CPU 缓存被污染了,也就是说,几乎没有缓存任何内容,因为每个线程上发生的事情的上下文是不相关的,这导致它们争夺片上缓存。
较新的芯片具有更大、更智能的缓存,因此这不是什么大问题。
开启还是关闭才是最理想的?这实际上取决于工作量。如果两个线程恰好运行同一个 VM 和同一个任务,那么开启几乎肯定会带来很大的优势。如果它们使用大量随机 RAM I/O(例如几个不同的 VM)执行不相关的事情,则会导致每个线程只能使用一半的芯片缓存 - 理论上可能会更慢 - 但实际上很少会这样。
但是,如果您使用的是老一代芯片,您可能需要检查芯片缓存大小:在虚拟化中,缓存越大越好。RAM 确实比 CPU 慢得多 - 但不像磁盘驱动器那么糟糕。
注意:你所读到的“关闭”信息是在使用超线程技术的单核芯片上发现的
答案2
根据 Windows IT Pro 的说法,您希望将其保留在:
- John Savill,WindowsITPro.com,2009-03-08,问:超线程会影响 Hyper-V 吗?(存档这里。
答:新款四核 Intel Core i7 处理器支持超线程技术,将每个处理器核心分成两个虚拟核心,以(潜在地)提高性能。
Hyper-V 和超线程的问题是,您会为每个虚拟机 (VM) 分配多个处理器核心。想象一下,您从 Hyper-V 管理控制台为两个客户 VM 各分配一个处理器,并认为每个 VM 都将使用一个单独的核心。如果虚拟机管理程序将每个 VM 分配给同一个物理核心,每个 VM 都获得一个虚拟核心,会怎么样?您可能会得到糟糕的性能,并且三个物理核心没有做太多事情,而您希望每个 VM 都有自己的物理核心。
幸运的是,事实并非如此。微软在超线程和 Hyper-V 方面做了很多工作。本质上,虽然超线程有时会提高性能,但它永远不会损害性能,因此应该启用超线程。
答案3
了解超线程的程序能够区分物理核心和逻辑(虚拟)核心,并相应地分配资源。
超线程允许同时存储两个进程的状态,而不是每次只存储一个状态,从而降低了上下文切换的成本。上下文切换通常被认为非常昂贵,因为您必须将进程的整个状态加载到 CPU 中。这意味着,如果您正在运行一个 CPU 密集型进程,超线程 CPU 可以在该进程和其他进程之间频繁切换,而不会对性能造成太大影响。
运行虚拟服务器的优势在于,您可以创建一个大型资源池,并根据需要随时将其分配给不同的服务器。这包括重新分配 CPU 核心和平衡所有可用核心之间的负载。如果虚拟机管理程序不知道物理核心和逻辑核心之间的区别,那么您是对的——一些物理核心可能处于空闲状态,而其他物理核心的 CPU 利用率则保持在 100%,而它们的两个逻辑核心都在争夺 CPU 时间。但是,如果虚拟机管理程序能够区分物理核心和逻辑核心,它将尝试在物理 CPU 之间平衡 CPU 负载,然后再将多个进程分配给属于同一物理核心的两个逻辑核心。
答案4
我认为如果没有特殊原因就没有必要将其关闭。
例如,假设您有 10 个核心 CPU 和 20 个 vCPU。如果您的系统中将有 10 个同时执行的任务(线程),则这些线程应由物理核心以最短的时间完成任务。假设这些任务在 100 毫秒内完成。
如果您同时执行更多任务,比如说 20 个任务。如果您没有 HT,任务将在 200ms 内完成。而如果您有 HT,CPU 使用率阻止将得到优化,统计结果显示性能提升约 30%。因此,任务将在大约 150ms(+-15ms)内完成。
因此,如果您在需要时关闭 HT,CPU 将得到更高效的利用,您的系统将运行得更快。因此没有理由关闭它。
但另一个用例是虚拟机。如果您为 10 台虚拟机提供 2 个 vCPU,并且 CPU 是共享的而不是专用于每台机器。每个虚拟机的性能将有所不同。或者,如果虚拟机有一个 vCPU,您永远无法知道性能会根据 CPU 核心的繁忙程度而变化。如果您的虚拟化软件支持,那么如果在虚拟机上使用多线程软件,则不要将一个物理核心提供给没有 HT 的虚拟机,而是将一个核心与两个带有 HT 的 vCPU 一起提供,这将带来更好的性能。
因此,短期内,HT 不会使系统的 CPU 功率翻倍,而是对其进行优化,以便在您需要比 CPU 更多的内核的情况下从中获得约 30% 的功率。但如果您同时使用的核心数总是少于物理核心数,则打开或关闭 HT 不会对您的系统性能产生任何影响。