dpdk几个特性:
1)PMD
2)igb_uio和uio互动配合,解决网卡硬中断处理流程
3)hugepage
4)无锁队列
5)cpu亲和性绑定
6)kni技术
7)pipe-line处理模型
每一个分开说,都有很多东西,其实面试过程中很多人都说使用过DPDK,但是不知道为什么使用DPDK。
从服务器角度,是为了解决高并发性能问题,传统的程序架构有那些问题呢?
1)一个socket 流程,数据需要拷贝两次(这个很多资料这么写,其实不准确),准确是dma一次,kernel到用户态一次,
dma拷贝过程是没有cpu参与的,但是第二次是cpu执行。 dpdk可以解决第二次拷贝问题,实现零拷贝,零拷贝是指没有cpu参与。
2)网卡收发包会产生很多软中断,这个需要提前学一下网卡的收发包原理,i40e和ixgbe等。 dpdk通过PMD机制,解决软中断问题。
3)程序执行起来,相互间的切换。dpdk通过cpu亲和性,提高访问的一致性,减少cache miss。这里和大页内存使用有关系,需要了解cpu取址过程,memery-> l1 l2 l3 cache -> 寄存器
然后失败了,查MMU,这时查tlb。这个过程了解了,就是知道为什么使用大页内存了。这个地方我也是晕的!TLB是一个硬件设备,处于CPU和MMU之间,主要缓存页表信息,有一套更新和管理积极,如果想搞懂大页原理,需要把这关流程梳理,后续有时间梳理。
4)pipe-line模式,这个是面试时候经常问道,深入浅出书中,详细介绍了两种模型,其中一种模型就是这个,简单理解就是流水线模式。目前使用dpdk的云服务器,都是使用这种模式。相对比较比较好理解,其实重要的为什么选这个模型。
现在不做dpdk了,很多问题也没有再细则追。
哪里说的不对,请各位批评指正,相互学习。