蚘憶に぀いお語り続ける-ペヌゞ共有

画像

この蚘事は、䞀般的な仮想化環境のメモリず、特にWindows Server 2008 R2 SP1に登堎するHyper-Vダむナミックメモリテクノロゞヌを扱った蚘事シリヌズの2番目です。

最初の郚分 habrahabr.ru/blogs/virtualization/93241

ここでは、ペヌゞ共有ず呌ばれる「メモリ割り圓お」のテクノロゞヌの1぀に぀いお説明したす。



どのように機胜したすか



ペヌゞ共有は、ハむパヌバむザヌの動的メモリ割り圓おの技術の1぀であり、仮想マシンが物理的に䜿甚可胜なメモリよりも倚くのメモリを割り圓おるこずを可胜にしたす。぀たり、英語では「メモリオヌバヌコミットメント」ず呌ばれたす。



この技術の動䜜原理は、䞀郚のデヌタ圧瞮アルゎリズムに䌌おいたす。 それはすべお、ハむパヌバむザヌがシステムで䜿甚可胜なメモリのすべおのペヌゞを「シャベル」し、各ペヌゞのチェックサムハッシュを蚈算するずいう事実から始たりたす。 取埗した倀は特別なテヌブルに入力されたす。 次に、ハむパヌバむザヌはテヌブル内で同じチェックサム倀を探し、䞀臎が芋぀かった堎合、察応するペヌゞのビットごずの比范を実行したす。 完党に同䞀のペヌゞが芋぀かった堎合、それらのコピヌは1぀だけ残り、その埌、仮想マシンはアクセス時に自動的にリダむレクトされたす。 これは、仮想マシンの1぀が「共有」ペヌゞに倉曎を加えるたで正確に行われたす。 次に、このペヌゞの別のコピヌが䜜成され、「共有」されなくなりたすが、1台の仮想マシンでのみ䜿甚されたす。 残念ながら、ビット単䜍の比范を䜿甚しおテヌブル内の䞀臎をさらに怜玢するメモリの「シャベル」ずハッシュの蚈算は、非垞にリ゜ヌスを消費し、時間がかかり、倧量のメモリを䜿甚するず数時間かかる可胜性がありたす。



ペヌゞ共有、TLB、倧容量メモリペヌゞ、すべおすべお


たず、連想倉換キャッシュTranslation Lookaside Buffer、以䞋TLBず呌びたすが必芁なメモリの倧芏暡なペヌゞLarge Memory Pages、以䞋LMPず呌びたすの䞀般的な動䜜原理を芋おみたしょう。ペヌゞ共有。 これは、AMDの゚ンゞニアであるAlan Zeichickが圌の蚘事に曞いおいるこずですこの蚘事ではJava仮想マシンのメモリを操䜜するこずに぀いお述べおいたすが、これは原則ずしおコンピュヌタヌ仮想化にも圓おはたりたす。 こちら 

すべおのx86互換プロセッサ、およびすべおの最新の32ビットおよび64ビットオペレヌティングシステムは、物理メモリおよび仮想メモリのペヌゞベヌスの線成を䜿甚したす。 アプリケヌションごずに、ペヌゞの仮想アドレスず物理アドレスがペヌゞテヌブルを䜿甚しお比范されたす。 このマッピングプロセスを高速化するために、最新のプロセッサは、最近アクセスされた物理アドレスず仮想アドレスのマッピングをキャッシュする倉換ルックアサむドバッファヌTLBを䜿甚したす。

通垞、アプリケヌションに割り圓おられたメモリは連続的ではなく、倚くの堎合、メモリペヌゞは断片化されおいたす。 しかし、メモリペヌゞのテヌブルはアプリケヌションから物理アドレスを隠すため、アプリケヌションは、提䟛されるメモリ領域が連続しおいるず「考え」たす。 類掚するず、ファむルシステムで盎接動䜜しないアプリケヌションには、個々のファむルの断片化に関する手がかりがありたせん。

実行䞭のアプリケヌションがメモリにアクセスするず、プロセッサはペヌゞテヌブルを䜿甚しお、アプリケヌションが䜿甚する仮想アドレスを物理アドレスに倉換したす。 前述のように、このプロセスを高速化するために、キャッシングシステムが䜿甚されたす-連想倉換バッファ。 芁求されたアドレスがTLBにある堎合、ペヌゞテヌブル党䜓で䞀臎を芋぀ける必芁がないため、プロセッサは芁求をはるかに高速に凊理できたす。 したがっお、芁求されたアドレスがTLBキャッシュにない堎合、ペヌゞテヌブル内の仮想アドレスず物理アドレスを䞀臎させる暙準操䜜が実行され、その埌のみ芁求を凊理できたす。

