소켓 버퍼는 송신 버퍼와 수신 버퍼 두 개가 있습니다.
간단히 'sysctl net.ipv4.tcp_rmem' 과 같이 sysctl 명령으로 확인 가능하고..
(수신 버퍼는 rmem, 송신 버퍼는 wmem)
getsockopt(.., FIONREAD, ..) 함수로도 확인 가능합니다.
관련된 파라미터를 모두 보시려면 'sysctl -a | grep [rw]mem' 라고 입력해 보세요.
지연 현상을 어떤 의미로 쓰셨는지 조금 애매하긴 한데..
tcp 의 경우 버퍼를 초과한 패킷은 드랍될 테고, tcp layer 에서 re-transmission 이 일어날 겁니다.
re-transmission 이 일어나면, 한 번 보낸 패킷을 다시 보내야 하니..
언뜻 보면 delay 되고 있다고 봐도 되지 않겠냐 할 수 있겠지만.. 그건 그냥 커널 사정이고..
어플리케이션 입장에서는 소켓에 항상 데이터가 들어 있을 테니, 그거 읽어서 처리하느라 바빠서..
거의 유휴 시간 없이 일하고 있을 겁니다.
어쨌든 이런 패킷 전송과 관련된 부분은 tcp/ip 레이어에서 알아서 잘 제어되고 있기 때문에..
대역폭을 극단적으로 활용해야 하는 경우가 아닌 일반적인 프로그램의 경우에는..
그러한 내용에 대해 고려해야 할 일이 별로 없습니다.
대개는 내가 얼마만큼 보냈고, 보낸 만큼 잘 받았는지만 신경쓰면 된다는 얘기죠.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
음 ..
소켓 버퍼는 송신 버퍼와 수신 버퍼 두 개가 있습니다.
간단히 'sysctl net.ipv4.tcp_rmem' 과 같이 sysctl 명령으로 확인 가능하고..
(수신 버퍼는 rmem, 송신 버퍼는 wmem)
getsockopt(.., FIONREAD, ..) 함수로도 확인 가능합니다.
관련된 파라미터를 모두 보시려면 'sysctl -a | grep [rw]mem' 라고 입력해 보세요.
지연 현상을 어떤 의미로 쓰셨는지 조금 애매하긴 한데..
tcp 의 경우 버퍼를 초과한 패킷은 드랍될 테고, tcp layer 에서 re-transmission 이 일어날 겁니다.
re-transmission 이 일어나면, 한 번 보낸 패킷을 다시 보내야 하니..
언뜻 보면 delay 되고 있다고 봐도 되지 않겠냐 할 수 있겠지만.. 그건 그냥 커널 사정이고..
어플리케이션 입장에서는 소켓에 항상 데이터가 들어 있을 테니, 그거 읽어서 처리하느라 바빠서..
거의 유휴 시간 없이 일하고 있을 겁니다.
어쨌든 이런 패킷 전송과 관련된 부분은 tcp/ip 레이어에서 알아서 잘 제어되고 있기 때문에..
대역폭을 극단적으로 활용해야 하는 경우가 아닌 일반적인 프로그램의 경우에는..
그러한 내용에 대해 고려해야 할 일이 별로 없습니다.
대개는 내가 얼마만큼 보냈고, 보낸 만큼 잘 받았는지만 신경쓰면 된다는 얘기죠.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
감사합니다.
감사합니다 많은 도움이 되었습니다!
댓글 달기