ホームページ  >  記事  >  バックエンド開発  >  Memcache メモリ割り当てメカニズム

Memcache メモリ割り当てメカニズム

WBOY
WBOYオリジナル
2016-08-08 09:20:14874ブラウズ
ページ (ページ) はメモリ割り当ての最小単位です。

Memcached のメモリ割り当てはページ単位です。 デフォルトでは、1 ページは 1M で、起動時に -I パラメータで指定できます。メモリを申請する必要がある場合、memcached は新しいページを分割し、必要なスラブ領域に割り当てます。ページが割り当てられると、再起動する前にリサイクルまたは再割り当てされることはありません
Memcache メモリ割り当てメカニズム

スラブ (レイヤー) がデータ空間を分割します

Memcached はすべてのサイズのデータ​​をまとめませんが、データを事前に登録します空間は一連のスラブに分割されており、各スラブは特定の範囲内のデータ ストレージのみを担当します。以下の図に示すように、各スラブには、前のスラブのサイズより大きく、自身の最大サイズ以下のデータのみが保存されます。たとえば、スラブ 3 には 137 ~ 224 バイトのデータのみが保存されます。データサイズが 230byte の場合、スラブ 4 に割り当てられます。以下の図からわかるように、各スラブが担当するスペースは実際には等しくありません。 memcached デフォルトでは、次のスラブの最大値は前のスラブの 1.25 倍です。これは次の方法で変更できます。 増加率を変更するには、-f パラメーターを変更します。
Memcache メモリ割り当てメカニズム

チャンク(ブロック)とは、キャッシュされたデータを格納する単位です。

チャンク は、一連の固定メモリ空間であり、それを管理するスラブの最大ストレージ サイズです。たとえば、スラブ 1 のすべてのチャンクは 104 バイト、スラブ 4 のすべてのチャンクは 280 バイトです。チャンクは、memcached がキャッシュされたデータを実際に保存する場所です。チャンク サイズはスラブが保存できる最大値に固定されているため、現在のスラブに割り当てられたすべてのデータをチャンクに保存できます。時間データのサイズがチャンクサイズより小さい場合、空き領域はメモリの断片化を防ぐために設計されています。たとえば、以下の図では、チャンク サイズは 224 バイトで、保存されるデータは 200 バイトのみで、残りの 24 バイトはアイドル状態になります。
Memcache メモリ割り当てメカニズム

スラブのメモリ割り当て。 Memcached は起動時に -m を通じて最大メモリ使用量を指定します

が、これは起動直後に占有されるのではなく、必要に応じて各スラブに徐々に割り当てられます

新しいキャッシュ データを保存する場合、memcached はまず適切なスラブを選択し、スラブに空きチャンクがあるかどうかを確認し、空きチャンクがある場合は直接保存します。

スラブはメモリを申請する際の単位としてページを使用するため、最初のデータを入れると、サイズに関わらず1Mページがスラブに割り当てられます。ページを申請すると、スラブはこのページのメモリをチャンクのサイズに応じて分割してチャンクの配列にし、チャンク配列から 1 つを選択してデータを格納します。以下に示すように、スラブ 1 とスラブ 2 ページを割り当て、それぞれのサイズに従ってチャンク配列に分割します。
Memcache メモリ割り当てメカニズム

Memcached メモリ割り当て戦略。

上記の紹介に基づいて、memcached のメモリ割り当て戦略は次のとおりです。スラブの要件に従ってページを割り当て、各スラブは必要に応じてチャンク ストレージを使用します。

ここで注意すべき機能がいくつかあります:

    Memcached によって割り当てられたページはリサイクルまたは再割り当てされません
  • Memcached によって適用されたメモリは解放されません
  • スラブのアイドル チャンクは誰にも貸し出されません他のスラブ
この記事は http://blog.csdn.net/u013927110/article/details/47024499 から転載されました。 上記では、Memcache のメモリ割り当てメカニズムをその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。