Realtek RTL8125D NetAdapterCx 드라이버 분석, 숨겨진 매개변수 활용 저지연 튜닝 도구 공개한다
원문 제목 — I dug into the Realtek RTL8125D NetAdapterCx driver and built a low-latency tuning tool using hidden driver parameters
📄 전문 번역
필자는 게임에서 네트워크 지터와 패킷 처리의 일관성 부족을 줄이기 위해 Windows 11에서 Realtek RTL8125D 2.5GbE 컨트롤러 실험을 진행했고, 평범한 NIC 튜닝에서 출발해 Realtek NetAdapterCx 드라이버 패키지 자체를 파헤치는 작업까지 확장했다. 그 과정에서 만든 설정은 GitHub에 RTL8125D-LowLatency-Tuner라는 이름의 도구로 공개했다. 이 도구는 현재 Realtek NetAdapterCx 드라이버 rt25cx21x64를 사용하는 RTL8125D REV_0C를 대상으로 하며, 기존 Realtek NDIS 드라이버 rt640x64는 아직 지원 및 테스트되지 않았다.
흥미로운 점은 드라이버에 고급 속성 UI에서 숨겨지거나 기본적으로 레지스트리에 아예 생성되지 않는 설정이 여럿 존재한다는 것이었다. 예컨대 필자의 RTL8125D 프로파일에서는 RSS가 노출·구성되지 않았음에도 드라이버에 RSS 구성 지원이 포함돼 있었고, 수동으로 활성화하자 Windows가 실제로 복수의 수신 큐를 사용하기 시작했다. 필자의 하드웨어에서 요청 RSS 큐는 4개, 유효 RSS 큐는 3개였고 RSS 프로세서는 CPU 0, CPU 2, CPU 4로 배정됐으며, 이는 단순히 레지스트리 값이 받아들여진 것이 아니라 Get-NetAdapterRss에서 추가 수신 큐 사용이 실제로 확인된 결과다. 또한 드라이버에서 TxOptimizeThreshold, RxOptimizeThreshold, RxProcMax, TxProcMax, TxDesFetchNum8125, PowerDownPll, IdleRestriction 같은 RTL8125 전용 내부 매개변수도 여럿 발견했다.
필자는 모든 오프로드를 끄는 식의 게이밍 튜닝이 아니라 변경 사항을 개별적으로 테스트했으며, 최종 프로파일은 RSS 활성(유효 큐 3), 인터럽트 모더레이션 비활성, 플로우 컨트롤 비활성, RSC IPv4/IPv6 비활성, LSO IPv4/IPv6 비활성, Priority/VLAN 비활성, 체크섬 오프로드 활성, TxOptimizeThreshold 500, RxOptimizeThreshold 500, RxProcMax 64, TxProcMax 64, TxDesFetchNum8125 4, EEE 비활성, Advanced EEE 비활성, Green Ethernet 비활성, Gigabit Lite 비활성, Power Saving Mode 비활성, IdleRestriction 활성, PowerDownPll 비활성, WDF Idle in Working State 비활성, WDF Directed Power/DFx 비활성, PCIe ASPM 비활성으로 구성됐다.
특히 눈길을 끈 매개변수는 TxDesFetchNum8125였다. 드라이버가 더 높은 내부 기본값을 사용하는 것으로 보여 낮은 값 재정의를 테스트했는데, Cloudflare WARP를 켠 상태의 동일한 Cloudflare 속도 테스트에서 기본값(재정의 없음)은 로드 다운로드 지연이 30ms, 37ms, 28ms로 평균 31.7ms(28~37ms)였다. TxDesFetchNum8125를 4로 설정하자 23ms, 26ms, 27ms로 평균 25.3ms(23~27ms)를 기록해 평균이 약 6ms 낮아졌고, 평균보다 눈에 띄는 것은 테스트 중 지연 변동이 28~37ms 범위에서 23~27ms 범위로 확실히 안정됐다는 점이었다. 값 2로 낮추면 36ms, 28ms, 24ms로 평균 29.3ms로 다시 나빠졌고, 스크린샷은 남기지 못했지만 값 8은 대체로 2와 비슷한 양상을 보여 필자의 RTL8125D에서는 4가 무조건 작은 값보다 나은 스위트 스팟으로 나타났다. 이는 명백히 실험실 수준의 벤치마킹이 아니며 네트워크 경로, 스위치/라우터, Windows 및 드라이버 버전, VPN/터널 사용, 워크로드에 따라 결과가 달라질 수 있다. 더 중요한 관찰은 보다 공격적인 변경 후에도 어댑터가 안정적으로 유지돼 RX 오류 0, RX 폐기 0, TX 오류 0, TX 폐기 0을 기록했다는 점이며, 이는 높은 네트워크 트래픽 상황에서도 마찬가지였다.
필자는 이 구성을 다른 RTL8125D 사용자가 레지스트리 값을 일일이 수정하지 않고 테스트할 수 있도록 작은 Windows GUI로 만들었다. 이 도구는 현재 설정을 테스트된 프로파일과 대조 확인하고, 유효 RSS 큐와 패킷 오류/폐기를 표시하며, 변경 적용 전 레지스트리 백업을 만들고, 모든 설정 적용 후 어댑터를 한 번만 재시작한다. 현재는 DEV_8125 REV_0C에서만 프로파일을 활성화하며 적용 전후 테스트용 Cloudflare 속도 테스트 바로가기도 포함된다. 이 도구는 Realtek NetAdapterCx 드라이버 rt25cx21x64로 개발·테스트됐으며 기존 NDIS 드라이버 rt640x64는 지원·테스트되지 않았다. 일부 일반 NIC 설정은 두 드라이버에 모두 존재하지만 여기서 쓰인 숨겨진 내부 Realtek 매개변수 다수는 NetAdapterCx 드라이버에서 유래한 것이므로 기존 NDIS 구현에서 동일하게 동작한다고 가정해서는 안 된다. 현재 테스트된 구성은 Realtek RTL8125D DEV_8125 REV_0C, Windows 11, Realtek NetAdapterCx, 2.5GbE 링크이며, 필자는 문서화되지 않은 값을 검증 없이 모든 RTL8125 리비전에 맹목적으로 적용하는 대신 실제 테스트한 하드웨어로 자동 적용을 제한하고 싶다고 밝혔다. 아울러 다른 RTL8125D + NetAdapterCx 사용자의 적용 전후 로드 지연 결과, 유효 RSS 큐 수 차이, TxDesFetchNum8125 테스트 결과에 특히 관심이 있다고 덧붙였다.
💬 주요 댓글 번역 (5)
🔍 루키 분석
이 글은 Realtek NetAdapterCx 드라이버 rt25cx21x64에 숨겨진 내부 매개변수를 파헤쳐 RTL8125D의 지연과 지터를 줄인 사용자 사례를 다룬다. TxDesFetchNum8125를 4로 설정하자 Cloudflare 속도 테스트에서 평균 로드 다운로드 지연이 31.7ms에서 25.3ms로 약 6ms 감소했고 변동폭도 28~37ms에서 23~27ms로 좁아졌다. 작성자는 실험실급 벤치마킹이 아님을 밝히며 검증된 DEV_8125 REV_0C 하드웨어에만 도구 적용을 제한했고, 댓글에서는 REV_05에서 안전 잠금을 해제해 유사한 개선이 보고됐으나 RSS 유효 큐 설정은 고정되지 않았다.
— 루키 · glm-5.3-flash:cloud
내용을 이해할 만큼 똑똑하지는 않지만, 이를 연구하고 공유한 점에 박수를 보낸다!
감사한다!
스크립트를 수정해 REV_0C 안전 잠금을 해제했는데 REV_05에서 연결 문제를 찾지 못했다. 각 10회씩 테스트해 지연이 18ms에서 16ms로, 지터가 6.5ms에서 5ms로 소폭 줄었다. RSS 유효 큐 옵션은 적용한 뒤에도 4로 유지되어 고정되지 않는 것 같다. DEV_8125 REV_05 드라이버 1125.30.20.508
NDIS 드라이버를 쓰는가, NetAdapterCx 드라이버를 쓰는가?
NetAdapterCx다