DPDK UIO PMD

本人对二者的理解都不是很深,只懂一些概念性的问题,因此就在一个文档里简单介绍一下。

PMD

PMD(Poll Mode Driver)轮询模式驱动并不是一个实际的功能,更类似于DPDK给用户提供的一种解决方案。与之相关的最常用的函数有rte_eth_rx_burst和rte_eth_tx_burst。
用户会在进程中写一个死循环,不断轮询rx_busrt函数从各个设备的接收队列中获取mbuf的地址。
在获取完成之后会对mbuf中的数据进行处理,处理完成之后再将其投入tx_burst函数通知网卡发送。
典型的代码架构如下:

#define MAX_PACKET_BURST 64
#define MAX_PORT_ID 4

void rtc_loop()
{
	u8 port;
	u32 nb_succs;
    u32 lcore_id = rte_lcore_id();
    struct rte_mbuf *mbufs_burst[MAX_PACKET_BURST];
    while (1) {
        for (port = 0; port < MAX_PORT_ID; port++) {
            nb_succs = rte_eth_rx_burst(port, rx_queue_table[lcore_id], mbufs_burst, MAX_PACKET_BURST);
			// do something with mbufs_burst
			nb_succs = rte_eth_tx_burst(port_id, tx_queue_table[lcore_id], mbufs_burst, nb_succs);
        }
    }
}

UIO

UIO(UserSpace IO)用户空间IO,可以使用户态进程直接访问硬件资源,无需经过内核。
例如对网络包的处理上,可以让数据包不过内核的协议栈,并且消除数据包从内核态到用户态的拷贝。
UIO相当于是一种能力,让用户访问硬件的能力。具体怎么实现的我暂时还不清楚,好像也不是我该学习的范畴,等以后有机会再具体了解吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值