Home > Blogs > Japan Cloud Infrastructure Blog > 作成者別アーカイブ: satokosaito

作成者別アーカイブ: satokosaito

VMwareテクニカルトレーナーよりワンポイントアドバイス~シェアと予約をおさえよう!~

こんにちは。VMware EducationのテクニカルトレーナーのSatokoです!!!
前回は、物理のCPUやメモリがどのように仮想レイヤと紐づいているか、お話させていただきました。その中で仮想環境では物理的なリソース量に対して、その物理量を超えた仮想マシンを載せることができること  (= 設定時におけるオーバーコミット状態 ) についても触れました。今回は、多くの仮想マシンを載せてしまったが、実際運用時ではどのようにリソース制御をすればよいか?の基本をお話します。

■物理リースを超えた仮想マシンのリソース総量

例えば、VMware ESXi ホスト ( ESXi ) 上に、Webサーバ、Appサーバ、DBサーバ、Fileサーバ等の仮想マシン(仮想マシン)を構成しています。

図1

 

図1 が示すように、
40GB(ホストの持つメモリリソース)  <  43GB(仮想マシンに設定されたメモリリソースの合計)
となり、ESXi ホストがもつ40GBメモリーリソース以上に仮想マシンのメモリリソース合計が設定されている状態です。この状態はどうかといういうと、設定されている値 (ここでは43GB )をすべて使用するとは限らず、必要な分だけ各仮想マシンに割り当てられていますので、物理のリソースを超えた設定自体がパフォーマンスに影響を与えるものではないことを、前回もお話しました。

続いてCPUリソースをみていきましょう

図2

図2

 

こちらもvCPU数が物理のコア数を超えていても、それぞれの仮想マシンが必要な時に必要なCPUリソースを配分されることで、パフォーマンスに影響なく複数のサービスの提供が可能です。そのため、設計時にそれぞれの仮想マシンのリソース消費のピークが重ならないように組み合わせを考慮することが重要になります。

図3

図3

図3のように、CPUリソースが競合した場合には、処理の遅延が発生することでパフォーマンスへの影響が懸念されます。
メモリリソースもCPUリソースもオーバコミットしていること自体パフォーマンスへの影響はないのですが、リソースを有効に使用する!という仮想基盤の特性上、このリソース競合とどう付き合っていくか?がとても大事になってきます。今回は、その仮想基盤の特性上欠かせない、リソース制御の「シェア」と「予約」の基本についてみていきます。

■CPU/メモリリソース制御における「シェア」を押さえよう

CPUのシェアの考え方

まず、CPUのシェアをみていきましょう。シェアはリソースが競合してしまったときに、設定した「シェア値」でリソース配分を決めることができます。

図4

図4

 

上記の図4で、CPUリソースの割り当てを具体的に見てみましょう。

物理CPU:3GHz×1
各仮想マシンvCPU:3GHz×1

1つの物理Coreを2つの仮想マシンvCPUで共有しているパターン(合計2vCPU)です。

リソースが競合した場合、シェアの値によって、リソースが割り当てされます。
デフォルトであれば、各vCPUは、1.5GHzのCPUリソースが均等にハイパーバイザによって割り当てられます。もちろん共有している物理CPUは1つなので、所有できる時間をシェアの値によって優先度を変えています。

例えばシェアの値を変えてみましょう。シェア値を大きくすることによって、特定の仮想マシンに対してより優先的にリソースを分配することが可能なのです。(図5)

図5

図5

メモリシェア編

同様に図6で、メモリシェアの割り当ても具体的に見てみましょう。

図6

図6

ESXi ホストの持つ 6GB の物理メモリを2つの仮想マシンで共有しているパターンです。
この例では、6GB の物理メモリリソースでは、各仮想マシンに設定された4GBが割り当てられるわけではなく、仮想マシンでのメモリ使用量合計が 6GB を超えた場合 (= 競合状態) にシェアの値が働きます。シェア値がデフォルトであれば、各仮想マシンは、3GBずつのメモリリソースが均等にハイパーバイザによって割り当てられます(左図)が、 シェア値を大きくすることで、優先的にリソースを分配することが可能です(右図)。

リソースの競合が起きたとき、デフォルトでは、均等にリソースは割り当てられますが、競合時にCPUメモリリソースを優先的に割り当てたいシステムは存在します。 競合発生時、それぞれのサーバが必要とするリソースが均等ではないのであれば、ここは、管理者が優先度に従い、割合を指定していくことで柔軟にリソースの割り当てを実施していきます。

 

■「予約」の基本 ~CPU編~

シェア値の設定によって、リソース競合時の優先度を定義できるのですが、シェアは、あくまでも割合の指定です。
例えば、Applicationのために十分なパフォーマンスを確約したいということであれば、具体的な数値で指定する「予約」の値を指定することで、より確実に指定したリソースを担保することも可能です。

図7

図7

CPUリソースの予約を指定した場合を見てみましょう。

