我的 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 Guest Additions 包含一項接收熱刪除事件並彈出 CPU 的服務。此外,將 CPU 新增至 VM 後,Linux 不會自動使用它。如果已安裝,Linux Guest Additions 服務將負責處理此問題。如果沒有,可以使用以下命令啟動 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 或更高版本的 Guest Additions。
它並不是說多重處理是不可能的。