effective hyper-v - 久しぶりエディション

53
テテテテテテテテ

Upload: kuninobu-sasaki

Post on 25-Jun-2015

1.515 views

Category:

Technology


8 download

DESCRIPTION

2012年12月1日の"System Center User Group Japan 第5回勉強会 (http://atnd.org/events/33503)"で使用した資料です。 Hyper-V 2012 におけるNUMAの扱いやCSV (Cluster Shared Volumes) の改良点を説明したものです。

TRANSCRIPT

Page 1: Effective Hyper-V - 久しぶりエディション

テスト用スライド

Page 2: Effective Hyper-V - 久しぶりエディション

Effective Hyper-V

久しぶりエディション2012 年 12 月 1 日

佐々木邦暢 (@ksasakims)日本マイクロソフト株式会社

Page 3: Effective Hyper-V - 久しぶりエディション

佐々木と申します(@ksasakims)

Page 4: Effective Hyper-V - 久しぶりエディション

Hyper-V と NUMA

Page 5: Effective Hyper-V - 久しぶりエディション

そもそも NUMA とは

Page 6: Effective Hyper-V - 久しぶりエディション

Non-UniformMemory Access

Page 7: Effective Hyper-V - 久しぶりエディション

SMP ( 対称型マルチ プロセッシング )

プロセッサ

コア コア

プロセッサ

コア コア

チップセット( メモリ コントローラー )

一つのメモリ コントローラが、全てのプロセッサとメモリを接続している。

どのプロセッサも、メモリ全体に同じ速度でアクセスできる。

プロセッサ数が少ないうちは、これで問題なかった。

Page 8: Effective Hyper-V - 久しぶりエディション

プロセッサが増えるとメモリへの経路がネックに

プロセッサ

コア コア

コア コア

プロセッサ

コア コア

コア コア

プロセッサ

コア コア

コア コア

プロセッサ

コア コア

コア コア

チップセット ( メモリ コントローラー )

みんなが通るから狭いよ!

Page 9: Effective Hyper-V - 久しぶりエディション

たくさんあるプロセスのそれぞれが、広大なメモリ空間の大部分をなめるようにアクセスすることは稀です。

よく使うデータが手の届く範囲にあれば、結構間に合うものです。「参照の局所性」というやつです。

しかし考えてみてほしい

Page 10: Effective Hyper-V - 久しぶりエディション

そんなわけで最近はこんな感じになってますNUMA ノード

プロセッサ

メモリ

コントロー

ラー

コア コア

コア コア

コア コア

NUMA ノード

プロセッサ

メモリ コントロー

ラーコア コア

コア コア

コア コア

プロセッサと、それに直結するメモリの組み合わせ (NUMA ノード ) の集合

Page 11: Effective Hyper-V - 久しぶりエディション

そんなわけで最近はこんな感じになってますNUMA ノード

プロセッサ

メモリ

コントロー

ラー

コア コア

コア コア

コア コア

NUMA ノード

プロセッサ

メモリ コントロー

ラーコア コア

コア コア

コア コア

ローカルメモリへのアクセスは速い!

ローカルよりは遅いが、他の NUMAノードのメモリにもアクセスできる。

Page 12: Effective Hyper-V - 久しぶりエディション

Logical to Physical Processor Map:**---------------------- Physical Processor 0 (Hyperthreaded)--**-------------------- Physical Processor 1 (Hyperthreaded)----**------------------ Physical Processor 2 (Hyperthreaded)------**---------------- Physical Processor 3 (Hyperthreaded)--------**-------------- Physical Processor 4 (Hyperthreaded)----------**------------ Physical Processor 5 (Hyperthreaded)------------**---------- Physical Processor 6 (Hyperthreaded)--------------**-------- Physical Processor 7 (Hyperthreaded)----------------**------ Physical Processor 8 (Hyperthreaded)------------------**---- Physical Processor 9 (Hyperthreaded)--------------------**-- Physical Processor 10 (Hyperthreaded)----------------------** Physical Processor 11 (Hyperthreaded)

Logical Processor to Socket Map:************------------ Socket 0------------************ Socket 1

