2013-03-18 4 views
31

Welche Faktoren helfen bei der Auswahl der Speicherzuordner im Linux Kernel?Was wählen Sie zwischen Slab und Slub Allocator im Linux Kernel?

Im vorliegenden Linux Kernel haben wir die Möglichkeit, SLAB, SLUB oder SLOB zu wählen. Ich habe gelesen, dass SLOB für Kernel mit kleineren Footprints verwendet wird. Aber ich möchte wissen, welche Faktoren bei der Entscheidung zwischen Slab Allocator und Slub Allocator helfen.

+3

http://lwn.net/Articles/229984/ falls Sie das nicht gesehen haben –

+0

Danke :) Aber ich habe diesen Artikel gelesen.Es gab einen Einblick in Slub, aber meine Frage wurde damit nicht vollständig beantwortet. Ich habe die Antwort auf Quora bekommen. Ich habe den Link veröffentlicht. – Siddharth

Antwort

46

Auf der Suche nach Antwort, habe ich geschrieben, die gleiche Frage auf Quoren und Robert Love, antwortete sie:

Ich nehme an, Sie dies aus der Point-of-View des Benutzers von fragen einen System, oder vielleicht jemand baut einen Kernel für ein bestimmtes Produkt . Als Kernel-Entwickler interessiert es Sie nicht, welcher Platten-Allokator verwendet wird; Die API ist die gleiche.

Zuerst wurde "slab" zu einem generischen Namen, der sich auf eine Speicherzuweisungsstrategie mit einem Objektcache bezieht, die eine effiziente Zuweisung und Freigabe von Kernelobjekten ermöglicht. Es wurde zum ersten Mal von Sun-Ingenieur Jeff Bonwick 11 dokumentiert und im Kernel Solaris 2.4 implementiert.

Linux bietet derzeit drei Möglichkeiten für die "Platte" Allocator:

Slab ist das Original, basierend auf Bonwick brech Papier und verfügbar seit Linux-Kernel-Version 2.2. Es ist eine getreue Implementierung von Bonwicks Vorschlag, der durch die Multiprozessor-Änderungen, die in Bonwicks Folgearbeit [2] beschrieben sind, ergänzt wird.

Slub ist der Speichererweiterer der nächsten Generation, der im Linux-Kernel seit 2.6.23 standardmäßig hat. Es setzt fort, das grundlegende "Platte" Modell zu verwenden, aber behebt mehrere Mängel in Slabs Design, insbesondere um Systeme mit einer großen Anzahl von Prozessoren. Slub ist einfacher als Slab.

SLOB (einfache Liste von Blöcken) ist ein Speicherzuordner, der für Embedded-Systeme mit sehr wenig Speicher optimiert wurde - in der Größenordnung von Megabyte. Es wendet einen sehr einfachen First-Fit-Algorithmus auf eine Liste von Blöcken, nicht im Gegensatz zu den alten R-Stil Heap-Allokator K &. Bei der Eliminierung von fast allen des überarbeiteten Speicherszuweisers passt SLOB unter extremen Speicherbeschränkungen gut zu Systemen , bietet aber keinen der in beschriebenen Vorteile und kann unter pathologischer Fragmentierung leiden.

Was sollten Sie verwenden? Slub, es sei denn, Sie erstellen einen Kernel für ein Embedded-Gerät mit begrenztem Speicher. In diesem Fall würde ich Slub gegen SLOB Benchmark und sehen, was am besten für Ihre Arbeitsbelastung funktioniert. Es gibt keinen Grund, Slab zu verwenden; Es wird wahrscheinlich aus zukünftigen Linux Kernel-Releases entfernt werden.

Bitte beachten Sie diese link für eine ursprüngliche Antwort.

+1

Beachten Sie, dass Debian und andere Distributionen zu SLAB zurückgekehrt sind, da es auf Multiprozessorsystemen schneller ist. Siehe: https://lists.debian.org/debian-kernel/2012/03/msg00944.html – Ariel

+1

@Ariel das ist interessant, gibt es einen Benchmark oder etwas, das den Grund dafür beschreibt? – dashesy

Verwandte Themen