第15章 仮想化

KVM プロセッサパフォーマンスの向上

仮想 CPU のタイムスライスシェアリング
仮想 CPU のタイムスライスシェアリングとは、Linux スケジューラレベルでパフォーマンスを強化する機能です。 稼働している仮想 CPU は、CPU の生成前にそのタイムスライスのリマインダーを別の仮想 CPU に手渡しできます。 この機能は、SMP システムに存在する特有のロックホルダープリエンプションの課題に対処し、仮想 CPU のパフォーマンスに影響を与える場合があります。この機能は、マルチプロセッサゲストで安定したパフォーマンスを実現します。また、Intel および AMD プロセッサ両方でサポートされており、Intel プロセッサでは Pause Loop Exiting (PLE)、AMD プロセッサでは Pause Filter と呼ばれます。
KVM ネットワークパフォーマンスの改善

KVM ネットワークパフォーマンスは、仮想化とクラウドベースの製品とソリューションにとって不可欠な要件です。Red Hat Enterprise Linux 6.2 は、多くのネットワークパフォーマンスの最適化を実現して、様々な設定における KVM ネットワークの準仮想化ドライバーパフォーマンスを強化します。

小さなメッセージの KVM パフォーマンスの向上
Red Hat Enterprise Linux 6.2 は、小さなメッセージの KVM パフォーマンスを改善して、小さなメッセージ (< 4K) を生成する様々なネットワークワークロードを満たすようになりました。
KVM ネットワークドライバーのワイヤスピード要件
ネットワークワークロードを実行する仮想化およびクラウド製品は、ワイヤスピードで実行する必要があります。Red Hat Enterprise Linux 6.1 までは、CPU 使用が低い 10 GB Ethernet NIC のワイヤスピードに達する唯一の方法は、PCI デバイスの割り当てを使用することでした (パススルー) 。これにより、メモリーのオーバーコミットやゲスト移行のような他の機能が制限されます。
macvtap/vhost ゼロコピー機能により、高いパフォーマンスが必要な場合にユーザーはそうした機能を使用することができます。この機能は VEPA ユースケースの Red Hat Enterprise Linux 6 ゲストのパフォーマンスを改善します。これはテクノロジープレビューとして導入されています。
KVM ネットワークドライバーに対する UDP チェックサムの最適化
チェックサムがホスト NIC により検証されている場合、UDP チェックサムの最適化により、ゲストはチェックサムを検証する必要性がなくなりました。この機能は、Red Hat Enterprise Linux 6.2 ゲストとホストで 10 GB Ethernet カードを使って外部とゲスト間の UDP をスピードアップさせます。UDP チェックサムの最適化は、virtio-net ドライバーで実装されます。
ホストがゲストより遅い場合の I/O パスパフォーマンスの向上
Red Hat Enterprise Linux 6.2 KVM ネットワークドライバーは、I/O パスパフォーマンスを改善しました。仮想マシンが終了、中断することが少なくなったため、迅速なデータ配信が実現しました。この改善により、パフォーマンスペナルティを発生させることなく、遅いホスト上で速いゲストを実行することも可能になりました。この機能拡張は、強化された virtio リング構造と、virtio および vhost-net におけるイベントインデックスサポートにより実現します。
KVM システム管理とユーザビリティの改善

SNMP によるシステム監視
この機能は、ベアメタルシステムを使ったデータセンターですでに使用されている安定した技術に KVM サポートを提供します。SNMP は監視基準で、計算効率が良いだけでなく非常によく知られている機能です。Red Hat Enterprise Linux 6.2 の SNMP によるシステム監視により、KVM ホストがイベントの SNMP トラップを送信できるため、ハイパバイザーイベントは標準 SNMP プロトコルによりユーザーと通信することができます。これは、新しいパッケージ libvirt-snmp の追加機能として提供されています。これはテクノロジープレビューとして導入されています。
ゲストデバッグ機能の強化
ゲスト OS がハングアップしてクラッシュダンプを開始する必要がある場合、データセンターを仮想化するユーザーは、デバッグする方法が必要となります。物理システムで頻繁に使用される方法が 2 つあります。
  • ゲストの NMI (マスク不可能割り込み) をトリガーする
  • ゲストに SysRq シーケンスを送る
