dpdk & cpu affinity(cpu亲和性)
2016-04-02 22:54
169 查看
Intel DPDK的相关介绍无需多说,能接触到它的人自然知道,无法接触到的人知道了也没用,因为从因特网下载不到源码,不过现在貌似很多企业都在用,或尝试在用。用这个Kit制作的demo发包工具,同等条件下的性能比pktgen要好上一倍,当然,之前测试的pktgen模块未做任何优化,所以这种比较有点不公正,不过毕竟利用DPDK开发的程序都在应用层,所以测试与调试相对都会比较方便。
Intel DPDK的介绍没讲,但它的技术点却想讲一下,因为这些技术点并没有什么特别,所以虽然我们也许无法使用DPDK,但可以使用这些技术点,DPDK主要用到三个技术点分别为hugetlbpage、uio以及cpu affinity。
关于hugetlbpage,之前讲过,它的主要好处当然是通过利用大内存页提高内存使用效率;而uio是实现用户空间下驱动程序的支撑机制,由于DPDK是应用层平台,所以与此紧密相连的网卡驱动程序(当然,主要是intel自身的千兆igb与万兆ixgbe驱动程序)都通过uio机制运行在用户态下。
cpu affinity机制是多核cpu发展的结果,在越来越多核心的cpu机器上,如何提高外设以及程序工作效率的最直观想法就是让各个cpu核心各自干专门的事情,比如两个网卡eth0和eth1都收包,可以让cpu0专心处理eth0,cpu1专心处理eth1,没必要cpu0一下处理eth0,一下又处理eth1,还有一个网卡多队列的情况也是类似,等等;扯远了,后续再写专篇来总结CPU亲和性问题。回到DPDK这里,DPDK利用cpu
affinity主要是将控制面线程以及各个数据面线程绑定到不同的cpu,省却了来回反复调度的性能消耗,各个线程一个while死循环,专心致志的做事,互不干扰(当然还是有通信的,比如控制面接收用户配置,转而传递给数据面的参数设置等),该干啥干撒。
所以,这样看来,DPDK并不高深,用到的东西也都是Linux本身提供的特性,还有额外的内存池、环形缓存等,虽然封装得很好,但的确都是非常熟悉的东东,至少我目前了解到的情况是如此。
Intel DPDK的介绍没讲,但它的技术点却想讲一下,因为这些技术点并没有什么特别,所以虽然我们也许无法使用DPDK,但可以使用这些技术点,DPDK主要用到三个技术点分别为hugetlbpage、uio以及cpu affinity。
关于hugetlbpage,之前讲过,它的主要好处当然是通过利用大内存页提高内存使用效率;而uio是实现用户空间下驱动程序的支撑机制,由于DPDK是应用层平台,所以与此紧密相连的网卡驱动程序(当然,主要是intel自身的千兆igb与万兆ixgbe驱动程序)都通过uio机制运行在用户态下。
cpu affinity机制是多核cpu发展的结果,在越来越多核心的cpu机器上,如何提高外设以及程序工作效率的最直观想法就是让各个cpu核心各自干专门的事情,比如两个网卡eth0和eth1都收包,可以让cpu0专心处理eth0,cpu1专心处理eth1,没必要cpu0一下处理eth0,一下又处理eth1,还有一个网卡多队列的情况也是类似,等等;扯远了,后续再写专篇来总结CPU亲和性问题。回到DPDK这里,DPDK利用cpu
affinity主要是将控制面线程以及各个数据面线程绑定到不同的cpu,省却了来回反复调度的性能消耗,各个线程一个while死循环,专心致志的做事,互不干扰(当然还是有通信的,比如控制面接收用户配置,转而传递给数据面的参数设置等),该干啥干撒。
所以,这样看来,DPDK并不高深,用到的东西也都是Linux本身提供的特性,还有额外的内存池、环形缓存等,虽然封装得很好,但的确都是非常熟悉的东东,至少我目前了解到的情况是如此。
相关文章推荐
- 每天laravel-20160626|RetrievesMultipleKeys
- 每天laravel-20160626|RetrievesMultipleKeys
- 如何在ubuntu中通过串口访问开发板(如:树莓派)
- python抓取东方财富网股票的公告的里面的链接
- mysql 备份(直接拷贝数据文件)仅限myisam数据库可以
- log4j配置文件加载
- Rotate String 问题使用取余解法
- 网络设备-华为-交换机堆叠终结配置篇
- 一个小玩意儿 第一App 历史的今天 简单的API借口数据获取
- [vim]常用快捷键
- 文本编辑
- 第三周项目四(5)-委派任务
- 2016/04/02省选练习赛(1)
- Java 关于线程的一些面试题
- 10009---Trail ~ Testing the Services
- json使用方法
- 20160402_TCP/IP协议簇
- Java__线程---基础知识全面实战---坦克大战系列为例
- Python和JavaScript中对超过数组长度的操作处理的不同
- 腾讯-基础研究-实习岗 笔试