12장. 인터럽트 병합 설정 튜닝
인터럽트 병합은 네트워크 카드에서 생성된 인터럽트 수를 줄이기 위한 메커니즘입니다. 일반적으로 인터럽트 수가 감소하면 네트워크의 대기 시간과 전체 성능이 향상될 수 있습니다.
인터럽트 병합 설정을 튜닝하려면 다음을 제어하는 매개변수를 조정해야 합니다.
- 단일 인터럽트에 결합된 패킷 수입니다.
- 인터럽트를 생성하기 전 지연.
최적의 병합 설정은 사용 중인 특정 네트워크 조건 및 하드웨어에 따라 다릅니다. 따라서 환경과 요구에 가장 적합한 설정을 찾기 위해 여러 번 시도할 수 있습니다.
12.1. 대기 시간 또는 처리량에 민감한 서비스를 위해 RHEL 최적화 링크 복사링크가 클립보드에 복사되었습니다!
병합 튜닝의 목표는 지정된 워크로드에 필요한 인터럽트 수를 최소화하는 것입니다. 처리량이 높은 상황에서 목표는 높은 데이터 속도를 유지하면서 가능한 한 적은 수의 인터럽트를 보유하는 것입니다. 대기 시간이 짧은 상황에서는 더 많은 인터럽트를 사용하여 트래픽을 신속하게 처리할 수 있습니다.
네트워크 카드의 설정을 조정하여 단일 인터럽트로 결합된 패킷 수를 늘리거나 줄일 수 있습니다. 결과적으로 트래픽의 처리량 또는 대기 시간을 개선할 수 있습니다.
프로세스
병목 현상이 발생하는 네트워크 인터페이스를 식별합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이름에서
드롭삭제, 삭제또는오류가포함된 패킷 카운터를 식별합니다. 이러한 특정 통계는 NIC(네트워크 인터페이스 카드) 패킷 버퍼에서 실제 패킷 손실을 측정하며, NIC 병합으로 인해 발생할 수 있습니다.이전 단계에서 확인한 패킷 카운터 값을 모니터링합니다.
네트워크에 대해 예상되는 값과 비교하여 특정 인터페이스에 병목 현상이 발생하는지 확인합니다. 네트워크 병목 현상의 몇 가지 일반적인 표시에는 다음이 포함되지만 이에 국한되지는 않습니다.
- 네트워크 인터페이스에 많은 오류
- 높은 패킷 손실
네트워크 인터페이스의 사용량이 많이 있음
참고다른 중요한 요인은 네트워크 병목 현상을 식별할 때 CPU 사용량, 메모리 사용량, 디스크 I/O 등의 중요한 요소입니다.
현재 인터럽트 병합 설정을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
usecs값은 인터럽트를 생성하기 전에 수신자 또는 송신기가 대기하는 마이크로초의 수를 나타냅니다. -
프레임값은 인터럽트를 생성하기 전에 수신자 또는 송신기가 대기하는 프레임 수를 나타냅니다. irq값은 네트워크 인터페이스에서 인터럽트를 이미 처리하고 있을 때 인터럽트 모드를 구성하는 데 사용됩니다.참고모든 네트워크 인터페이스 카드에서 예제 출력의 모든 값을 보고하고 변경하는 데 지원되지는 않습니다.
-
Adaptive RX/TX값은 인터럽트 병합 설정을 동적으로 조정하는 Adaptive 인터럽트 병합 메커니즘을 나타냅니다. 패킷 상태에 따라Adaptive RX/TX가 활성화된 경우 NIC 드라이버에서 병합 값을 자동으로 계산합니다(각 NIC 드라이버마다 알고리즘이 다릅니다).
-
필요에 따라 병합 설정을 수정합니다. 예를 들면 다음과 같습니다.
ethtool.coalesce-adaptive-rx는 비활성화되지만 RX 패킷에 대해 인터럽트를 100 마이크로초로 생성하기 전에 지연을 설정하도록 ethtool.coalesce-rx를 구성합니다.nmcli connection modify enp1s0 ethtool.coalesce-rx-usecs 100
# nmcli connection modify enp1s0 ethtool.coalesce-rx-usecs 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow ethtool.coalesce-rx-usecs가 기본값으로 설정된 동안ethtool.coalesce-adaptive-rx-rx를 활성화합니다.nmcli connection modify enp1s0 ethtool.coalesce-adaptive-rx on
# nmcli connection modify enp1s0 ethtool.coalesce-adaptive-rx onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같이 Adaptive-RX 설정을 수정합니다.
-
짧은 대기 시간(sub-50us)에 관련된 사용자는
Adaptive-RX를 활성화해서는 안 됩니다. -
처리량에 관련된 사용자는 손상 없이
Adaptive-RX를 활성화할 수 있습니다. Adaptive 인터럽트 병합 메커니즘을 사용하지 않으려면 100us와 같은 큰 값을 설정하거나ethtool.coalesce-rx-usecs로 250us를 설정할 수 있습니다. - 사용자가 문제가 발생할 때까지 요구 사항에 대해 잘 모르는 경우 이 설정을 수정해서는 안 됩니다.
-
짧은 대기 시간(sub-50us)에 관련된 사용자는
연결을 다시 활성화합니다.
nmcli connection up enp1s0
# nmcli connection up enp1s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
네트워크 성능을 모니터링하고 삭제된 패킷을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rx_errors,rx_dropped,tx_errors,tx_dropped필드의 값은 0이어야 합니다(네트워크 트래픽 및 시스템 리소스에 따라 최대 수백 개까지). 이러한 필드의 높은 값은 네트워크 문제를 나타냅니다. 카운터는 다른 이름을 가질 수 있습니다. 이름에 "drop", "discard" 또는 "error"가 포함된 패킷 카운터를 밀접하게 모니터링합니다.rx_packets,tx_packets,rx_bytes,tx_bytes의 값은 시간이 지남에 따라 증가해야 합니다. 값이 증가하지 않으면 네트워크에 문제가 있을 수 있습니다. NIC 드라이버에 따라 패킷 카운터의 이름이 다를 수 있습니다.중요ethtool명령 출력은 사용 중인 NIC 및 드라이버에 따라 다를 수 있습니다.대기 시간이 매우 짧은 사용자는 모니터링 목적으로 애플리케이션 수준 메트릭 또는 커널 패킷 시간 샘플링 API를 사용할 수 있습니다.