experimentally add mallopt tweaks for reduced memory consumption
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 6 Sep 2009 00:12:28 +0000 (02:12 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 6 Sep 2009 00:12:28 +0000 (02:12 +0200)
function                                             old     new   delta
mallopt                                                -     126    +126
main                                                  91     117     +26
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/0 up/down: 152/0)             Total: 152 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/appletlib.c

index 814b8bcd22d62742fe625cb1164de30248960911..0ebea4f4415817e92cd2af090fc5244f909e10d5 100644 (file)
@@ -28,6 +28,8 @@
  */
 
 #include <assert.h>
+#include <malloc.h>
+#include <sys/user.h> /* PAGE_SIZE */
 #include "busybox.h"
 
 
@@ -763,6 +765,24 @@ int lbb_main(char **argv)
 int main(int argc UNUSED_PARAM, char **argv)
 #endif
 {
+       /* Tweak malloc for reduced memory consumption */
+#ifndef PAGE_SIZE
+# define PAGE_SIZE (4*1024) /* guess */
+#endif
+#ifdef M_TRIM_THRESHOLD
+       /* M_TRIM_THRESHOLD is the maximum amount of freed top-most memory
+        * to keep before releasing to the OS
+        * Default is way too big: 256k
+        */
+       mallopt(M_TRIM_THRESHOLD, 2 * PAGE_SIZE);
+#endif
+#ifdef M_MMAP_THRESHOLD
+       /* M_MMAP_THRESHOLD is the request size threshold for using mmap()
+        * Default is too big: 256k
+        */
+       mallopt(M_MMAP_THRESHOLD, 8 * PAGE_SIZE - 256);
+#endif
+
 #if defined(SINGLE_APPLET_MAIN)
        /* Only one applet is selected by the user! */
        /* applet_names in this case is just "applet\0\0" */