소켓 버퍼의 크기에 대한 질문 합니다.
글쓴이: air74 / 작성시간: 수, 2004/10/20 - 3:35오후
안녕하세요.
소켓 버퍼 사이즈 와 UDP 통신 성능 관련 TEST 를 해봤습니다.
소켓 버퍼 사이즈를 128KB, 2MB, 8MB 로 바꾸어 테스트를 해보니. . .
버퍼 사이즈가 8MB 일경우 가장 좋은 성능이 나오더라구요.
여기서 개념 적인 질문 드릴께요.
1. 소켓 버퍼가 가장 클경우 성능이 잘 나오는것이 일반적인 현상 인가요?
2. 소켓 버퍼를 아주 크게 하면 예상 되는 문제점이 있나요?
그럼 수고 하세요. ^^
Forums:
소켓사이즈라면 프로그램 내부에서 setsockopt ()를 사용하신건가요
소켓사이즈라면 프로그램 내부에서 setsockopt ()를 사용하신건가요?
제가 알기로는 setsockopt()를 이용한 변화는 시스템에서 지정한 최대 크기 안에서
변화되는 것으로 알고 있습니다.
즉, 시스템에서 MAX의 Default 107520이라면 이보다 큰 값을 설정해도 이값을
넘어갈 수 없다고 알고 있습니다.
실제로 버퍼값을 변화는 Kernel을 변경하거나
http://spcc.uos.ac.kr/articles/articles/2001.03.13%20:%20Gigabie%20NIC%20test%20on%20Alpha%20DS10/
링크와 같은 형태로 /proc값을 변화시켜줌으로써 변화가 가능합니다.
버퍼가 클경우 예상되는 문제점은 한두가지 생각되는군요.
일단 버퍼가 너무크면 그 버퍼가 다 찰때까지 대기해야합니다. 즉, Delay가 상당히
길어질 수 있다는 겁니다.
두번째 문제점은 UDP의 경우 Packet을 잃어버렸을 경우에 큰 버퍼값을 다시 전송해야
하기 때문에 그것도 문제 될 수가 있겠죠.(요청이 있다면...)
버퍼가 크면 그만큼 시스템에 부담이 갑니다. 그리고 UDP만 적용되는것이 아니고
TCP에도 적용이 되기 때문에 잘 고려해야합니다.
TCP통신을 해야하는데 버퍼가 찰때까지 기다려야한다면(TCP는 보통 실시간을
많이 하기때문에 timeout이 걸릴 확률이 커지겠죠.) 많은 프로그램에서 오류를
발생시킬 수도 있습니다.
------------------------------
좋은 하루 되세요.
댓글 달기