(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < DigitalOceanのVirtIOオプションはOnにするのが良いのか?

(ヽ'ω`) < そもそもVirtIOってなんなのよ?

下記のページによると、KVMやQEMUで採用されている、I/O周りのドライバの準仮想化ソフトらしい。

libvirt: Wiki: Virtio

VirtIOを使用しない環境(完全仮想化)では、ハイパーバイザーによってI/O周りのドライバが完全にエミュレーションされる。ハイパーバイザーが実際のハードウェアの挙動を再現する形になるので、それなりに処理コストが大きくなる。

VirtIOを使用すると、VM上ではNICやディスクコントローラが仮想化されたものであると認識された上で、専用のドライバを経由してハイパーバイザーで処理される。そのドライバはハイパーバイザーの動作に最適化されたものなので、完全仮想化環境に比べて、パフォーマンスが向上する。

ここでの完全・準仮想化について、あくまでI/O周りのドライバに限定した話で、OS自体の仮想化方式については関係ない。というより、完全仮想化されたOSで、I/Oドライバのみ準仮想化させパフォーマンスを向上させる、というお話。

(ヽ'ω`) < 基本的にはOnでOK

DigitalOceanの中の人も、基本的にはパフォーマンスが上がるからOnでいいよー、とのこと。

What is VirtIO? Do I need this option? | DigitalOcean

RedhatもKVMでVirtIOを有効化することでパフォーマンスが上がると解説している。(Windowsについてだが)

第10章 KVM 準仮想化 (virtio) ドライバー

KVM virtio ドライバーを使用すると、以下の Microsoft Windows バージョンがベアメタルベースのシステムと同様の動作をすることが予想されます。

ただ、実際のDiskベンチマークではスコアが落ちているケースもある。

VirtIO Testing Disk DigitalOcean Cloud Benchmarks - OpenBenchmarking.org

コンパイルオプションで-j $NUM_CPU_JOBSを渡しているので、コンパイル時のスレッド数はコア数+1になると考えると、マルチスレッド系の処理が少し弱くなるっぽい。

この現象がDigitalOcean特有のものなのか、KVM全般的なものなのかは不明だが、ディスクアクセスが多いアプリケーションを使用する場合は、念の為にテストを行ったほうが良いかと思われる。今KVM環境が手元にないので検証はいずれ(ヽ'ω`)

(ヽ'ω`) < VirtIOを有効化することによるデメリットは?

マルチスレッドプロセスのディスク処理が遅くなる可能性については上で述べた。

他には完全仮想化ではなくなるので、アプリケーションによっては動作の一部に影響が出るかもしれない。とはいえ、ドライバレベルでゴリゴリ書いてあるようなアプリケーションなんてそうそう無いだろうし、そんなものをVPSで動かすシチュエーションもあまり想像できないので、一般的な環境では"無い"。

…と言ってしまうと問題ありかもしれないのだが、DigitalOceanの中の人は言っちゃってるんですよね。

csalinas July 18, 2013 I have a question, if i am using VirtIO, ¿this has an impact on my billing? Thanks. kamaln7MOD July 18, 2013 csalinas, enabling VirtIO does not incur any extra charges. We recommend enabling it :]

elgs1980 August 14, 2013 So is there any penalty or side effect using VirtIO? I mean is there any reason to not select the VirtIO on droplet creation? Thanks. kamaln7MOD August 15, 2013 VirtIO doesn't have any side effects. You should enable it unless you have a valid reason not to. :]

contacto November 7, 2013 I would like to know that too, when should i NOT enable VirtIO? kamaln7MOD November 10, 2013 VirtIO doesn't have any side effects usually. You should enable it unless you have a valid reason not to (which is usually rare). :]

Lynx April 20, 2014 Can you provide any specific examples where VirtIO should be disabled? kamaln7MOD April 21, 2014 You might need to disable VirtIO if you're using a program that's not compatible with it. Usually you're fine with VirtIO enabled.

(ヽ'ω`) < VirtIO機能提供以前のDropletでVirtIOを有効にしたい

サポートチケットを発行せよとのこと

sabbir456 August 18, 2013 How to enable VirtIO in old droplets ?

kamaln7MOD August 21, 2013 @Sabbir: Please open up a support ticket so we can enable VirtIO on your old droplets.

(ヽ'ω`) < VirtIOが正しく有効化されているか確認したい

dfコマンドの出力で/dev/vdaがあればOKっぽい。

marana October 26, 2013 Is there any way to know if i have VirtIO activated in my droplet? Thanks!

kamaln7MOD October 29, 2013 @marana: Run the following command to check if VirtIO is enabled.
[[ df | grep '/dev/vda' | wc -l -ne 0 ]] && echo 'enabled'

さくらのVPSでも/dev/vdaあったから、KVM使ってるところはほとんど有効化推奨って感じなんですかね。