24장. 네트워크 결정성 팁


TCP는 대기 시간에 큰 영향을 미칠 수 있습니다. TCP는 대기 시간을 추가하여 효율성을 확보하고, 혼잡을 제어하고, 안정적인 제공을 보장합니다. 네트워크 결정성을 위한 튜닝 시 정렬된 전달이 필요한지, 패킷 손실에 대한 보호가 필요한지, TCP가 필요한지 여부를 고려하십시오.

네트워크 결정성을 위한 튜닝 시 다음을 고려하십시오.

  • 주문 배송이 필요하십니까?
  • 패킷 손실에 대한 보호가 필요합니까?

    패킷을 두 번 이상 전송하면 지연이 발생할 수 있습니다.

  • TCP가 필요하십니까?

    소켓에서 TCP_NODELAY 를 사용하여 나글 버퍼링 알고리즘을 비활성화하는 것이 좋습니다. 나글 알고리즘은 모두 한 번에 보낼 작은 발신 패킷을 수집하고 대기 시간에 부정적인 영향을 미칠 수 있습니다.

24.1. 대기 시간 또는 처리량에 민감한 서비스를 위해 RHEL 최적화

병합 튜닝은 지정된 워크로드에 대한 인터럽트를 최소화하는 것을 목표로 합니다. 처리량이 높은 상황에서 목표는 높은 데이터 속도를 유지하면서 가능한 한 적은 수의 인터럽트를 사용하는 것입니다. 대기 시간이 짧은 상황에서는 더 많은 인터럽트를 사용하여 트래픽을 신속하게 처리할 수 있습니다.

네트워크 카드의 설정을 조정하여 단일 인터럽트로 결합된 패킷 수를 늘리거나 줄일 수 있습니다. 결과적으로 트래픽의 처리량 또는 대기 시간을 개선할 수 있습니다.

