한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

게임 렉 백서 › L6 서버 네트워크 카드

GRO/LRO 병합 대기 지연 GRO/LRO batching

원인 ID nic-offload · 주 담당 인프라팀·서버 인프라

그림과 실험이 있는 원본 카드로 열기 →

여러 패킷을 하나로 묶어 CPU 부담을 줄이는 기능입니다. 설정에 따라 작은 게임 패킷이 함께 묶을 다음 패킷을 잠깐 기다리기도 합니다.

왜 NIC·커널이 도착한 패킷을 묶어서 처리 → 그러면 하드웨어 병합(LRO)이나 병합 대기 시간 설정이 켜져 있으면 다음 패킷을 기다리며 잠깐 대기 → 화면에서는 미세한 지연 증가(대개 수십 µs 이하)

증상
입력 지연
요인
지연
누가 겪나
서버 전체
언제
항상
담당
주 담당 인프라팀·서버 인프라
인프라팀 할 일
게임 트래픽에 맞게 조정(LRO 끄기, 병합 대기 시간 설정 확인), 효과는 대개 작으니 다른 원인보다 뒤에 확인.
그래프에서는
처음부터 늘 높음 · 같은 데이터센터 안 왕복 시간
확인할 곳
ethtool -k로 lro·gro 상태를, 장치의 sysfs 설정 gro_flush_timeout 값을 확인하고 바꾸기 전후 같은 데이터센터 안 작은 패킷의 왕복 시간을 비교
이러면 맞음
LRO가 켜져 있거나 gro_flush_timeout이 0보다 크고 끄거나 0으로 두면 작은 패킷의 왕복 시간이 줄어듦
이러면 아님
바꿔도 차이가 수 µs 안쪽이면 이 원인이 아님
확인 수단
인프라 도구로 확인(게임 코드 불필요)

출처

  1. NAPI Linux kernel
    gro_flush_timeout을 크게 잡으면 묶어 처리하는 대신 부하가 낮을 때 지연이 생김
  2. Linux Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters (ixgbe) Linux kernel
    GRO는 수신 트래픽을 큰 덩어리로 합쳐 CPU를 아끼는 기능이고 LRO를 발전시킨 것
  3. ethtool(8) — Linux manual page ethtool
    ethtool -K의 gro·lro on|off 설정

함께 보면 좋은 원인

같은 층: L6 서버 네트워크 카드

같은 증상(입력 지연)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기