MA35D1回环测试(loopback) lo与eth速度有差异

cwlin0 |浏览55次
收藏|2024/03/08 08:45

对网卡进行回环测试lo和eth速度有差异,以下是回环测试的方法和测试结果:

      方法1:使用本地loop模式;

      方法2:将eth1的phy设置为回环模式;

      测试代码逻辑:发送socket原始套接字,发送后立即记录时间并接收,接收到后记录时间,然后计算接收前后的时间差

   从测试结果可以看到,本地loop模式下,发收时间为16us,而使用eth1时,发收时间为300us左右,能否定位一下eth1回环测试时间较长的原因,我们目前的猜想是MAC驱动的问题

   另:我们的需求是20us以内。


满意回答

2024/03/08 08:52

lo与eth 回环测试时间差异性解释如下:


‘lo’是local loopback,并没有出到GMAC PHY,也就是没有TX/RX packet loopback,

eth0则是由pack送收,GMAC driver有中断处理,不可能跟lo这个虚拟纯软件实现的速度进行比拟的,所以这个delay是很正常。


更详细解释:

1. eth0开启loopback后,发送的数据包不会真正发送到物理介质,但是会进入网络接口卡的发送流程。包括复制到发送队列、发送描述符处理等。这些操作虽然最终不会发包,但依然存在一定的消耗。


2. 开启loopback后,数据包仍需进入FULL网络堆栈,经过网卡驱动接收流程,包括中断处理、协议栈处理等。这些都需要时间。


4. 物理网卡本身的缓存、队列机制也会引入一定延迟。


3. 即使是loopback,数据包传输路径也比lo接口长,需要多次内存复制。


4. 接收pkgs并配送到socket的处理时间也需要考虑在内。


而lo接口回环只有内核内部的数据拷贝和协议栈处理,没有其他鲁余消耗,所以延迟非常低。


nuvoton2022

其他回答(0)
0人关注该问题
+1
 加载中...