Logical Processor to NUMA Node Map:************------------ NUMA Node 0------------************ NUMA Node 1Calculating Cross-NUMA Node Access Cost... Approximate Cross-NUMA Node Access Cost (relative to fastest): 00 0100: 1.0 1.301: 1.5 1.2

Page 13: Effective Hyper-V - 久しぶりエディション

Hyper-V と NUMA – 2008 R2 まで

ハイパーバイザは NUMA を認識

例えば VM 配置時に NUMA ノードを考慮。 できるだけ、 NUMA ノードをまたがない

ように VM のメモリを確保する。ON の場合

単一の NUMA ノード内でメモリを確保できなかった場合は、ノードをまたいでメモリを確保する。

メモリに空きがあれば、 NUMA ノードの大きさを超える「大きな VM 」も配置できることになる。

OFF の場合

NUMA ノードをまたぐメモリ割り当ては行わない。 「システム全体でみればメモリが空いているように

見えるが、 VM を起動できない」ことがあり得る。

1 ノード内で足りない場合は?

Hyper-V の全体設定項目「 NUMA ノードにまたがるメモリ割り当て」 ( 右図 ) の設定によって挙動が変わる。

Page 14: Effective Hyper-V - 久しぶりエディション

ノードをまたいでなにが悪い

Page 15: Effective Hyper-V - 久しぶりエディション

仮想マシン物理マシン

Windows Server 2008 R2 までの Hyper-V では

NUMA ノード 0

コアメモリ

NUMA ノード 1

コアメモリ

ハイパーバイザはNUMA を知っているが

仮想マシンは常に単一のNUMA ノードしか持たない

NUMA ノード 0

コアメモリ

コアメモリ

ゲスト OS 上では NUMA を

考慮した動きができない

リモート メモリもローカルであるように見えてしまう。

Windows や SQL Server のような

“ NUMA-aware” ソフトウェアがその能力を発揮できない。

VM作成

「 NUMA ノードをまたいだVM 配置はできるだけ避けるべき」

ということになる。

Page 16: Effective Hyper-V - 久しぶりエディション

仮想マシン

NUMA ノード 1

物理マシン

これが Windows Server 2012 になると

NUMA ノード 0

コアメモリ

NUMA ノード 1

コアメモリ

ハイパーバイザはNUMA を知っているし

仮想マシンにもホストのNUMA トポロジを写像

NUMA ノード 0

コアメモリ

コアメモリ

ゲスト OS 上でもNUMA を認識できる

VM作成

「 NUMA ノードまたぎ」を過度に避ける必要はありません。

それゆえ、デフォルトでON になっています。

Page 17: Effective Hyper-V - 久しぶりエディション

ゲストの NUMA トポロジはホストと別でもOK例えば NUMA ノードが一つだけ

のPC でクライアント Hyper-V

VP 数を 4 にして、 NUMA ノードあたりのプロセッサ数を ” 1” に設定すれば、

性能面での意味はありませんが、 NUMA 対応プログラムのテストに便利かも?

“Coreinfo v3.2”http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx

Page 18: Effective Hyper-V - 久しぶりエディション

こっちがゲスト4 NUMA ノード

こっちはホスト1 NUMA ノード

Page 19: Effective Hyper-V - 久しぶりエディション

[ 悲報 ] Dynamic Memory と NUMADynamic Memory を有効にした VM には、常に一つの NUMA ノードしかできませ

ん。

Dynamic Memory を無効化

VP 数を 4 に、ノードあたりの VP 数を 1 に設定

NUMA ノードが確かに 4 つある

Dynamic Memory を有効化

NUMA ノードが 1 つになってしまう!

Page 20: Effective Hyper-V - 久しぶりエディション

NUMA 関連 PowerShell コマンドレット

Set-VMMemory-MaximumAmountPerNumaNodeBytes

Set-VMProcessor-MaximumCountPerNumaNode

Set-VMProcessor-MaximumCountPerNumaSocket

Page 21: Effective Hyper-V - 久しぶりエディション

スマート ページング

Page 22: Effective Hyper-V - 久しぶりエディション

仮想マシン

メモリ空間

30 秒で復習する Dynamic Memory

使用中

