茶凳淺談-改善高通IPQ6000 CPE Quectel 5G NR throughput

高通CPE的方案推薦使用的是 IPQ8074 或者 IPQ5018 + Thundercom的SDX55模組,基於成本考量,客戶會改用其他的5G模組。例如,同樣使用SDX55的Quectel 5G 模組。但是卻時常會碰到throughput比較低的問題。 日前客戶的IPQ6018的案子也碰到了類似的問題。 

問題描述:

CPE 測試的結果只有560Mbps 左右。 直接使用手機測試,可以達到700~900Mbps。明顯少了200Mbps的速度。

500MB

修改方法: 更改smp_affinity的配置。

sample

目的是把pcie的irq smp_affinity,分配到其他的cpu$index, 不要集中在cpu0﹑

irq

測試驗證:

我測試大約只有346Mbps. 這與測試環境有關,所以只能請客人自行測試。

客戶經過調整之後,可以平穩的跑在668 Mbps左右了,改善了100Mbps左右。而且已經趨近使用手機跑的數據 700+ Mbps。

fixed

因為是相當平穩地落在670Mbps左右,而且略低於手機直接測試的700~900Mbps的下限,所以這個瓶頸點仍是落在Router上的,但是,Pcie 的flow已經錯開了,能再改善的空間不大。

本質上還是要從 Quectel提供的 驅動著手。所以我們進一步來看看驅動的內容差異。

驅動分析:

Quectel提供的驅動,已經把rmnet_data.c 給移除了。所以沒有機會使用NSS redirect來做offload。

marked

source code

rmnet_data 的interface 並沒有被建立起來。 所以也就看不到對應的irq

interface

rmnet_data, 與 rmnet_nss 要搭配使用,處裡rmnet_mark_skb。如此才可以形成如下的path flow。否則skb會被當成一般的封包forward 到 bridge上去。多繞一圈而影響throughput。


data path 要如所下圖所顯示,完全的offload才可以有更好的throughput 表現。

architecture

建議:

撇開一些控制方式的不同。當data call建立成功之後。模組廠需要確認data path是可以滿足offload 的。一個是模組內的IPA, 一個是驅動中的NSS redirect,兩個都要能正確的運行。 否則會耗用大量CPU時間來處理封包。即使有cpu irq的優化,也無法達到1.xGbps以上的throughput。rmnet_data.c 還是需要built-in到驅動中,用以實現nss redirect的功能。

Q&A:

 Q:改了哪个CPU性能之后,PING路由器LAN口IP延迟变大到2MS了。

 A: nss 也會 搶用irq的。  cpu core 只有四個。  network port 有 wan. lan. wifi. usb.... 多種可能。 packet ingress 到 egress的過程 產生的irq 就只能盡量錯開始用cpu core。

 Q:如何查詢中斷?

 A: cat /proc/interrupts

 Q:WiFi 也有smp_affinity 的設定嗎?

 A:有的,可以在/lib/update_smp_affinity.sh 找到類似的設定。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論