검색

31.12. 인터럽트 병합 설정 튜닝

download PDF

인터럽트 병합은 네트워크 카드로 생성되는 인터럽트 수를 줄이기 위한 메커니즘입니다. 일반적으로 인터럽트가 줄어들면 네트워크의 대기 시간과 전체 성능이 향상될 수 있습니다.

인터럽트 병합 설정을 튜닝하려면 다음을 제어하는 매개변수를 조정해야 합니다.

  • 단일 인터럽트로 결합된 패킷 수입니다.
  • 인터럽트를 생성하기 전에 지연입니다.
중요

최적의 병합 설정은 사용 중인 특정 네트워크 조건 및 하드웨어에 따라 다릅니다. 따라서 환경 및 요구 사항에 가장 적합한 설정을 찾으려면 몇 가지 시도가 필요할 수 있습니다.

31.12.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

    이름에 "drop", "discard" 또는 "error"가 포함된 패킷 카운터를 식별합니다. 이러한 특정 통계는 NIC 병합으로 인해 발생할 수 있는 NIC(네트워크 인터페이스 카드) 패킷 버퍼의 실제 패킷 손실을 측정합니다.

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

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

    • 네트워크 인터페이스에서 많은 오류
    • 높은 패킷 손실
    • 네트워크 인터페이스를 많이 사용

      참고

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

  3. 현재 coalescence 설정을 확인합니다.

    # ethtool enp1s0
    Settings for enp1s0:
            Supported ports: [ TP ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Full
            Supported pause frame use: No
            Supports auto-negotiation: Yes
            Advertised link modes:  10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Full
            Advertised pause frame use: No
            Advertised auto-negotiation: Yes
            Speed: 1000Mb/s
            Duplex: Full
            Port: Twisted Pair
            PHYAD: 0
            Transceiver: internal
            Auto-negotiation: on
            MDI-X: Unknown
            Supports Wake-on: g
            Wake-on: g
            Current message level: 0x00000033 (51)
                                   drv probe link
            Link detected: yes

    이 출력에서 speed 및 Duplex 필드를 모니터링합니다. 이러한 필드에는 네트워크 인터페이스 작업과 예상되는 값으로 실행 중인지에 대한 정보가 표시됩니다.

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

    # 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 값은 인터럽트 병합 설정을 동적으로 조정하는 조정 인터럽트 결합 메커니즘을 나타냅니다. 패킷 조건에 따라 NIC 드라이버는 Adaptive RX/TX 가 활성화될 때 값을 자동으로 계산합니다(단, NIC 드라이버마다 알고리즘이 다릅니다).
  5. 필요에 따라 병합 설정을 수정합니다. 예를 들어 다음과 같습니다.

    • ethtool.coalesce-adaptive-rx 가 비활성화되어 있지만 RX 패킷의 인터럽트를 100마이크로초로 생성하기 전에 ethtool.coalesce-rx-usecs 를 구성하여 지연을 설정합니다.

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

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

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

      • 낮은 대기 시간 (sub-50us)에 관련된 사용자는 Adaptive-RX 를 활성화해서는 안 됩니다.
      • 처리량에 관련된 사용자는 잠재적으로 Adaptive-RX 를 손상 없이 활성화할 수 있습니다. 사용자가 조정 인터럽트 병합 메커니즘을 사용하지 않으려면 100us와 같은 큰 값을 사용하거나 250us를 ethtool.coalesce-rx-usecs 로 설정할 수 있습니다.
      • 요구 사항에 대해 확실하지 않은 사용자는 문제가 발생할 때까지 이 설정을 수정하지 않아야 합니다.
  6. 연결을 다시 활성화합니다.

    # 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이거나 (네트워크 트래픽 및 시스템 리소스에 따라 최대 수백 개까지) 있어야 합니다. 이 필드의 높은 값은 네트워크 문제를 나타냅니다. 카운터의 이름이 다를 수 있습니다. 이름에 "drop", "discard" 또는 "error"가 포함된 패킷 카운터를 면밀히 모니터링합니다.

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

    중요

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

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

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.