English中文

パフォーマンス

keelOS と KVM の比較

keelOS 開発版 89cdaaf(FreeBSD 14.5、bhyve)対 Proxmox VE 9.2(Linux 7.0.2、QEMU 11.0、KVM)· 2026 年 10 月 1 日計測

計算KVM
7-Zip ベンチマーク95%
sysbench CPU97%
sysbench メモリ100%
Redis のビルド(make -j4)96%
プロセス間の起床(perf sched pipe)78% チューニング中
ストレージKVM
4K ランダム読み込み、QD3254% チューニング中
4K ランダム書き込み、QD3235% チューニング中
4K ランダム読み込み、QD185% チューニング中
4K ランダム読み込み、QD1、p99 レイテンシ100%
1M シーケンシャル読み込み、QD877% チューニング中
1M シーケンシャル書き込み、QD895%
ネットワークKVM
VM → 別のマシン(1 GbE ポート)100%
別のマシン → VM(1 GbE ポート)100%
同じホストの VM → VM、1 ストリーム24% チューニング中
同じホストの VM ← VM、1 ストリーム24% チューニング中
同じホストの VM → VM、4 ストリーム25% チューニング中
同じホストの VM ← VM、4 ストリーム26% チューニング中

バー = keelOS、破線 = KVM(100%)。背景は KVM の 120% まで。

結果

テスト単位keelOSKVMkeelOS / KVM
7-Zip ベンチマークMIPS (高いほど良い)23,25124,53395%
sysbench CPUevents/s (高いほど良い)4,7734,90597%
sysbench メモリMiB/s (高いほど良い)5,2035,182100%
Redis のビルド(make -j4)s (低いほど良い)41.4239.9696%
プロセス間の起床(perf sched pipe)s (低いほど良い)4.5983.57978%
4K ランダム読み込み、QD32IOPS (高いほど良い)42,72479,36854%
4K ランダム書き込み、QD32IOPS (高いほど良い)12,57936,36635%
4K ランダム読み込み、QD1IOPS (高いほど良い)5,4616,45685%
4K ランダム読み込み、QD1、p99 レイテンシus (低いほど良い)264264100%
1M シーケンシャル読み込み、QD8MB/s (高いほど良い)1,5091,97077%
1M シーケンシャル書き込み、QD8MB/s (高いほど良い)1,8101,90695%
VM → 別のマシン(1 GbE ポート)Mbit/s (高いほど良い)941941100%
別のマシン → VM(1 GbE ポート)Mbit/s (高いほど良い)940941100%
同じホストの VM → VM、1 ストリームMbit/s (高いほど良い)7,57931,07024%
同じホストの VM ← VM、1 ストリームMbit/s (高いほど良い)7,47330,51924%
同じホストの VM → VM、4 ストリームMbit/s (高いほど良い)6,83726,99125%
同じホストの VM ← VM、4 ストリームMbit/s (高いほど良い)6,98327,01826%

計測環境

  • サーバー:Supermicro X11SPW、Xeon Gold 5122(4 コア 8 スレッド)、16 GB、Samsung PM1725a NVMe × 2。トップページの数値のサーバー(2 × Xeon Gold 6144)を使わなかった理由:比較にはディスクを消して Proxmox VE を入れる必要があり、2 台のうち消せるのはこちらだけです(もう 1 台は長時間テストを実行中)。
  • VM:Debian 13、4 vCPU、4 GiB、virtio-blk と virtio-net。同じディスクイメージ、同じ ZFS ボリューム(volblocksize 16K、圧縮なし)、同じ MAC アドレス。テストディスクは事前に全体を書き込み済み。
  • keelOS:開発版 89cdaaf(FreeBSD 14.5、bhyve)。Proxmox VE 9.2:カーネル 7.0、QEMU 11.0、ZFS 2.4;--cpu host、ディスクは cache=none、aio=io_uring、iothread;vhost-net。ZFS キャッシュの上限は同じ、他の VM は停止。
  • ストレージは両方とも NVMe 1 台(2 台目の保護情報を Linux が読めなかったため)。
  • 各テスト 3 回。表は中央値で、3 回分の値は生データにあります。

遅れている理由

  • 同じホスト上の VM 間。KVM はカーネル内でパケットを転送し(vhost-net)、VM 間で大きなセグメントを渡せます。keelOS の virtio ネットワークは bhyve のユーザー空間プロセスで処理されます。物理 1 GbE ポートはどちらも上限なので、差が出るのは同じホスト上の VM 間だけです。それでも keelOS は約 7.5 Gbit/s 出ており、1 GbE や 2.5 GbE のネットワークより速いので、NAS VM の前にルーター VM を置いても LAN のクライアントが頭打ちになることはありません。より速い経路ができるまでは、両方の VM に同じ NIC の SR-IOV 仮想機能を割り当てれば、NIC がハードウェアで交換します。
  • 多数のリクエストを並行するランダム I/O。1 件ずつなら KVM と同じ速さです(QD1 の p99 レイテンシが同じ)。QD32 では、bhyve の virtio ディスクが同時に処理するリクエストが QEMU の iothread + io_uring より少なくなります。
  • プロセスの起床。keelOS のハイパーバイザー上では、別の vCPU のプロセスを起こすコストが高く、perf sched pipe に現れ、ビルドと圧縮にも少し影響しています。

取り組み

virtio ディスクのマルチキューと非同期 I/O、virtio ネットワークの高速なデータ経路に取り組んでいます。リリースごとに同じサーバーで計測し直し、このページには最新の結果を載せます。