게임 렉 백서 › L6 서버 네트워크 카드
인터럽트 병합 과다 Interrupt coalescing
원인 ID nic-coalesce · 주 담당 인프라팀·서버 인프라
그림과 실험이 있는 원본 카드로 열기 →
CPU 부담을 줄이려고 패킷을 모았다 한 번에 알리면, 모으는 시간만큼 늦어집니다.
왜 NIC가 일정 시간·개수만큼 모았다가 알림 → 그러면 모으는 동안 패킷이 대기 → 화면에서는 미세한 지연 증가. 보통은 작지만 과하면 ms 단위
- 증상
- 입력 지연
- 요인
- 지연
- 누가 겪나
- 서버 전체
- 언제
- 항상
- 담당
- 주 담당 인프라팀·서버 인프라
- 인프라팀 할 일
- 적응형 병합, 게임 서버에 맞는 값으로 조정(ethtool -C).
- 수치 감각
- 보통 수십~수백 µs. 게임에는 대개 무시할 수준이지만 설정이 과하면 ms로 커집니다.
- 그래프에서는
- 처음부터 늘 높음 · 같은 데이터센터 안 왕복 시간
- 확인할 곳
- ethtool -c로 현재 병합 설정(adaptive-rx, rx-usecs, rx-frames)을 보고 같은 데이터센터의 다른 서버와 ping 왕복 시간을 설정을 바꾸기 전후로 비교
- 이러면 맞음
- rx-usecs가 수백 µs 이상으로 크게 잡혀 있고 값을 줄이면 같은 데이터센터 안 왕복 시간이 그만큼 줄어듦
- 이러면 아님
- 줄여도 왕복 시간이 그대로면 이 원인이 아님
- 확인 수단
- 인프라 도구로 확인(게임 코드 불필요)
출처
- Linux Driver for Intel(R) Ethernet Network Connection (e1000e) Linux kernel
기본은 적응형 인터럽트 조절로 초당 4,000~20,000번(간격 50~250µs), 인터럽트를 줄이면 CPU는 아끼지만 지연이 늘어남 - Linux Base Driver for Intel(R) Ethernet Network Connection (e1000) Linux kernel
RxIntDelay로 수신 인터럽트를 1.024µs 단위로 최대 65,535까지(약 67ms) 늦출 수 있고, 값을 키우면 수신 지연이 늘어남 - ethtool(8) — Linux manual page ethtool
ethtool -C의 adaptive-rx·rx-usecs·rx-frames 설정
함께 보면 좋은 원인
같은 층: L6 서버 네트워크 카드
같은 증상(입력 지연)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기