프로세스

  1. 병목 현상이 발생하는 네트워크 인터페이스를 식별합니다.

    # ethtool -S enp1s0
    NIC statistics:
         rx_packets: 1234
         tx_packets: 5678
         rx_bytes: 12345678
         tx_bytes: 87654321
         rx_errors: 0
         tx_errors: 0
         rx_missed: 0
         tx_dropped: 0
         coalesced_pkts: 0
         coalesced_events: 0
         coalesced_aborts: 0

    이름에서 드롭 삭제, 삭제 또는 오류가 포함된 패킷 카운터를 식별합니다. 이러한 특정 통계는 NIC(네트워크 인터페이스 컨트롤러) 패킷 버퍼에서 실제 패킷 손실을 측정하며, NIC 병합으로 인해 발생할 수 있습니다.

  2. 이전 단계에서 확인한 패킷 카운터 값을 모니터링합니다.

    네트워크에 대해 예상되는 값과 비교하여 특정 인터페이스에 병목 현상이 발생하는지 확인합니다. 네트워크 병목 현상의 몇 가지 일반적인 표시에는 다음이 포함되지만 이에 국한되지는 않습니다.

    • 네트워크 인터페이스에 많은 오류
    • 높은 패킷 손실
    • 네트워크 인터페이스의 사용량이 많이 있음

      참고

      다른 중요한 요인은 네트워크 병목 현상을 식별할 때 CPU 사용량, 메모리 사용량, 디스크 I/O 등의 중요한 요소입니다.

  3. 현재 인터럽트 병합 설정을 확인합니다.

    # ethtool -c enp1s0
    Coalesce parameters for enp1s0:
            Adaptive RX: off
            Adaptive TX: off
            RX usecs: 100
            RX frames: 8
            RX usecs irq: 100
            RX frames irq: 8
            TX usecs: 100
            TX frames: 8
            TX usecs irq: 100
            TX frames irq: 8
    • usecs 값은 인터럽트를 생성하기 전에 수신자 또는 송신기가 대기하는 마이크로초의 수를 나타냅니다.
    • 프레임 값은 인터럽트를 생성하기 전에 수신자 또는 송신기가 대기하는 프레임 수를 나타냅니다.
    • irq 값은 네트워크 인터페이스에서 인터럽트를 이미 처리하고 있을 때 인터럽트 모드를 구성하는 데 사용됩니다.

      참고

      모든 네트워크 인터페이스 카드에서 예제 출력의 모든 값을 보고하고 변경하는 데 지원되지는 않습니다.

    • Adaptive RX/TX 값은 인터럽트 병합 설정을 동적으로 조정하는 Adaptive 인터럽트 병합 메커니즘을 나타냅니다. 패킷 상태에 따라 Adaptive RX/TX 가 활성화된 경우 NIC 드라이버에서 병합 값을 자동으로 계산합니다(각 NIC 드라이버마다 알고리즘이 다릅니다).
  4. 필요에 따라 병합 설정을 수정합니다. 예를 들면 다음과 같습니다.

    • ethtool.coalesce-adaptive-rx 는 비활성화되지만 RX 패킷에 대해 인터럽트 를 100 마이크로초로 생성하기 전에 지연을 설정하도록 ethtool.coalesce-rx 를 구성합니다.

      # nmcli connection modify enp1s0 ethtool.coalesce-rx-usecs 100
    • ethtool.coalesce-rx-usecs 가 기본값으로 설정된 동안 ethtool.coalesce-adaptive-rx -rx를 활성화합니다.

      # nmcli connection modify enp1s0 ethtool.coalesce-adaptive-rx on

      다음과 같이 Adaptive-RX 설정을 수정합니다.

      • 짧은 대기 시간(sub-50us)을 우선시하는 경우 Adaptive-RX 를 활성화하지 마십시오.
      • 처리량을 우선시하는 경우 영향을 주지 않고 Adaptive-RX 를 활성화할 수 있습니다. Adaptive 인터럽트 병합 메커니즘을 사용하지 않으려면 100us 또는 250us와 같은 큰 값을 ethtool.coalesce-rx-usecs 로 설정합니다.
      • 요구 사항에 대해 확실하지 않은 경우 문제가 발생할 때까지 이 설정을 수정하지 마십시오.
  5. 연결을 다시 활성화합니다.

    # nmcli connection up enp1s0

검증

  • 네트워크 성능을 모니터링하고 삭제된 패킷을 확인합니다.

    # ethtool -S enp1s0
    NIC statistics:
         rx_packets: 1234
         tx_packets: 5678
         rx_bytes: 12345678
         tx_bytes: 87654321
         rx_errors: 0
         tx_errors: 0
         rx_missed: 0
         tx_dropped: 0
         coalesced_pkts: 12
         coalesced_events: 34
         coalesced_aborts: 56
    ...

    rx_errors,rx_dropped,tx_errors, tx_dropped 필드의 값을 0으로 유지하거나 0에서 가까운 필드(네트워크 트래픽 및 시스템 리소스에 따라 수백 개 이상)를 유지합니다. 이러한 필드의 높은 값은 네트워크 문제를 나타냅니다. 카운터는 다른 이름을 가질 수 있습니다. 이름에 "drop", "discard" 또는 "error"가 포함된 패킷 카운터를 밀접하게 모니터링합니다.

    rx_packets,tx_packets,rx_bytes, tx_bytes 의 값은 시간이 지남에 따라 증가합니다. 값이 증가하지 않으면 네트워크에 문제가 있을 수 있습니다. NIC 드라이버에 따라 패킷 카운터의 이름이 다를 수 있습니다.

    중요

    ethtool 명령 출력은 사용 중인 NIC 및 드라이버에 따라 다를 수 있습니다.

    대기 시간이 매우 짧은 사용자는 모니터링 목적으로 애플리케이션 수준 메트릭 또는 커널 패킷 시간 샘플링 API를 사용할 수 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동