こうした機能が KVM コンソールにより直接提供されている一方で、多くのユーザーはそうした 2 つの機能がない libvirt API および virsh により KVM を使用します。Red Hat Enterprise Linux 6.2 は KVM スタック全体でゲストデバッグ機能を改善したため、ユーザーはゲストの NMI をトリガーし、SysRq キーシーケンスをゲストに送ることができます。
仮想マシンのブートアクセスの改善
データセンターを仮想化するユーザーは、ゲストのブートプロセスを追跡して、BIOS 全体とカーネルブートメッセージを始めから表示する必要があります。この機能がないと、ブート前にユーザーは virsh console をインタラクティブに使用できません。この機能と併せて qemu-kvm への追加機能も提供するために、新しいパッケージ、sgabios が Red Hat Enterprise Linux 6.2 に追加されました。
ライブスナップショット (Live Snapshot)
Red Hat Enterprise Linux 6.2 では、テクノロジープレビューとして Live Snapshot 機能が導入されています。Live Snapshot 機能では、ハードディスク上に仮想マシンイメージの自動バックアップを提供して、外部の qcow2 イメージを使用して各ドライブごとの仮想ディスクのスナップショットを透過的に提供します。マルチディスクのライブスナップショットの作成は、ディスクがあるだけ多くのスナップショットを取る前に qemu を一時停止することにより、データの整合性を維持するのに役立ちます。そのため、マルチディスクのスナップショットは同じ時点からのデータを含むすべてのディスクを保有します。
ファイルシステムの一貫性に限りがあることを認識しておくことは重要です。ただし、スナップショットイメージを再利用すると、クラッシュコンシステントとなります。ユーザーは、ファイルシステムチェック (fsck) の実行、ジャーナルエントリの再生を行う必要があります。これは電源コードを抜いた後にブートすることに似ています。
マルチプロセッサ (NUMA) チューニングの改善
Red Hat Enterprise Linux 6.2 は libvirt API スタックのチューニングを改善しました。その結果、SPECvirt 評価の実施時に、特別な設定をすることなくパフォーマンスが向上します。Red Hat Enterprise Linux 6.2 では、仮想マシン作成時に NUMA ノードと関連するメモリーを設定できるようになりました。
USB 機能拡張
USB 2.0 のエミュレーションが qemu-kvm 用に実装されました。これは、QEMU に対してのみ直接利用可能です。Libvirt サポートが次回のリリースに向けて計画されています。
Remote Wakeup サポートが USB ホストコントローラーに追加されました。ゲスト OS との連携とともに、頻繁に発生する 1000hz ポーリングモードを停止して、デバイスをスリープモードにできます。どの仮想マシンにもある共通のデバイスの一つ — USB マウスエミュレーション (またはタブレット) を使って、パワーの活用と仮想マシンの CPU 消費を飛躍的に改善します。
Xen の改善

メモリーバルーニング
メモリーバルーニングは、Red Hat Enterprise Linux 6.2 準仮想化 Xen ゲストによりサポートされるようになりました。
ドメインメモリーの上限
x86_64 domU PV ゲストのメモリー上限は、128 GB、CONFIG_XEN_MAX_DOMAIN_MEMORY=128 に増加しました。
タイムアカウンティング
xen_sched_clock 実装 (失われていないナノ秒数を返す) は、xen_clocksource_read 実装により置換されました。
仮想化ドキュメント

Red Hat Enterprise Linux 仮想化ガイドは、個別に説明したガイドに分かれています。

spice-protocol

spice-protocol パッケージがバージョン 0.8.1 にアップグレードされ、以下の新機能が備わっています。

  • ボリューム変更のサポート
  • ゲストの非同期 I/O 書き込みと割り込みに対するサポート
  • ゲストの I/O 書き込み関連のサスペンド (S3) のサポート
  • ゲストバグを示す割り込みに対するサポート
Linux Containers

Linux Containers は、ワークロードを完全に仮想化する必要なく、ベアメタルシステム上でのアプリケーションランタイム含有に柔軟な方法を提供します。Red Hat Enterprise Linux 6.2 は、アプリケーションレベルのコンテナを提供して、cgroup と名前空間によるアプリケーションリソースの使用ポリシーを別々にして管理します。このリリースでコンテナのライフサイクルの基本的な管理を導入するために、libvirt API および virt-manager GUI によるコンテナの作成、編集、削除を可能にしました。Linux Containers はテクノロジープレビューです。

Red Hat Enterprise Virtualization Hypervisor RPM 複数インストール

rhev-hypervisor パッケージのサイドバイサイド (side-by-side) インストールを実行するには、/etc/yum.conf ファイルを編集して installonlypkgs オプションを追加することで、rhev-hypervisor が installonly パッケージになるよう yum を設定します。

[main]
...
installonlypkgs=rhev-hypervisor
このオプションには、installonly パッケージのデフォルト一覧も含める必要があります。それは、installonlypkgs オプションセクションの yum.conf の man ページ (man yum.conf 5) にあります。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。