Der DNS-Cache von Cloudflare speichert über 25 Milliarden Einträge, und jedes verschwendete Byte kostet 250 GB im gesamten Netzwerk. Durch fünf aufeinanderfolgende Änderungen an der Art, wie Einträge im Speicher abgelegt werden, reduzierten sie den Platzbedarf pro Eintrag um über 50 % und gaben etwa 100 Terabyte RAM frei—das entspricht 130 Gen-13-Servern. Die Optimierungen verbesserten auch die Leistung: Der Einfügedurchsatz stieg um 43 % und die Suchlatenz sank um 19 %, was beweist, dass die Reduzierung des Speicherverbrauchs Operationen beschleunigen kann.
Die wichtigsten Änderungen bestanden darin, die Typen Vec und String durch Box<[T]> und Box<str> zu ersetzen, wodurch unnötige Kapazitätsfelder und Heap-Überallokation eliminiert wurden. Jeder Cache-Eintrag verwendete ursprünglich 8 Vec/String-Felder, jedes mit 24 Bytes Overhead; durch den Wechsel zu Slices wurden 64 Bytes pro Eintrag gespart. Dies wurde durch Benchmarks mit benutzerdefinierten Allokatoren gemessen und in der Produktion validiert, wo die Speicherersparnisse signifikant waren, ohne die Geschwindigkeit zu opfern.
Der Artikel beschreibt den technischen Prozess im Detail, vom Benchmarking mit repräsentativem Verkehr (56 % A-Datensätze, 25 % AAAA, 19 % TXT) bis zur schrittweisen Einführung in Rechenzentren. Er betont, dass kleine Ersparnisse pro Eintrag in großem Maßstab massiv anwachsen und dass sorgfältiges Profiling zu Gewinnen bei Speicher und Leistung führen kann.
Wichtige Entitäten: Unternehmen: Cloudflare
Häufig gestellte Fragen: Wie hat Cloudflare den Speicherverbrauch des DNS-Caches um 100 TB reduziert?
Cloudflare ersetzte die Vec- und String-Felder in Cache-Einträgen durch Box<[T]> und Box<str>, eliminierte Kapazitäts-Overhead und Heap-Verschwendung, sparte 64 Bytes pro Eintrag, was bei 25 Milliarden Einträgen ~100 TB ergibt.
Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing