게임 렉 백서 › L6 서버 네트워크 카드
NIC 드라이버·펌웨어 문제 NIC hang / reset
원인 ID nic-reset · 주 담당 인프라팀·서버 인프라
그림과 실험이 있는 원본 카드로 열기 →
드라이버 버그나 기능 오동작으로 카드가 멈춰 재시작되는 동안 모든 송수신이 끊깁니다.
왜 드라이버 버그, 오프로드 기능 오동작 → 그러면 NIC가 멈추고 재시작(수 초) → 화면에서는 그 서버의 모두가 함께 멈췄다가 순간이동하거나 접속 끊김
- 증상
- 멈춤, 접속 끊김
- 요인
- 손실
- 누가 겪나
- 서버 전체
- 언제
- 가끔 무작위로, 오래 켜 둘수록
- 담당
- 주 담당 인프라팀·서버 인프라
- 인프라팀 할 일
- 커널 로그의 “transmit queue … timed out”, “Link is Down” 기록 확인·경보, 드라이버·펌웨어 업데이트, 문제 기능(오프로드 등) 끄기.
- 그래프에서는
- 끊겼다가 몰아서 · 서버 송수신 패킷 수
- 확인할 곳
- dmesg로 커널 로그에서 “NETDEV WATCHDOG … transmit queue N timed out”, 드라이버의 재설정, “Link is Down”·“Link is Up” 기록을 찾고 그 시각의 서버 송수신 패킷 수를 봄
- 이러면 맞음
- 멈춘 시각에 커널 로그에 송신 큐 타임아웃이나 링크 다운·업 기록이 있고 그 몇 초 동안 송수신 패킷 수가 0
- 이러면 아님
- 커널 로그가 깨끗하고 스위치 쪽 포트도 멀쩡하면 게임 서버 프로세스의 멈춤(“서버 GC 전체 멈춤”, “데드락”)이나 “네트워크 장비 장애 전환(페일오버)”
- 확인 수단
- 인프라 도구로 확인(게임 코드 불필요)
출처
- net/sched/sch_generic.c (Linux v6.12) Linux kernel
송신 큐가 멈추면 커널 워치독이 “NETDEV WATCHDOG … transmit queue N timed out”을 남기고 드라이버의 재설정 함수를 부름 - drivers/net/ethernet/intel/ixgbe/ixgbe_main.c (Linux v6.12) Linux kernel
ixgbe 드라이버가 송신 멈춤 때 어댑터를 재설정하고 링크가 끊기면 “NIC Link is Down”을 기록 - ethtool(8) — Linux manual page ethtool
ethtool -K로 오프로드 기능을 하나씩 끄는 옵션
함께 보면 좋은 원인
같은 층: L6 서버 네트워크 카드
같은 증상(멈춤)의 다른 층 원인
그림과 실험이 있는 원본 카드 보기