电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

752

主题

752

帖子

6398

积分

高级会员

Rank: 5Rank: 5

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

gxjwhyx5gx364025461443.gif

gxjwhyx5gx364025461443.gif

. G- C' m. \3 w点击上方蓝色字体,关注我们+ P4 Y4 d4 b  d0 v4 N6 Z: H
  H( a/ g/ z/ ?; P. s
lwIP 作为一种轻量级的 TCP/IP 协议栈,性能瓶颈常常受到硬件、软件、配置以及网络环境多方面的影响。6 e! F7 t3 L/ e# p4 O; l0 \
' W& ]: T0 W4 M* D0 V

a1jjcjochvf64025461544.png

a1jjcjochvf64025461544.png

$ T3 _4 @+ I# T  N问题描述拆解与分析
' _; G" K& q& ~
  • lwIP 作为服务器时:
  • 直连电脑网速慢(几百 KB/s)。
  • 通过交换机网速较高(80 Mbps)。( y0 x* Z6 \: O# S
      G  f$ p7 M- i8 b; a; {
    lwIP 作为客户端时:
    8 q- a: \5 [3 T" `# g, @9 x% o" @4 m
  • 直连电脑网速较高(50 Mbps)。
  • 通过交换机网速很慢(几百 KB/s)且不稳定。
    2 w8 N. f- e: h

    ) H/ a0 ~4 H# D6 x/ |测试工具是 JPerf:JPerf 基于 TCP/UDP,带宽瓶颈主要与数据发送效率和网络协议实现有关。
    " v- g' w5 ^4 U; w# _$ f. V1 C
    ( ]% {( M; E/ q5 [! l8 E4 P分析思路0 p# T* N0 F) w8 B+ X7 G
    根据问题特点,重点从以下几方面入手:, W$ O' D$ \7 x4 f( I  L5 T
  • 硬件性能与驱动。
  • lwIP 配置优化。
  • 网络环境差异。
  • 交换机/直连情况下的特殊性。
  • 传输协议和测试工具相关限制。
  • 逐项分析与优化建议1 U3 r$ Z$ p/ |9 ]
    % W* j' n; B6 M1 r7 h8 K
    1
    8 _' G9 C1 F9 \6 n驱动lwIP 配置优化
    4 P9 H/ j8 W6 N; P5 }- F" j分析
    ' y8 n  w5 v: ~$ d  Z- t& c0 NHC32F4A0 是一个高性能微控制器,但资源有限,特别是 RAM 和网卡的 DMA 速率可能成为瓶颈。3 D  f! [# {. W2 B- N2 G4 `: m

    . J) h. S9 N$ m' J% w$ Z) }+ m% A网卡驱动是否充分利用硬件能力、是否支持高效中断处理(如中断合并),对性能影响重大。
    ' q% ]  ?0 Y0 s1 z6 g. `2 G3 S7 x) P  l1 a" L
    优化建议
    2 r# y+ Z% D9 G+ s: x: M确保网卡的驱动代码充分优化,例如:! ~+ l' Y* ]8 Z/ U! e$ g; u$ b
  • 启用 DMA 进行数据搬运。
  • 检查硬件中断优先级设置是否合适,避免因中断抢占造成网速下降。
  • 确保硬件缓冲区足够大,避免因缓冲区溢出导致丢包。
    9 v9 a0 C* T+ T' g1 L% o

    & h0 c: F+ c5 J3 u核实网卡的 PHY 芯片配置:5 }! d) t: a: }- X
  • 是否正确设置为 全双工。
  • 是否正确协商 带宽(如 100 Mbps)。
    : t+ d8 P. Q" I) s6 K/ _3 `% |5 I- U2 s
    3 U4 c9 J& _: T' A2 t9 i
    2
    ' H- L) J+ H1 E1 F9 ?! e% I精品专栏5 h8 z$ v6 i# ]& a1 s- @; M8 Z2 h
    lwIP 的默认配置多为通用设置,可能未针对高带宽、低延迟场景优化。- {+ V& ^! M# X5 t
    配置项优化建议:
    " O& ]$ L2 f4 @  P: g9 a
    + l1 }/ ^! D8 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 包大小和延迟。8 |0 m/ }1 s+ h: ^( n- e. M
    代码层面优化:
    7 p, l! k5 q: \9 S2 J- O
  • 减少上下文切换:将 lwIP 的核心处理任务分配到高优先级线程,避免任务竞争。
  • 优化发送频率:确保数据发送调用不受限于应用层,减少 tcp_write 和 tcp_output 频率。
    ) h* r% }6 A1 l7 I# I  w

    ( j3 r; Y1 f0 M  h3
    : y2 }7 l3 t+ r8 [网络环境差异9 b4 K# w7 m2 C' U' C
    交换机与直连的差异可能源于以下几点:
    : u  u: d9 M" U! r) J8 I+ Y3 G5 P- m/ e, V9 D+ [8 u
    直连电脑:
    / {. e& Z  K( e! [( J! t
  • 网卡直连可能触发自动协商(如变为半双工)。
  • 若电脑网卡未正确识别对方设备能力,可能产生瓶颈。
    + `( v. n3 ]/ t) l

    ) v! Z6 H% l: ], @; B, f. l6 u8 S通过交换机:0 y- G1 ~* O9 R: N: e- {; p
  • 交换机通常能更好地处理流量,特别是全双工情况下的冲突避免。
  • 但如果交换机性能较低或配置问题(如启用了 QoS 限速),可能影响性能。
    : u( j' j1 S( C9 g, `

    4 ~+ c! c: L4 W" i: _+ G- ]" ?优化建议:; `& G* W7 }. A' w, P+ s. d

    , S; D2 m) R# B7 f网卡配置核查:
    ! f' G' S5 o6 q: C$ t! c
  • 检查直连时是否协商为 100 Mbps 全双工。
  • 确保交换机端口设置为全双工,不限速。, ]; D  }9 j5 l& Z6 a8 G
    / n8 g0 U* h, }& H
    数据流路径优化:
    7 g. F5 j( y0 r5 `& f
  • 在交换机上禁用不必要的协议(如 STP)。
  • 确保交换机支持线速转发,避免处理延迟。: u5 i, H0 p% L4 ~8 D" P# Y
    1 r( Y2 }3 [& c. b; R
    4% [' y8 n; }3 x& D  H. g
    直连与交换机的特殊性/ D; v! Y! D* I, T+ l3 e! w
    你描述的现象表明,数据传输性能不仅与环境(直连/交换机)有关,还受到客户端与服务器角色的影响。
    0 h+ Y$ c. K; T2 h" N% y. V8 \6 K4 Q2 w+ Z
    原因分析:
    ! o7 T  O2 _1 s; H" w1 Q" ?8 m
  • 服务器直连慢:服务器发送数据需要 lwIP 的输出队列和中断频繁配合,可能因缓冲区不足或发送速率受限而变慢。
  • 客户端直连快:客户端只需从对方接收数据,处理过程相对简单。
  • 交换机连客户端慢:可能交换机未优化流量转发路径,导致丢包或延迟增加。
    + C; h& w9 F$ V$ j% p- X3 @
    # q( O* z( S* `  \% ^
    优化建议:
    , C9 X7 _4 o2 @* X6 x, g
  • 增大 lwIP 发送队列和接收队列容量。
  • 尝试不同交换机(避免低端设备),或者更改交换机的端口设置。3 y$ T8 L- P' L$ C
    : q/ h! X3 d& J2 [) w7 `$ j
    5
    ; s* k& q+ c5 u# V+ L( R协议与测试工具分析! L+ E4 U' s1 W# r/ _# t4 p. V
    JPerf 相关问题:( H! S. @% s3 p. @  A# J
  • JPerf 的性能测试基于 TCP,性能受限于 TCP 滑窗机制和 lwIP 配置。
  • 若交换机启用了流量整形(如 QoS 限制),可能导致 TCP 的窗口调整,进一步降低性能。
    2 |/ p0 U4 _8 q6 P% Q; F
    - v( ^" u( f+ s2 i  }; |% H# z( ?8 d7 \
    优化建议:
    4 C4 y* H* \6 I* f: _# n. a9 C; e
  • 尝试使用 UDP 模式进行测试,确认是否为 TCP 滑窗机制限制性能。
  • 在 JPerf 中增大窗口大小(-w 参数),以适配高带宽延迟积。
    ' A- o2 e% l0 y- o7 x! q% O; h
    ' ?! u. S( a* h
    总结优化步骤  b( ~  _, r  T$ S* l! c
    硬件优化:
    7 S* `$ Z3 Z8 a, r
  • 确保 PHY 芯片配置正确。
  • 启用 DMA 和硬件校验和功能。
  • 提升中断处理效率。
    7 j  N6 \7 y5 u( `
    ; h: _+ K% [# c$ H" A6 R$ I" T! B
    lwIP 配置优化:: C# T+ s, b# Q: K2 {
  • 增大发送/接收缓冲区大小。
  • 调整任务优先级和内存池大小。; A$ b( a& q! z* w
    & g4 Y' [, K% T
    网络环境核查:
    $ g1 D8 n: Q* x8 ~; [( b
  • 检查直连时协商的链路配置。
  • 确认交换机的转发能力和配置(如禁用限速/QoS)。, t* y  Q: y6 B8 L$ N; _
    8 W  Q1 D* }9 Z9 ^8 s2 S
    测试工具调整:
    ( u9 U' d; X, z5 n- a$ U$ A- O7 I
  • 使用 UDP 测试带宽上限。
  • 调整 TCP 窗口大小以匹配带宽需求。
    $ \: `  x8 `, p$ V( O* h' [: F
    " n# g' c3 t5 W1 N' \! x3 n. E
    通过以上分析与优化,能显著提升 lwIP 的传输性能。建议逐步验证优化效果,并通过抓包工具(如 Wireshark)分析传输细节,定位瓶颈所在。
    - \3 `* t& ]: n4 S2 g, z

    xifdhibu31u64025461644.jpg

    xifdhibu31u64025461644.jpg

    6 ?5 |) F; W! c2 l7 Q

    zxqiog5utct64025461744.gif

    zxqiog5utct64025461744.gif
    3 r. A0 S# _. C' i$ |
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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