Commit Graph

25 Commits

Author SHA1 Message Date
Damjan Marion
4a251d0a9c vppinfra: fix tests
Type: fix
Change-Id: If59a66aae658dd35dbcb4987ab00c306b3c6e2e2
Signed-off-by: Damjan Marion <damarion@cisco.com>
2021-05-06 16:29:00 +00:00
Ole Troan
a606d92107 stats: memory heap counters
- Add counters for the main-heap
- Add additional counters per heap:
  STAT_MEM_TOTAL
  STAT_MEM_USED,
  STAT_MEM_FREE,
  STAT_MEM_USED_MMAP,
  STAT_MEM_TOTAL_ALLOC,
  STAT_MEM_FREE_CHUNKS,
  STAT_MEM_RELEASABLE,

The per-heap counters are organised as a two dimensional vector.
total, used and free are directly available via symlinks.

vpp_get_stats ls "^/mem/"
/mem/stat segment
/mem/stat segment/total
/mem/stat segment/used
/mem/stat segment/free
/mem/main heap
/mem/main heap/total
/mem/main heap/used
/mem/main heap/free

vpp_get_stats dump "^/mem/main\ heap$"
[0 @ 0]: 1073741776 packets /mem/main heap
[1 @ 0]: 91586688 packets /mem/main heap
[2 @ 0]: 982155088 packets /mem/main heap
[3 @ 0]: 0 packets /mem/main heap
[4 @ 0]: 1073741776 packets /mem/main heap
[5 @ 0]: 433 packets /mem/main heap
[6 @ 0]: 981708688 packets /mem/main heap

Type: feature
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: I36725dde3b4b3befd27a8b4d3ba931f2d3b627cc
2021-05-06 14:19:28 +00:00
Benoît Ganne
ec4749a20f vpp: use vpp heap for libc
This makes libc use vpp main heap instead of the default libc heap.
This gives better visibility (accounting, tracing) on allocations
happening in external libraries called from vpp (eg. OpenSSL).

Type: feature

Change-Id: I5d8a673472145a4e090bedb443b8c58a967d1cca
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2020-11-10 17:13:53 +00:00
Damjan Marion
dae1c7ed38 vppinfra: explicitly export symbols
Type: improvement
Change-Id: I57a9f85f7df1fc48656b72592349f4c544302f77
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-17 21:01:42 +00:00
Damjan Marion
bfa75d6b92 vppinfra: add heap header in front of dlmalloc space
This patch adds smal header in front of dlmalloc space, and it stores
some additional information about the heap.

Immediate benefit of this patch is that we know the underlying page size
si we can display heap page statistics / real memory usage.

Type: improvement
Change-Id: Ibd6989cc2f2f64630ab08734c9552e15029c5f3f
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-06 23:47:33 +02:00
Damjan Marion
2bc1af5578 vppinfra: use clib_mem_create_heap() to create numa heap(s)
Type: improvement
Change-Id: Ie04302c576869bc7bfaa9f13ed2ea8a403a393d4
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-10-02 15:04:17 +02:00
Damjan Marion
4537c30925 vppinfra: don't call dlmalloc API directly from the code
- it is confusing from end consumer perspective that some thing
   is somewhere called heap and somewhere mspace

 - this is base for additional work where heap pointer is not the same
   thing like mspace

Type: improvement
Change-Id: I644d5a0de17690d65d164d8cec3c5654571629ef
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-28 20:34:07 +02:00
Damjan Marion
bdbb0c5436 stats: configurable page size
Type: improvement
Change-Id: I9973bce20a0a2a8a7e227cf96518de5b79374425
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-17 21:38:37 +02:00
Damjan Marion
6bfd07670b vppinfra: support main heap with different page sizes
Type: improvement
Change-Id: I381fc3dec8580208d0e24637d791af69011aa83b
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-17 12:38:41 +02:00
Damjan Marion
c63e2a4f98 vppinfra: detect memory attributes on clib_mem_init
Type: improvement
Change-Id: I298aadfdf17d98dfb1ada1ec4f87e0821e6aeb7f
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-17 10:38:23 +00:00
Damjan Marion
57d1ec00a9 vppinfra: introduce clib_mem_main
To hold more data later...

Type: improvement
Change-Id: I4006d22dcacd788988c4907f2c263fd4e4a9d398
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-09-16 21:19:51 +02:00
Dave Barach
2b79341dca vppinfra: add clib_mem_destroy_mspace(void *ms)
Also clib_mem_destroy() to destroy the current mspace.

