そもそもVirtIOってなんなのよ?下記のページによると、KVMやQEMUで採用されている、I/O周りのドライバの準仮想化ソフトらしい。VirtioVirtIOを使用しない環境(完全仮想化)では、ハイパーバイザーによってI/O周りのドライバが完全にエミュレーションされる。ハイパーバイザーが実際のハードウェアの挙動を再現する形になるので、それなりに処理コストが大きくなる。VirtIOを使用すると、VM上ではNICやディスクコントローラが仮想化されたものであると認識された上で、専用のドライバを経由してハイパーバイザーで処理される。そのドライバはハイパーバイザーの動作に最適化されたものなので、完全仮想化環境に比べて、パフォーマンスが向上する。ここでの完全・準仮想化について、あくまでI/O周りのドライバに限定した話で、OS自体の仮想化方式については関係ない。いうより、完全仮想化されたOSで、I/Oドライバのみ準仮想化させパフォーマンスを向上させる、というお話。基本的にはOnでOKDigitalOceanの中の人も、基本的にはパフォーマンスが上がるからOnでいいよー、とのこと。DigitalOceanRedhatもKVMでVirtIOを有効化することでパフォーマンスが上がると解説している。バージョンがベアメタルベースのシステムと同様の動作をすることが予想されます。実際のDiskベンチマークではスコアが落ちているケースもある。$NUM_CPU_JOBSを渡しているので、コンパイル時のスレッド数はコア数+1になると考えると、マルチスレッド系の処理が少し弱くなるっぽい。この現象がDigitalOcean特有のものなのか、KVM全般的なものなのかは不明だが、ディスクアクセスが多いアプリケーションを使用する場合は、念の為にテストを行ったほうが良いかと思われる。VirtIOを有効化することによるデメリットは?マルチスレッドプロセスのディスク処理が遅くなる可能性については上で述べた。他には完全仮想化ではなくなるので、アプリケーションによっては動作の一部に影響が出るかもしれない。いえ、ドライバレベルでゴリゴリ書いてあるようなアプリケーションなんてそうそう無いだろうし、そんなものをVPSで動かすシチュエーションもあまり想像できないので、一般的な環境では"無い"。...と言ってしまうと問題ありかもしれないのだが、DigitalOceanの中の人は言っちゃってるんですよね。VirtIOが正しく有効化されているか確認したいdfコマンドの出力で/dev/vdaがあればOKっぽい。'enabled'さくらのVPSでも/dev/vdaあったから、KVM使ってるところはほとんど有効化推奨って感じなんですかね。読者になるスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。