네트웍을 통해서 대용량 파일을 전송할 때, 적절한 버퍼사이즈를

aswip의 이미지

네트웍 을 통해서 동영상 파일과 같은 매우 큰 파일을 보내려 합니다. Sending Buffer Size를 크게 잡으면, 일부 클라이언트 환경에서는 데이터가 유실되는 현상이 발생하지만, 대개의 경우 전송 속도는 매우 빠른 편입니다. 반면에, Sending Buffer Size를 작게 잡으면 ( 약 1024 바이트 ) 데이터가 유실되는 현상을 없지만, 전송 속도가 느려지는 현상이 발생합니다.

다른 분들을 네트웤 프로그래밍 시에 이와 같은 부분에서의 성능 튜닝을 어떤식으로 하는지 의견을 듣고 싶어서 이렇게 질문을 올립니다. ^^

ironiris의 이미지

네트워크프로그래밍을 해본적은 없지만..
클라이언트와 교신을 해봐서 응답이 빠르면 버퍼사이즈를 작게 잡고 응답이 느리면 버퍼사이즈를 크게잡는 것이 어떨런지요? 버퍼사이즈를 크게 잡고 중간 중간 패리티비트라도 하나씩 삽입해서 보내는 것은 또 어떨런지요?

mach의 이미지

* 관련된 논의입니다.
http://bbs.kldp.org/viewtopic.php?t=36468

*그외 몇몇 유용한 도구를 소개하자면
http://dast.nlanr.net/Projects/Iperf/
를 먼저 보시고, 이 사이트를 보시다가 보면, 관련링크들이 있는데 이 또한
볼만합니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

ssehoony의 이미지

데이터 유실? udp 사용하시나요?

tcp 에서는 일단 송신부에서 송신한 데이터는 수신부에서 접속이 끊겨서 받지 못하지 않는 한 유실되지 않습니다. (이것이 udp 에 비해 갖는 tcp 장점중 하나입니다.)
그리고 tcp 의 send 버퍼는 크면 클 수록 메모리를 더 많이 소비하는 단점이 있지만 송신 속도면에서는 더 좋습니다.
보통 send 버퍼 사이즈는 패킷의 round trip 시간과 mss 사이즈, send window 사이즈 등을 고려해서 셋팅하는데 이것 역시 가장 빠른 송신 속도를 보여주는 최소의 send 버퍼 사이즈를 가늠하는 방법이며, 이때 발견한 최소의 send 버퍼 사이즈 이상만 되면 동일한 송신 속도를 보여줍니다.

아마 유실된다는 하는 것은 논블럭 소켓에 write 했을 때 write 함수의 return 값을 확인하여 모든 데이터를 send 버퍼에 적재했는지 여부를 확인하지 않으신 건 아닌가 하는 생각이 듭니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.