带套接字的传输时间

问题描述 投票:0回答:1

实际上,我正在嵌入式系统上工作,并且我通过套接字发送图像。双方(客户端和服务器)都使用linux。

以太网的吞吐量为1000Mbit / s。我试图弄清楚发送一张图像的时间。它是32位图像(浮动),尺寸为:[[6004 * 7920。我希望转移时间:

(6004 * 7920 * 4 * 8)/(1000000000)= 1.52 s

根据我的代码,这次是

2.1 s

。我不明白这种区别。该协议的时间吗? 注意,我已经将巨型框架增加到9000。谢谢您的帮助!
linux image sockets tcp throughput
1个回答
0
投票
关于1000MB / sec传输速率的注意事项是理论上的最大值,而不是实际中通常要达到的速度。测得的比率很可能是somewhat lower

测得的速率可能低于理论速率的某些原因(没有特定顺序):

    由于TCP数据包头和以太网帧头而造成的开销
  1. 丢弃的数据包(导致传输短暂停止,以便重新发送丢弃的数据包)
  2. 发送或接收硬件上的CPU或内存带宽限制
  3. TCP的slow-start功能在会话开始时降低传输速率
  4. 竞争相同带宽的其他网络流量
  5. 发送或接收代码的次佳实现
  6. 由于以太网电缆质量差或电缆长度过长而降低了传输速度
  • [作为旁注,如果您想减少传输图像所需的时间,则可以在发送数据之前考虑对数据进行压缩(例如,在发送方转换为.jpg)。如果可以大大减少发送的数据量,则可以相应地减少传输时间。 (您可以通过在服务器端在单独的线程中进行压缩来进一步加快处理速度,以便图像#(N + 1)的压缩可以与图像#N的传输同时发生)
  • © www.soinside.com 2019 - 2024. All rights reserved.