1Coreを4つの仮想マシン(vCPU)で共有しているパターン(合計 4vCPU )です。
予約の値はデフォルト設定されていません。予約の値を設定することで、CPUリソースは、起動時や運用時のCPUリソースの割り当てを担保することができます。
CPUリソースは、ハイパーバイザによって割り当てられます。CPUリソースは、指定した予約の値のCPUリソースを使用していない時は、別の仮想マシンにCPUリソースが割り当てられ、より柔軟にCPUリソースは活用されます。

■「予約」の基本 ~メモリ編~

続いてメモリリソースの予約を見ていきましょう。

図8

図8

ESXi ホストの持つ物理メモリ 6GB を4つの仮想マシンで共有しているパターンです。

CPUリソースと同様に、デフォルトでは予約は設定されていません。A_VMの予約値を2GBと指定することで、2GB が起動時にハイパーバイザによって確保されます。A_VMが予約されたメモリリソース以上のメモリリソースが必要な場合は、残る共有リソースから割り当てられることになります。
予約は特定の仮想マシンがリソースを占有することになります。すなわち、仮想化のメリットであるリソースの共有を最大限に生かすのであれば、予約値を必要最低限にしておくのがコツです♪

 

■設定してみよう!

それでは各仮想マシンに対するシェアと予約の設定方法を見ていきましょう。各仮想マシンを右クリックして「リソース設定の編集」を開きますデフォルトの設定では、下記のように、シェアは「標準」、予約は「0」となっています。

図9

図9

CPUを例にシェアの値を指定してみましょう。仮想マシンに割り当てたシェアの値を、ESXi ホスト側からも確認することができます。この例の場合、CPUのシェアが4 (高): 2 (標準): 1 (低)になっていることが分かります。このように優先順位が指定されます。予約に関しても同じ画面で設定することができますので、設定自体はとても簡単ですね♪

 

図10

図10

今回は、リソースの制御方法である「シェア」と「予約」を見てきました。 安全に多くの仮想基盤を運用するには、このリソース管理の考え方が基本になってきます。ここでは、単体のESXi ホスト上でのリソース制御を紹介しましたが、クラスタ(複数のESXiホストをグループ化)のリソース制御では、リソースプールが利用できます。それはまた次の機会にお話したいと思います!

VMwareテクニカルトレーナーよりワンポイントアドバイス
第1回:VMware vSphereにおけるCPU・メモリの考え方編
第2回:シェアと予約をおさえよう!(本記事)

共同執筆 パートナーSE 中村朝之

VMwareテクニカルトレーナよりワンポイントアドバイス~VMware vSphereにおけるCPU・メモリの考え方編~

こんにちは!VMware EducationのテクニカルトレーナーのSatokoです!!
みなさん、「Tech Day」というイベントをご存知でしょうか?すでにVMware製品をお使い、または導入検討されているエンドユーザ様に無償で提供している大人気イベントです。(今年も2月に実施予定です) TechDayでは実際QAタイムを設けて、実際に今困っていることや今更聞けない基本的なこと等、機能や使い方に関して、多くのご質問をいただいています。その中で多いご質問が、CPU、メモリリソースに関してのご質問です。
今回は、この場をお借りして、vSphere環境におけるCPUやメモリの見え方や考え方を復習していきます。

§1.vSphereにおけるリソースの扱い方~CPU編~

まず物理CPUにおける用語 「ソケット」 「コア」 「スレッド」をみていきます。

図1

ソケットとは、コアをマザーボードに装着するための、穴の空いた板状の部品で、ピンを差し込んで固定して使用します。
コアは、実際に演算を行う部分です。昨今ではソケットに複数のコアを搭載しているタイプが多いです。スレッドは、一連の命令が順番に処理されていく流れ(最小の処理単位)のことです。スレッドは、「LCPU」とも呼ばれます。仮想マシンはこのLCPUをあたかも自分が認識している”CPU”として扱います。では、物理のCPUと仮想マシンで認識するCPU = vCPUとの紐付きを確認していきましょう。

 

 

図2

 

上記の図2 1ソケットに4コアあるCPUでは、仮想マシンで構成できるvCPUの数は最大4つとなります。仮想マシンに割当てるvCPUは物理の持つコア数を超えない範囲で割当て可能です。例えば、1ソケット4コアを搭載している物理サーバの場合、その上で動作する仮想マシンに割当てられるvCPUの上限は4つになります。その上限の中で、各仮想マシンにvCPUの割り当てが可能になります。上の例ですと、向かって左からVM1,2にvCPUが4、VM3にvCPUが2、VM3にvCPUが1割当られ、合計11個のvCPUが割当てられてます。
※ハイパースレッドが有効な場合は、ハイパースレッドがLCPUとなります。

図2のように物理ソケットx1 コアx4コア構成で、仮想マシンに割当てられているCPU数(vCPU)合計は11個となっております。これがよく言われる仮想基盤特有の”オーバコミットされている状態”であり、物理リソースを有効にしようする為の考え方になります。

 

§2.どのように物理CPUが仮想マシンに割り当てられているのか?

