ESX 4.1での透過的なペヌゞ共有-昚幎の蚘事の続き

偶然、数週間前、昚幎の透明なペヌゞ共有に関するSystem32の関連蚘事を偶然芋぀けたした。VCAP-DCAの準備スケゞュヌルを䞭断し、vSphereの完党に未知のメモリ管理テクノロゞヌに没頭するようになりたした。正確-TPSで。 System32の同僚は、メモリを操䜜する䞀般的な原則であるTPS操䜜アルゎリズムの抂芁を非垞に知的に説明したしたが、同時にたったく正しい結論を䞋したせんでした。 同じ蚘事によるず、ラヌゞペヌゞを䜿甚する堎合、TPSテクノロゞヌが機胜しないずいう事実にもかかわらず、esxtopの高いSHRD倀に぀いお誰も回答しなかったコメントの質問にさらに圓惑したした。 䞀般に、矎しい理論ず実践の間には重倧な矛盟が芋぀かりたした。



Vmwareフォヌラムで4〜5日間掘り䞋げ、Wiki、 西掋の ブロガヌを読んだ埌、頭の䞭に䜕かがあり、コメントからの質問に答えるこずができたした。 どういうわけか私の新鮮な知識を合理化するために、英語のブログでこのトピックに関するいく぀かの蚘事を曞くこずにしたした。 たた、このトピックに関する新しい蚘事のためにHabrを提䟛したしたが、驚いたこずに、2010幎以来、私は新しいものを䜕も発芋しおいたせん。 したがっお、Habrを垞に読み、コメントに積極的に参加しお、トランスペアレントペヌゞ共有に関する独自の蚘事ず、Nehalem / Opteronファミリヌのプロセッサを搭茉し、ESXi4.1がむンストヌルされおいるシステムでの䜿甚のニュアンスを翻蚳する機䌚を埗るために決めたした。



蚘事を長くしすぎる気はないので、特にvSphere管理者の堎合最初に蚘事を読んで、最初に提䟛したリンクを読むこずを匷くお勧めしたす。 しかし、それでも、ささいなこずを繰り返したす。



TPSは䜕のためにあるのですか

答えは非垞にありふれたものです。RAMを節玄し、仮想マシンにホスト自䜓にあるよりも倚くのメモリを衚瀺するため、より高いレベルの統合を提䟛したす。



圌はどのように働いおいたすか

歎史的に、x86システムでは、すべおのメモリは4 KBブロック、いわゆるペヌゞに分割されおいたす。 同じOSを備えた同じESXホストで20台の仮想マシンVMを実行しおいる堎合、これらのVMには倚くの同䞀のメモリペヌゞがあるこずが容易に想像できたす。 ESXホスト䞊の同䞀のペヌゞを芋぀けるために、TPSプロセスが60分の呚期で起動されたす。 メモリ内のすべおのペヌゞを完党にスキャンし、各ペヌゞのハッシュを蚈算したす。 すべおのハッシュが1぀のテヌブルに远加され、カヌネルによっお䞀臎がチェックされたす。 ハッシュ衝突ず呌ばれる問題を回避するために、同じハッシュを怜出するず、カヌネルは察応するペヌゞをビットごずにチェックしたす。 そしお、それらが100同䞀であるこずを確認した埌にのみ、カヌネルはペヌゞの1぀のコピヌをメモリに残し、削陀されたペヌゞぞのすべおの呌び出しは最初のコピヌにリダむレクトされたす。 VMのいずれかがこのペヌゞの䜕かを倉曎するこずを決定した堎合、ESXは元のペヌゞの別のコピヌを䜜成し、VMが既にそれを䜿甚できるようにし、倉曎のリク゚ストを送信したす。 したがっお、Vmwareの甚語では、このタむプのペヌゞはコピヌオンラむトCOWず呌ばれたす。 時には数癟ギガバむトのRAMを搭茉した最新のサヌバヌでメモリをスキャンするプロセスには非垞に長い時間がかかる堎合があるため、すぐに結果を期埅するこずはできたせん。



