我正在尝试调整 UDP 接收和传输缓冲区大小。根据我的实时应用需求,我需要将 Tx 缓冲区配置为 6 字节,Rx 缓冲区配置为 22 字节。我在 ARM A9 处理器上运行 Angstrom。 (Altera cyclone 诉 soc)。客户端和服务器通过 WiFi 以 adhoc 模式进行通信。
root@cyclone5:/proc/sys/net/core# cat rmem_max
163840
root@cyclone5:/proc/sys/net/core# sysctl -w rmem_max=22
sysctl: cannot stat /proc/sys/rmem_max: No such file or directory
该文件位于 path 处 /proc/sys/net/core
,但是stat
正在寻找 path 处的文件/proc/sys/
我还尝试过以下操作:
root@cyclone5:/proc/sys/net/core# sysctl -w net.core.rmem_max=22
sysctl: setting key "net.core.rmem_max": Invalid argument
net.core.rmem_max = 22
有人能解决这个问题吗?
调整缓冲区大小的目的是因为,我不想将数据包在缓冲区中排队。每次调用recvfrom
和时,都可以用新数据包覆盖旧数据包sendto
。
编辑:
对这个问题进行更多调试,我发现我可以为此缓冲区设置的最小字节是 2240 字节。
root@cyclone5:/proc/sys/net/core# echo 2238 > rmem_max
-sh: echo: write error: Invalid argument
root@cyclone5:/proc/sys/net/core# echo 2239 > rmem_max
-sh: echo: write error: Invalid argument
root@cyclone5:/proc/sys/net/core# echo 2240 > rmem_max
root@cyclone5:/proc/sys/net/core# cat rmem_max
2240
有没有办法将这个数字减少到低至 22 字节?