병목은 어디에?

2월 말부터 시작해서, 게임 리소스를 네트워크 너머로 배포하는 유틸리티를 작성하고 있다. C# 공부를 겸해서(…) 틈틈이 짜고 있는데, 요 며칠간은 어떤 골치거리 에 매여있는 터라[1] 주로 성능 평가만 했는데, 병목현상이 생기는 곳이 좀 예상치 못한 곳이더라. 개념적으로 보내는 쪽(이하 S), 받는 쪽(이하 R) 두 개의 entity로 구성되며, 대략 다음과 같이 동작한다 S에서 보낼 디렉터리 전체의 요약 […]

TCP segment 가 전송되지 않는다면 어딜 의심할까?

A서버에서 B서버로 대용량 데이터를 전송하는 네트워크 프로그래밍을 하나 한다고 치자. 이런 저런 삽질 끝에 프로그램을 한 쌍 — 보내는 쪽과 받는 쪽 — 만들었다. 이제 이 프로그램을 실험해 볼 차례다. 실험 결과, A 서버에서 네트워크 send() 호출하는 게 충분히 빠르지 않은 것 같다 – 사실 정말 그런진 모르겠고, send-queue가 너무 빨리 늘어나는데 반해, 실제 네트워크 […]