仮想マシンの性能は、単に vCPU 数やメモリ容量を増やせば改善するものではありません。CPU スケジューリング、NUMA、HugePages、ストレージ I/O、仮想 NIC、kernel bypass、SR-IOV、DPDK など、複数のレイヤが重なって性能特性を作ります。
このページは、VM パフォーマンスを体系的に見るためのハブ記事です。各記事では、仮想化基盤で性能問題が起きる場所を分解し、どの最適化がどのレイヤに効くのかを整理します。
VM パフォーマンスを見る前提
VM の性能設計では、最初にボトルネックの場所を分ける必要があります。CPU、メモリ、ストレージ、ネットワークを同じ粒度で見てしまうと、対策が混ざります。
- CPU はスケジューリング、CPU ピニング、オーバーコミット、NUMA 配置を見る
- メモリは HugePages、TLB、NUMA ローカリティ、メモリ予約を見る
- ストレージは virtio、raw / qcow2、キャッシュ、I/O パスを見る
- ネットワークは virtio-net、vhost、SR-IOV、DPDK、割り込み、コピー回数を見る
- 高速化は便利な機能を足すことではなく、どのレイヤを迂回するかを決めること
シリーズ構成
性能最適化の読み方
CPU / NUMA / メモリはセットで見る
CPU ピニングだけを見ても、NUMA 配置や HugePages が崩れていれば、期待した性能にはなりません。VM の CPU とメモリは、物理ホスト上のソケット、NUMA ノード、メモリ配置と結びつけて考える必要があります。
I/O は経路を短くするほど制約も増える
virtio、vhost、SR-IOV、DPDK は、いずれも I/O 経路を短くしたり、カーネル処理を迂回したりするための技術です。ただし、高速化するほど、ライブマイグレーション、可観測性、運用自由度、障害切り分けに制約が出やすくなります。
最適化はサービス定義を変える
CPU ピニング、HugePages、SR-IOV、DPDK のような設定は、単なるチューニングではなく、VM の運用前提を変えます。性能を上げる代わりに、配置制約、移動制約、復旧手順、監視観点も変わります。
関連する設計記事
- VyOS VPP 導入検討 – 実運用ルーターに VPP をそのまま適用する難しさ
- パブリッククラウド上で NFV 型 NF は成立するのか – アンダーレイ / オーバーレイ / 帯域制約で考える
- AWS EC2 は帯域確保サービスの基盤として使えるのか – baseline / burst / flow 制約で考える
書籍
作って理解する仮想化技術 ── ハイパーバイザを実装しながら仕組みを学ぶ
ハイパーバイザ、CPU 仮想化支援、メモリ仮想化、割り込み、仮想デバイスなど、VM の性能設計を低レイヤから理解したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
VM パフォーマンスシリーズ
- VM パフォーマンス Day1 – VM の性能ボトルネックとは何か
- VM パフォーマンス Day2 – CPU 最適化と NUMA / CPU ピニングの考え方
- VM パフォーマンス Day3 – メモリ最適化と HugePages / TLB の考え方
- VM パフォーマンス Day4 – ストレージ I/O 最適化と virtio / raw / qcow2 の考え方
- VM パフォーマンス Day5 – virtio-net の構造と仮想 NIC の性能特性
- VM パフォーマンス Day6 – vhost-net / vhost-user と kernel bypass の考え方
- VM パフォーマンス Day7 – SR-IOV / PCI Passthrough による仮想化の迂回
- VM パフォーマンス Day8 – DPDK による高速 dataplane と NFV の基本