では、実際にこの“仮想が物理を超えている状態”で内部的にはどのように動作しているのかを見ていきます。基本動作は、空いているLCPUをハイパーバイザがスケジュールしながら、仮想マシンに割当てしていく、というシンプルなものです。

ただし、vCPUに割当てられている全てのvCPUを必ず同時に割当てることを前提にすると、必要なvCPU数分のLCPUが空いていない割当てられない!事態になってしまいますが、そこはご安心ください。ハイパーバイザレベルで仮想マシンのCPU処理を矛盾なく行うよう最適化されております。オーバコミットの比率が高ければ高いほど、スケジューリングの処理が重くなってしまうこともありますので、まずは必要最小限のvCPU数で仮想マシンを構成することをおススメしております。

 

§3.vSphereにおけるリソースの扱い方~メモリ編~

次に、メモリリソースの扱い方をみていきましょう。
例として、800MBのメモリが割当てられている仮想マシンにアクセスします。「仮想マシン」→「監視」→「リソース割り当て」でメモリ情報をみると 「ホストメモリ」 と 「ゲストメモリ」 が見えてきます。

図4:ホストメモリとゲストメモリ

 

この「ホストメモリ」「ゲストメモリ」ちょっとわかりにくいのですが、例えていうならば、どこから仮想マシンを眺めるか?という目線だとイメージしやすいかもしれません。

ホストメモリ:ハイパーバイザから仮想マシンを眺めている目線
ゲストメモリ:仮想マシンの中で眺めている目線

この仮想マシンをPoweronして「ホストメモリ」の状態をみてみましょう。

図5:仮想マシンPoweron/ホストメモリ

 

消費:443MB、オーバヘッド 25MBとあります。これはこの仮想マシンが物理メモリを443MB使用している状態を示しています。(物理メモリ800MB丸々使用してるわけではありません!)オーバヘッドとはこの仮想マシンを動かすためのリソースであり、ハイパーバイザから眺めているからこそ見える値です。このオーバヘッドの値は仮想マシンの構成や負荷によって変動するものです。

 

図6:仮想マシンPoweron/ゲストメモリ

 

一方上の図は「ゲストメモリ」(=仮想マシンの中から眺めている)になりますが、図中の”プライベート”の値が418MBとなっております。これはちょうど443MBからオーバヘッドの値を引いた値となっておりますね。すなわち、純粋に仮想マシンが使用しているメモリ量です。そのプライベートをつかさどる値も 「共有」 「バルーン済み」 「圧縮済み」 「スワップ済み」 等から構成されております。それぞれをざっくりですが、簡単に紹介します。

共有:メモリページを仮想マシン同士で共有する仕組み 透過的ページシェアリング(TPS)
※ 共有(TPS)はバージョンによってデフォルトの設定が異なります。http://kb.vmware.com/kb/2097593
バルーン済み/圧縮済み/スワップ済み:仮想マシン同士でメモリを有効に再利用する仕組み
有効なゲストメモリ:現在アクティブ状態のメモリ値

メモリリソース用語の詳細は、以下のKBを参照ください
http://kb.vmware.com/kb/2017642

§4.メモリをより有効に活用する

CPUと同様、メモリも物理メモリ以上に仮想マシンにメモリを割当てることが可能です。下の例は検証環境なので、とても小さいESXiホストですが、物理メモリ約5GBを搭載しています。ここに仮想マシン割当てメモリ合計約7Gの仮想マシンがPoweronしております。

図7:オーバコミット状態におけるPoweron

ESXiホストの持つ物理メモリリソース(5GB) < 仮想マシンに割当てられたメモリリソースの合計 (7GB)

仮想マシンに割当てられたリソース量が、物理メモリリソースの合計値が上回ったとしても、それ自体が問題になることはありません。もちろん、”盛りすぎ”はパフォーマンスに影響がでてしまいますのでその辺をどう加減していくかが仮想基盤を有効使用していく為の肝になります。

このように仮想環境では、仮想マシンへのリソース割当てを実際の物理リソース以上に割当てることが可能となり、物理環境と比較して、より物理リソースを有効に使用できる仕組みを備えています。そこが仮想環境のメリットでもありますが、逆にリソース管理が難しい側面も持ち合わせております。

次回はリソース管理の仕組みを少しお話させてもらいますね♪

エンドユーザ様向けTech Day 2015のお知らせ

Techday2015
今年は2/10東京、2/13に大阪で開催!

VMware TechDay は、ユーザー企業・団体の方向けに認定教育コースの講師が実施する 1日の技術セミナーです。VMware vSphere を使用されている方や、評価を開始されている方を対象に、vSphere を使いこなすことで、その価値を十分に享受いただくことを目的としております。本ブログの内容もお話させていただきますので、ぜひご参加くださいネ!
※ユーザー企業・団体の方に限定させていただきます。あらかじめご了承ください。

VMwareテクニカルトレーナーよりワンポイントアドバイス
第1回:VMware vSphereにおけるCPU・メモリの考え方編
第2回:シェアと予約を押さえよう!

共同執筆 パートナーSE 中村朝之