Docker içinde Apache için ksm_preload kullanmaya çalışıyorum . Sorun, Docker’ın içinde çalışırken kitaplığın eşleşmemesi. Dışında çalışır ve paylaşılan / geçici sayfalar görüyorum. Sanırım problem apache'de bir yerde yatıyor, çünkü aynı LD_PRELOAD parametresiyle aynı kapta çalışan diğer uygulamalar (apt gibi) KSM'de aktivite gösteriyor.
Make make kurulumunu çalıştırdıktan sonra docker konteynerinin içindekileri denedim
LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so apache2ctl -k start -D FOREGROUND
/etc/apache2/envvars
İşçi süreçleri için ayarlamayı da denedim :
export LD_DEBUG=all
export LD_PRELOAD=/usr/local/share/ksm_preload/libksm_preload.so
Ana süreç kütüphane eşleştirilir ancak alt çalışan işlemez.
Ana sürecin / proc / pid / map_files:
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
Her zaman aşağıdaki sonuç:
/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
LD hata ayıklama çıktısı oldukça uzundur https://pastebin.com/KRvKHXxn
Apache'nin LD_PRELOAD'a karşı bir çeşit koruması var mı?
Sembollerin üzerine yazma önceliği yüksek olan başka bir dinamik kütüphane var mı?
belki ilgili: https://stackoverflow.com/questions/13374240/why-ld-preload-doesnt-work-for-one-of-loaded-shared-libraries
çözümünü denedi, UNSET_RTLD_DEEPBIND=1
değişiklik yapmadı