手当たり次第に書くんだ

飽きっぽいのは本能

VM パフォーマンス最適化 – NUMA / CPU / I/O / ネットワークの設計ハブ

仮想マシンの性能は、単に 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、割り込み、コピー回数を見る
  • 高速化は便利な機能を足すことではなく、どのレイヤを迂回するかを決めること

シリーズ構成

記事テーマ
Day1VM パフォーマンス Day1 – VM の性能ボトルネックとは何か
Day2VM パフォーマンス Day2 – CPU 最適化と NUMA / CPU ピニングの考え方
Day3VM パフォーマンス Day3 – メモリ最適化と HugePages / TLB の考え方
Day4VM パフォーマンス Day4 – ストレージ I/O 最適化と virtio / raw / qcow2 の考え方
Day5VM パフォーマンス Day5 – virtio-net の構造と仮想 NIC の性能特性
Day6VM パフォーマンス Day6 – vhost-net / vhost-user と kernel bypass の考え方
Day7VM パフォーマンス Day7 – SR-IOV / PCI Passthrough による仮想化の迂回
Day8VM パフォーマンス Day8 – DPDK による高速 dataplane と NFV の基本

性能最適化の読み方

CPU / NUMA / メモリはセットで見る

CPU ピニングだけを見ても、NUMA 配置や HugePages が崩れていれば、期待した性能にはなりません。VM の CPU とメモリは、物理ホスト上のソケット、NUMA ノード、メモリ配置と結びつけて考える必要があります。

I/O は経路を短くするほど制約も増える

virtio、vhost、SR-IOV、DPDK は、いずれも I/O 経路を短くしたり、カーネル処理を迂回したりするための技術です。ただし、高速化するほど、ライブマイグレーション、可観測性、運用自由度、障害切り分けに制約が出やすくなります。

最適化はサービス定義を変える

CPU ピニング、HugePages、SR-IOV、DPDK のような設定は、単なるチューニングではなく、VM の運用前提を変えます。性能を上げる代わりに、配置制約、移動制約、復旧手順、監視観点も変わります。

関連する設計記事

参考
書籍
参考書籍

作って理解する仮想化技術 ── ハイパーバイザを実装しながら仕組みを学ぶ

ハイパーバイザ、CPU 仮想化支援、メモリ仮想化、割り込み、仮想デバイスなど、VM の性能設計を低レイヤから理解したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

VM パフォーマンスシリーズ

VM パフォーマンス最適化 – NUMA / CPU / I/O / ネットワークの設計ハブ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る