src
- VirtIO on FreeBSD 10-CURRENT
FreeBSD 10-CURRENTにVirtIO関連の実装とカーネルモジュールが追加されました。仮想環境で動作するFreeBSDの性能を引き上げる重要な実装となります。
VirtIOは準仮想化の仕様です。従来の仮想環境ではディスクコントローラやEthernetデバイスを仮想化環境がエミュレートして提供していますが、
この方法は効率が悪いところがあります。VirtIOはゲスト-ホスト間 (仮想マシン―ハイパーバイザ間) で効率の良いインターフェースを規定するもので、 より効率の良いEthernetデバイスやブロックデバイス、 メモリ管理の実現を目指すものです。 sys/
dec/ virtio、 sys/ dev/ vte、 sys/ modules/ virtioに実装がまとまっています。 FreeBSD 10-CURRENTに導入されたVirtIO実装 # cd /usr/
src # find . | grep -E '(virtio)|(if_ vt)' ./ share/ man/ man4/ virtio. 4 ./ share/ man/ man4/ virtio_ blk. 4 ./ share/ man/ man4/ virtio_ balloon. 4 ./ sys/ dev/ virtio ./ sys/ dev/ virtio/ balloon ./ sys/ dev/ virtio/ balloon/ virtio_ balloon. c ./ sys/ dev/ virtio/ balloon/ virtio_ balloon. h ./ sys/ dev/ virtio/ block ./ sys/ dev/ virtio/ block/ virtio_ blk. c ./ sys/ dev/ virtio/ block/ virtio_ blk. h ./ sys/ dev/ virtio/ network ./ sys/ dev/ virtio/ network/ if_ vtnet. c ./ sys/ dev/ virtio/ network/ if_ vtnetvar. h ./ sys/ dev/ virtio/ network/ virtio_ net. h ./ sys/ dev/ virtio/ pci ./ sys/ dev/ virtio/ pci/ virtio_ pci. c ./ sys/ dev/ virtio/ pci/ virtio_ pci. h ./ sys/ dev/ virtio/ virtio. c ./ sys/ dev/ virtio/ virtio. h ./ sys/ dev/ virtio/ virtio_ bus_ if. m ./ sys/ dev/ virtio/ virtio_ if. m ./ sys/ dev/ virtio/ virtio_ ring. h ./ sys/ dev/ virtio/ virtqueue. c ./ sys/ dev/ virtio/ virtqueue. h ./ sys/ dev/ vte/ if_ vte. c ./ sys/ dev/ vte/ if_ vtereg. h ./ sys/ dev/ vte/ if_ vtevar. h ./ sys/ modules/ virtio ./ sys/ modules/ virtio/ Makefile ./ sys/ modules/ virtio/ balloon ./ sys/ modules/ virtio/ balloon/ Makefile ./ sys/ modules/ virtio/ block ./ sys/ modules/ virtio/ block/ Makefile ./ sys/ modules/ virtio/ network ./ sys/ modules/ virtio/ network/ Makefile ./ sys/ modules/ virtio/ pci ./ sys/ modules/ virtio/ pci/ Makefile ./ sys/ modules/ virtio/ virtio ./ sys/ modules/ virtio/ virtio/ Makefile # 最新の10-CURRENTでは/boot/
kernel/に次のカーネルモジュールが生成されることを確認できます。 新しく導入されたVirtIO関連のカーネルモジュール # cd /boot/
kernel/ # ls | grep -E '(virtio)|(if_ vt)' if_ vte. ko if_ vte. ko. symbols if_ vtnet. ko if_ vtnet. ko. symbols virtio. ko virtio. ko. symbols virtio_ balloon. ko virtio_ balloon. ko. symbols virtio_ blk. ko virtio_ blk. ko. symbols virtio_ pci. ko virtio_ pci. ko. symbols # VirtIOに対応した仮想環境に、
VirtIOに対応したOSをインストールすることでこの機能を活用できます。たとえばKVM/ QEMUにFreeBSD 10-CURRENTをゲストOSとしてインストール、 VirtualBoxにFreeBSD 10-CURRENTをゲストOSとしてインストールする場合など、 VirtIOによる性能の向上を確認できます。ケースによっては大幅な性能の向上となります。