특정 기능을 개발하다 보면,
TCP나 UDP의 버퍼길이까지 튜닝하여야 하는 경우가 발생한다. (예: heartbeat 데몬 등)
이 때 TCP/UDP의 버퍼길이 조정을 하는 api는 주로 setsockopt를 통해 하게 되는데
min이나 max가 제한되어 있으므로 이를 미리 확인하는게 좋다.
Linux에서
/sbin/sysctl -a | grep net.core 와
/sbin/sysctl -a | grep net.ipv4 로 확인이 가능하다.
//아래 예제에서 wmem:sendBuf, rmem: receive Buf
net.core.wmem_max = 5242880
net.core.rmem_max = 5242880
net.core.wmem_default = 2097152
net.core.rmem_default = 2097152
net.ipv4.tcp_mem = 196608 262144 393216
net.ipv4.tcp_wmem = 16384 122880 204800
net.ipv4.tcp_rmem = 16384 122880 204800
net.ipv4.udp_mem = 761952 1015936 1523904
net.ipv4.udp_rmem_min = 2097152
net.ipv4.udp_wmem_min = 2097152
아직 테스트 중이라 확실치 않은 부분이 있긴한데
setsockopt 함수를 사용하면 sendbuf는 2048, receiveBuf는 256까지 min으로 설정이 되는 것으로 보인다.
(설정값 *2 로 세팅이 되므로 함수 호출시에는 그 반으로 해야함)