ペヌゞの数が倚いため、TLBキャッシュのパフォヌマンスは非垞に重芁です。 OSを実行しおいる暙準の32ビットサヌバヌでは、Windows、Linux、たたは4 GBのRAMを備えた他のUnixであるかどうかは関係ありたせん。ペヌゞテヌブルには、4キロバむトペヌゞごずに100䞇゚ントリが含たれたす。 たずえば、64ビットOSず32 GBのメモリがあるずしたすか それは、最倧800䞇の4キロバむトのペヌゞになりたす。



さらに

なぜこの技術の䜿甚[倧きなペヌゞ]がより䟿利なのですか アプリケヌションが比范的長い時間アクセスされた1 MB1024 KBの連続デヌタを読み取ろうずしおいるずしたしょう぀たり、この芁求はTLBキャッシュに保存されおいたせん。 メモリペヌゞのサむズが4 KBの堎合、これは256ペヌゞにアクセスする必芁があるこずを意味したす。 ペヌゞテヌブルで256の怜玢を実行する必芁があり、䜕癟䞇ものレコヌドを持぀こずができたす。 それには倚くの時間がかかりたす。

ここで、ペヌゞサむズが2 MB2048 KBであるずしたす。 この堎合、必芁な1 MBデヌタブロックが完党に1ペヌゞにある堎合は1回だけ、そうでない堎合は2回ペヌゞテヌブルを怜玢する必芁がありたす。 TLBがただ䜿甚されおいる堎合、プロセスはさらに高速になりたす。

スモヌルペヌゞの堎合、TLBにはL1キャッシュ甚の32゚ントリずL2キャッシュ甚の512゚ントリが含たれたす。 各゚ントリは4キロバむトのペヌゞに察応するため、TLB党䜓では2 MBの仮想メモリしかカバヌされないこずがわかりたす。

倧きなペヌゞの堎合、TLBには8぀の゚ントリが含たれたす。 ここの各゚ントリは2 MBのメモリをアドレス指定するため、TLBは16 MBの仮想メモリをアドレス指定したす。 メモリを倧量に消費するアプリケヌションを䜿甚する堎合、このメカニズムははるかに効率的になりたす。 たずえば、アプリケヌションが2 GBのデヌタを読み取ろうずしおいるずしたす。 䜕が高速になりたすか-キャッシュされた数千の2メガバむトのペヌゞを読み取るか、50䞇の小さな4キロバむトのペヌゞを「シャベル」したすか



簡単な算術を䜿甚しお、さたざたなメモリ量のペヌゞテヌブルの゚ントリ数を蚈算できたす。 4キロバむトのペヌゞサむズを受け入れた堎合、4 GBのメモリの堎合は100䞇だけになりたす。 32 GBの堎合-すでに800䞇、64 GBの堎合-1600䞇レコヌド、1 TBのメモリで最倧256,000,000レコヌド。 そしお今、サヌバヌは32たたは64だけでなく、192 GBのメモリたずえばHP DL385 G6さえも長い間サポヌトしおおり、最近リリヌスされたIntel Nehalem EXプロセッサは仕様に埓っお、プロセッサ゜ケットあたり最倧256 GBのメモリをサポヌトしおいるこずを思い出したす。 テラバむトのメモリはもはやフィクションの領域にないこずが刀明したした。 これは1぀の4プロセッササヌバヌです。 4キロバむトペヌゞの圢匏でメモリを敎理する叀いモデルを䜿甚するず、2億5600䞇ペヌゞが埗られ、そのような量のメモリを操䜜するこずは、ビヌルゞョッキのあるスむミングプヌルをすくうこずに䌌おいたす。 そのため、メモリの倧きなペヌゞの䜿甚は遠い未来ではありたせんが、どちらもほずんど存圚したせん。

芁玄するず、連想倉換キャッシュは非垞に重芁なシステムリ゜ヌスであり、その䜿甚効率はシステムパフォヌマンスに倧きく圱響したす。 最倧4 GBのメモリをサポヌトする32ビットシステムの事実䞊の暙準は、4 KBの長さのペヌゞ圢匏のメモリの線成でした。 珟圚、64ビットシステムがたすたす䜿甚され、メモリの量が数十たたは数癟ギガバむトになるこずがある堎合、このようなメモリ構成を䜿甚するず、TLBの䜿甚効率が倧幅に䜎䞋し、結果ずしおシステム党䜓のパフォヌマンスが䜎䞋する可胜性がありたす。

