i've just been dumping some info on efl mem footprint. for now forget massif
and looking at mem usage we malloc etc.

looking at just dirty pages that are a result of our actual compiled code and
what we link to. here is a list of dirty private pages for elementary_test -
just starting and sitting idle. these are REAL used pages .. that don't show up
on massif and friends:

   212 /usr/local/lib/libelementary.so.1.15.0
   120 /usr/lib/libcrypto.so.1.0.0
   112 /usr/lib/libvorbisenc.so.2.0.10
    80 /usr/lib/libOSMesa.so.8.0.0
    72 /usr/local/lib/libevas.so.1.15.0
    64 /usr/lib/libscim-1.0.so.8.2.6
    48 /usr/lib/libcrypto.so.1.0.0
    32 /usr/lib/libstdc++.so.6.0.20
    28 /usr/local/lib/edje/modules/elm/v-1.15/module.so
    28 /usr/lib/libssl.so.1.0.0
    28 /usr/lib/libBulletCollision.so.2.82
    24 /usr/local/lib/libedje.so.1.15.0
    24 /usr/lib/libgcrypt.so.20.0.2
    24 /usr/lib/libfreetype.so.6.11.4
    24 /usr/lib/libevdev.so.2.1.5
    20 /usr/lib/libX11.so.6.3.0
    20 /usr/lib/libssl.so.1.0.0
    16 /usr/local/lib/libecore_x.so.1.15.0
    16 /usr/lib/libscim-1.0.so.8.2.6
    16 /usr/lib/libOSMesa.so.8.0.0
    16 /usr/lib/libc-2.21.so
    12 /usr/local/lib/libefl.so.1.15.0
    12 /usr/local/lib/libector.so.1.15.0
    12 /usr/local/lib/libecore_fb.so.1.15.0
    12 /usr/local/lib/libecore_con.so.1.15.0
    12 /usr/lib/libwayland-client.so.0.3.0
    12 /usr/lib/libglapi.so.0.0.0
    12 /usr/lib/libexpat.so.1.6.0
    12 /usr/lib/libblkid.so.1.1.0
     8 /usr/local/lib/libephysics.so.1.15.0
     8 /usr/local/lib/libemotion.so.1.15.0
     8 /usr/local/lib/libeio.so.1.15.0
     8 /usr/local/lib/libeina.so.1.15.0
     8 /usr/local/lib/libefreet.so.1.15.0
     8 /usr/local/lib/libecore_wayland.so.1.15.0
     8 /usr/local/lib/libecore.so.1.15.0
     8 /usr/local/lib/libecore_evas.so.1.15.0
     8 /usr/local/lib/libecore_audio.so.1.15.0
     8 /usr/local/lib/elementary/modules/prefs/v-1.15.0/module.so
     8 /usr/local/lib/ecore_imf/modules/scim/v-1.15/module.so
     8 /usr/local/lib/ecore_evas/engines/x/v-1.15/module.so
     8 /usr/lib/pulseaudio/libpulsecommon-6.0.so
     8 /usr/lib/pulseaudio/libpulsecommon-6.0.so
     8 /usr/lib/libxkbcommon.so.0.0.0
     8 /usr/lib/libX11.so.6.3.0
     8 /usr/lib/libwayland-server.so.0.1.0
     8 /usr/lib/libwayland-cursor.so.0.0.0
     8 /usr/lib/libstdc++.so.6.0.20
     8 /usr/lib/libsndfile.so.1.0.25
     8 /usr/lib/libluajit-5.1.so.2.0.3
     8 /usr/lib/libLinearMath.so.2.82
     8 /usr/lib/libjpeg.so.8.0.2
     8 /usr/lib/libharfbuzz.so.0.938.0
     8 /usr/lib/libgraphite2.so.3.0.1
     8 /usr/lib/libfontconfig.so.1.8.0
     8 /usr/lib/libc-2.21.so
     8 /usr/lib/libbz2.so.1.0.6
     8 /usr/lib/libBulletSoftBody.so.2.82
     8 /usr/lib/libBulletDynamics.so.2.82
     4 /usr/local/lib/libethumb.so.1.15.0
     4 /usr/local/lib/libethumb_client.so.1.15.0
     4 /usr/local/lib/libeo.so.1.15.0
     4 /usr/local/lib/libemile.so.1.15.0
     4 /usr/local/lib/libembryo.so.1.15.0
     4 /usr/local/lib/libelocation.so.1.15.0
     4 /usr/local/lib/libeldbus.so.1.15.0
     4 /usr/local/lib/libefreet_trash.so.1.15.0
     4 /usr/local/lib/libefreet_mime.so.1.15.0
     4 /usr/local/lib/libeeze.so.1.15.0
     4 /usr/local/lib/libeet.so.1.15.0
     4 /usr/local/lib/libecore_ipc.so.1.15.0
     4 /usr/local/lib/libecore_input.so.1.15.0
     4 /usr/local/lib/libecore_input_evas.so.1.15.0
     4 /usr/local/lib/libecore_imf.so.1.15.0
     4 /usr/local/lib/libecore_imf_evas.so.1.15.0
     4 /usr/local/lib/libecore_file.so.1.15.0
     4 /usr/local/lib/libecore_drm.so.1.15.0
     4 /usr/local/lib/evas/modules/engines/software_x11/v-1.15/module.so
     4 /usr/local/lib/ecore/system/upower/v-1.15/module.so
     4 /usr/local/lib/ecore_imf/modules/xim/v-1.15/module.so
     4 /usr/lib/scim-1.0/1.4.0/IMEngine/socket.so
     4 /usr/lib/scim-1.0/1.4.0/IMEngine/socket.so
     4 /usr/lib/scim-1.0/1.4.0/Config/socket.so
     4 /usr/lib/scim-1.0/1.4.0/Config/socket.so
     4 /usr/lib/libz.so.1.2.8
     4 /usr/lib/libz.so.1.2.8
     4 /usr/lib/libXtst.so.6.1.0
     4 /usr/lib/libXtst.so.6.1.0
     4 /usr/lib/libXss.so.1.0.0
     4 /usr/lib/libXss.so.1.0.0
     4 /usr/lib/libXrender.so.1.3.0
     4 /usr/lib/libXrender.so.1.3.0
     4 /usr/lib/libXrandr.so.2.2.0
     4 /usr/lib/libXrandr.so.2.2.0
     4 /usr/lib/libXp.so.6.2.0
     4 /usr/lib/libXp.so.6.2.0
     4 /usr/lib/libxkbcommon.so.0.0.0
     4 /usr/lib/libXi.so.6.1.0
     4 /usr/lib/libXi.so.6.1.0
     4 /usr/lib/libXinerama.so.1.0.0
     4 /usr/lib/libXinerama.so.1.0.0
     4 /usr/lib/libXfixes.so.3.1.0
     4 /usr/lib/libXfixes.so.3.1.0
     4 /usr/lib/libXext.so.6.4.0
     4 /usr/lib/libXext.so.6.4.0
     4 /usr/lib/libXdmcp.so.6.0.0
     4 /usr/lib/libXdmcp.so.6.0.0
     4 /usr/lib/libXdamage.so.1.1.0
     4 /usr/lib/libXdamage.so.1.1.0
     4 /usr/lib/libXcursor.so.1.0.2
     4 /usr/lib/libXcursor.so.1.0.2
     4 /usr/lib/libXcomposite.so.1.0.0
     4 /usr/lib/libXcomposite.so.1.0.0
     4 /usr/lib/libxcb.so.1.1.0
     4 /usr/lib/libxcb.so.1.1.0
     4 /usr/lib/libXau.so.6.0.0
     4 /usr/lib/libXau.so.6.0.0
     4 /usr/lib/libwayland-server.so.0.1.0
     4 /usr/lib/libwayland-cursor.so.0.0.0
     4 /usr/lib/libwayland-client.so.0.3.0
     4 /usr/lib/libvorbis.so.0.4.7
     4 /usr/lib/libvorbis.so.0.4.7
     4 /usr/lib/libvorbisenc.so.2.0.10
     4 /usr/lib/libuuid.so.1.3.0
     4 /usr/lib/libuuid.so.1.3.0
     4 /usr/lib/libunwind-x86_64.so.8.0.1
     4 /usr/lib/libunwind-x86_64.so.8.0.1
     4 /usr/lib/libunwind.so.8.0.1
     4 /usr/lib/libunwind.so.8.0.1
     4 /usr/lib/libudev.so.1.6.2
     4 /usr/lib/libudev.so.1.6.2
     4 /usr/lib/libsystemd.so.0.5.1
     4 /usr/lib/libsystemd.so.0.5.1
     4 /usr/lib/libsndfile.so.1.0.25
     4 /usr/lib/librt-2.21.so
     4 /usr/lib/librt-2.21.so
     4 /usr/lib/libresolv-2.21.so
     4 /usr/lib/libresolv-2.21.so
     4 /usr/lib/libpulse.so.0.18.0
     4 /usr/lib/libpulse.so.0.18.0
     4 /usr/lib/libpthread-2.21.so
     4 /usr/lib/libpthread-2.21.so
     4 /usr/lib/libpng16.so.16.16.0
     4 /usr/lib/libpng16.so.16.16.0
     4 /usr/lib/libpcre.so.1.2.4
     4 /usr/lib/libpcre.so.1.2.4
     4 /usr/lib/libogg.so.0.8.2
     4 /usr/lib/libogg.so.0.8.2
     4 /usr/lib/libnss_files-2.21.so
     4 /usr/lib/libnss_files-2.21.so
     4 /usr/lib/libnsl-2.21.so
     4 /usr/lib/libnsl-2.21.so
     4 /usr/lib/libmtdev.so.1.0.0
     4 /usr/lib/libmtdev.so.1.0.0
     4 /usr/lib/libmount.so.1.1.0
     4 /usr/lib/libmount.so.1.1.0
     4 /usr/lib/libm-2.21.so
     4 /usr/lib/libm-2.21.so
     4 /usr/lib/liblzma.so.5.2.0
     4 /usr/lib/liblzma.so.5.2.0
     4 /usr/lib/liblz4.so.1.5.0
     4 /usr/lib/liblz4.so.1.5.0
     4 /usr/lib/libluajit-5.1.so.2.0.3
     4 /usr/lib/libltdl.so.7.3.1
     4 /usr/lib/libltdl.so.7.3.1
     4 /usr/lib/libLinearMath.so.2.82
     4 /usr/lib/libjson-c.so.2.0.1
     4 /usr/lib/libjson-c.so.2.0.1
     4 /usr/lib/libjpeg.so.8.0.2
     4 /usr/lib/libinput.so.7.1.1
     4 /usr/lib/libinput.so.7.1.1
     4 /usr/lib/libharfbuzz.so.0.938.0
     4 /usr/lib/libgthread-2.0.so.0.4200.1
     4 /usr/lib/libgthread-2.0.so.0.4200.1
     4 /usr/lib/libgraphite2.so.3.0.1
     4 /usr/lib/libgpg-error.so.0.14.0
     4 /usr/lib/libgpg-error.so.0.14.0
     4 /usr/lib/libglib-2.0.so.0.4200.1
     4 /usr/lib/libglib-2.0.so.0.4200.1
     4 /usr/lib/libglapi.so.0.0.0
     4 /usr/lib/libgcrypt.so.20.0.2
     4 /usr/lib/libgcc_s.so.1
     4 /usr/lib/libgbm.so.1.0.0
     4 /usr/lib/libgbm.so.1.0.0
     4 /usr/lib/libfribidi.so.0.3.5
     4 /usr/lib/libfribidi.so.0.3.5
     4 /usr/lib/libfreetype.so.6.11.4
     4 /usr/lib/libfontconfig.so.1.8.0
     4 /usr/lib/libFLAC.so.8.3.0
     4 /usr/lib/libFLAC.so.8.3.0
     4 /usr/lib/libffi.so.6.0.4
     4 /usr/lib/libffi.so.6.0.4
     4 /usr/lib/libexpat.so.1.6.0
     4 /usr/lib/libevdev.so.2.1.5
     4 /usr/lib/libdrm.so.2.4.0
     4 /usr/lib/libdrm.so.2.4.0
     4 /usr/lib/libdl-2.21.so
     4 /usr/lib/libdl-2.21.so
     4 /usr/lib/libdbus-1.so.3.8.11
     4 /usr/lib/libdbus-1.so.3.8.11
     4 /usr/lib/libcap.so.2.24
     4 /usr/lib/libBulletSoftBody.so.2.82
     4 /usr/lib/libBulletDynamics.so.2.82
     4 /usr/lib/libBulletCollision.so.2.82
     4 /usr/lib/libblkid.so.1.1.0
     4 /usr/lib/libattr.so.1.1.0
     4 /usr/lib/libattr.so.1.1.0
     4 /usr/lib/libasyncns.so.0.3.1
     4 /usr/lib/libasyncns.so.0.3.1
     4 /usr/lib/ld-2.21.so
     4 /usr/lib/ld-2.21.so

that's a total of almost 2mb of memory just for what we link to. this is
multiplied per process. 2mb (almost) per process run. that's crazy. we need to
do something about this.

to a large extent i think a big offender is eo (previous email). we need to
wait on eo stability and fix this. those 200+k for elm i think is all eo
classes. that's a guess. (i haven't found something to map symbol addresses to
pages in ram yet that are dirty).

other than that we have osmesa - why is it being even loaded at all when it's
not even used there in the app. until it's used - zero need to even dlopen
osmesa at all.

and as for the rest - not sure where they all come from, but we could nuke most
of them by manually dlopen+dlsym ourselves like we already do with libcurl.
only dlopen when actually needed and not before.

other than this ... massif and friends + profiling definitely needs doing. we
consume huge blobs of memory for edje.

i think it's about time we sit down for a while and over a few releases do very
little in new features and simply clean house. trim mem usage. ESPECIALLY
private mem usage. refactor code to remove duplication. fix bugs, fix build
system etc.

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    [email protected]


------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to