【发布时间】:2021-09-13 10:19:02
【问题描述】:
基于 DPDK API 文档 rte_malloc_dump_stats 被称为 将指定类型转储到文件中。但是自定义应用程序或app/test/test_malloc.c 都没有共享所需的结果。
期望:对于 DPDK API rte_malloc、rte_calloc 和 rte_zmalloc 是用const char *type 创建的。可以使用rte_malloc_dump_stats 查询特定const char *type 的统计信息
当前结果:DPDK API rte_malloc_dump_stats 给出了整体堆使用情况,没有任何关于哪个“类型”使用多少的信息。
问题:DPDK 中是否有任何其他 API 可用于跟踪大页面 malloc 的使用情况?任何 DPDK 补丁都会有用吗?
示例代码流程:
/* with huge page */
rte_eal_init
/* create memory location for various object type */
rte_malloc ("objecttype-1")
rte_malloc ("objecttype-2")
rte_malloc ("objecttype-3")
rte_malloc ("objecttype-4")
/* dump stats for object type - 1 */
rte_malloc_dump_stats ("objecttype-1")
我的应用程序调用了 rte_calloc,它调用了一些其他内部子例程,最后调用了 heap_alloc(其中的“类型”似乎是 unsed)。 heap_alloc(struct malloc_heap *heap, const char *type __rte_unused, size_t size, unsigned int flags, size_t align, size_t bound, bool contig)。堆分配目前似乎忽略了“类型”参数。如何跟踪堆内存使用情况?
【问题讨论】:
-
函数 heap_alloc 是一个内部静态函数,如果你的意图是跟踪内存分配和释放,则使用传递给 rte_malloc/rte_calloc/rte_zmalloc 的特定名称。为了清楚起见,我要求编辑问题。有一种方法可以根据名称进行跟踪
-
感谢您的回复。如何跟踪每种类型的内存分配?应用程序可以使用哪些 API 来分配和转储统计信息? [ rte_calloc 与 malloc_dump_stats - 组合无助于跟踪每个“类型”分配统计信息]
-
感谢更新,DPDK 中没有自动执行此操作的 API 我可以共享代码 sn-p(不修改库)我用来实现相同目的的代码。这对你有用吗?
-
当然。这会有所帮助。请分享。让我检查一下并恢复。
-
我已更新问题以反映真实问题。请接受更改以确认这是否是有意的问题。它会让事情更容易回答。
标签: dpdk