Facebook hat einen neuen Slab-Speicherverwaltungsmechanismus für den Linux-Kernel vorgeschlagen

Roman Gushchin (Roman Guschchin) von Facebook опубликовал Auf der Mailingliste der Linux-Kernel-Entwickler steht eine Reihe von Patches mit der Implementierung eines neuen Speicherzuteilungscontrollers Platte (Slab-Memory-Controller). Der neue Controller zeichnet sich dadurch aus, dass er die Slab-Abrechnung von der Speicherseitenebene auf die Kernelobjektebene verlagert, was es ermöglicht, Slab-Seiten in verschiedenen Kontrollgruppen zu teilen, anstatt jeder Kontrollgruppe separate Slab-Caches zuzuweisen.

Der vorgeschlagene Ansatz ermöglicht es, die Effizienz der Slab-Nutzung zu steigern, die Größe des für Slab verwendeten Speichers um 30–45 % zu reduzieren und den Gesamtspeicherverbrauch des Kernels erheblich zu reduzieren. Durch die Reduzierung der Anzahl nicht beweglicher Platten ergibt sich auch ein positiver Effekt hinsichtlich der Reduzierung der Speicherfragmentierung. Der neue Speichercontroller vereinfacht den Code für die Abrechnung von Slabs erheblich und erfordert nicht die Verwendung komplizierter Algorithmen zum dynamischen Erstellen und Löschen von Slab-Caches für jede Kontrollgruppe. Alle Speicherkontrollgruppen in der neuen Implementierung verwenden einen gemeinsamen Satz von Slab-Caches, und die Lebensdauer von Slab-Caches ist nicht mehr an die Lebensdauer derjenigen gebunden, die über die Kontrollgruppe installiert wurden Beschränkungen zur Speichernutzung.

Die im neuen Slab Controller implementierte genauere Ressourcenabrechnung sollte theoretisch die CPU stärker belasten, in der Praxis erwiesen sich die Unterschiede jedoch als unbedeutend. Insbesondere wurde der neue Slab-Controller mehrere Monate lang auf Produktions-Facebook-Servern eingesetzt, die unterschiedliche Arten von Arbeitslast bewältigen, und es wurden bisher keine spürbaren Rückschritte festgestellt. Gleichzeitig kommt es zu einer deutlichen Reduzierung des Speicherverbrauchs – auf einigen Hosts konnte bis zu 1 GB Speicher eingespart werden, dieser Indikator hängt jedoch stark von der Art der Auslastung, der Gesamtgröße des Arbeitsspeichers und der Anzahl der CPUs ab und die Funktionen der Arbeit mit dem Gedächtnis. Frühere Tests zeigte Reduzierung des Speicherverbrauchs um 650–700 MB (42 % des Slab-Speichers) auf dem Web-Frontend, 750–800 MB (35 %) auf dem Server mit DBMS-Cache und 700 MB (36 %) auf dem DNS-Server.

Source: opennet.ru

Kommentar hinzufügen