RSS Julia Evans
Folgen
Weniger Speicher verwenden, um IP-Adressen in Mess With DNS nachzuschlagen
Der Autor von Mess With DNS hatte Probleme damit, dass das Programm wegen Speichermangels abstürzte und vom Betriebssystem (OOM) getötet wurde, was wiederum Probleme mit dem Backup-Skript verursachte. Um dies zu lösen, entschied sich der Autor, Mess With DNS so anzupassen, dass es weniger Speicher benötigt. Das Programm lädt eine Datenbank von IP-Adressen in den Speicher, was etwa 117 MB Speicher beanspruchte. Der Autor versuchte drei verschiedene Ansätze, um den Speicherverbrauch zu reduzieren.Der erste Ansatz bestand darin, SQLite zu verwenden, um die Daten auf der Festplatte zu speichern, was das ursprüngliche Speicherziel erreichte, aber Probleme bei der Speicherung von IPv6-Adressen aufwarf und 500 Mal langsamer war als die ursprüngliche binäre Suche. Der zweite Ansatz bestand darin, einen Trie zu verwenden, aber dieser benötigte mehr Speicher und war langsamer als die ursprüngliche binäre Suche.Der dritte Ansatz bestand darin, das Array so anzupassen, dass es weniger Speicher benötigt, indem die Felder Name und Land dupliziert wurden, was den Speicherverbrauch von 117 MB auf 65 MB reduzierte, und dann den Wechsel zu netip.Addr anstelle von net.IP, was weitere 20 MB Speicher einsparte, so dass insgesamt 46 MB erreicht wurden. Der Autor konnte insgesamt 70 MB Speicher einsparen.