Handy when an application wants to make a memory allocation arena
disappear.

Type: improvement

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I020db902fbe2473545506fecbc230c2b048992f8
2020-08-28 15:31:07 +00:00
Damjan Marion
cbe053e14f vppinfra: remove include
Type: refactor
Change-Id: Iea83e0ea8a6e13f3c9ece1a13f891c1fa0956711
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-05-22 21:11:01 +00:00
Dave Barach
2fef3dfa5c vppinfra: deprecate CLIB_VEC64
Type: refactor
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: Id1e7c0926036db4601c91438397ceed22381fc07
2020-02-23 17:48:53 +00:00
Florin Coras
4c95995749 vppinfra: use vm memory allocator for numa mapping
Type: refactor

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I13b239cd572ae6dfaec07019d3d9b7c0ed3edcfa
2020-02-10 20:12:40 +00:00
Dave Barach
a690fdbfe1 vppinfra: numa vector placement support
Type: feature

Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I7e7d95a089dd849c1f01ecea84529d8dbf239f21
2020-02-05 23:38:56 +00:00
Benoît Ganne
b2f09146c9 misc: address sanitizer: fix instrumentation
Type: fix

Change-Id: I99e3951f8cfb7ab9d2f0a7dcee92199eab29043c
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-12-17 17:58:47 +00:00
Benoît Ganne
9fb6d40eb3 misc: add address sanitizer heap instrumentation
Introduce AddressSanitizer support: https://github.com/google/sanitizers/
This starts with heap instrumentation. vlib_buffer, bihash and stack
instrumentation should follow.

Type: feature

Change-Id: I7f20e235b2f79db72efd0e756f22c75f717a9884
Signed-off-by: Benoît Ganne <bganne@cisco.com>
2019-11-27 10:50:28 +00:00
Ole Troan
92e3082199 stats: fix memory leakage when adding / deleting interfaces
This fixes two leaks in registering errors in the stats segment.
- The error name created by vlib_register_errors() was not freed.
- Duplicate error names (when interface readded) was added to the vector.

This fix also adds memory usage statistics for the statistics segment
as /mem/statseg/{used, total}

Change-Id: Ife98d5fc5baef5bdae426a5a1eef428af2b9ab8a
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
2019-06-18 13:01:15 +00:00
Dave Barach
d67a428b3b vlib: add "memory-trace stats-segment"
Type: feature

Change-Id: Ie020fd7e2618284a63efbeb9895068f27c0fb9ab
Signed-off-by: Dave Barach <dave@barachs.net>
2019-06-16 10:24:43 -04:00
Damjan Marion
9787f5f90a vppinfra: autodetect default hugepage size
Change-Id: I5ff713ad0b254c74c5622e3b9425cca365b5ee97
Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-10-24 13:26:41 +00:00
Dave Barach
b7b929931a c11 safe string handling support
Change-Id: Ied34720ca5a6e6e717eea4e86003e854031b6eab
Signed-off-by: Dave Barach <dave@barachs.net>
2018-10-23 13:06:46 +00:00
Damjan Marion
4dffd1c998 Compile vppinfra on macOS
Add missing calls to clib_mem_init to vppinfra test codes.

Change-Id: I53ffc6fc287d1a378065bb86c18b6e995ecdb775
Signed-off-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Dave Barach <dave@barachs.net>
2018-09-03 16:51:40 +00:00
Dave Barach
af7dd5b32e Rename struct mallinfo -> struct dlmallinfo
Also: don't #include /usr/include/malloc.h in dlmalloc.h

Change-Id: Ic73ff8862cc8aba371488b912255e28dd96374ff
Signed-off-by: Dave Barach <dave@barachs.net>
2018-08-24 11:04:18 +00:00
Dave Barach
6a5adc3695 Add config option to use dlmalloc instead of mheap
Configure w/ --enable-dlmalloc, see .../build-data/platforms/vpp.mk

src/vppinfra/dlmalloc.[ch] are slightly modified versions of the
well-known Doug Lea malloc. Main advantage: dlmalloc mspaces have no
inherent size limit.

Change-Id: I19b3f43f3c65bcfb82c1a265a97922d01912446e
Signed-off-by: Dave Barach <dave@barachs.net>
2018-07-18 12:09:42 +00:00