]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: pattern: call malloc_trim() on pat_ref_reload()
authorWilly Tarreau <w@1wt.eu>
Tue, 3 Nov 2020 14:55:35 +0000 (15:55 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 5 Nov 2020 18:27:08 +0000 (19:27 +0100)
This is one case where we may release large amounts of data at once. Tests
show that without this, after 10 full reloads of an ACL containing  1M IP
addresses, the memory usage grew and stabilized around 1.7 GB of RSS. With
this change, it stays around 260 MB and is stable across reloads.

src/pattern.c

index 4a3fe297eb859f057634bae921d3d78970256ad6..e0285459b9606ecdbbb15a6797407c10d63535ca 100644 (file)
@@ -2101,6 +2101,10 @@ void pat_ref_reload(struct pat_ref *ref, struct pat_ref *replace)
                HA_RWLOCK_WRUNLOCK(PATEXP_LOCK, &expr->lock);
        }
        HA_SPIN_UNLOCK(PATREF_LOCK, &ref->lock);
+
+#if defined(HA_HAVE_MALLOC_TRIM)
+       malloc_trim(0);
+#endif
 }
 
 /* This function prunes all entries of <ref>. This function