客户问题:WiFi6e low tput
问题描述:
正常情况下,6G band,160m带宽,2个stream,TCP一般可以跑到1.8Gbps。而客户设备只能跑到1.4Gbps,而且CPU loading有点高。
复现:
本地实验室容易复现。
分析Triage:
OTA分析:WiFi phy data rate正常,但是tput上不去。
软件系统分析: 发现WiFi driver 调用的kernel API dma_mapping 导致 cpu loading比较高,而dma_mapping是处理4G+地址到4G-地址的映射(36-32 bit mapping)。
根本原因和解决办法
通常来讲,dma_mapping一般通过IOMMU硬件来处理。在这个平台上,客户要求把这个IOMMU功能给关闭。因为根据客户的测试,打开IOMMU会降低GPU的性能。因此dma_mapping变成软件操作,消耗了CPU资源。
与此同时,我们发现WiFi SOC工作在32-bit DMA 模式,因此我们把WiFi SOC 36bit DMA打开,这样就不需要做DMA mapping, CPU loading就降了下去,WiFi tput也回归正常。
**WiFi SOC之前使用32-bit DMA模式,背后原因复杂,这里暂不展开(碟中谍)。
Ankie的评论:
在应对WiFi吞吐量(throughput)问题时,我们需要超越表面的现象,深入探究其背后的根本原因。问题可能源于不良的环境条件,或者是WiFi系统级芯片(SoC)的故障,亦或是WiFi驱动程序的缺陷。面对这些挑战,我们必须借助多样化的测试和分析手段,层层剥离,逐步逼近问题的核心——即根源所在。只有这样,我们才能制定出最为恰当、有效的解决方案。