'packet size'에 해당하는 글 1건

출처 : http://kldp.org/node/21098

[Q]

안녕 하세여....

제가 이번에.. rcp 같은걸 하나 C로 개발 하고 있는데여..

Socket에 1024이상 Write를 안정 적으로 할수 있는 방법을 모르 겠네여.
1024는 정상 적으로 동작 하는데...

전송 속도를 빠르게 하려고... packet Size를 늘렸더니.. 헉...

속도 향상을 어떻게 하면 되는지 아시는 분들의 도움을 부탁 드립니다..

남은 시간 구하는 방법도 갈켜 주시면 감사 드리겟습니다.

[A]

패킷사이즈가 전송 속도에 영향을 주는 것은 사실입니다. 너무 잘게 나누어서 보내면 자르고 합치는데 걸리는 시간이 많지요. 과거 버클리에서 네트웍은 아니고 하드디스크에 대해 이와 관련된 실험을 해본적이 있었습니다. 다양한 사이즈로 실험해보고 결론적으로 가장 빠른 사이즈를 선택했습니다. 그 실험결과 4KB였었던 것으로 기억됩니다.
네트웍도 같은 원리로 실험을 해보시는게 좋을 듯합니다. 무조건 크게 준다고 빠르게 가는것은 아니며, 어차피 프로토콜 스택에서 자르고 합치고를 해야하고 결국 물리계층에서 MTU의 크기로 가게될테니까요. 이더넷의 MTU가 1.5KB임을 간과하지 마시고, 1024부터 조금씩 늘려가며 테스트(실험)를 해보신후 정하시는게 좋은 방법같습니다.

[A]

Packet size = (32 << 10) = 32KByte
Packet간 delay = 25ms
로 해서 해보시구요.
잘 안되면 예기주세요.

즉,

do
{
write | send ( sock, data, size);
usleep | select ( 25 * 1000 ); /* 25ms */
}while( 전부 송신할때까지 );


[A]

최근에 패치서버를 만든적이 있었는데..

머 아시겠지만.. 주고 받는 패킷에 보내는 패킷의 크기를 같이 보내는 방법이 이용합니다. 받을때 그 크기를 보고 받게 되죠..

주고 받는 패킷의 크기가 자유롭게 변해두 잘 받고 보내진다면..
이걸 이용해서... 패킷의 크기를 바꿔보는거죠.

현재 패킷 크기일때 총패킷수를 구해서 거기에 루프를 한번 도는 시간을 곱하는 방법으로 전체 보내는 시간을 계산합니다.
글구.. 패킷 크기를 변화시켜 보면서 계산을 계속해 보는거죠..
머.. 그러면서 계속 시간을 비교해 보시면 되지 않을까 싶네요..

머 어떻게 변화시키는가 하는건 머 사람마다 다르겠죠.. ^^;

파일이 아주 크고.. 주고 받는 거리가 멀다면 모를까.. 로컬에서는 별차이가 없었다는.. 쿨럭~

하여간 허접데기 생각이었습니다..
아.. 쓰는김에.. TCP/IP에서 항상 정확히 간다고 알고는 있지만 항상 그렇지도 않은것 같네요.. T^T


'Samsung Software Membership' 카테고리의 다른 글

agile  (0) 2011.01.21
gfs  (0) 2010.12.21
gfs,mapreduce, bigtable 의 간략한 소개  (0) 2010.12.21

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,