スキップしてメイン コンテンツに移動

vSphere Memory Tieringで物理RAM容量の限界突破

 

VCFをなんとか自宅で動かせないかとアレコレ考えていたところ、RAM容量のハードルを越えることができる可能性のある機能を見つけたので試してみることにしました。

色々調べてみると、物理RAM容量96GBのミニPCでHolodeckを動かすためにこの機能を使っているような強者も居るようなので、手元にあるミニPCで試してみます。


大まかな流れは以下の通りです。
    1.ESXiにてMomory Tieringの有効化
    2.RAMとNVMeメモリの比率変更
    3.NVMeメモリ使用量の確認


1.ESXiにてMomory Tieringの有効化

まずは、ESXiの管理コンソールにログインし、実行前のメモリ容量を確認しておきます。このサーバーには物理RAMを64GB積んでいるので、容量もその通り出ています。


対象のESXiにSSHでログインして以下のコマンドを実行し、MemoryTieringを有効化します。
esxcli system settings kernel set -s MemoryTiering -v TRUE


次に、以下のコマンドを実行して、特定のディスクをtierdeviceに変換します。
esxcli system tierdevice create -d /vmfs/devices/disks/[Disk Name]
例として以下のようなイメージです。


実行後、以下のコマンドでデバイスが表示されればOKです。
esxcli system tierdevice list


再起動後、ESXiのWeb管理コンソールログインしてメモリを確認すると、メモリの容量が増加(64GB→80GB)していることが確認できます。
デフォルトでは物理RAM容量の1/4のサイズがTiered Memoryとして追加されるようです。




2.RAMNVMeメモリの比率変更

デフォルトではRAMとNVMeメモリの比率は4:1になります。
つまり、64GBのRAMでMemory Tieringを有効化すると、デフォルトではNVMeのメモリは16GBにしかなりません。
この比率は設定で調整ができるため、今回は最大まで増やしてみます。
一応RAM容量を超えないようにすることが推奨されています。
が、ラボ環境なので気にせずMAXに設定してみます。笑

ESXiのWeb管理コンソールにログインし、「ホスト>管理>システム>詳細設定」に移動し、検索欄で「Mem.TierNvmePct」を検索します。
表示されたキーを選択して「オプションの編集」をクリックします。
【補足】最大値は「400」、つまりRAM容量の4倍が上限になります。


最大値である「400」を設定して「保存」をクリックします。


再起動後、再度ESXiホストのメモリ容量を確認すると、約320GBほどまで増えています。
RAM:NVMeの比率が1:4(64GB:256GB)になっています。



3.NVMeメモリ使用量の確認

物理RAM容量を超えるサイズのメモリを割り当てた仮想マシンを作成します。
物理RAMは64GBでTiered Memoryを含めると320GBほどなので、200GBのメモリを持つ仮想マシンを作成してみます。


仮想マシンを作成してOSをインストールし、OSにログインしただけの状態でESXiにSSHでログインし、以下のコマンドでESXiのメモリスタッツを取得してみます。まだtier1の方は使用されていません。
memstats -r vmtier-stats -u mb -s name:memSize:active:tier0Consumed:tier1Consumed


メモリ負荷ツール(TestLimit)を使用して意図的にメモリを大量に消費してみます。


その状態でもう一度ESXiのメモリスタッツを確認すると、Tier1メモリが少し消費されていることが分かります。
テストツールだからか、ツール内で指定した値そのままの数値は出ませんでしたが、物理RAM容量である64GBを少なくとも30GBほど超過してメモリ容量を消費していることが見て取れます。


いつかHoloDeckのデプロイにもチャレンジしてみたいと思います。(手元にある機器はメモリ以外のハードウェアもあまり潤沢ではないので動くかどうかは...笑)


コメント