Verringern Sie die Speicherfragmentierung mit MALLOC_MMAP_THRESHOLD_ und MALLOC_MMAP_MAX_.

9

Ich habe mit den Variablen MALLOC_MMAP_THRESHOLD_ und MALLOC_MMAP_MAX_ env experimentiert, um die Speicherverwaltung in einem lang laufenden Python 2-Prozess zu beeinflussen. Siehe Ссылка

Ich habe die Idee von diesem Fehlerbericht: Ссылка

Die Ergebnisse, die ich habe, sind ermutigend: Die Speicherfragmentierung wird reduziert, und die typische Hochwassermarke, die im Speicher bei lang andauernden Prozessen sichtbar ist, ist geringer.

Meine einzige Sorge ist, wenn es andere Nebenwirkungen gibt, die beißen können, wenn Sie solche Low-Level-Tweaks verwenden. Hat jemand Erfahrung in der Verwendung von ihnen?

Hier ist ein Beispielskript, das zeigt, wie sich diese Variablen auf RSS-Speicher in einem Skript auswirken, das ein großes Wörterbuch generiert: Ссылка Führen Sie einfach "alloc.sh" aus und vergleichen Sie die Ausgabe. Hier ist die Ausgabe für mich:

%Vor%

Wie Sie sehen, ist RSS für dieses Beispiel ungefähr 20% weniger als Vanille Python.

    
lbolla 26.02.2016, 20:14
quelle

1 Antwort

3

Seit langem mit dieser Optimierung in Produktion, ohne Probleme. Also, ich denke, es ist in einigen Fällen eine praktikable Option, um die Speichernutzung in lang laufenden Python-Prozessen zu verbessern.

    
lbolla 30.10.2016 20:54
quelle

Tags und Links