【发布时间】:2018-10-29 16:39:22
【问题描述】:
这是一个网络性能问题。在我的板上有一个千兆以太网 phy,当我使用 iperf 测试网络带宽时,Tx 速度比 Rx 速度差得多。对比Wireshark抓包后发现,板子总是发出1514字节的以太网帧,而接收更大的以太网帧,最大可达64k。
这就是 Tx 性能比 Rx 性能差的原因。 iperf 每次发送 128k 的数据,在内核中它总是将其分段为 1514 字节并发送到网络驱动程序。
我在发送数据时跟踪了sku-len,记录如下。我猜内核中有一些功能可以发送大型以太网帧,但它是什么?
我尝试通过ifconfig eth0 mtu 8000命令将mtu更改为8000,但没有任何改善。
[ 128.449334] TCP: Gang tcp_sendmsg 1176 msg->msg_iter.count=31216,size_goal=65160,copy=11640,max=65160
[ 128.449377] TCP: Gang tcp_transmit_skb skb->len=46336
[ 128.449406] Gang ip_output skb-len=46388
[ 128.449416] Gang ip_finish_output2 skb->len=46388
[ 128.449422] Gang sch_direct_xmit skb->len=46402
[ 128.449499] Gang dev_hard_start_xmit skb->len=1514
[ 128.449503] Gang dwmac_xmit skb->len=1514
[ 128.449522] Gang dev_hard_start_xmit skb->len=1514 <>
[ 128.449528] Gang dwmac_xmit skb->len=1514
【问题讨论】:
标签: linux-kernel