
'Nagle'에 해당되는 글 1건
- 2008.05.21
네트웍에서 Nagle 알고리즘은 "가능하면 조금씩 여러번 보내지말고 한번에 많이 보내라(Effective TCP)" 라는 원칙을 기반으로 만들어진 알고리즘입니다.
WinSock 의경우 기본으로 Navle 알고리즘이 적용이 되어있습니다. 하지만 몇몇 네트웍 관련 프로그램에서는 네트웍 의 전송량이나 부하보다는 빠른 응답속도를 더 중요시 여기는 상황이 있습니다. 그러한때에는 TCP_NODELAY 라는 옵션을 사용하여 Nagle 알고리즘을 제거 할 수 있습니다.
해당 코드를 적용하는 방법은
int nValue = 1;
setsockopt( TCP_NODELAY, &nValue, sizeof(int), IPPROTO_TCP );
의 코드를 사용합니다.
아래는 100Byte 의 패킷을 5번에 걸처서 보내고 에코로 받은 결과입니다.
Nagle 알고리즘 적용 (default) : 100~150ms
Nagle 알고리즘 해제 : 1~3 ms
하지만 해당 옵션의 사용은 네트웍 부하를 극대화 시켜주면서 서버의 전체적인 성능을
무척감소하기때문에 꼭 필요한경우에만 매우 주의를 해서 사용해야 합니다.
추가로 "Effective TCP Programming" 역시 추천도서입니다. ^^
네트웍 프로그램을 향상하는 44가지 팁이라고 하는데 저의 경우
15개정도의 팁만이 쓸모가 있더군요.