页面对齐的套接字发送缓冲区
page aligned send buffer in sockets
在 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)
,这在您的应用程序上下文中可能有意义,也可能没有意义。
相关文章:
- 套接字读取后,我在缓冲区中看到意外输入
- 何时需要修改套接字的接收缓冲区大小?
- 为异步发送缓冲区保留内存(提升 asio 套接字)
- 套接字缓冲区到字符串
- 我正在编写一个简单的客户端套接字应用程序,但在连接后服务器收到一个空缓冲区
- 无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满
- 跨平台套接字发送,Linux 上的缓冲区常量无效* Windows上的常量字符*,最佳处理方式
- 为什么收到的缓冲区大小大于最初通过套接字发送的大小
- 套接字连接上的缓冲区溢出
- 增加 UDP 套接字中的接收缓冲区
- 从套接字读取到缓冲区
- 套接字:在没有memcpy的情况下,使用recvfrom将UDP数据获取到字对齐的缓冲区
- 页面对齐的套接字发送缓冲区
- C++套接字编程TCP/IP套接字缓冲区的最大大小
- 在Linux中发送套接字的缓冲区为空
- recv套接字中的前几个字节,以确定缓冲区大小
- 无法使用套接字显示接收到的缓冲区
- 如何确定/设置套接字缓冲区大小
- 为什么套接字未正确处理此缓冲区大小
- 如何在使用之前清除内部服务器套接字缓冲区的内容