jkp*_*jkp 14 windows-7 multi-core kvm-virtualization
全部
自从我将其中一个 VM 从 Windows 2008 Server 迁移到 Windows 7(终极版)以来,我的服务器出现了问题:尽管我为 VM 分配了四个核心,它甚至似乎看到了它们,但它似乎认为它有两个核心!
谁能告诉我这里发生了什么?我认为这可能是 KVM 和 Windows 7 之间存在一些不兼容,但由于它看到了虚拟处理器,我开始认为不是......有任何线索吗?
这是进程管理器的屏幕截图,在同一个盒子上只显示了两个内核:
小智 24
在 libvirt 0.8.3 上,如果您键入:
virsh capabilities | grep topology
Run Code Online (Sandbox Code Playgroud)
它将列出主机的拓扑:
<topology sockets='1' cores='4' threads='1'/>
Run Code Online (Sandbox Code Playgroud)
这些数字是指插槽、每个插槽的内核数和每个内核的线程数。将此行添加到 xml 文件中的 cpu 条目以允许 windows 使用所有 4 个内核,例如:
<vcpu>4</vcpu>
<cpu>
<topology sockets='1' cores='4' threads='1'/>
</cpu>
Run Code Online (Sandbox Code Playgroud)
xen*_*nny 17
我怀疑处理器是作为单独插槽中的单核处理器呈现的。Windows 7 Ultimate 最多支持 2 个插槽系统,因此它将使用 2 个处理器。
我不知道您是否可以将 KVM 配置为将处理器呈现为单个四核 CPU 或 2 个双核 CPU,这应该可以解决问题。
自 Ubuntu 15.04 起,virt-manager 完全支持拓扑设置。
从 virt-manager > CPU > 拓扑:
以下是根据 virt-manager 中的上述设置创建的。您不需要使用 virsh edit 输入这些内容。
<vcpu placement='static'>8</vcpu>
<cpu mode='host-model'>
<model fallback='allow'/>
<topology sockets='2' cores='2' threads='2'/>
</cpu>
Run Code Online (Sandbox Code Playgroud)
更新后,Windows 不再识别拓扑,并再次将虚拟 CPU 限制为 2 个插槽。
要解决此问题,请使用“virsh edit”隐藏 kvm 功能,并添加 hyperv 功能。完全关闭并重新启动后,Windows VM 将再次识别多个 CPU。
为什么在 Linux 的 KVM 下运行的 Windows 7 VM 没有使用所有虚拟处理器?
<features>
<acpi/>
<apic/>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
</features>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27343 次 |
最近记录: |