搜索
bottom↓
回复: 4

飞凌嵌入式OK1043A-C DPDK环境体验

[复制链接]

出0入0汤圆

发表于 2019-8-29 14:31:46 | 显示全部楼层 |阅读模式
飞凌嵌入式今年6月推出的——FET1043A-C核心板,采用NXP公司的QorIQ® LS1043A处理器设计,拥有四颗ARMv8-A架构的Cortex-A53核,主频1.6G,低功耗,高能效。四通道高达10GB的SerDes包含多种灵活配置,在飞凌设计的配套底板中最大程度上发挥了QorIQ® LS1043A 处理器网络性能,采用一个万兆,六个千兆的设计,配合处理器内部的DPAA1加速引擎,再加上2GB大容量DDR4内存简直就是网络性能怪兽。
硬件如此的优秀,那么传统的Linux内核还是否与其门当户对?答案是否定的。
原因有以下几个方面:
❶ 中断处理。当网络中大量数据包到来时,会产生频繁的硬件中断请求,这些硬件中断可以打断之前较低优先级的软中断或者系统调用的执行过程,如果这种打断频繁的话,将会产生较高的性能开销。
❷ 内存拷贝。正常情况下,一个网络数据包从网卡到应用程序需要经过如下的过程:数据从网卡通过DMA等方式传到内核开辟的缓冲区,然后从内核空间拷贝到用户态空间,在Linux内核协议栈中,这个耗时操作甚至占到了数据包整个处理流程的57.1%。
❸ 上下文切换。频繁到达的硬件中断和软中断都可能随时抢占系统调用的运行,这会产生大量的上下文切换开销。另外,在基于多线程的服务器设计框架中,线程间的调度也会产生频繁的上下文切换开销,同样,锁竞争的耗能也是一个非常严重的问题。
❹ 局部性失效。如今主流的处理器都是多个核心的,这意味着一个数据包的处理可能跨多个CPU 核心,比如一个数据包可能中断在cpu0,内核态处理在cpu1,用户态处理在cpu2,这样跨多个核心,容易造成CPU 缓存失效,造成局部性失效。如果是NUMA 架构,更会造成跨NUMA 访问内存,性能受到很大影响。
❺ 内存管理。传统服务器内存页为4K,为了提高内存的访问速度,避免cache miss,可以增加cache 中映射表的条目,但这又会影响CPU 的检索效率。
综合以上问题,可以看出内核本身就是一个非常大的瓶颈所在。那很明显解决方案就是想办法绕过内核。经很多前辈先驱的研究,DPDK在众多方案脱颖而出。

“纸上得来终觉浅,绝知此事要躬行”,下面我们通过一个实例来体验下DPDK。
首先,使用DPDK环境,需要修改设备树,将网络配置到用户态。需要使用到的设备树文件:
OK10xx-linux-fs/flexbuild/build/linux/linux/arm64/fsl-ls1043a-rdb-usdpaa.dtb
将fsl-ls1043a-rdb-usdpaa.dtb拷贝到开发板根目录,使用如下命令替换设备树:
mv/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb.bak
cp/fsl-ls1043a-rdb-usdpaa.dtb /run/media/mmcblk0p2/boot
ln-s /run/media/mmcblk0p2/boot/fsl-ls1043a-rdb-usdpaa.dtb/run/media/mmcblk0p2/boot/fsl-ls1043a-rdb-sdk.dtb
reboot
替换成功后启动开发板输入:ifconfigfm1-mac1
如果提示Devicenot found 就是已经替换成功。
测试DPDK完成后恢复默认配置方法:
cp/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb.bak/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb
reboot
将网络配置到用户态之后,那么我们该如何使用它们呢?TCP/UDP咋用?不要急在DPDK中使用TCP或者UDP的话还需要移植一个协议栈到DPDK中。入门阶段我们还是先来体验一把DPDK中包含了二层转发的测试例程吧。
二层转发网络拓扑如下图所示:

使用OK1043A-C平台的Port2和Port3(对应fm1-mac3和fm1-mac4),对LinuxHost 和 OK1012A-C之间的数据进行转发。LinuxHost 和 OK1012A-C您可以替换成其他的网络设备。
配置OK1043A-C:
l2fwd-c 0xf -n 1 -- -p 0xc -q 1 --no-mac-updating

配置OK1012A-C:
ifconfigeth0 192.168.1.200
tcpdump-i eth0 -vv -n -e
配置Linux Host:
ifconfigeth0 192.168.1.120
sudomodprobe pktgen.ko
echo"add_deviceeth0"> /proc/net/pktgen/kpktgend_0
echo"dst_mac6e:56:7d:85:ce:4d"> /proc/net/pktgen/eth0
echo"dst192.168.1.200">/proc/net/pktgen/eth0
echo"pkt_size64"> /proc/net/pktgen/eth0
echo"count1000000"> /proc/net/pktgen/eth0
echo"start"> /proc/net/pktgen/pgctrl
我们让LinuxHost主机发送100万个64字节大小的包出去,测试OK1043A-CDPDK对这些数据包的转发能力。

通过查看OK1043A-C的串口打印信息,我们发现DPDK已经将所有收到的数据包完完全全的转发了出去。同时细心的你会发现采用DPDK进行数据转发时,CPU的负载一直居高不下,因为它一直在应用层轮询,查看是否有数据包需要处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-8-29 16:30:56 | 显示全部楼层
mark,以后可能会用到

出0入0汤圆

发表于 2019-8-29 18:58:31 | 显示全部楼层
能运行这,系统应该深度阉割了吧

出0入0汤圆

发表于 2019-8-29 19:11:07 | 显示全部楼层
这个处理器内部没有网络部分的硬件加速吗?感觉像用CPU跑软路由,网络跑满后CPU也干不了啥了。
情况A:局域网转发,印象中即使跑满带宽下路由SOC来说CPU使用率很低,依靠内置的硬件交换机和软桥。
情况B:跨网段转发,此时需要NAT参与,但NAT本身可能是硬件,也可能是软件(linux内核级别),前者仍然不消耗CPU,后者消耗CPU。

出0入0汤圆

发表于 2019-11-9 19:25:05 | 显示全部楼层
准备买一套回来试试。学习学习
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 19:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表