search
LoginSignup
7

More than 5 years have passed since last update.

posted at

ESXiでのバルーニングはいつ起こるのか

VMware vSphereのハイパーバイザーESXiでは、オーバーコミット環境で仮想マシン間に適切にメモリを割当るため、透過的ページ共有(TPS: Tranceparency Page Sharing)、バルーニング、圧縮、スワップといったメモリ回収機能があります。これらはいつ動作するのでしょうか。以下の記事やドキュメントからまとめてみます。

メモリ回収機能のトリガー

ESXiには「minfree」と呼ばれる、最低限確保しておこうとする最小空きメモリ量があります。この量は搭載された物理メモリ量に応じて決まり、例えば物理メモリ96GBのホストであれば、デフォルトでは約1.56GBになります。

ESXiでは残りの空きメモリ量が、この最小空きメモリ量minfreeの何%あるかに応じてメモリ状態を呼び分け、透過的ページ共有、バルーニング、圧縮、スワップのどのメモリ回収機能までを使うかを決めています。

vSphere 5の場合、次のようになります。ただし透過的ページ共有は、下記の空きメモリ量を何度か下回った時に開始されます。

空きメモリ量 状態 使用するメモリ回収機能
minfreeの100%以下 High 透過的ページ共有
minfreeの64%以下 Soft 透過的ページ共有、バルーニング
minfreeの32%以下 Hard 透過的ページ共有、バルーニング、圧縮
minfreeの16%以下 Low 透過的ページ共有、バルーニング、圧縮、スワップ

vSphere 6.0の場合、次のようになります。

空きメモリ量 状態 使用するメモリ回収機能
minfreeの300%以下 High 透過的ページ共有の準備(Large Pageの分割)
minfreeの100%以下 Clear 透過的ページ共有
minfreeの64%以下 Soft 透過的ページ共有、バルーニング
minfreeの32%以下 Hard 透過的ページ共有、バルーニング、圧縮
minfreeの16%以下 Low 透過的ページ共有、バルーニング、圧縮、スワップ

例えば、物理メモリ96GBのホストであれば、minfreeはデフォルトでは約1.56GBなので、メモリ空き容量がその64%である約1GBを切るとバルーニングが発生する計算になります。

minfree値の確認

それでは、実際の(物理メモリ量が96GBではない)ESXiホストでは、minfreeはいくつで、バルーニングはいつ発生するのでしょうか。

実機での確認

もっとも簡単で確実な方法は、ESXi ShellまたはSSHでESXiホストに接続し、esxtopコマンドを実行し、mキーでメモリ画面に移動して、そこに表示されている実際の値を確認することです。以下がそうした例です。

 2:00:31am up 28 days 18:50, 881 worlds, 25 VMs, 53 vCPUs; MEM overcommit avg: 0.37, 0.37, 0.37
PMEM  /MB: 122869   total: 3683     vmk,112420 other, 6766 free
VMKMEM/MB: 122484 managed:  1839 minfree, 16605 rsvd, 105879 ursvd,  high state
NUMA  /MB: 61428 ( 5786), 61439 (  596)
PSHARE/MB:   13263  shared,    1836  common:   11427 saving
SWAP  /MB:       7    curr,       0 rclmtgt:                 0.00 r/s,   0.00 w/s
ZIP   /MB:       3  zipped,       2   saved
MEMCTL/MB:       0    curr,       0  target,   78312 max
 6988733  6988733 vCenterSV          11   74.08  119.71    0.07  989.62    1.1

     GID NAME               MEMSZ    GRANT     CNSM    SZTGT     TCHD   TCHD_W
  360483 VM-0001         16384.00 16305.27 10020.59 10117.69   983.04   163.84
 7030413 ESXiSV01        16384.00  4128.00  3182.19  3520.49   163.84     0.00
 8243506 vCenter Server  16384.00 16384.00 16007.18 16033.14  2785.28  1638.40

3行目に1839 minfreeとあります。1,839MBが最小空き容量minfreeの値ということになります。物理メモリ量120GBのこの環境では、例えばメモリ空き容量が1,839MBの64%に当たる約1,177MBを切ったあたりで、バルーニングが発生する計算になります。

物理メモリと設定値からの計算

実機で確認できない場合、物理メモリ量と設定値から計算することができます。ここで使用する設定値は、ESXiホストの詳細設定パラメータであるMemMinFreePct(最小空きメモリ%)です。デフォルト値は0ですが、この時は6%として扱われます。

MemMinFreePctが6%の時、MinFreeは物理メモリの最初の4GBに対して6%、次の8GB(つまり4~12GBの分)に対して4%、次の16GB (つまり12~28GBの分)に対して2%、残りに対して1%を足した分になります。ややこしいですね。できるだけ簡単に計算できるように整理すれば、次のようになります。

物理メモリ量 計算方法 計算結果例
~4GB 物理メモリ量×6% 物理メモリ4GBの時、約246MB
12GB (物理メモリ量-4GB)×4%+245.76MB 物理メモリ12GBの時、573MB
28GB (物理メモリ量-12GB)×2%+573.44MB 物理メモリ28GBの時、901MB
それ以上 (物理メモリ量-28GB)×1%+901.12MB 物理メモリ120GBの時、1,843MB

前述のesxtopで実際の値が1,839MBなのを確認した環境は、物理メモリ120GBです。最後の行の計算結果例が1,843MBで、だいたい一致しています。より正確には、esxtopで表示されているVMKMEM/MB: 122484の値、122,484MBから計算すると、1,843MBとなります。

これで机上計算からも、minfreeの値と、バルーニングが発生するメモリ空き容量を算出できました。

参考


本ページ内容は作成者の個人的なメモです。内容を保証するものではありません。また作成者の所属組織等とは一切かかわりがありません。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7