空き

控えめなメモリで起動

仮想マシン

メモリ空間

使用中

空き

メモリ足りない!

仮想マシン

メモリ空間

メモリを追加(Hot-Add)

仮想マシン

メモリ空間

使用中

空き

余れば回収

最大 RAM

仮想マシンのメモリ容量を動的に追加・削除してメモリを無駄なく使う仕組み

スタートアップRAM

使用中

空き追加 回収

Page 23: Effective Hyper-V - 久しぶりエディション

一言で表すと「メモリが足りない時にディスクで補う」仕組みです。

で、スマートページングとは?

Page 24: Effective Hyper-V - 久しぶりエディション

それって「ホストページン

グ」じゃないの?

Page 25: Effective Hyper-V - 久しぶりエディション

ホストページングしないって言ってたじゃん

2 年前のスライドを引っ張り出してきました

KVM でも ESX でも、「最後の手段」としている。

Hyper-V では、ホストページングを避けるべく、 Dynamic Memory を設計したのではなかったか?

Page 26: Effective Hyper-V - 久しぶりエディション

「最後の手段」なので積極的には

利用しませんが

Page 27: Effective Hyper-V - 久しぶりエディション

2012 で追加された「最小 RAM 」の設定

2012 では GUI でも普通に設定可能以前は WMI を直接呼ばなければ設定

できなかった「最小 RAM 」(Reservation)

Page 28: Effective Hyper-V - 久しぶりエディション

最小 RAM 設定とスマートページングは密接に関連しています

Page 29: Effective Hyper-V - 久しぶりエディション

仮想マシン

メモリ空間

「最小 RAM 」設定の働き

使用中

空き

起動時にはある程度のメモリを必要とするが

仮想マシン

メモリ空間

使用中

空き

落ち着いてくるとメモリ使用量は減る

仮想マシン

メモリ空間

使用中

「最小 RAM 」を下限として縮退

空き

VDI 環境のように、 VM 数が多いが必ずしも全てが高負荷で動いているわけではない場合に有効

スタートアップRAM

最大 RAM

最小 RAM

この分節約できた!

Page 30: Effective Hyper-V - 久しぶりエディション

しかし、困ったことが一つ

仮想マシン 1

メモリ空間

使用中

空き

スタートアップRAM

最大 RAM

最小 RAM

仮想マシン 2

メモリ空間

使用中

空き

仮想マシン n

メモリ空間

使用中

空き

VM をどんどん起動 ホストのメモリが逼迫多くの VM が

「最小 RAM 」サイズに

超満員状態!

これ以上切り詰められないこの状態で、いずれかの VM を再起動したら?

仮想マシン 3

メモリ空間

使用中

空き

節約 節約 節約 節約

Page 31: Effective Hyper-V - 久しぶりエディション

「スタートアップ RAM 」を確保できない

起動失敗!

Page 32: Effective Hyper-V - 久しぶりエディション

つまり、本当の「最後の救済手段」です。 日常的に利用することを想定した機能ではありません。

仮想マシンの起動時にだけ働きます。 起動後 10 分程度しか働きません。 その後はどうなる?

スマートページングは「超満員状態」での

再起動を助けるための機能

起動直後のメモリはスマートページングに助けてもらう。

落ち着いて余裕ができたらまた最小RAM まで縮退し、スマートページングから卒業する。

Page 33: Effective Hyper-V - 久しぶりエディション

CSVCluster Shared Volume

Page 34: Effective Hyper-V - 久しぶりエディション

1 分で復習!

Page 35: Effective Hyper-V - 久しぶりエディション

前史時代のクラスタ (Windows Server 2008 まで )

SAN ストレージ (Fibre Channel or iSCSI)

Hyper-V1号機

Hyper-V2号機

Hyper-V3号機

Hyper-V4号機

LUN3I:

LUN4J:

LUN1G:

LUN2H:

予約 予約予約予約

VM2 VM3 VM4

VM1 VM2 VM3 VM4

VM1

Page 36: Effective Hyper-V - 久しぶりエディション

CSV でこうなった

SAN ストレージ (Fibre Channel or iSCSI)

Hyper-V1号機

