页面对齐在套接字中发送缓冲区

时间:2012-11-20 21:49:08

标签: c++ tcp

在64位linux上,我的应用程序发送二进制消息,这些消息是可变大小的,而不是在64位边界上对齐。例如,它可以发送1026字节,85字节等等。在这种情况下,页面对齐套接字发送和接收缓冲区大小是否有帮助或有害或无关紧要? 该应用程序用c语言编写,并在rq 6.3x上运行,内核为2.6.32.x86_64。

更新:

通过缓冲区,我最初的意思是SO_SNDBUF和SO_RCVBUF,由setsockopt设置。但根据David的评论,我想包括在PAGESIZE边界创建用于发送和recv调用的应用程序缓冲区的可能性。这有帮助,伤害还是无关紧要?

1 个答案:

答案 0 :(得分:1)

出于所有应用目的,它无关紧要:

  • 内核缓冲区由操作系统管理,实际上会自动舍入/限制为某些页面。
  • Userland缓冲区可以页面对齐,以便更快地进行用户内核复制,但我敢打赌,您不会注意到差异。

另一方面,如果你从说文件到套接字执行大量缓冲操作,请查看sendfile(2)splice(2),这在您的应用程序上下文中可能有意义,也可能没有意义。