在我的 4 处理器服务器上,我已经有一段时间使用 Ubuntu 32 位虚拟机了。我给它一个处理器,但现在我需要更多功能。我在 Virtualbox 设置中添加了第二个,但虚拟化的 Ubuntu 仍然认为它只有一个处理器:
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
stepping : 11
cpu MHz : 2405.790
cache size : 6144 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc up pni ssse3 lahf_lm
bogomips : 4811.58
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
有没有办法让我的虚拟化 Ubuntu 机器能够感知第二个处理器?
答案1
Virtualbox 文档中有一节关于CPU 热插拔。这详细介绍了向 Linux 客户机添加另一个 CPU 的过程。
对于 Linux 客户机,适用以下规定:为了防止在 CPU 仍在使用时弹出,必须先将其从客户机内部弹出。Linux 客户机附加组件包含一个接收热移除事件并弹出 CPU 的服务。此外,在将 CPU 添加到 VM 后,Linux 不会自动使用它。如果安装了 Linux 客户机附加组件服务,它将负责处理此问题。如果没有,可以使用以下命令启动 CPU:
echo 1 > /sys/devices/system/cpu/cpu<id>/online
在已知限制页面列出了 32 位客户机的 SMP 功能的一些缺点。主要是性能问题:
在某些不包含虚拟 APIC 硬件优化支持的 Intel CPU 型号上,32 位客户机的性能较差。这主要影响 Windows 和 Solaris 客户机,但也可能影响某些 Linux 内核修订版。3.0.12 版已针对 32 位 Windows NT、2000、XP 和 2003 客户机部分解决了该问题。需要安装 3.0.12 或更高版本的客户机附加组件。
它并没有说多处理是不可能的。