Hyper-V2号機

Hyper-V3号機

Hyper-V4号機

LUN1

VM1 VM2 VM3 VM4

全ノードから同時かつ直接にアクセス可能

VM1 VM2 VM3 VM4

Page 37: Effective Hyper-V - 久しぶりエディション

ライブ マイグレーション

SAN ストレージ (Fibre Channel or iSCSI)

Hyper-V1号機

Hyper-V2号機

Hyper-V3号機

Hyper-V4号機

LUN1

VM1 VM2 VM3 VM4

全ノードから同時かつ直接にアクセス可能

VM2 VM3 VM4VM1

Page 38: Effective Hyper-V - 久しぶりエディション

「 Hyper-V 専用のちょっと特殊な機能」でした

デフォルトでは無効になっており、明示的に有効化する必要がありました。

かつ、 Hyper-V 専用であり、他の用途に使えませんでした。

ここをチェックしないと OK 押せない。

Page 39: Effective Hyper-V - 久しぶりエディション

2012 では WSFC の標準機能になりました

Page 40: Effective Hyper-V - 久しぶりエディション

かなりあちこち改良されています

Page 41: Effective Hyper-V - 久しぶりエディション

Windows Server 2008 R2 CSV の問題点例えばマウントポイント

Windows Server 2008 R2 の CSV は「 CSV であることがわかりづらい」のが欠点。 例えば、マウントポイントである C:\CluserStorage フォルダを見てみると、

普通のフォルダにしか見えませんが、実は特殊なリパースポイントなんです。

普通、ボリュームのマウントポイントは「ジャンクション」として見えるはず…

ディスクやボリュームに低レベルアクセスするツール等にとって CSV は曲者

Page 42: Effective Hyper-V - 久しぶりエディション

Windows Server 2012 CSV での改良より普通のマウントポイント 2012 では、 C:\CluserStorage フォルダの下に、ジャンクションが見えています。 これは、「通常のボリュームをマウントした」のと同じ状態。 “Volume1” などのマウントポイントの名前を変えることも普通にできます。

以前の CSV では通常の方法でマウントしていなかったので、名前も変えられませんでした。

Page 43: Effective Hyper-V - 久しぶりエディション

CSV プロキシ ファイルシステム - “CSVFS”

Windows Server 2012

Windows Server 2008 R2 Windows Server 2008 R2 の CSV は、普通の NTFS ボリュームにしか見えません。

Windows Server 2012 では、“ CSVFS” というファイルシステムが見えます。

ボリュームが CSV であることを、人間的にもプログラム的にも容易に判別できます。

Page 44: Effective Hyper-V - 久しぶりエディション

CSV とキャッシュCSV の「ダイレクト I/O 」 Windows Server 2008 R2 の CSV では、

「ダイレクト I/O 」の際にフィルタドライバがいろんなものをスキップしてディスクに直接アクセスしてしまいます。

そのため、せっかく Windows が持っているキャッシュマネージャの機能も生かされていませんでした。

今までのダイレクト I/O

この点も Windows Server 2012 で

改良されています

Page 45: Effective Hyper-V - 久しぶりエディション

CSV ブロック キャッシング – 2 種類

分散ライトスルーキャッシュ

Windows キャッシュマネージャの活用

こちらはバッファ無し I/O の場合に有効なリードオンリーキャッシュ。 バッファ無し I/O は Windows のキャッシュマネージャがキャッシュしてくれないので、

WSFC が自前でキャッシュ機能を持ちました。 ズバリ具体的には、読み取り専用の VHD から多くの差分ディスクを生成するよう、

VDI のような環境で非常に有効です。

通常のバッファリングされる I/O は、 NTFS と同様に Windows のキャッシュマネージャによってキャッシュされるようになりました。

Page 46: Effective Hyper-V - 久しぶりエディション

CSV と Active Directory

Active Directory への依存性を削減 これは CSV だけの話ではなく WSFC 全体の話ですが、ドメインコントローラーでの認証

を行わずとも、クラスターの形成やフェールオーバーができるようになっています。

そのため、” CLIUSR” というローカルユーザーが各ノードに作成されます。

