Verwenden von ksm_preload für Apache in Docker

Verwenden von ksm_preload für Apache in Docker

Ich versuche zu verwendenksm_preloadfür Apache innerhalb von Docker. Das Problem ist, dass die Bibliothek nicht zugeordnet wird, wenn sie innerhalb von Docker ausgeführt wird. Außerhalb funktioniert sie und ich sehe freigegebene/flüchtige Seiten. Ich denke, das Problem liegt irgendwo bei Apache, da andere Anwendungen (wie apt), die im selben Container mit demselben LD_PRELOAD-Parameter ausgeführt werden, Aktivität im KSM zeigen.

Nach dem Ausführen von „make install“ habe ich Folgendes im Docker-Container versucht

LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so apache2ctl -k start -D FOREGROUND

Ich habe auch versucht, folgende Einstellungen /etc/apache2/envvarsfür die Arbeitsprozesse vorzunehmen:

export LD_DEBUG=all
export LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so

Dem übergeordneten Prozess wird die Bibliothek zugeordnet, den untergeordneten Arbeitsprozessen jedoch nicht.

/proc/pid/map_files des übergeordneten Prozesses:

7f2e13aef000-7f2e13af1000 -> /usr/local/share/ksm_preload/libksm_preload.so
7f2e13af1000-7f2e13cf0000 -> /usr/local/share/ksm_preload/libksm_preload.so
7f2e13cf0000-7f2e13cf1000 -> /usr/local/share/ksm_preload/libksm_preload.so

Immer folgendes Ergebnis:

/sys/kernel/mm/ksm/pages_shared:0
/sys/kernel/mm/ksm/pages_sharing:0
/sys/kernel/mm/ksm/pages_to_scan:100
/sys/kernel/mm/ksm/pages_unshared:0
/sys/kernel/mm/ksm/pages_volatile:0
/sys/kernel/mm/ksm/run:1

Die LD-Debug-Ausgabe ist ziemlich langhttps://pastebin.com/KRvKHXxn

Verfügt Apache über eine Art Schutz gegen LD_PRELOAD?

Gibt es vielleicht eine andere dynamische Bibliothek mit höherer Priorität, die die Symbole überschreibt?

vielleicht relevant:https://stackoverflow.com/questions/13374240/warum-ld-preload-funktioniert-nicht-für-eine-der-geladenen-shared-libraries habe die Lösung mit versucht UNSET_RTLD_DEEPBIND=1, keine Änderung

verwandte Informationen