0

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

更新:

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

4

1 回答 1

1

对于所有应用目的,这无关紧要:

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

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

于 2012-11-20T22:07:56.707 回答