なにせ「ドメインコントローラーも仮想化」される時代なので、 Hyper-V ホストは「ドメインコントローラーの存在しない世界」でコールドブートすることを考慮しているのです。

Page 47: Effective Hyper-V - 久しぶりエディション

余談・・・

Page 48: Effective Hyper-V - 久しぶりエディション

HPC on Windows AzureTOP500 にランクイン

Page 49: Effective Hyper-V - 久しぶりエディション

サマリーTOP500 にランクインしました

スパコンイベント “ SC12” で 2012 年 11 月版発表 ( 年 2 回発表 ) Windows Azure は 151.3 TFLOPS ( 効率 90.2%) で 165 位 ( 全 500 システ

ム中 )

HPC 用の新ハードウェアが登場します 16 コア (Xeon E5-2670), メモリ 128 GB TOP500 チャレンジは、 504 ノード , 8064 コアで実施 今後、 Windows Azure コンピュートサービスで提供予定

高速インターコネクトも用意します

サーバー間を Infiniband QDR (40 Gbps) で接続 仮想マシン上で RDMA over Infiniband を実現 ( 物理環境と遜色ない低遅延接

続 )

Page 50: Effective Hyper-V - 久しぶりエディション

最新の HPC Azure 環境システム構成 通常の Windows Azure コンピュートサービスと同様の仮想環境です。

ゲスト OS は最新の Windows Server 2012 です。 HPC Pack も最新の HPC Pack 2012 を利用しています。

(HPC Pack 2012 は現在ベータ版公開中、年内に正式公開予定 ) 計算ノードだけでなく、ヘッドノードや Active Directory のドメイン

コントローラーまで Windows Azure 上に配置した完全クラウド構成です。

新ハードウェアの供用予定 TOP500 チャレンジに使用した新ハードウェアは、 2 種類の VM として利用可能に

なる予定です① 8 コア , メモリ 60 GB② 16 コア , メモリ 120 GB

いずれも、 40 Gbps の QDR Infiniband を、 RDMA で利用できます。 ゲスト OS のカーネルや仮想環境のハイパーバイザをバイパスし、低遅延かつ

広帯域のノード間通信を実現します。

Page 51: Effective Hyper-V - 久しぶりエディション

関連情報 : Windows Azure と HPC

Windows Server 2012

各種情報へのリンクと、評価版のダウンロードhttp://technet.microsoft.com/ja-jp/windowsserver/hh534429.aspx

Windows Azure

機能紹介、開発者向け情報、無料評価版の申し込み等すべてここにありますhttp://www.windowsazure.com/ja-jp/

Windows Azure 管理ポータルサイトhttps://manage.windowsazure.com/

HPC Pack 2012 (現在ベータ版公開中 )

”Announcing the HPC Pack 2012 Beta Program“http://blogs.technet.com/b/windowshpc/archive/2012/09/06/announcing-the-hpc-pack-2012-beta-program.aspx

「 HPC Pack 2012 Beta を試すには?」http://blogs.technet.com/b/ksasaki/archive/2012/09/13/hpc-pack-2012-beta-microsoft-connect.aspx

Page 52: Effective Hyper-V - 久しぶりエディション

“Hypervisor Top-Level Functional Specification 2.0A: Windows Server 2008 R2”https://www.microsoft.com/en-us/download/details.aspx?id=18673

“VHDX Format Specification v1.00”http://www.microsoft.com/en-us/download/details.aspx?id=34750

“Application Compatibility and API Support for SMB 3.0, CSVFS, and ReFS”http://www.microsoft.com/en-us/download/details.aspx?id=29043

“Coreinfo v3.2”http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx

“DB サーバー統合における NUMA 対応 IA サーバーの性能評価 - IBM”http://www-06.ibm.com/ibm/jp/provision/no42/pdf/42_ppr3.pdf

“Hyper-V Performance Counters - Part five of many - "Hyper-VM VM Vid Numa Node"”http://blogs.msdn.com/b/tvoellm/archive/2008/09/29/hyper-v-performance-counters-part-five-of-many-hyper-vm-vm-vid-numa-node.aspx

関連情報

Page 53: Effective Hyper-V - 久しぶりエディション