malloc: add name to malloc heaps
We will need to refer to external heaps in some way. While we use heap ID's internally, for external API use it has to be something more user-friendly. So, we will be using a string to uniquely identify a heap. This breaks the ABI, so document the change. Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
This commit is contained in:
parent
f50c6c4bd1
commit
d14c148e79
@ -179,6 +179,7 @@ ABI Changes
|
||||
ID the malloc heap belongs to
|
||||
- structure ``rte_mem_config`` has had its ``malloc_heaps`` array
|
||||
resized from ``RTE_MAX_NUMA_NODES`` to ``RTE_MAX_HEAPS`` value
|
||||
- structure ``rte_malloc_heap`` now has a ``heap_name`` member
|
||||
|
||||
|
||||
Removed Items
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
/* Number of free lists per heap, grouped by size. */
|
||||
#define RTE_HEAP_NUM_FREELISTS 13
|
||||
#define RTE_HEAP_NAME_MAX_LEN 32
|
||||
|
||||
/* dummy definition, for pointers */
|
||||
struct malloc_elem;
|
||||
@ -28,6 +29,7 @@ struct malloc_heap {
|
||||
unsigned alloc_count;
|
||||
unsigned int socket_id;
|
||||
size_t total_size;
|
||||
char name[RTE_HEAP_NAME_MAX_LEN];
|
||||
} __rte_cache_aligned;
|
||||
|
||||
#endif /* _RTE_MALLOC_HEAP_H_ */
|
||||
|
@ -131,7 +131,6 @@ malloc_add_seg(const struct rte_memseg_list *msl,
|
||||
malloc_heap_add_memory(heap, found_msl, ms->addr, len);
|
||||
|
||||
heap->total_size += len;
|
||||
heap->socket_id = msl->socket_id;
|
||||
|
||||
RTE_LOG(DEBUG, EAL, "Added %zuM to heap on socket %i\n", len >> 20,
|
||||
msl->socket_id);
|
||||
@ -1024,6 +1023,22 @@ int
|
||||
rte_eal_malloc_heap_init(void)
|
||||
{
|
||||
struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;
|
||||
unsigned int i;
|
||||
|
||||
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
|
||||
/* assign names to default DPDK heaps */
|
||||
for (i = 0; i < rte_socket_count(); i++) {
|
||||
struct malloc_heap *heap = &mcfg->malloc_heaps[i];
|
||||
char heap_name[RTE_HEAP_NAME_MAX_LEN];
|
||||
int socket_id = rte_socket_id_by_idx(i);
|
||||
|
||||
snprintf(heap_name, sizeof(heap_name) - 1,
|
||||
"socket_%i", socket_id);
|
||||
strlcpy(heap->name, heap_name, RTE_HEAP_NAME_MAX_LEN);
|
||||
heap->socket_id = socket_id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (register_mp_requests()) {
|
||||
RTE_LOG(ERR, EAL, "Couldn't register malloc multiprocess actions\n");
|
||||
|
@ -202,6 +202,7 @@ rte_malloc_dump_stats(FILE *f, __rte_unused const char *type)
|
||||
malloc_heap_get_stats(heap, &sock_stats);
|
||||
|
||||
fprintf(f, "Heap id:%u\n", heap_id);
|
||||
fprintf(f, "\tHeap name:%s\n", heap->name);
|
||||
fprintf(f, "\tHeap_size:%zu,\n", sock_stats.heap_totalsz_bytes);
|
||||
fprintf(f, "\tFree_size:%zu,\n", sock_stats.heap_freesz_bytes);
|
||||
fprintf(f, "\tAlloc_size:%zu,\n", sock_stats.heap_allocsz_bytes);
|
||||
|
Loading…
Reference in New Issue
Block a user