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

page aligned send buffer in sockets

本文关键字:缓冲区 套接字 面对 对齐      更新时间:2023-10-16

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

更新:

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

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

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

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