11.3.2. 루프백 인터페이스에 대한 성능 영향


소켓 옵션을 활성화하려면 gcc tcp_nodelay_client.c -o tcp_nodelay_client -lrt 를 사용하여 빌드한 다음 적절한 옵션을 설정합니다.

다음 예제에서는 루프백 인터페이스를 사용하여 다음 세 가지 변형을 보여줍니다.

  • 버퍼 쓰기를 즉시 보내려면 TCP_NODELAY 로 구성된 소켓에서 no_delay 옵션을 설정합니다.

    $ ./tcp_nodelay_client localhost --port=5001 --nr_logical_packets=10000 --no_delay --verbose
    
     10000 packets (100 buffers) sent in 4079.655518 ms: 490.237457 bytes/ms using TCP_NODELAY

    TCP는 버퍼를 즉시 전송하여 작은 패킷을 결합하는 알고리즘을 비활성화합니다. 이렇게 하면 성능이 향상되지만 각 논리 패킷에 대해 작은 패킷의 변동이 발생할 수 있습니다.

  • 여러 데이터 패킷을 수집하여 하나의 시스템 호출로 보내려면 TCP_CORK 소켓 옵션을 구성합니다.

    $ /tcp_nodelay_client localhost --port=5001 --nr_logical_packets=10000 --cork --verbose
    
     10000 packets (100 buffers) sent in 669.514221 ms: 2987.240479 bytes/ms using TCP_CORK

    코크 기술을 사용하면 버퍼에서 전체 논리 패킷을 결합하고 전체 네트워크 패킷을 덜 보낼 때 데이터 패킷을 보내는 데 필요한 시간이 크게 줄어듭니다. 적절한 시간에 코르크 를 제거해야 합니다.

    프로그램을 개발할 때 파일에서 대량 데이터를 보내야하는 경우 sendfile() 옵션과 함께 TCP_CORK 를 사용하는 것이 좋습니다.

  • 소켓 옵션을 사용하지 않고 성능을 측정하려면 다음을 수행합니다.

    $ ./tcp_nodelay_client localhost --port=5001 --nr_logical_packets=10000 --verbose
    
     10000 packets (100 buffers) sent in 410403.718750 ms: 4.873250 bytes/ms

    이는 TCP가 버퍼 쓰기를 결합하고 네트워크 패킷에 최적으로 들어갈 수 있는 것보다 더 많은 데이터를 확인하기 위해 대기할 때의 기준 척도입니다.

작은 정보

자세한 내용은 시스템의 sendfile(2) 매뉴얼 페이지를 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동