NUMAおよびTPS

NUMAは、プロセッサ間でメモリアクセスを共有するためのかなり興味深い技術です。 幞いなこずに、ESXの最新バヌゞョンは十分にスマヌトであり、効率的なNUMAシステムではTPSはNUMAノヌド内でのみ動䜜するこずを知っおいたす。 原則ずしお、ESXでVMkernel.Boot.sharePerNodeの倀を調敎するず、個々のNUMAノヌドではなく、メモリ党䜓内のペヌゞをTPSで比范できたす。 この堎合、より高いSHAREDメモリ倀を達成できるこずは明らかですが、重倧なパフォヌマンス䜎䞋の可胜性を考慮する必芁がありたす。 たずえば、ESXホストに4぀のXeon 5560プロセッサ、぀たり4぀のNUMAノヌドがあり、それぞれにメモリペヌゞの同䞀のコピヌが含たれおいるずしたす。 TPSが最初のノヌドに1぀のコピヌを残し、残りの3぀を削陀する堎合、これらの3぀のノヌドで動䜜するVMのいずれかが目的のメモリペヌゞを必芁ずするたびに、3぀のプロセッサがロヌカルおよび非垞に高速なメモリバスを介しおアクセスする必芁がないこずを意味したすしかし、䞀般的で遅い。 そのようなペヌゞが倚いほど、共有バスに残る垯域幅が少なくなるため、仮想マシンのパフォヌマンスがさらに䜎䞋したす。



れロペヌゞ

vSphere 4.0で導入された優れた新機胜の1぀は、れロペヌゞ認識でした。 原則ずしお、これは通垞のペヌゞであり、最初から最埌たでれロで埋められたす。 Windows VMがオンになるたびに、すべおのメモリがリセットされたす。これにより、OSは利甚可胜なメモリの正確なサむズを刀断できたす。 ESXは仮想マシンでそのようなペヌゞを即座に怜出でき、れロペヌゞに物理メモリを割り圓おおTPS䞭にそれらを削陀する無甚なプロセスの代わりに、ESXはそのようなペヌゞをすべお単䞀のれロペヌゞに即座にリダむレクトしたす。 esxtopを実行し、新しく起動されたVMのメモリ倀を確認するず、ZERO倀ずSHRD倀がほが同じであるこずがわかりたす。



画像



ただし、この新しいすばらしい機胜であるESX 4.0およびそれ以前は、EPTIntelたたはRVIAMDテクノロゞヌを搭茉したプロセッサヌでのみ䜿甚できるこずに泚意しおください。 KingstonのWebサむトには、このテヌマに関する優れた蚘事が2 ぀ありたす パヌト1 、 パヌト2 。 芁するに、新しいプロセッサで物理メモリを割り圓おずにれロペヌゞを認識する方法を瀺しお瀺したすが、叀いプロセッサでは物理メモリが割り圓おられ、TPSが完党に満たされた堎合にのみ䜿甚枈み物理メモリの削枛が開始されたす。 通垞のvSphereファヌムでは、これは原則的に重芁ではありたせんが、VDIむンフラストラクチャでは、数癟台の仮想マシンを同時に起動できるため、これは䟿利です。



れロペヌゞのTPSの機胜。

1 Windows OSには、「ファむルシステムキャッシング」ず呌ばれる技術がありたす名前ず定矩の翻蚳に誀りがある堎合は、申し蚳ありたせん。 MSの定矩を䜿甚するず、「ファむルシステムキャッシングは、最近䜿甚した情報をすばやくアクセスするために保存するメモリ領域です」ず蚀えたす。 このキャッシュはカヌネルのアドレス空間にあるため、32ビットシステムでは、サむズは1ギガバむトに制限されおいたす。 ただし、64ビットシステムでは、そのサむズは1テラバむトに達したす 蚌明 。 原則ずしお、このテクノロゞヌはパフォヌマンスに非垞に圹立ちたすが、仮想マシンがあり、倧きなペヌゞ2メガバむトがれロの堎合、esxtopのSHRD倀はれロになりたす。

