두가지 경우를 생각해 볼 수 있습니다.
파일 서버( 파일을 읽어서, 소켓을 사용하여 전송한 후, 파일을 저장한다.)의 사례가 좋은 예로 보입니다.
파일 시스템의 블럭사이즈에 대한 연구가 있었는데(1980년대초),
이때, 4KB가 성능 및 효율에서 우수하다는 것을
입증한 이후 많은 운영체제(특히, BSD)가 이를
채택하였습니다.
즉, 한번의 시스템 호출로 디스크상에서 입력을 받을때,
어느정도를 읽거나 쓰는게 좋을까? 라는 연구였지요.
디스크 상에서 IO를 수행할 때는 4KB가 가장 이상적이
었음을 알 수 있었습니다.
통신의 관점으로 볼때는 layering와 fragmentation을 고려하게 됩니다.
즉, send()와 recv()시의 적절한 사이즈는 얼마인가?
어느정도 크기가 가장 이상적일까? 인데, 이 또한 운영체제의
구현에 상당부분 의존적입니다. TCP를 사용하는 경우
TCP프로토콜 스택구현에서의 버퍼크기를 고려할 수
있습니다. 이 경우 4KB가 이상적이랄 수 있습니다.(layer 4 TCP에서)
그러나, Layer3는 하드웨어에 비의존적인 라우팅을 수행하기 위해 레이어4의
데이터를 잘게 잘게 자르게 됩니다. 즉 링크레이어의 MTU에 맞게 자르게 됩니다.
예를들어, Ethernet(가장 많이 쓰지요?)의 경우 1500Bytes가 그 최대
사이즈이니, 결국 잘게 조각내서 보내고 다시 붙여서 받는 작업을 수행해야
겠지요.
4K가 유리한 면도 다소 있을 수 있겠습니다만, "일반적"이랄 수는 없는
것입니다.
꼭 그러할 필요는 없습니다.두가지 경우를 생각해 볼 수 있습니다.
꼭 그러할 필요는 없습니다.
두가지 경우를 생각해 볼 수 있습니다.
파일 서버( 파일을 읽어서, 소켓을 사용하여 전송한 후, 파일을 저장한다.)의 사례가 좋은 예로 보입니다.
파일 시스템의 블럭사이즈에 대한 연구가 있었는데(1980년대초),
이때, 4KB가 성능 및 효율에서 우수하다는 것을
입증한 이후 많은 운영체제(특히, BSD)가 이를
채택하였습니다.
즉, 한번의 시스템 호출로 디스크상에서 입력을 받을때,
어느정도를 읽거나 쓰는게 좋을까? 라는 연구였지요.
디스크 상에서 IO를 수행할 때는 4KB가 가장 이상적이
었음을 알 수 있었습니다.
통신의 관점으로 볼때는 layering와 fragmentation을 고려하게 됩니다.
즉, send()와 recv()시의 적절한 사이즈는 얼마인가?
어느정도 크기가 가장 이상적일까? 인데, 이 또한 운영체제의
구현에 상당부분 의존적입니다. TCP를 사용하는 경우
TCP프로토콜 스택구현에서의 버퍼크기를 고려할 수
있습니다. 이 경우 4KB가 이상적이랄 수 있습니다.(layer 4 TCP에서)
그러나, Layer3는 하드웨어에 비의존적인 라우팅을 수행하기 위해 레이어4의
데이터를 잘게 잘게 자르게 됩니다. 즉 링크레이어의 MTU에 맞게 자르게 됩니다.
예를들어, Ethernet(가장 많이 쓰지요?)의 경우 1500Bytes가 그 최대
사이즈이니, 결국 잘게 조각내서 보내고 다시 붙여서 받는 작업을 수행해야
겠지요.
4K가 유리한 면도 다소 있을 수 있겠습니다만, "일반적"이랄 수는 없는
것입니다.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기