Roman Gushchin (
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
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
Source: opennet.ru