aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Yourtchenko <ayourtch@gmail.com>2019-03-18 10:49:56 +0100
committerAndrew Yourtchenko <ayourtch@gmail.com>2019-03-18 10:49:56 +0100
commita990a2e4930014f025338d8ce186abfa12ec09ff (patch)
treebb2dd7e31e321dc3af0c3011533ad65b2760c79e
parent97f8ae923a37d2682cdf0a295fc2dfe8ab02db38 (diff)
vnet: disable the expansion of the heap allocated for classifier tables
Classifier data structures assume the contiguous chunk of memory within the heap. Default heap flags for dlmalloc allow for heap growth. When that happens, the memory becomes discontiguous. This results in symptoms that are more cryptic than necessary. Disabling the expand makes the session allocation behavior of the classifier the same for dlmalloc as for the legacy allocator. Change-Id: I2f725b5f78a31a8eaa5f5a20dfdd7e1129662f6a Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
-rw-r--r--src/vnet/classify/vnet_classify.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/vnet/classify/vnet_classify.c b/src/vnet/classify/vnet_classify.c
index c4f0c1ff7f6..d8a5a45e252 100644
--- a/src/vnet/classify/vnet_classify.c
+++ b/src/vnet/classify/vnet_classify.c
@@ -144,6 +144,8 @@ vnet_classify_new_table (vnet_classify_main_t * cm,
t->mheap = mheap_alloc (0 /* use VM */ , memory_size);
#else
t->mheap = create_mspace (memory_size, 1 /* locked */ );
+ /* classifier requires the memory to be contiguous, so can not expand. */
+ mspace_disable_expand (t->mheap);
#endif
vec_validate_aligned (t->buckets, nbuckets - 1, CLIB_CACHE_LINE_BYTES);