Sie schlagen einen neuen Speichercontroller für den Linux-Kernel vor

Linux Kernel

Der Speichermanager ist eine Teilmenge des Systems Betriebs- Es teilt den Speicher zwischen dem Betriebssystem und den verschiedenen Anwendungen. Der Begriff Speicher bezieht sich hauptsächlich auf den Hauptspeicher (RAM), seine Verwaltung erfordert jedoch den Beitrag von Hilfsspeicher und Cache-Speicher.

Der Speichermanager ist insbesondere für die effiziente Zuordnung von Speicher zu Prozessen verantwortlichDies bedeutet, dass Sie in der Lage sein müssen, die freien Speicherorte des verfügbaren Speichers aufzulisten, den für neue Prozesse erforderlichen Speicher zuzuweisen und Speicher von Prozessen zurückzugewinnen, die beendet werden. Der Prozess-Dispatcher im Linux-Kernel ist der SLAB-Dispatcher.

PLATTE basiert auf einem Block- und Cache-System, das Speicheranforderungen optimiert. Diese Art der Speicherverwaltung reduziert die Fragmentierung, die durch Zuordnungs- und Verschiebungsvorgänge verursacht wird.

Bei der Blockzuweisung wird ein Cache für einen bestimmten Objekttyp / eine bestimmte Objektgröße implementiert, bei dem mehrere vorab zugewiesene Speicherblöcke in Teile fester Größe geschnitten sind, die für bestimmte Objekte geeignet sind.

SLAB verwaltet die Teile so, dass, wenn der Kernel aufgefordert wird, einem Objekt Speicher zuzuweisen, Sie können diese Anforderung mit einem Ersatzteil aus einem vorhandenen Block erfüllen. SLAB behält den zugewiesenen Speicher für die Wiederverwendung bei nachfolgenden Zuweisungen ähnlicher Objekte bei und reduziert somit die mit der Objektinitialisierung verbundenen Gemeinkosten.

Sie beabsichtigen, SLAB zu ersetzen

Roman Guschin, Als Mitglied des Linux-Kernel-Engineering-Teams bei Facebook entdeckte er, was er als "schwerwiegenden Fehler" im aktuellen Speichermanager / Controller ansieht. Und rhat kürzlich einen neuen Speichercontroller vorgeschlagen Block was verspricht, die Speichernutzung unter mehreren "cgroups" dramatisch zu verbessern. (oder Kontrollgruppen) aus dem Speicher.

Vor diesem Hintergrund ist zu beachten, dass sich cgroups auf eine Funktion des Linux-Kernels bezieht, mit der die Verwendung der Ressourcen eines Systems (Prozessor, Speicher, Festplattennutzung usw.) und der Begriff "Seite der Platte" begrenzt, gezählt und isoliert werden können. könnte von SLAB dem Speicherzuweisungsprozess gleichgestellt werden.

Laut Gushchin:

„Der wahre Grund, warum das vorhandene Design zu einer geringen SLAB-Nutzung führt, ist einfach: Slab-Seiten werden ausschließlich von einem einzelnen Speicherpool verwendet.

Wenn nur wenige Zuordnungen einer bestimmten Größe von einer cgroup vorgenommen werden oder wenn nach dem Entfernen der cgroup noch einige aktive Objekte vorhanden sind oder wenn die cgroup eine einzelne Thread-Anwendung enthält, die praktisch keine Kernel zuweist, dies jedoch jedes Mal in eine neue CPU: In all diesen Fällen ist die resultierende SLAB-Nutzung sehr gering.

Wenn die kmem-Berechnung deaktiviert ist, kann der Kernel freien Speicherplatz auf Kachelseiten für andere Zuordnungen verwenden «.

Gushchin argumentiert, dass dies kein Problem war, als der kmem-Treiber als optionale Funktion eingeführt wurde, die für jeden Speicherpool aktiviert werden musste.

Jetzt jedochist der kmem-Treiber standardmäßig für cgroup v1 und v2 aktiviert. Und da moderne Systeme dazu neigen, eine große Anzahl von c-Gruppen zu erstellen, ist die Verwendung von SLAB weniger effektiv.

Ihm zufolge durch Teilen der Platten-Seiten zwischen verschiedenen Speichergruppen und durch Verwendung eines überarbeiteten Systems, bei dem die Abrechnung nach Objekt und nicht nach Seite erfolgt, man hätte im linux kernel einen optimierten speichercontroller das bietet eine viel effizientere Nutzung.

Der von Gushchin vorgeschlagene Patch enthält zwei halbunabhängige Elemente: eine API zum Laden von Unterseiten, die in Zukunft für Abrechnungszwecke verwendet werden kann, und eine API mem_cgroup_ptr.

Mit dem neuen Controller durchgeführte Tests Erinnerung an Gushchin haben gezeigt, dass es unter Linux möglich ist, zwischen 35% und 42% mehr Speicher zu erhalten im Front-End-Web, im DNS-Server und im Datenbank-Cache sowie in vielen anderen Workloads.

Gushchins Vorschlag steht derzeit unter dem Banner "Bitte um Kommentar". Wenn es akzeptiert wird, kann es in die Linux-Kernelversion 2020 integriert werden.

Quelle: https://lkml.org/


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.