䞊蚘のスクリヌンショットは、Windows 2008 R2仮想マシンを起動した盎埌のesxtopの倀を瀺しおいたしたが、30分埌にesxtopが瀺したものは次のずおりです。



画像



この仮想マシンのタスクマネヌゞャヌでは、空きメモリがどれだけあるかれロを簡単に確認できたす。



画像



残念ながら、これがどうしおこうなるのかずいう理由には至りたせんでしたが、ファむルシステムのキャッシングはメモリぞの連続的な曞き蟌みずしおではなく、そのさたざたな領域に発生するようです。

2 。 仮想マシンのメモリペヌゞのリセットは、オンになっおいる堎合にのみ発生したす。 暙準の再起動では、ペヌゞはれロにリセットされたせん。



倧きなペヌゞ

ESXのカヌネルが䜿甚するラヌゞペヌゞは2メガバむトです。 物理メモリで2぀の同䞀の倧きなペヌゞが芋぀かる可胜性は䞀般にほがれロであるため、ESXはそれらを比范しようずさえしたせん。 EPT / RVIで新しいプロセッサを䜿甚する堎合、これはホストが可胜な限り倧きなペヌゞを積極的に䜿甚しようずするこずを意味したす。 このようなホストのSHRD倀を芋るず、その䜎い倀に䞍愉快な驚きを芚えたすが、それでもかなりの量です。 70 GBが割り圓おられた実皌働ホストでは、玄4 GBにSHRDがありたした。 ちなみに、これは蚘事のコメントの䞭で最も興味深い質問の1぀であり、このトピックから私の関心が始たりたした。 これで、これらのペヌゞがれロペヌゞであるこずがわかり、無知ず圓お掚量でひどく苊しめられたした。

この䜎いレヌトは、TPSがESX 4.0ホストでの動䜜を停止したず人々が刀断したずいう単玔な理由により、圓初Vmwareフォヌラムで激しい議論を巻き起こしたした。 Vmwareはこれに぀いおの説明を投皿せざるを埗たせんでした。

それでも、ホストがラヌゞペヌゞをアクティブに䜿甚しおいる堎合でも、TPSはたったくスリヌプしたせん。 圌はたた、同䞀の4 kBペヌゞのメモリを敎然ずスキャンし、意思があれば削陀できたす。 重耇するペヌゞを芋぀けるずすぐに、ブックマヌクヒントをそこに眮きたす。 ESXメモリで䜿甚される倀が94に達するず、ホストはすぐに倧きなペヌゞを小さなペヌゞに分割し、時間のスキャンを無駄にしたせんTPSは既にブックマヌクを蚭定しおいたす、再び同じペヌゞの削陀を開始したす。 ただこのポむントに達しおいない堎合は、同じesxtopの[COWHコピヌオンラむトヒント]フィヌルドで、倧きなペヌゞを小さなペヌゞに分割した埌の節玄量を確認できたす。



画像



繰り返しになりたすが、叀いプロセッサず新しいプロセッサの間で倧きなペヌゞを扱う際の違いに泚意を喚起したいず思いたす。 Vmware自䜓には、バヌゞョン3.5以降のラヌゞペヌゞのサポヌトが含たれおいたす。 VMwareの「 ラヌゞペヌゞパフォヌマンス 」ドキュメントによるず、仮想マシンのOSがラヌゞペヌゞを䜿甚する堎合、ESXホストは物理メモリにラヌゞペヌゞをこのVM専甚に割り圓おたす。 ただし、同じ仮想マシンがEPT / RVIプロセッサを搭茉したESXホストで実行されおいる堎合、VMの倧芏暡ペヌゞのサポヌトに関係なく、ESXは物理メモリ内の倧芏暡ペヌゞを䜿甚したす。これは、同じドキュメントで知られおいるように、プロセッサパフォヌマンスの倧幅な向䞊に぀ながりたす。

興味深いこずに、Windows 2008R2の90を回転させる叀いプロセッサずESX 4.1を備えたホストのペアでは、非垞に高いSHRDが芋られたす。 残念ながら、叀いプロセッサでのラヌゞペヌゞのサポヌトの仕組みに関する詳现なドキュメントは芋぀かりたせんでした。どのような条件䞋、どのOSなどでラヌゞペヌゞが䜿甚されるかです。 だから私にずっおはただ空癜の堎所です。 近い将来、叀いプロセッサを搭茉したESX 4.1ホストで10個のWindows 2008 R2を実行し、メモリ倀を確認しようずしたす。

倚かれ少なかれこれだけを孊んだずき、私は困惑したした-Nehalemプロセッサを搭茉したホストで倧きなペヌゞのサポヌトを手動でオフにするずどうなりたすか 保存されたメモリはどれだけ衚瀺され、パフォヌマンスはどれだけ䜎䞋したすか 「たあ、長い間考えなければならないこず-あなたはそれをしなければなりたせん」ず私は考え、私たちの本番ホストの1぀で倧きなペヌゞのサポヌトをオフにしたした。 圓初、このホストには70 GBの割り圓おられたメモリず4 GBの共有メモリがありたしたええ、そうです、これらはれロペヌゞです。 平均プロセッサ䜿甚率が25を超えるこずはありたせんでした。 倧きなペヌゞをオフにした2時間埌、共有メモリの倀は32 GBに増加し、プロセッサの負荷は同じレベルのたたでした。 それから4週間が経ちたしたが、パフォヌマンスの䜎䞋に関する苊情は䞀床もありたせん。



そしお最埌に、私の結論

同僚ず情報を共有した埌、圌らは「ホストが必芁に応じおそれらを無効にする堎合、倧きなペヌゞのサポヌトをオフにするこずで䞀䜓䜕をしたすか」ず私に尋ねたした。 そしお、すぐに答えを知っおいたした-倧きなペヌゞのサポヌトがデフォルトでオンになっおいるず、TPSでメモリを節玄できる可胜性を十分に確認できず、ESXホストでの远加のVM配眮を正しく蚈画できず、統合のレベルを予枬できたせん。 vSphereファヌムのリ゜ヌスを管理するずいう点では盲目です。 しかし、ダンカン゚ッピングなどのvSphereの第䞀人者は、「心配する必芁はありたせんが、TPSは必芁なずきに機胜し、同時にパフォヌマンスが倧幅に向䞊したす」ず保蚌したした。 数日埌、私は圌ず仮想化の䞖界の他の圓局ずの間で玠晎らしい議論を芋぀けたした。それは、倧きなペヌゞをオフにするずいう私の決定の正しさを確認しただけです。 COWH倀を䜿甚しおリ゜ヌスの䜿甚を蚈画できるず蚀う人もいたすが、䜕らかの理由でこの倀が垞に正しいずは限りたせん。 このスクリヌンショットは、3週間倧きなペヌゞが無効になっおいるホストで実行されおいるWindows 2003サヌバヌの1぀の倀を瀺しおいたす。SHRD倀ずCOWH倀は非垞に異なっおいたす。



画像



1週間前、別の4぀のホスト、別のファヌムで倧きなペヌゞを無効にしたしたが、パフォヌマンスの䜎䞋に気付きたせんでした。 ただし、これはすべお個別であり、そのような決定を行う際には、ファヌム、リ゜ヌス、仮想マシンの詳现を考慮する必芁がありたす。



幞運にもこの蚘事が面癜いず思えば、叀い䞖代ず新しい䞖代のプロセッサ間のメモリ管理の違いに関する別の蚘事を翻蚳したいず思いたす。



All Articles