LoginSignup
4
7

More than 5 years have passed since last update.

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

Posted at

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の値と、バルーニングが発生するメモリ空き容量を算出できました。

参考


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

4
7
0

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
  3. You can use dark theme
What you can do with signing up
4
7