电子产业一站式赋能平台

PCB联盟网

搜索
查看: 12|回复: 0
收起左侧

HC32F4A0平台lwIP传输速度异常分析

[复制链接]

853

主题

853

帖子

8351

积分

高级会员

Rank: 5Rank: 5

积分
8351
发表于 2024-12-11 08:01:00 | 显示全部楼层 |阅读模式

gxjwhyx5gx364025461443.gif

gxjwhyx5gx364025461443.gif
; K# Q  M6 j9 V- w. p5 S2 x. o( L
点击上方蓝色字体,关注我们! H. N  ^, d+ E1 \: a9 j* O

: t& O; R. G& W4 p. l) v9 E* PlwIP 作为一种轻量级的 TCP/IP 协议栈,性能瓶颈常常受到硬件、软件、配置以及网络环境多方面的影响。
6 j4 b: r- e5 r7 k+ K
) t. z# g( R+ a  h. |& f" N

a1jjcjochvf64025461544.png

a1jjcjochvf64025461544.png

& F& j9 Y7 O* o  a" w问题描述拆解与分析
: ?" ~! ]4 v2 F: Y, k2 S5 L; ^7 a
  • lwIP 作为服务器时:
  • 直连电脑网速慢(几百 KB/s)。
  • 通过交换机网速较高(80 Mbps)。0 y  N# p' X  ?5 C
    : y/ [' v9 I1 B0 Q$ w1 E1 K
    lwIP 作为客户端时:
    . q( g6 Z1 Y9 R. I) {) R! T9 \
  • 直连电脑网速较高(50 Mbps)。
  • 通过交换机网速很慢(几百 KB/s)且不稳定。
    % `( u9 B  w6 \5 D% M

    # h; R. b7 H1 P# q* [" F测试工具是 JPerf:JPerf 基于 TCP/UDP,带宽瓶颈主要与数据发送效率和网络协议实现有关。& m1 k5 X3 ?2 v7 d
    ( C4 ~' M# S  C
    分析思路% x$ C2 Q% C4 j/ S, @# p$ z5 k+ s+ j4 U3 a
    根据问题特点,重点从以下几方面入手:
    : [6 @; j6 |. @" k$ Y( Q' \; o
  • 硬件性能与驱动。
  • lwIP 配置优化。
  • 网络环境差异。
  • 交换机/直连情况下的特殊性。
  • 传输协议和测试工具相关限制。
  • 逐项分析与优化建议$ n1 D+ ^% d  B$ ~! v3 `
    % K4 u8 p) {8 Q; v- J5 Y6 Q
    1
    $ X8 M% |1 ?$ x驱动lwIP 配置优化2 E* t+ k; d3 ^7 l/ ~
    分析
    0 @+ u7 S6 a* e+ p! l3 lHC32F4A0 是一个高性能微控制器,但资源有限,特别是 RAM 和网卡的 DMA 速率可能成为瓶颈。$ j5 F7 l! `5 W6 S+ C, u
    # R, |! W- u# o' g) }
    网卡驱动是否充分利用硬件能力、是否支持高效中断处理(如中断合并),对性能影响重大。! z( d  U/ x8 w7 [3 p
    % t1 C# M+ M; d: @$ t8 `/ F& E
    优化建议; a' @. d. G5 [# T6 O/ z
    确保网卡的驱动代码充分优化,例如:
    ! u2 U1 O, Z6 B: Y4 r- S
  • 启用 DMA 进行数据搬运。
  • 检查硬件中断优先级设置是否合适,避免因中断抢占造成网速下降。
  • 确保硬件缓冲区足够大,避免因缓冲区溢出导致丢包。( F+ }+ @6 N- z2 a3 t7 g

    ! p. Q( l* _/ y8 j) n) ^$ w9 u核实网卡的 PHY 芯片配置:
    1 I- u# M6 b" `( ]$ g
  • 是否正确设置为 全双工。
  • 是否正确协商 带宽(如 100 Mbps)。6 p$ B, y+ z% ^7 ~/ ~

    ) L. }# h7 ~/ l+ @0 |2+ G/ a4 F7 M( v" r4 q1 T
    精品专栏4 q5 G9 e+ D% u( v$ B6 s: t
    lwIP 的默认配置多为通用设置,可能未针对高带宽、低延迟场景优化。
    ) c# ?6 r7 e  z% E" C) F- |配置项优化建议:
    5 n& j! G# Q% O. T0 d, _0 D: X9 F
    % h4 F. I. e6 F% l8 W6 K配置项描述与建议TCP_SND_BUF发送缓冲区大小,建议增大(如 16 KB 或以上),以支持高带宽需求。TCP_WND接收窗口大小,需与 TCP_SND_BUF 匹配,增大至与带宽延迟积(BDP)匹配。MEM_SIZElwIP 内存池大小,需确保足够支持上述发送/接收缓冲区,同时避免内存不足。PBUF_POOL_SIZEPBUF 池大小,适当增大,减少动态内存分配的频率。ETH_PAD_SIZE若使用了 DMA,确保此值匹配硬件对齐要求(如 4 字节对齐)。CHECKSUM_BY_HARDWARE如果网卡支持硬件校验和,加速 TCP/IP 包的处理。LWIP_TCP_TIMESTAMPS关闭 TCP 时间戳选项,可减小 TCP 包大小和延迟。
    # |/ l/ m6 Z- T6 c1 W2 L1 [7 ~代码层面优化:# ~( J8 ^* P) A6 p2 Z& i
  • 减少上下文切换:将 lwIP 的核心处理任务分配到高优先级线程,避免任务竞争。
  • 优化发送频率:确保数据发送调用不受限于应用层,减少 tcp_write 和 tcp_output 频率。
    + A) i  R2 h8 M+ U, ~4 H" S- M$ ?

    / s  b. K1 I9 j3
    - j' E$ D1 d% M* f' y- D/ F4 f网络环境差异8 x: F( j6 ^* f+ D) U- W0 m
    交换机与直连的差异可能源于以下几点:1 ]# _* Z+ @1 V4 U! ~4 u, \

    4 T$ }+ \$ b( U( N' x3 i直连电脑:
    6 C6 n" |/ v# u' F
  • 网卡直连可能触发自动协商(如变为半双工)。
  • 若电脑网卡未正确识别对方设备能力,可能产生瓶颈。: ^% f: d7 a) ~- j
    5 I' Y8 b& ~3 c9 p
    通过交换机:- @3 A3 `8 f. q! g: x
  • 交换机通常能更好地处理流量,特别是全双工情况下的冲突避免。
  • 但如果交换机性能较低或配置问题(如启用了 QoS 限速),可能影响性能。" Y: d) s$ F) c
    ( |  j# o- c9 K3 w
    优化建议:: o# T5 S* s3 f% v) N/ A

    3 d9 E2 ]; l7 _& U5 k$ ?* u网卡配置核查:
    , l# }- H; g1 F8 r
  • 检查直连时是否协商为 100 Mbps 全双工。
  • 确保交换机端口设置为全双工,不限速。; R# ~- M2 t, x2 T8 ~" K- s3 i
    ; j8 m% H6 ?8 x1 E5 Y. ]! t* }
    数据流路径优化:5 g2 f: |8 Z1 w1 O+ F
  • 在交换机上禁用不必要的协议(如 STP)。
  • 确保交换机支持线速转发,避免处理延迟。9 V- Z1 H6 x( h: V

    3 G. p$ F7 }+ [5 e! V  n0 Y4& }( S6 i6 E3 S6 i  ^
    直连与交换机的特殊性# l5 I  s, H0 c1 {- r
    你描述的现象表明,数据传输性能不仅与环境(直连/交换机)有关,还受到客户端与服务器角色的影响。
    # e3 e) Q8 Y* h
    7 B+ d! ]+ s8 u8 z: x原因分析:$ h. {5 P* ^% J
  • 服务器直连慢:服务器发送数据需要 lwIP 的输出队列和中断频繁配合,可能因缓冲区不足或发送速率受限而变慢。
  • 客户端直连快:客户端只需从对方接收数据,处理过程相对简单。
  • 交换机连客户端慢:可能交换机未优化流量转发路径,导致丢包或延迟增加。; E; h6 ]2 t$ Z9 A% E

    ( i/ }! T4 F  w; d* V# j/ p2 g优化建议:
    : [5 J9 N0 R' A- M3 q( G
  • 增大 lwIP 发送队列和接收队列容量。
  • 尝试不同交换机(避免低端设备),或者更改交换机的端口设置。. f; R# n+ R2 R$ r5 q
    . Y6 Y' \5 X2 l0 i* ^
    5
    # w- \( w/ F. p8 S- [" t协议与测试工具分析# c1 P2 H0 k* ]. W5 Y6 K( N/ m
    JPerf 相关问题:7 u' V' ^  J' W8 R* h
  • JPerf 的性能测试基于 TCP,性能受限于 TCP 滑窗机制和 lwIP 配置。
  • 若交换机启用了流量整形(如 QoS 限制),可能导致 TCP 的窗口调整,进一步降低性能。7 p* j3 n/ \4 \/ X( L2 I' Z* @7 R
    4 A. L) {1 ~: `! {% P( t
    优化建议:  a+ }* @5 O; g6 ^: m& n' a' o
  • 尝试使用 UDP 模式进行测试,确认是否为 TCP 滑窗机制限制性能。
  • 在 JPerf 中增大窗口大小(-w 参数),以适配高带宽延迟积。
    1 E  K; ?, ], R4 _/ z; y

    * A1 l$ {$ M, [" ?% R总结优化步骤
    ; C$ V# T9 k/ k硬件优化:% w; K8 z# e1 ?# O
  • 确保 PHY 芯片配置正确。
  • 启用 DMA 和硬件校验和功能。
  • 提升中断处理效率。( M  ~6 D0 |& E1 s1 I4 f6 ?
    ; [9 C9 K6 k- I: s
    lwIP 配置优化:$ B5 i0 ^( q0 b9 Y, W% T  }
  • 增大发送/接收缓冲区大小。
  • 调整任务优先级和内存池大小。
    : M7 c! z* O; q+ t" X" s1 D
      o8 O$ ]" \; o" m! a% R
    网络环境核查:0 C) }  Z; L/ h0 C
  • 检查直连时协商的链路配置。
  • 确认交换机的转发能力和配置(如禁用限速/QoS)。
    * g7 s  x) |1 U) [  n
    : u. Y  d# V" W8 \  K# s
    测试工具调整:
    ; ?+ y5 |& j' W( O8 Z
  • 使用 UDP 测试带宽上限。
  • 调整 TCP 窗口大小以匹配带宽需求。
      H7 D# O5 x+ m+ F$ G2 j& N4 }+ ?

    2 F. L, U  e$ S通过以上分析与优化,能显著提升 lwIP 的传输性能。建议逐步验证优化效果,并通过抓包工具(如 Wireshark)分析传输细节,定位瓶颈所在。
    5 t8 r& N2 @. t. |

    xifdhibu31u64025461644.jpg

    xifdhibu31u64025461644.jpg

    ! a" N/ y1 l" _. A& o4 c

    zxqiog5utct64025461744.gif

    zxqiog5utct64025461744.gif
    * C$ V" d& L, ?' R) o0 G! V& K8 L& _
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表