[389-ds-base/el6] Ticket #386 - Overconsumption of memory with large cache

Richard Allen Megginson rmeggins at fedoraproject.org
Wed Jan 23 21:44:41 UTC 2013


commit 9e34db65e14134bf188162b1efe2c4ce10563579
Author: Rich Megginson <rmeggins at redhat.com>
Date:   Thu Sep 6 12:13:40 2012 -0600

    Ticket #386 - Overconsumption of memory with large cache

 ...Overconsumption-of-memory-with-large-cach.patch |   55 ++++++++++++++++++++
 389-ds-base.spec                                   |    7 ++-
 2 files changed, 61 insertions(+), 1 deletions(-)
---
diff --git a/0000-Ticket-386-Overconsumption-of-memory-with-large-cach.patch b/0000-Ticket-386-Overconsumption-of-memory-with-large-cach.patch
new file mode 100644
index 0000000..12643a7
--- /dev/null
+++ b/0000-Ticket-386-Overconsumption-of-memory-with-large-cach.patch
@@ -0,0 +1,55 @@
+From 6d6fa2888fc450dd21a36445d9defa93ea2155ee Mon Sep 17 00:00:00 2001
+From: Mark Reynolds <mreynolds at redhat.com>
+Date: Thu, 6 Sep 2012 13:21:27 -0400
+Subject: [PATCH] Ticket 386 - Overconsumption of memory with large cachememsize and heavy use of ldapmodify
+
+Bug Description:  With very large entry cache setting, the memory process grows using just
+                  simple ldapmodifies.
+
+Fix Description:  The growth is caused by memory fragmentation.   On Linux, we can set a
+                  malloc option that impacts this fragmentation, but impacts performance.
+
+https://fedorahosted.org/389/ticket/386
+
+Reviewed by: richm(Thanks!)
+(cherry picked from commit 20dc4bc00b2660e951c1b50008115ef5611a5e24)
+---
+ ldap/servers/slapd/main.c |   15 ++++++++++++++-
+ 1 files changed, 14 insertions(+), 1 deletions(-)
+
+diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
+index 3455852..285cf2c 100644
+--- a/ldap/servers/slapd/main.c
++++ b/ldap/servers/slapd/main.c
+@@ -40,7 +40,7 @@
+ #  include <config.h>
+ #endif
+ 
+-
++#include <malloc.h>
+ #include <ldap.h>
+ #undef OFF
+ #undef LITTLE_ENDIAN
+@@ -662,6 +662,19 @@ main( int argc, char **argv)
+ 		ldap_set_option( 0x1, LDAP_OPT_MEMALLOC_FN_PTRS, &memalloc_fns );
+ 	}
+ #endif
++
++#ifdef LINUX
++	char *m = getenv( "SLAPD_MXFAST" );
++	if(m){
++		int val = atoi(m);
++		int max = 80 * (sizeof(size_t) / 4);
++
++		if(val >= 0 && val <= max){
++			mallopt(M_MXFAST, val);
++		}
++	}
++#endif
++
+ 	/*
+ 	 * Initialize NSPR very early. NSPR supports implicit initialization,
+ 	 * but it is not bulletproof -- so it is better to be explicit.
+-- 
+1.7.1
+
diff --git a/389-ds-base.spec b/389-ds-base.spec
index 7f7a41f..7b64bb2 100644
--- a/389-ds-base.spec
+++ b/389-ds-base.spec
@@ -16,7 +16,7 @@
 Summary:          389 Directory Server (base)
 Name:             389-ds-base
 Version:          1.2.10.14
-Release:          %{?relprefix}1%{?prerel}%{?dist}
+Release:          %{?relprefix}2%{?prerel}%{?dist}
 License:          GPLv2 with exceptions
 URL:              http://port389.org/
 Group:            System Environment/Daemons
@@ -88,6 +88,7 @@ Source0:          http://port389.org/sources/%{name}-%{version}%{?prerel}.tar.bz
 # 389-ds-git.sh should be used to generate the source tarball from git
 Source1:          %{name}-git.sh
 Source2:          %{name}-devel.README
+Patch0:           0000-Ticket-386-Overconsumption-of-memory-with-large-cach.patch
 
 %description
 389 Directory Server is an LDAPv3 compliant server.  The base package includes
@@ -134,6 +135,7 @@ Development Libraries and headers for the 389 Directory Server base package.
 %prep
 %setup -q -n %{name}-%{version}%{?prerel}
 cp %{SOURCE2} README.devel
+%patch0 -p1
 
 %build
 %if %{use_openldap}
@@ -271,6 +273,9 @@ fi
 %{_libdir}/%{pkgname}/libslapd.so.*
 
 %changelog
+* Thu Sep  6 2012 Rich Megginson <rmeggins at redhat.com> - 1.2.10.14-2
+- Ticket #386 - Overconsumption of memory with large cache
+
 * Wed Jul 18 2012 Rich Megginson <rmeggins at redhat.com> - 1.2.10.14-1
 - Ticket #410 - Referential integrity plug-in does not work when update interval is not zero
 


More information about the scm-commits mailing list