深入浅出DPDK-第一章

1.DPDK概述

用软件的方式在通用多核处理器上,演绎着数据包处理的新篇章

2.数据包处理的主流硬件平台

1)硬件加速器

2)网络处理器

3)多核处理器

DPDK主要是以IA(Intel architecture)多核处理器为目标平台

3.IA本身衍化过程

问题1:CPU核数增多,然后内核驱动的收发包处理和用户态线程,依旧由操作系统调度执行,这个会造成什么新的问题?

4.DPDK大神来啦

几个技术点

1)轮询

2)用户态驱动:既避免了不必要的内存拷贝,又避免了系统调用

3)亲和性与独占:特定任务指定在某个核上工作,避免了线程在不同核间频繁切换,核间切换容易导致因cache miss 和 cache write back 造成的大量性能损失

4)降低访存开销:

5)软件调优

6)利用IA新硬件技术

7)充分挖掘网卡的潜能

5.DPDK 不断升级 的方法论

1)针对包处理能力的天花板

DPDK加速网络节点:DPDK系统报文吞吐能力上限,已经不再受限于CPU的核数,而是系统所能提供的所有 PCIe LANE的带宽,能插入多少个高速以太网接口卡

DPDK加速计算节点

DPDK加速存储节点

2)针对转发吞吐能力的天花板

6.DPDK实例

1)helloworld:启动基础运行环境

启动基础运行环境

编译可以使用的core

在每个core上,启动被指定的线程

int main(int argc, char const *argv[])
{
	
	int ret;
	unsigned lcore_id;

	ret = rte_eal_init(argc, argv); // 启动基础运行环境
	if(ret < 0)
		rte_panic("Cannot init EAL\n")

	/*call lcore_hello() on every slave lcore*/
	RTE_LCORE_FOREACH_SLAVE(lcore_id) { // 遍历所有ELA指定可以使用的lcore
		rte_eal_remote_launch(lcore_hello,NULL,lcore_id); // 在每个核上,启动被指定的线程
	}

	/* call it on master lcore too */
	lcore_hello(NULL)

	rte_eal_mp_wait_lcore();

	return 0;
}

猜你喜欢

转载自blog.csdn.net/nature_ph/article/details/108984894