
estoy tratando de usarksm_precargapara Apache dentro de Docker. El problema es que la biblioteca no se asigna cuando se ejecuta dentro de Docker. Afuera funciona y veo páginas compartidas/volátiles. Creo que el problema radica en algún lugar de Apache, porque otras aplicaciones (como apt) que se ejecutan en el mismo contenedor con el mismo parámetro LD_PRELOAD muestran actividad en el KSM.
Después de ejecutar make install, probé lo siguiente dentro del contenedor acoplable
LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so apache2ctl -k start -D FOREGROUND
También intenté configurar /etc/apache2/envvars
los procesos de trabajo:
export LD_DEBUG=all
export LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so
El proceso padre asigna la biblioteca, pero los procesos de trabajo hijo no.
/proc/pid/map_files del proceso padre:
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
Siempre el siguiente resultado:
/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
La salida de depuración de LD es bastante largahttps://pastebin.com/KRvKHXxn
¿Apache tiene algún tipo de protección contra LD_PRELOAD?
¿Existe tal vez otra biblioteca dinámica con mayor prioridad que sobrescribe los símbolos?
tal vez relevante:https://stackoverflow.com/questions/13374240/why-ld-preload-doesnt-work-for-one-of-loaded-shared-libraries
Probé la solución con UNSET_RTLD_DEEPBIND=1
, sin cambios.