如何使用带有两个CPU的VirtualBox在Vagrant中创建VM?

如何使用带有两个CPU的VirtualBox在Vagrant中创建VM?,vagrant,Vagrant,在Windows 7上,64位尝试启动VM(Ubuntu 32位)。尽管在我的vagrant文件中添加了modify VM命令,但我还是无法让我的VM显示两个内核。我的流浪版本是1.2.2 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "precise32" config.vm.box_url = "http://files.vagrantup.co

在Windows 7上,64位尝试启动VM(Ubuntu 32位)。尽管在我的vagrant文件中添加了
modify VM
命令,但我还是无法让我的VM显示两个内核。我的流浪版本是1.2.2

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "precise32"
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
    vb.customize ["modifyvm", :id, "--cpus", "2"]   
  end  
end
使用这个vagrant文件,我发出
vagrant up
命令。然后我发出
vagrant ssh
,然后发出
lscpu
,这将产生:

Architecture:          i686
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Stepping:              9
CPU MHz:               2565.513
BogoMIPS:              5131.02
L1d cache:             32K
L1d cache:             32K
L2d cache:             6144K
我认为CPU应该显示2,所以我的VM现在只有一个CPU。当我运行
lscpu
时,如何让2个CPU显示?

vb.customize[“modifyvm”,:id,“--ioapic”,“on”]
添加到您的文件中的
config.vm.provider
块中

看看它提到的VirtualBox:

“注意:64位来宾操作系统需要启用I/O APIC 系统,尤其是Windows Vista;如果您想 在虚拟机中使用多个虚拟CPU。“


如果您使用Oracle Virtualbox运行vagrant,那么最常见的问题是Windows 7、8或10中的Hyper-V。这将限制您使用32位和一个cpu

运行或搜索“Windows功能”,然后选择“打开或关闭Windows功能”

在复选框中,确保Hyper-V处于关闭状态-如果Microsoft Hyper-V占用VT-x,则无法为Virtualbox启用VT-x

然后,您可以使用以下工具使您的Vagrantfile启动非常用户友好:

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2404"
    vb.cpus = "2"
  end
假设您想要运行两个内核,并且只需要略多于2G的内存

ps-别忘了添加端口转发。对于PHPStorm(xdebug、mysql和web),我使用:


您似乎没有提到您正在使用的提供商。从Vagrant 1.7开始,许多VM提供程序(如VirtualBox、HyperV)支持Vagrant文件中的以下配置:

config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 2
end

查看您在中使用的特定提供程序

我对此有些问题。当我尝试启用ioapic时,我的虚拟机显示一条错误消息…我在
CentOS 6.5
框中尝试了上述操作,但
lscpu
仍显示1个CPU。然后,我尝试了以下操作,但没有成功:
vb.customize[“modifyvm”,:id,“--cpuexecutioncap”,“50”]
@Rob3:从阅读错误消息开始。错误消息并没有说“它坏了”。它的目的是帮助你理解,到底出了什么问题。因此,最重要的错误消息是读取它。另外,当你请求帮助而不发布错误消息时,没有人会试图帮助你。@KevinMeredith:你的主机(物理)系统有多少个CPU?@TopherHunt-是的,这篇文章不错,如果在Windows上,还记得禁用Hyper-V!我在文章中添加了一条注释,动态查询主机的可用CPU和内存,并根据一个条件进行分配,即如果主机CPU=16,那么v.CPU=8?我想在两个不同的系统上分配一半的CPU和ram,一个是8个CPU和8gb ram,另一个是16个CPU和16gb ram。@radtek:都是ruby,所以至少你可以插入一段代码来检测CPU计数(例如)并将其减半。谢谢,我想会有一种更自然的检查方法。所有的vb.*选项都有文档记录。
config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 2
end