Heim  >  Artikel  >  Backend-Entwicklung  >  Memcache-Speicherzuweisungsmechanismus

Memcache-Speicherzuweisungsmechanismus

WBOY
WBOYOriginal
2016-08-08 09:20:14877Durchsuche
Seite (Seite) ist die kleinste Einheit der Speicherzuweisung

Die Speicherzuweisung von Memcached erfolgt in Seiteneinheiten Standardmäßig ist eine Seite 1M groß, die durchgereicht werden kann Der Parameter -I wird beim Start angegeben. Wenn Sie Speicher beantragen müssen, teilt memcached eine neue Seite und weist sie dem erforderlichen Slab-Bereich zu. Sobald eine Seite zugewiesen ist, wird sie vor dem Neustart nicht recycelt oder neu zugewiesen
Memcache-Speicherzuweisungsmechanismus

Slabs (Ebene) teilt den Datenraum

Memcached und Anstatt alle Datengrößen zusammenzufassen, , wird der Datenraum im Voraus in eine Reihe von Platten unterteilt, und jede Platte ist nur für die Datenspeicherung innerhalb eines bestimmten Bereichs verantwortlich . Wie in der folgenden Abbildung dargestellt, speichert jede Platte nur Daten, die größer als die Größe der vorherigen Platte und kleiner oder gleich ihrer eigenen maximalen Größe sind. Beispiel: Slab 3 speichert nur Daten zwischen 137 und 224 Byte. Wenn eine Datengröße 230 Byte beträgt, wird sie Slab 4 zugewiesen. Wie aus der folgenden Abbildung ersichtlich ist, ist der für jede Platte verantwortliche Speicherplatz standardmäßig nicht gleich. Der Maximalwert der nächsten Platte beträgt das 1,25-fache des vorherigen. Dies kann geändert werden Ändern Sie den Parameter -f, um das Wachstumsverhältnis zu ändern.
Memcache-Speicherzuweisungsmechanismus

Chunk (Block) ist die Einheit zum Speichern zwischengespeicherter Daten.

Chunk ist eine Reihe fester Speicherplätze. Diese Größe ist die maximale Speichergröße der Platte, die ihn verwaltet. Beispiel: Alle Blöcke von Slab 1 sind 104 Byte groß und alle Blöcke von Slab 4 sind 280 Byte groß. Im Chunk speichert memcached tatsächlich zwischengespeicherte Daten. Da die Chunk-Größe auf den maximalen Wert festgelegt ist, den die Platte speichern kann, können alle der aktuellen Platte zugewiesenen Daten im Chunk gespeichert werden. Wenn die Zeitdatengröße kleiner als die Blockgröße ist, bleibt der freie Speicherplatz ungenutzt. Dies soll eine Speicherfragmentierung verhindern. In der Abbildung unten ist beispielsweise chunk Die Größe beträgt 224 Byte, die gespeicherten Daten sind nur 200 Byte groß und die restlichen 24 Byte sind im Leerlauf.
Memcache-Speicherzuweisungsmechanismus

Speicherzuordnung von Slab. Memcached gibt die maximale Speichernutzung durch -m beim Start an,

diese wird jedoch nicht sofort beim Start belegt. Sie wird nach und nach jeder Platte nach Bedarf zugewiesen .

Wenn neue Cache-Daten gespeichert werden sollen, wählt memcached zunächst eine geeignete Platte aus und prüft dann, ob freie Blöcke in der Platte vorhanden sind. Wenn nicht, werden diese direkt gespeichert wird beantragt.

Der Slab beansprucht den Speicher in Seiteneinheiten. Wenn also die ersten Daten eingegeben werden, wird dem Slab unabhängig von der Größe eine 1-MB-Seite zugewiesen. Nach der Beantragung einer Seite teilt Slab den Speicher dieser Seite entsprechend der Größe des Blocks auf, sodass daraus ein Array von Blöcken wird, und wählt dann einen aus dem Block-Array aus, um Daten zu speichern. Wie unten gezeigt, Platte 1 und Platte 2 Ordnen Sie eine Seite zu und teilen Sie sie entsprechend ihrer jeweiligen Größe in Chunk-Arrays auf.
Memcache-Speicherzuweisungsmechanismus

Memcached-Speicherzuweisungsstrategie.

Basierend auf der obigen Einführung lautet die Speicherzuweisungsstrategie von Memcached: Ordnen Sie Seiten entsprechend den Slab-Anforderungen zu, und jede Slab verwendet nach Bedarf Chunk-Speicher.

Hier sind mehrere Funktionen zu beachten:

    Die von Memcached zugewiesenen Seiten werden nicht recycelt oder neu zugewiesen.
  • Der von Memcached angeforderte Speicher wird nicht recycelt recycelt werden. Freigegeben
  • Der ungenutzte Teil der Platte wird keiner anderen Platte zur Nutzung verliehen
Dieser Artikel wurde reproduziert von: http://blog.csdn .net/u013927110/article/details /47024499 Das Obige hat den Memcache-Speicherzuweisungsmechanismus vorgestellt, einschließlich einiger Aspekte davon. Ich hoffe, dass er Freunden, die sich für PHP-Tutorials interessieren, hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn