|
|
1
4
实际上,在多个层中存在一些开销。1Gbits/sec以太网在应用端并不意味着太多(但我想最多占90%)。经验法则是
回想一下,根据定义,TCP不是数据包的传输,而是字节流的传输。阅读
TCP
维基页面。你应该避免
Gigabit Ethernet
欲望
Jumbo Frames
近9000字节。您可能需要数据缓冲区
这个
send(2)
手册页提及
而且 syscalls(2) 有一些开销。我很惊讶你能每秒制作一百万个。这一开销是将传出和传入数据缓冲为有效数据段(例如,每个数据段为8192、16384或32768字节;您需要进行基准测试以找到最佳数据段)的另一个原因。如果内核更喜欢页面对齐的数据,我不会感到惊讶。因此,也许可以尝试将缓冲区调整为4096字节(例如,使用 mmap(2) 或 posix_memalign(3) ...)
如果您关心性能,请不要使用
发送(2)
具有小字节计数。至少将应用程序更改为每次发送超过几千字节(例如4K字节)
我的感觉是,您的应用程序效率低下且有问题(可能在其他网络上工作不好,例如,如果两台计算机之间都有一些路由器)。你需要 重新设计 并重新编写应用程序的某些部分!您需要缓冲,并且需要管理应用程序消息——拆分和连接它们。。。。
你应该在多个网络上测试你的应用程序,特别是通过ADSL和wifi,如果可能的话,还可以通过远程网络(然后你会观察到
|
|
|
2
2
根据我的计算,你相对接近饱和链接。 据我所知,这是一秒钟的交通。 Time -------------traffic------------ Time bytin bytout pktin pktout 06/09/14-23:12:57 63.4M 155.3M 954.6K 954.6K 通过以太网发送的TCP数据包有82个字节的开销(42个以太网,20个IP,20个TCP),因此接收的数据量为(954.6k*80+63.4M)*8位,总计1.1G。 我假设,对于如此大量的数据包,物理介质的协商将涉及额外的开销。由于链路的利用率约为50%,如果有一个小到(1s/954.6k)*50%=500ns(半微秒!)的额外延迟,那么您已经考虑了额外的延迟。500纳秒是光传播150米所需的时间,这并不远。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |