【背景】
在做wifi嵌入式开发时(系统是RTOS系统),经常会遇到一个比较重要的问题:性能测试
这个可以说是产品的命脉,一切都要给性能让步,那么我们来看下,当性能有问题时,怎么debug?举个例子吧,我们调试的过程遇到的一个问题,如下:(2.4G wifi6(ax))
1.lte->usb FDD测试可以跑到145Mbps/s(理论值是150Mbps/s,这个145是pass的)
2.lan(usb)->wifi FDD测试可以跑到120Mbps/s(我们做的是e5,所以usb也算是一个lan口,这个还可以接受)
3.lte->wifi FDD测试只能跑到50Mbps/s左右,怎么搞都上不去(预期起码和usb->wifi的性能差不多哦)
【分析比对】
1.首先我们要看看空口下环境(也就是只能跑50Mbps/s的这个环境)怎么搭建?如下图:
上面这个就是:Lte_wifi_均空口测试连接图
所以说我们这里所说的空口测试,就是指通过天线链接的测试环境,并不是直接通过导线连接的哦,因为大家知道,通过天线链接的话,肯定会对信号有一定的损耗,还收到环境中的干扰(这也就是为什么性能测试都要去屏蔽房测了,不然外面干扰太大,性能肯定上不去)理论上肯定没有传导(通过导线连接的环境)的性能好哦
分析1:通过上面三组数据可以看出 ,wifi的sdio接口应该没有问题,因为lan->wifi都可以跑到120Mbps/s,所以应该从下面这些点入手排查:
1.cpu占用率剩余(cpe idle)
2.协商速率是否稳定
3.信道干扰
4.天线增益
5.mem剩余
6.软加速,lte加速
7.传导,空口试验对比验证
8.sdio接口性能
9.来水处理能力?
来,先看传导环境搭建图,如下:(主频是2x2天线的,wifi是1x1天线的)
Lte-wifi_均传导测试连接图(如上)
lte空口_wifi传导测试(如上图)
我们首先做的是传导验证,因为这个验证很能说明问题:如果传导都上不去的话,就是大问题,要么硬件问题,要么主频问题,或者软件问题(传导都上不去的话(和空口一样的值),一般不会是软件问题),结果我们做了传导,发现可以跑到80Mbps/s,那么说明啥呢?说明起码两点:1.硬件没啥问题,2.传导性能确实比空口好,说明软件这块儿也是可以的,没有像只有50Mbps/s那么差劲,那到底是哪里出了问题呢?我们对以下因素做了逐一排查:
1.cpu占用率剩余(cpe idle)(剩余30%左右)
2.协商速率是否稳定(屏蔽房内,很定,协商都是287Mbps/s左右,速率稳定良好)
3.信道干扰(FDD band1和6信道并无干扰,或者选择10信道,依然是速率没改善)
4.天线增益(正常)
5.mem剩余(RAM2.6M左右,RAM总共是69M)
6.软加速,lte加速(RTOS系统,平台没有软加速)
7.传导,空口试验对比验证(可以看出差异,根因呢?)
8.sdio接口性能(lan-wifi可以验证,能跑到120Mbps/s,和sdio没啥关系)
9.来水处理能力?(此时没有看驱动代码分析)
毫不夸张的说,折腾了一天半,偶然间发现:有次空口跑到80Mbps/s,此时是没有连接usb的!然后经过测试,发现,每次板子的usb线只要连着充电或者链接其他电脑,lte->wifi的性能就90%左右会只跑到50Mbps/s,当去掉usb线后,几乎每次都能跑到80Mbps/s,性能明显提升,这个到底是为什么呢?现在都没搞清楚,但是就是这样,不可思议吧啊!
【解决】
然后到80Mbps/s了,距离我们期望的120多Mbps/s还是有距离的哦,那么我们再抓log再着重分析1和9,通过我们抓lte-wifi空口数据log,分析后,发现:此时cpu idle几乎为0,其中fhost_tx任务的cpu占用率达到30-40%,那么足以说明这个任务量大,而且任务处理效率较低,所以针对驱动这块儿处理,我们做了对应的修改和优化(具体修改和优化就不讲了,毕竟我们此文章主要是说性能测试环境搭建的哦)
针对以上分析,要补充 一下wifi不同模式的速率表,这个是测性能的基本要懂得哦,如下: