【发布时间】:2015-04-14 09:02:18
【问题描述】:
我有一个代码(c 中的 TCP 套接字编程),它将文件从源系统发送到目标系统。我已经用 10 个 8KB 大小的文件进行了测试,另一个用 10 个 8MB 大小的文件进行了测试。与 8KB 文件相比,8MB 块文件的吞吐量更高。从小到大的文件的吞吐量呈线性增长。
有人可以解释一下,无论我们使用套接字编程发送小文件还是大文件,性能是如何改变的。
注意:我使用的是 sendfile()(不使用 TCP_CORK 和 TCP_NODELAY 选项)
【问题讨论】:
-
如果您只是查看 throghput,您将不那么频繁地打开/关闭文件,因此进行的系统调用更少,您实际上会花费更多时间来发送文件。此外,如果您天真地发送数据(即调用大小为 8MB 的
send),那么send调用将再次使用更少的系统调用并在内核领域花费更长的时间。 -
是的,我同意,但我已经多次重复测试给了我相同的结果..无论我使用 send 和 write () 调用还是Sendfile() ..性能上是小文件还是大文件有什么关系
-
显示您的代码。有多种可能的解释,但首先要发布您正在谈论的代码。