「セカンドレベルアドレス倉換SLAT」ず呌ばれる新しいテクノロゞヌに蚀及するこずは間違いありたせん。 このテクノロゞヌは、ベンダヌAMD-Rapid Virtualization IndexingRVIたたはNested Page TablesNPT、Intel-Extended Page TablesEPTによっお異なる方法で呌び出されたす。 ゲストアドレス぀たり、仮想マシン内を物理アドレスに盎接倉換できたす。 このような倉換は、この機胜がサポヌトされおいないシステムず比范しお、生産性を倧幅に向䞊させるこずができたす公匏には20の増加が公匏に確認され、生産性が100増加するず蚀われおいたす そのため、仮想化にはSLATが有甚であり、SLATはそれをサポヌトするハヌドりェアず゜フトりェアに切り替える理由の1぀です。

ただし、SLATがメモリの倧きなペヌゞで動䜜するように蚭蚈および最適化されたこずを忘れおいるか、単に知らない人が倚くいたす。 ラヌゞペヌゞのサポヌトが有効になっおいない堎合、TLBキャッシュの効率が䜎䞋し、スモヌルペヌゞでSLATを䜿甚するずパフォヌマンスが20䜎䞋する可胜性がありたす。 たた、倧きなペヌゞを䜿甚しおも生産性が10〜20向䞊するこずはありたせん。したがっお、䞀般的に生産性が最倧40䜎䞋したす。

䞊蚘を芁玄するず、ラヌゞメモリペヌゞはパフォヌマンスを最倧40向䞊させるこずができる非垞に重芁な芁玠であり、それらを䜿甚するかどうかは修蟞䞊の問題であるこずがわかりたす。 Large Memory Pagesは、64ビットプロセッサアヌキテクチャやネットワヌクテクノロゞヌのゞャンボフレヌムず同様に、コンピュヌタヌシステムの進化の産物です。



Yu。Luzhkovはどこにいるのでしょうか


この蚘事を読むず、倚くの人が合理的な疑問を抱くでしょう。なぜ、私はあらゆる皮類のビッグペヌゞず連想翻蚳キャッシュに぀いお語っお、朚の䞊の苔のように広たったのですか 結局のずころ、この蚘事は元々ペヌゞ共有に関するものでしたか 答えは非垞に簡単です。倧きなペヌゞを䜿甚する堎合、ペヌゞ共有は実際には機胜したせん。 なんで 小孊校、ワト゜ン倧量のペヌゞ2048 Kb察2 Kbにより、メモリ内で完党に同䞀のペヌゞを芋぀ける可胜性はほずんどれロになりたす。 これは、MicrosoftずVMwareが完党に合意しおいる数少ないケヌスの1぀です。

community.vmware.com/message/1262016#1262016

倧きなペヌゞを䜿甚する堎合の唯䞀の問題は、ペヌゞ共有のために、完党に同䞀の2 MBのメモリペヌゞを芋぀ける必芁があるこずです小さい4キロバむトペヌゞず比范しお。 これの可胜性ははるかに䜎くゲストOSの空癜ペヌゞは䟋倖で、「れロ」で完党に詰たっおいる、ESXはメモリの倧きなペヌゞを分離しようずしないため、ハむパヌバむザヌが物理的な倧きなペヌゞを持぀すべおのゲストペヌゞず䞀臎する堎合、TPSの䜿甚によるメモリ節玄は枛少したす。


芁するに、ペヌゞ共有は4 KBペヌゞで効果的に機胜したすが、倧芏暡な2 MBペヌゞを䜿甚する堎合、たったく利点はありたせん。



空癜ペヌゞ


奇劙なこずに、ペヌゞ共有は、倧量の未䜿甚メモリ、぀たりれロでいっぱいのペヌゞが倚数ある堎合に最適に機胜したす。 それらは完党に同䞀であり、「共有」が最も簡単です。 たあ、bmp圢匏での「マレビッチ正方圢」の圧瞮のようなものです。 問題は、䞀郚のオペレヌティングシステム特にWindows 7が䜿甚可胜なメモリ党䜓を䜿甚する傟向があるこずです。これはバグではなく、機胜-特に、先ほど曞いたWindows Vista / 7のSuperFetchです。 したがっお、これはペヌゞ共有テクノロゞヌの有効性の䜎䞋にも぀ながりたす。



たずめ





このすべおから、最新の機噚ずオペレヌティングシステムを䜿甚したペヌゞ共有技術は、せいぜい圹に立たず、有害でさえありたす。生産性を䜎䞋させ、鉄ずOSの新機胜の䜿甚を蚱可したせん。



次の蚘事では、「メモリオヌバヌコミットメント」のテクノロゞヌに関する議論を続けたす。今回は、セカンドレベルペヌゞングに぀いお説明したす。



All Articles