LoginSignup
15
14

More than 5 years have passed since last update.

Vagrant: VMのCPUの数をホストマシンのCPUの数に合わせて変更したい

Last updated at Posted at 2015-05-13

チームで開発に取り組んでいると、メンバーによって開発に使っているマシンの性能がちがうことがあります。例えば、僕はMacBook Pro 15インチでCPUが4つ乗っているものを使っていますが、別のメンバーはデュアルコアのMacBook Proを使っていたりします。

Vagrantでは、VMのCPUの数をVagrantfileに設定することができますが、チームでCPUの数が違うマシンを使っていると、どうしてもCPUが少ないメンバに合わせて設定することになってしまいます。そうなると、CPUが多いマシンでは、せっかくの性能がVMで活かせなくなります。

VagrantfileでホストマシンのCPUの数に応じて、VMのCPUの数を自動的に変更する方法をご紹介します。Macではsysctl -n hw.ncpuで、LinuxではnprocでCPUの数を取得できます。これをVagrantfileに埋め込み、VMの設定に使うようにします。

以下のサンプルは、ホストマシンのCPUの数を取得し、VMのCPU数にそのまま設定するものです。VMのproviderにはVMware Fusionを使っていますが、Virtualbox用の設定を書くこともできます。また、取得したcpusを2で割ったり、ホスト用に1つCPUを残しておきたければ、cpus - 1 するなど、好きなように調整することもできます。

Vagrantfile
...

  host = RbConfig::CONFIG['host_os']

  case host
  when /darwin/ # mac
    cpus = `sysctl -n hw.ncpu`.to_i
  when /linux/
    cpus = `nproc`.to_i
  else
    cpus = 2
  end

  config.vm.provider "vmware_fusion" do |v|
    v.vmx["numvcpus"] = cpus
  end

...
15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14