我正在运行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)有类似的问题。
谢谢。
这个设置的单位是什么,是比特、字节、数据包还是页面?如果是比特或字节,是来自报文/载荷(例如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)有类似的问题。
谢谢。