上篇文章DPDK抓包工具dpdk-dumpcap的使用中讲到了dpdk-dumpcap抓包工具的用法,今天我们来看一下DPDK的内存池。
DPDK提供了内存池的接口,可以很方便地让我们进行内存节点的管理分配,但是如果使用不当,可能会造成很隐蔽的问题。
下面讲到的是DPDK内存池节点重复释放导致的问题。
主要测试代码如下:
void dpdk_mempool_test()
{
int rc = -1;
//申请两个节点,10个字节大小的内存池
struct rte_mempool *pool_id = (void *)rte_mempool_create("pool_test", 2, 10, 0, 0, NULL, NULL, NULL, NULL,
rte_socket_id(), MEMPOOL_F_NO_IOVA_CONTIG|MEMPOOL_F_SC_GET|MEMPOOL_F_SP_PUT);
void* mem1 = NULL;
rc = rte_mempool_get((struct rte_mempool