Hyper-V 和超线程:开启还是关闭?

Cap*_*ard 25 hyper-v hyperthreading

随着新的 Xeon CPU 支持超线程,目前在 Hyper-V 主机上使用(或不使用)它的智慧是什么?

我最初的印象是在虚拟主机环境中打开它可能是有害的,因为“额外”的 CPU 不是真正的核心。但是,我还阅读了(未经证实的)关于 MS 所做的一些努力以使 Hyper-V 在超线程环境中运行良好的评论。

有没有人在这方面有任何可靠的信息或经验?干杯!

Sea*_*arp 21

根据 Windows IT Pro,您希望将其保留在:

答:新的四核英特尔酷睿 i7 处理器支持超线程,将每个处理器内核拆分为两个虚拟内核,以(可能)提高性能。

Hyper-V 和超线程的问题在于您为每个虚拟机 (VM) 分配了多个处理器内核。想象一下,您从 Hyper-V 管理控制台将一个处理器分配给两个来宾 VM,并认为每个都将使用一个单独的内核。如果虚拟机管理程序将每个 VM 分配给相同的物理核心,并且每个都获得一个虚拟核心,那会怎样?您可能会获得糟糕的性能,并且三个物理内核的作用不大,您希望每个 VM 都有自己的物理内核。

幸运的是,情况并非如此。Microsoft 围绕超线程和 Hyper-V 做了大量工作。本质上,虽然超线程有时会提高性能,但它永远不会损害性能,因此应该启用超线程。


小智 7

Virtual Server 2005 中超线程的老问题,没有过多的技术性,是 CPU 缓存被毒害,即它几乎没有缓存,因为每个线程上发生的事情的上下文是不相关的 - 导致它们竞争片上缓存。

较新的芯片具有更大、更智能的缓存,因此这不是什么问题。

开或关是理想的吗?这真的取决于工作量。如果两个线程碰巧运行相同的 VM 和相同的任务,那么几乎肯定会是一个很大的优势。如果他们用大量随机 RAM I/O(例如几个不同的 VM)做不相关的事情,它会导致每个芯片的缓存只有一半可用 - 理论上可能会更慢 - 实际上它很少了。

如果你有老一代芯片,你可能想检查芯片缓存大小:在虚拟化中,更大的缓存你可以获得更好的。RAM 确实比 CPU 慢得多——只是没有磁盘驱动器那么糟糕。

注意:您正在阅读的内容是关于具有超线程的单核芯片的“关闭” - 例如,这是当天(2005/2006?)的官方答案 - http://www.VirtualServerFAQ .com/tiki-index.php?page=VirtualServerHostDualCore

史蒂夫拉迪奇 http://www.VirtualServerFAQ.com


rob*_*rob 6

知道超线程的程序能够区分物理内核和逻辑(虚拟)内核,并相应地分配资源。

超线程允许在任何给定时间存储两个进程的状态,而不是一次只存储一个状态,从而降低了上下文切换的成本。上下文切换通常被认为是非常昂贵的,因为您必须将进程的整个状态加载到 CPU 中。这意味着,如果您有一个 CPU 密集型进程在运行,超线程 CPU 可以频繁地在该进程和其他进程之间切换,而不会对性能造成太大影响。

运行虚拟服务器的优势在于您可以创建一个大型资源池,这些资源池可以根据需要动态分配给不同的服务器。这包括重新分配 CPU 内核和平衡所有可用内核之间的负载。如果虚拟机管理程序不知道物理内核和逻辑内核之间的区别,那么您是对的——一些物理内核可能处于空闲状态,而其他物理内核可能处于 100% CPU 利用率,而它们的两个逻辑内核都在争夺 CPU时间。但是,如果虚拟机管理程序能够分辨物理内核和逻辑内核之间的区别,它将尝试在将多个进程分配给属于同一物理内核的两个逻辑内核之前平衡物理 CPU 之间的 CPU 负载。