gpt4 book ai didi

linux - UDP 缓冲区的单位是什么,sysctl 参数的文档在哪里?

转载 作者:太空狗 更新时间:2023-10-29 11:06:15 26 4
gpt4 key购买 nike

我正在运行 x86_64 RedHat 5.3(内核 2.6.18)并在尝试设置 UDP 缓冲区的上下文中专门查看来自 sysctl -a 的 net.core.rmem_max。接收器应用程序有时会丢失数据包,但我认为缓冲区已经足够大,具体取决于它的含义:

此设置的单位是什么——位、字节、数据包或页面?如果是位或字节,它是来自数据报/有效负载(例如 100 字节)还是网络 MTU 大小(~1500 字节)?如果是页面,页面大小是多少字节?

这是每个系统、每个物理设备 (NIC)、每个虚拟设备 (VLAN)、每个进程、每个线程、每个套接字/每个多播组的最大值吗?

例如,假设我的数据是每条消息 100 字节,每个网络数据包包含 2 条消息,我希望每个套接字能够缓冲 50,000 条消息,并且我在 4 个线程中的每一个上为每个线程打开 3 个套接字。 net.core.rmem_max 应该有多大?同样,当我在应用程序中设置套接字选项时,单位有效载荷字节,在这种情况下每个套接字上的单位是 5000000 吗?

最后,一般来说,我如何找到我通过 sysctl -a 看到的参数单位的详细信息?我有类似的单位和关于其他参数(例如 net.core.netdev_max_backlog 和 net.ipv4.igmp_max_memberships)的 X 问题。

谢谢。

最佳答案

你会看these文档。也就是说,其中许多参数的文档记录确实很差,因此请期待谷歌搜索以从博客和邮件列表中挖掘出血淋淋的细节。

rmem_max 是每个套接字的最大缓冲区,以字节为单位。仔细研究,这似乎是接收整个数据包的内存,因此大小还必须包括 whatever/ip/udp header 的大小——尽管这个区域对我来说很模糊。

请记住,UDP 不可靠。有很多丢失源,尤其是在交换机和路由器之间 - 它们也有缓冲区。

关于linux - UDP 缓冲区的单位是什么,sysctl 参数的文档在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3603847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com