UDP 수신 및 전송 버퍼 크기를 조정하려고 합니다. 실시간 애플리케이션 요구 사항에 따라 Tx 버퍼를 6바이트로 구성하고 Rx 버퍼를 22바이트로 구성해야 합니다. 저는 ARM A9 프로세서에서 Angstrom을 실행하고 있습니다. (알테라 사이클론 대 soc). 클라이언트와 서버는 WiFi를 통해 임시 모드로 통신합니다.
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
파일이 경로에 있지만 /proc/sys/net/core
경로 stat
에서 파일을 찾고 있습니다./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바이트까지 줄일 수 있는 방법이 있습니까?