VirtualBox 4.3.8 + CentOS6.5 + Mac (Mavericks) でゲストの仮想CPUの数を増やすと SSHのシェル操作がやったら遅いという問題があります。シェルでキー入力する度につっかかる感じがあります。
VirtualBoxのドキュメントや Linuxカーネル周りでいろいろ調べてるけど、原因が分かりません ...
再現にあたって下記の Vagrantfile を使うとよいと思います
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "CentOS 6.5 x86_64" config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box" config.vm.provider :virtualbox do |vb| vb.gui = true vb.customize ["modifyvm", :id, "--cpus", 4] vb.customize ["modifyvm", :id, "--ioapic", "on"] vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"] end end
とりあえずのワークアラウンド
CPU の数に応じてネットワーク割り込みのCPU番号を /proc/irq/19/smp_affinity/ で変えると改善します。IRQ 19 は virtio-net ドライバです ( IRQが環境によって変わることあるのかな? )
仮想CPU 2個の場合
# CPU1 で IRQ19 の割り込みをうける echo 2 | sudo tee /proc/irq/19/smp_affinity
仮想CPU 3個の場合
# CPU2 で IRQ19 の割り込みをうける echo 4 | sudo tee /proc/irq/19/smp_affinity
仮想CPU 4個の場合
# CPU3 で IRQ19 の割り込みをうける echo 8 | sudo tee /proc/irq/19/smp_affinity
他に試したこと
- ググると、コア数増やしたら --ioapic on にしろってな回答あるけど、現行ではデフォルト on ぽいので有効でない
- VirtualBox はデフォルトで virtio-net ドライバを使うので、別のドライバに変えたりしてみたが改善した感じでもない
- カーネルのバージョン上げたら ( 3.13.6 ) 若干マシな気はする
- resolv.conf `options single-request-reopen` に書くやつは DNSの名前解決時なので、関係ない
いずれにせよ定量的な評価の仕方が分からないので「なんとなくもっさり」の感想レベルでしか判別してないです。調査方法がんばります ...
P.S
社内向けに書いたネタの転載なのでした